AutoIT Problem(e) mit meinem Bot Script

09/10/2013 00:17 Myrtalias#1
Howdy,

Ich fange an AutoIT mit learning by doing zu lernen. Da ich schon immer über einen Farmbot für ein MMORPG nachdenke und niemand sowas releast hat, will ich ihn selbst schreiben, da er auch recht simpel aufgebaut sein soll.

Dieser in Zukunft 1. Bot von mir, soll zuerst mit einem Mausklick zu einer Monster-Route laufen, diese Monster töten, deren Gegenstände einsammeln, sich hinsetzen und regenerieren und dann das ganze von vorn.

Problem hierbei, das ich einfach nicht weiß, wie ich eine Endlosschleife erstelle, die den oben beschriebenen Bot immer und immer wieder so ausführt, wie oben beschrieben. Mein hier gezeigtes (versuchtes) Script:

Code:
HotKeySet("{F1}", "starten")
HotKeySet("{F2}", "pause")
HotKeySet("{F3}", "quit")

While 1
Controlsend("Fenstername","","", "{space}")
Controlsend("Fenstername","","", "{x}")
sleep(100)
WEnd

Func starten()
While 1
MouseClick ( "left" , 1151, 153 , 1  )
Controlsend("Fenstername","","", "{space}") 
Controlsend("Fenstername","","", "{x}")
// Die beiden Controlsend Funktionen müssen unbedingt einen sleep timer von 100 haben, damit sie wie ein Bot agieren, der ständig tötet (mit space) und ständig aufsammelt (mit x)
// Alle Monster zu töten dauert 1 Minute, dann soll sich der Bot hinsetzen und Constrolsend "w" schicken, um Snacks zu benutzen, danach wieder aufstehen, weitertöten, usw. 
// Nur fehlen mir hier leider die Funktionen, wie ich das ganze aufbauen soll..
sleep(5000)
Controlsend("Fenstername","","","{w}")
sleep(1000)
Controlsend("Fenstername","","","{w}")
sleep(1000)
Controlsend("Fenstername","","","{w}")
sleep(1000)
Controlsend("Fenstername","","","{w}")
sleep(5000)
WEnd
Endfunc


Func pause()
While True
Sleep(10000)
WEnd
Endfunc


Func quit()
Exit
Endfunc
Ich hoffe ihr könnt mir helfen. Habe sehr vieles ausprobiert mit meinem schwachen Knowledge, ein Forum meinte auch ich solle mit der Funktion AdlibEnable arbeiten, allerdings pausiert diese mein gesamtes Script und der Bot funktioniert nicht mehr.

Mfg. Myrt
09/10/2013 00:23 c0w#2
würdest du in der func starten alles was er tun soll in eine while 1 schleife setzen, würde er es wiederholen bis du exit oder pause machst. controllsend funktioniert aber bei den meisten spielen nicht, außerdem gibt es dein befehl send w down, dann hält er die taste gedrückt für eine bestimmte zeit. wenn du bots für 3d games schreiben willst, ist es zu empfehlen sich in zukunft mal alles mit memory reading und writing anzusehen. ansonsten viel erfolg bei deinem projekt :D
09/10/2013 11:40 Myrtalias#3
Also an sich funktioniert der Bot schon.. Er läuft zu der Route (Der Mausklick ist nur dafür da, das er auf die Minimap klickt), tötet alle Monster nach und nach (Sind nah beieinander, deswegen geht das so gut mit den Controlsends), hebt alles auf was gedropt wird, aber leider setzt er sich nicht hin bzw. nimmt die Snacks nicht (mit Controlsend "w") und läuft die Route dann nicht weiter bzw. nicht wieder von vorn..
09/10/2013 14:51 MrDami123#4
Ich kenne mich zwar nicht mit AutoIt aus, aber du brauchst ein paar Grundfunktionen, die dein Bot tun sollte.

Code:
Funktion 1: Position
if charakter not in (koordinaten) -> hinlaufen

Funktion 2: Leben
if charakter(HP) < 20% -> sitzen, essen

Funktion 3: Angreifen
attack enemie in radius from charakter

while True:
check Leben
check Position
check Angreifen
Als erstes überprüft er seine "HP" und regeneriert sich ggf., dann geht er zur Ausgangsposition.
Dann greift er einen Gegner an und looted den drop.
Jetzt beginnt die Schleife von vorn und er schaut nach seinen Leben, geht in die Ausgangsposition zurück und greift den nächsten an.
Der Radius in dem er die Gegner angreift ist also immer vom Ausgangsort gesehen.

Vielleicht hilft dir das ja weiter.
09/10/2013 18:39 xxfabbelxx#5
moved
09/13/2013 01:06 c0w#6
Quote:
Originally Posted by MrDami123 View Post
Ich kenne mich zwar nicht mit AutoIt aus, aber du brauchst ein paar Grundfunktionen, die dein Bot tun sollte.

Code:
Funktion 1: Position
if charakter not in (koordinaten) -> hinlaufen

Funktion 2: Leben
if charakter(HP) < 20% -> sitzen, essen

Funktion 3: Angreifen
attack enemie in radius from charakter

while True:
check Leben
check Position
check Angreifen
Als erstes überprüft er seine "HP" und regeneriert sich ggf., dann geht er zur Ausgangsposition.
Dann greift er einen Gegner an und looted den drop.
Jetzt beginnt die Schleife von vorn und er schaut nach seinen Leben, geht in die Ausgangsposition zurück und greift den nächsten an.
Der Radius in dem er die Gegner angreift ist also immer vom Ausgangsort gesehen.

Vielleicht hilft dir das ja weiter.
da hast du allgemein recht, aber die sachen die du hier beschreibst gehören zu nem memory reading bot, der liest sich die speichereinträge von hp koords etc aus, was er hier schreibt ist ein bot der stur wieder und wieder die selben köpfe sendet. das liegt welten auseinander, auch wenn jeder so anfängt :D
09/13/2013 11:48 Myrtalias#7
Hm, Thread kann geschlossen werden, arbeite nun mit Pixelsearch und es funktioniert viel besser!

Danke für die Antworten.

Mfg. Myrt