Bot zu einem Spiel

09/28/2009 16:30 C3yse5#1
Hallo Community!

Bin neu in der Scene mit Autoit.
Habe C Kenntnisse deswegen kommen mir manche Funktionen sehr bekannt vor. Mein momentanes Ziel ist es Autoit zu lernen und danach endlich C++ :D

Warum erst Autoit? Ganz einfach weil es einer der einfachsten varianten ist, Bots zu programieren^^

Also da habe ich mir mal hier die Grundlagen von Remus durchgelsen und größten teils verstanden. Da mein Bruder Metin 2 spielt, wollte ich mal ein Pick up bot programmieren nur um ein bisschen zu üben. Es ist eig. relativ einfach der bot muss nur y drücken und der Character bei Merin 2 hebt die sachen auf.

Ich habe mich soweit informiert das der Bot die y taste mindestens 300ms gedrückt haben muss damit es metin erkennt. Und mann müsste dann 1s warten bis der Bot wieder y Drücken sollte. Soweit so gut, ich habe schon einen code geschrieben sogar mit einer Gui, nur irgendwie wenn ich den Bot starte, drückt er die y Taste im Metin 2 Fenster nichty aber in allen anderen Fenstern schon.

Hier ist mal der teil der Quellcodes ohne Gui:

Code:
HotKeySet ( "{F5}" , "Start" )
HotKeySet ("{F6}", "Pause")

Func Start()
	WinActive ("METIN2")
	While 1
		Send("{y down}")
		sleep(350)
		Send("{y up}")
		sleep(1000)
	WEnd
	EndFunc

Func Pause()
   EndFunc

While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
Case $Start
Call ("Start")
Case $Pause
Call ("Sleep")
EndSwitch
WEnd
Könntet ihr mir vielleicht Helfen wei ich das Problem Lösen Könnte?
Und könntet ihr mir auch eine Funktion geben wie ich die While schleife mit Pause unterbreche, dass wenn ich wieder auf Start drücke es wieder losgeht?

Ich bedanke mich hier schonmal für jede Antwort

MfG

C3yse5

PS: Ja ich habe in google und in diesen Forum nach solch einer Lösung gesucht und nicht gefunden :D
09/28/2009 16:54 repins94#2
Code:
HotKeySet("{F7}", "_Start")
HotKeySet("{F9}", "_Ende")
HotKeySet("{F8}", "_Pause")

Global $start = 0 ;Button wurde noch nicht gedrückt, global heisst, die Variable gilt auch innerhalb der Funktionen!
Global $pause = 0 ; Pausebutton wurde noch nicht gedrückt
Global $t ;startzeit des timers merken
Global $TimerInit; Zeitinitialisierung

while 1
    If $start = 1 Then ;wenn der startbutton gedrückt wurde und...
        If TimerDiff($t) > 1 Then ;...wenn mehr wie eine halbe sekunde seit start des timers vergangen ist dann
            Send("{y} ") ;die y senden
 EndIf
    Else


Endif
WEnd
Func _Start()
    $start = 1
    $t = TimerInit() ;startzeit des timers merken
EndFunc   ;==>_Start

Func _Ende()
    Exit
EndFunc   ;==>_Ende

Func _pause()
    Sleep(1000)
    $start = 0
EndFunc   ;==>_pause

Func Close()
    Exit
EndFunc   ;==>Close

so geht das in metin auch scheiß auf diese 1sec oder so o.O