Script stürzt einfach ab

  • Hallo,
    mein Problem ist ebenso simpel wie schwer zu bekämpfen. Ich habe mir einen Bot geschrieben, aber nach etwa 1-2 Stunden stürzt einfach das Script ab - ohne Error ohne alles. Der Bot läuft seine Schleife mehrere Male fehlerfrei durch, dann bei bestimmten Handlungen geht einfach das Script aus. Ich weiss nicht weiter, da das Problem nicht im Code liegen kann, wenn 8-10 Mal korrekt läuft.. :musik2:

  • sieht nach einem Speicherüberlauf aus, ich denke das läst sich nur genauer sagen wenn du das script postest.

  • Eine Diagnose ohne Dein Skript und eine PC zu kennen ist tödlich. Es kann auch ein leichter Fehler in der Programmierung sein, der nicht sofort zum Abbruch führt. Was sagt SCITE aus, wenn Du das Skript als au3 lädst und mit F5 ausführst??. Untere Kasten - Bitte Inhalt kopieren. Jan

    Einmal editiert, zuletzt von janrenzlow (22. Januar 2007 um 02:21)

  • Ob ich als exe oder au3 ausführe hat keinen Effekt, daran dachte ich bereits auch. Der Speicheroverflow (so heists glaube ich) scheint zunächst der plausibelste Grund - zumal ich mit meinen 512mb nicht mehr auf dem neusten Stand bin. Zum Code: Es sind ein paar Leichenfunktionen drin, die ich nicht mehr brauche, aber auch nicht löschen möchte. Habe bis dato vergessen, sie als comment zu deklarieren, vielleicht ist das auch ein Indiz.

    [autoit]

    #cs ----------------------------------------------------------------------------

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

    AutoIt Version: 3.1.1.0
    Author: myName

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

    Script Function:
    Template AutoIt script.

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

    #ce ----------------------------------------------------------------------------

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

    ; Script Start - Add your code below here

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

    Sleep(1423)
    MouseClick("left", 1023, 767)

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

    global $ll = Random(300, 500)
    global $kl = Random(220, 240)
    global $hh = Random(845, 855)
    global $hj = Random(720, 725)
    global $pp = Random(500, 800)
    global $c = Random(1000, 2000)
    global $bb = Random(13, 16)
    global $ii = 0
    global $oo = Random(133, 138)
    global $oi = Random(40, 45)
    global $zz = Random(500, 1000)
    Call("main")

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

    func merchandise()
    Sleep($c)
    global $oo = Random(177, 183)
    global $oi = Random(60, 64)
    MouseCLick("left", $oo, $oi)
    Sleep($c-500)
    Call("value")
    EndFunc

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

    func check1()
    if pixelgetcolor(393, 41) = 14238017 then
    call("loot")
    EndIf
    Endfunc

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

    func checkloot()
    if PixelGetColor(476, 46) = 65793 then
    Call("travel")
    EndIf
    EndFunc

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

    func loot()
    for $i = 0 to $bb
    Send("o")
    Call("checkloot")
    Sleep($c-500)
    Send("{space}")
    Sleep($c-500)
    If $i = 4 Then
    Send("1")
    EndIf
    Next
    Call("travel")
    Endfunc

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

    func checkhp()
    if PixelGetColor(353, 40) = 8792875 Then
    Return
    else
    call("loot")
    EndIf
    endfunc

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

    func travel()
    Sleep(1000)
    Send("m")
    Sleep($c-500)
    $map = PixelSearch(498, 248, 678, 399, 0)
    if not @error Then
    MouseClick("left", $map[0], $map[1], 2)
    Else
    call("travel")
    EndIf
    Sleep(15000)
    Call("ident")
    Sleep($c)
    Call("checkpoint1")
    EndFunc

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

    func checkpoint1()
    Send("v")
    Sleep(500)
    PixelSearch(654, 33, 660, 52, 14305095)
    if not @error Then
    Call("MoveTo1")
    endif
    PixelSearch(623, 32, 631, 51, 14238017)
    if not @error Then
    Call("MoveTo2")
    endif
    PixelSearch(536, 35, 544, 51, 14305095)
    if not @error Then
    Call("MoveTo3")
    EndIf
    Call("MoveTo2")
    EndFunc

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

    func MoveTo1()
    Send("f")
    Sleep($c)
    MouseDown("right")
    Send("{d down}")
    Sleep(2000)
    Send("{d up}")
    MouseUp("right")
    Sleep($c)
    send("{w down}")
    Sleep(6000+$c)
    send("{w up}")
    Sleep($c-500)
    Send("v")
    Send("{SPACE}")
    Sleep(5000)
    Call("merchandise")
    EndFunc

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

    func MoveTo2()
    Send("f")
    Sleep($c)
    MouseDown("right")
    Send("{d down}")
    Sleep(1000+$c)
    Send("{d up}")
    MouseUp("right")
    Sleep($c)
    Send("{w down}")
    Sleep(4500)
    Send("{w up}")
    Sleep($c)
    Send("v")
    Sleep(534)
    Send("{SPACE}")
    Sleep(5000)
    Call("merchandise")
    EndFunc

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

    func MoveTo3()
    Sleep($c)
    Send("{SPACE}")
    Sleep(5000)
    Call("merchandise")
    EndFunc

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

    func ident()
    Send("i")
    Sleep($c-500)
    MouseClick("left", $pa, $pb, "1")
    Sleep($pp)
    MouseClick("left", $pc, $pd, "2")
    Sleep($pp)
    MouseMove($okl, $okj)
    sleep(1000+$pp)
    MouseClick("left", $qa, $qb)
    Sleep($c-500)
    MouseClick("left", $pa, $pb, "1")
    Sleep($pp)
    MouseClick("left", $pc, $pd, "2")
    Sleep($pp)
    MouseMove($okl, $okj)
    sleep(1000+$pp)
    MouseClick("left", $qc, $qd)
    Sleep($c-500)
    MouseClick("left", $pa, $pb, "1")
    Sleep($pp)
    MouseClick("left", $pc, $pd, "2")
    Sleep($pp)
    MouseMove($okl, $okj)
    sleep(1000+$pp)
    MouseClick("left", $qe, $qf)
    Sleep($c-500)
    MouseClick("left", $pa, $pb, "1")
    Sleep($pp)
    MouseClick("left", $pc, $pd, "2")
    Sleep($pp)
    MouseMove($okl, $okj)
    sleep(1000+$pp)
    MouseClick("left", $qi, $qj)
    Sleep($c)
    Send("i")
    EndFunc

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

    func mainrdy()
    $abcde = Random(920, 940)
    $abced = Random(708, 714)
    Sleep($c)
    MouseClick("left", $abcde, $abced)
    sleep($c)
    Call("main")
    EndFunc

    func value()
    $t = $t + 1
    MouseClick("left", $hh, $hj)
    Sleep($c-500)
    If $t == 6 then
    call("mainrdy")
    else
    Call("value")
    EndIf
    Endfunc

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

    func returnmerch()
    Sleep($c)
    Send("v")
    Send("{SPACE}")
    Sleep($c-500)
    Call("merchandise")
    EndFunc

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

    func findgold1()
    PixelSearch(757, 510, 1012, 751, 1354024)
    If not @error Then
    global $pos = MouseGetPos()
    MouseClickDrag("left", $pos[0], $pos[1], 900, 502)
    Sleep($c)
    Send("i")
    Call("ReturnMerch")
    EndIf
    EndFunc

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

    func CheckInven1()
    Sleep($c)
    MouseMove(829, 575)
    Call("findgold1")
    MouseMove(862, 576)
    Call("findgold1")
    MouseMove(905, 577)
    Call("findgold1")
    Mousemove(934, 577)
    Call("findgold1")
    MouseMove(997, 584)
    Call("findgold1")
    MouseMove(828, 627)
    Call("findgold1")
    MouseMove(855, 627)
    Call("findgold1")
    MouseMove(905, 628)
    Call("findgold1")
    MouseMove(943, 628)
    EndFunc

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

    func fight()
    local $c = 0
    local $a = Random(1000, 2000)
    local $b = Random(400, 800)
    while 1
    Send("c")
    Sleep($a-1000)
    Send("4")
    Sleep($a)
    call("checkhp")
    Send("2")
    Sleep($a)
    Send("3")
    Sleep($a)
    Send("1")
    Sleep($a-$b)
    Send("2")
    Sleep($a)
    Send("1")
    call("checkhp")
    Sleep($a-$b)
    Send("2")
    Sleep($a)
    Send("1")
    Sleep($a)
    Send("2")
    call("checkhp")
    Sleep($a)
    Send("5")
    Sleep($a+$a)
    Send("1")
    Sleep($a-$b)
    Send("2")
    Sleep($a+$a)
    Send("1")
    sleep($a-$b)
    Send("2")
    call("checkhp")
    sleep($a)
    Send("1")
    Sleep($a)
    Send("2")
    Sleep($a+$b)
    Send("3")
    Sleep($a+$b)
    Send("2")
    Sleep($a)
    Send("1")
    Sleep($a+$b)
    Send("2")
    Sleep($a)
    Send("1")
    call("checkhp")
    $c = $c + 1
    if $c = 2 Then
    call("loot")
    endif
    WEND
    EndFunc

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

    func returnmain()
    Sleep(1500)
    Send("m")
    Sleep($c)
    $map = PixelSearch(402, 247, 636, 400, 65792)
    if not @error Then
    MouseClick("left", $map[0], $map[1], 2)
    EndIf
    Sleep(15000)
    call("main")
    Endfunc

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

    func checkdeath()
    If PixelGetColor(636, 412) = 6779518 Then
    Call("returnmain")
    EndIf
    EndFunc

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

    func enter()
    $a = Random(840, 880)
    $b = Random(254, 260)
    MouseClick("left", $a, $b, "1")
    Sleep($c)
    Send("{ENTER}")
    Sleep(15000)
    EndFunc

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

    func main()
    global $okl = Random(745, 755)
    global $okj = Random(540, 550)
    global $pa = Random(910, 918)
    global $pb = random(545, 553)
    global $pc = Random(755, 765)
    global $pd = Random(643, 649)
    global $qa = Random(750, 760)
    global $qb = Random(645, 655)
    global $qc = Random(805, 815)
    global $qd = Random(640, 650)
    global $qe = Random(860, 870)
    global $qf = Random(640, 650)
    global $qg = Random(940, 950)
    global $qh = Random(915, 925)
    global $qi = Random(910, 920)
    global $qj = Random(643, 650)
    global $qwe = Random(540, 560)
    global $wer = Random(335, 350)
    global $t = 0
    global $ll = Random(300, 500)
    global $kl = Random(220, 240)
    global $hh = Random(790, 800)
    global $hj = Random(710, 715)
    global $pp = Random(500, 800)
    global $c = Random(1000, 2000)
    global $bb = Random(13, 15)
    global $ii = 0
    global $oo = Random(133, 138)
    global $oi = Random(40, 45)
    Sleep(12000)
    global $c = Random(1000, 2000)
    global $aa = Random(90, 100)
    local $fgh = Random(100, 200)
    call("enter")
    Send("8")
    Sleep(($c+2000))
    Send("7")
    Sleep($c+2000)
    send("v")
    Sleep($c-1000)
    Send("{SPACE}")
    Sleep(($c+10000))
    Send("j")
    Sleep($c-500)
    Send("f")
    Sleep($c-344)
    Send("6")
    Sleep(8000)
    Send("{w down}")
    Sleep(6500-$fgh)
    send("{w up}")
    sleep(542)
    Send("1")
    sleep(293)
    Send("{e down}")
    Sleep(3000+$fgh)
    Send("{e up}")
    Sleep(743)
    Send("{w down}")
    Sleep(7300+$fgh)
    Send("{w up}")
    sleep(473)
    Send("1")
    send("{q down}")
    Sleep(9600+$fgh)
    Send("{q up}")
    Send("x")
    Sleep(500)
    send("1")
    Sleep($qb)
    Send("2")
    Sleep(1000)
    Send("{w down}")
    Sleep(4700+$fgh)
    Send("{w up}")
    Sleep(743)
    send("{q down}")
    sleep(3000+$fgh)
    Send("{q up}")
    Sleep(312)
    Send("1")
    Send("2")
    Call("fight")
    EndFunc

    [/autoit][autoit][/autoit][autoit][/autoit]
    • Offizieller Beitrag

    Hi!

    Funktionsaufrufe gehen so
    fight()
    nicht
    Call("fight").

    Das ist kürzer, lesbarer und besser.

    Evtl. könnte es ein Problem der zu tiefen Funktionsschachtelung sein. Da ist eine Grenze bei 384 oder so meines Wissens. Könnte zeitlich hinkommen möglicherweise.

    peethebee

  • Hey, wusste ich nicht mit den Funktionen. Dann ist das ja genauso praktisch wie bei LUA.
    Dann werde ich versuchen, ein paar Funktionen zu streichen.

  • Wenn ich mir den Code ansehe so sieht es danach aus als ob Stack überläuft. Es scheint möglich das sich deine "main" Funktion unter bestimmten Bedingungen selbst aufrufen kann, welches obengenannte Problem auslöst und somit dein Programm zum Absturz bringt.

    Zur Lösung schlage ich dir vor das du dir einen Programmablauf anfertigst um geeignete Programmtechnische Lösungen zufinden.

  • Hi,
    zu den wenigen Eigenheiten von AutoIt gehört auch die richtige Reihenfolge bei Deklarationen.

    Deklarationen von Globalvariablen in der Function Main() gheören dort heraus und am Anfang des Skriptes gestellt. FileInstall z.B. reagiert ähnlich sensibel. Gruss Jan

  • Danke danke, ich hab mir das selbst beigebracht, deswegen kenne ich solche Grundsätzlichkeiten nicht.
    Mit den random-globals in der Main wollte ich bewirken, dass in jedem neuen run die variablen neu "gewürfelt" werden - aus Sicherheit.