endlosschleife für metin auto-re-login

  • 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

    [autoit]


    ;Variabelen auf welche Stelle geprüft werden soll
    Local $x = 30
    Local $y = 775

    [/autoit][autoit][/autoit][autoit]

    ;Variable für Zeitintervall wie oft geprüft werden soll
    Local $zeitinms = 500

    [/autoit][autoit][/autoit][autoit]

    ;Variable wie oft hintereinander der selbe Wert kommen bis bis
    ;entschieden ist, das der wechsel nicht mehr gemacht wird.
    Local $anzahl = 5

    [/autoit][autoit][/autoit][autoit]

    ;Variable für letzen Wert und aktuellen Wert
    Local $lastColor = -1
    Local $curColor = -1

    [/autoit][autoit][/autoit][autoit][/autoit][autoit]

    $ID = InputBox("ID","Gebe deine ID ein","ID")
    $Pass = InputBox("Passwort","Gebe dein Passwort ein","pass","*")

    [/autoit][autoit][/autoit][autoit]

    ;Hier soll die schleife beginnen
    Do
    Sleep($zeitinms) ;erkennst ob man eingelogt ist oder nicht
    $isnochange = _CheckPixel()
    Until $isnochange

    [/autoit][autoit][/autoit][autoit]

    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)

    [/autoit][autoit][/autoit][autoit][/autoit][autoit]

    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

    [/autoit]

    ich habe ertmal ein bisschen ausprobiert und bin dann auf folgende
    (leider nicht funktionierende) idee gekommen

    [autoit]


    ;Variabelen auf welche Stelle geprüft werden soll
    Local $x = 30
    Local $y = 775

    [/autoit][autoit][/autoit][autoit]

    ;Variable für Zeitintervall wie oft geprüft werden soll
    Local $zeitinms = 500

    [/autoit][autoit][/autoit][autoit]

    ;Variable wie oft hintereinander der selbe Wert kommen bis bis
    ;entschieden ist, das der wechsel nicht mehr gemacht wird.
    Local $anzahl = 5

    [/autoit][autoit][/autoit][autoit]

    ;Variable für letzen Wert und aktuellen Wert
    Local $lastColor = -1
    Local $curColor = -1

    [/autoit][autoit][/autoit][autoit]

    $aktive = 1 ;definiert variable

    [/autoit][autoit][/autoit][autoit]

    $ID = InputBox("ID","Gebe deine ID ein","ID")
    $Pass = InputBox("Passwort","Gebe dein Passwort ein","pass","*")

    [/autoit][autoit][/autoit][autoit][/autoit][autoit]

    Do ;Hier soll die schleife beginnen

    Do
    Sleep($zeitinms) ;erkennst ob man eingelogt ist oder nicht
    $isnochange = _CheckPixel()
    Until $isnochange

    [/autoit][autoit][/autoit][autoit]

    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)

    [/autoit][autoit][/autoit][autoit][/autoit][autoit]

    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

    [/autoit]


    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

    4 Mal editiert, zuletzt von Remus (9. März 2008 um 16:27)

  • hab ich auch schon probiert
    aber gibt die selbe fehlermeldung blos mit wend statt mit until