Hallo allerseits
ich habe vor 3 tagen angefangen mich mit autoit zu beschäftigen
und habe so als erstes versucht ein auto-re-login für das spiel metin 2 zu scripten
weil es bei diesem spiel öfters dazu kommt das die verbindung abricht,
scheitere aber daran eine endlosschleife einzubauen
bis jetz ist es nur ein normaler login script
;Variabelen auf welche Stelle geprüft werden soll
Local $x = 30
Local $y = 775
;Variable für Zeitintervall wie oft geprüft werden soll
Local $zeitinms = 500
;Variable wie oft hintereinander der selbe Wert kommen bis bis
;entschieden ist, das der wechsel nicht mehr gemacht wird.
Local $anzahl = 5
;Variable für letzen Wert und aktuellen Wert
Local $lastColor = -1
Local $curColor = -1
$ID = InputBox("ID","Gebe deine ID ein","ID")
$Pass = InputBox("Passwort","Gebe dein Passwort ein","pass","*")
;Hier soll die schleife beginnen
Do
Sleep($zeitinms) ;erkennst ob man eingelogt ist oder nicht
$isnochange = _CheckPixel()
Until $isnochange
WinWaitActive("METIN2")
Sleep(2000)
MouseClick("left",500,560) ;wählt den server aus
Sleep(400)
MouseClick("left",730,595) ;wählt den channel aus
Sleep(400)
MouseClick("left",730,695) ;drückt ok button
Sleep(400)
Send($ID) ;gibt id ein
Send("{TAB}")
Send($Pass) ;gibt passwort ein
Send("{ENTER}") ;drückt enter
Sleep(5000)
MouseClick("left",205,560) ;drückt start button
Sleep(20000)
Func _CheckPixel()
$curColor = PixelGetColor($x,$y)
If $curColor = $lastColor Then
$anzahl -= 1
Else
$anzahl = 5
EndIf
$lastColor = $curColor
If $anzahl = 0 Then
Return True
Else
Return False
EndIf
EndFunc
;hier soll die schleife aufhören
ich habe ertmal ein bisschen ausprobiert und bin dann auf folgende
(leider nicht funktionierende) idee gekommen
;Variabelen auf welche Stelle geprüft werden soll
Local $x = 30
Local $y = 775
;Variable für Zeitintervall wie oft geprüft werden soll
Local $zeitinms = 500
;Variable wie oft hintereinander der selbe Wert kommen bis bis
;entschieden ist, das der wechsel nicht mehr gemacht wird.
Local $anzahl = 5
;Variable für letzen Wert und aktuellen Wert
Local $lastColor = -1
Local $curColor = -1
$aktive = 1 ;definiert variable
[/autoit][autoit][/autoit][autoit]$ID = InputBox("ID","Gebe deine ID ein","ID")
$Pass = InputBox("Passwort","Gebe dein Passwort ein","pass","*")
Do ;Hier soll die schleife beginnen
Do
Sleep($zeitinms) ;erkennst ob man eingelogt ist oder nicht
$isnochange = _CheckPixel()
Until $isnochange
WinWaitActive("METIN2")
Sleep(2000)
MouseClick("left",500,560) ;wählt den server aus
Sleep(400)
MouseClick("left",730,595) ;wählt den channel aus
Sleep(400)
MouseClick("left",730,695) ;drückt ok button
Sleep(400)
Send($ID) ;gibt id ein
Send("{TAB}")
Send($Pass) ;gibt passwort ein
Send("{ENTER}") ;drückt enter
Sleep(5000)
MouseClick("left",205,560) ;drückt start button
Sleep(20000)
Func _CheckPixel()
$curColor = PixelGetColor($x,$y)
If $curColor = $lastColor Then
$anzahl -= 1
Else
$anzahl = 5
EndIf
$lastColor = $curColor
If $anzahl = 0 Then
Return True
Else
Return False
EndIf
EndFunc
WinActive("METIN2")
Until $aktive = 0 ;hier soll die schleife aufhören
aus einem mir unbekannte kommt dann folgende fehlermeldung
D:\AI\Test\login.au3(46,2) : ERROR: missing Until <expr>.
Func
^
D:\AI\Test\login.au3(22,1) : REF: missing Until <expr>.
Do
^
D:\AI\Test\login.au3(61,1) : ERROR: syntax error
Until
^
D:\AI\Test\login.au3 - 2 error(s), 0 warning(s)
ich würde mich über eure hilfe sehr freuen und bedanke mich jetzt schonmal im voraus
Lg Remus
Ps: Falls dieses oder ein ähnliches problem schon ihrgendwo gepostet/gelöst wurde
entschuldige ich mich schonmal dafür und bitte um einen entsprechenden link aber ich
habe meiner meinung nach lange genug (ca. 2h) nach einer lösung gesucht