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:
Script stürzt einfach ab
-
- [ offen ]
-
Term!nX -
21. Januar 2007 um 00:09 -
Geschlossen -
Erledigt
-
-
sieht nach einem Speicherüberlauf aus, ich denke das läst sich nur genauer sagen wenn du das script postest.
-
- Offizieller Beitrag
Hi,
schließe mich, es wird einen Grund geben, diesen kann man druch Tests sicher herausfinden.
So long,
Mega
P.S.: Schreib doch mal ein Log.
-
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
-
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
[/autoit][autoit][/autoit][autoit]
Author: myNameScript Function:
[/autoit][autoit][/autoit][autoit]
Template AutoIt script.#ce ----------------------------------------------------------------------------
[/autoit][autoit][/autoit][autoit]; Script Start - Add your code below here
[/autoit][autoit][/autoit][autoit]Sleep(1423)
[/autoit][autoit][/autoit][autoit]
MouseClick("left", 1023, 767)global $ll = Random(300, 500)
[/autoit][autoit][/autoit][autoit][/autoit][autoit]
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")func merchandise()
[/autoit][autoit][/autoit][autoit]
Sleep($c)
global $oo = Random(177, 183)
global $oi = Random(60, 64)
MouseCLick("left", $oo, $oi)
Sleep($c-500)
Call("value")
EndFuncfunc check1()
[/autoit][autoit][/autoit][autoit]
if pixelgetcolor(393, 41) = 14238017 then
call("loot")
EndIf
Endfuncfunc checkloot()
[/autoit][autoit][/autoit][autoit]
if PixelGetColor(476, 46) = 65793 then
Call("travel")
EndIf
EndFuncfunc loot()
[/autoit][autoit][/autoit][autoit]
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")
Endfuncfunc checkhp()
[/autoit][autoit][/autoit][autoit]
if PixelGetColor(353, 40) = 8792875 Then
Return
else
call("loot")
EndIf
endfuncfunc travel()
[/autoit][autoit][/autoit][autoit]
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")
EndFuncfunc checkpoint1()
[/autoit][autoit][/autoit][autoit]
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")
EndFuncfunc MoveTo1()
[/autoit][autoit][/autoit][autoit]
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")
EndFuncfunc MoveTo2()
[/autoit][autoit][/autoit][autoit]
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")
EndFuncfunc MoveTo3()
[/autoit][autoit][/autoit][autoit]
Sleep($c)
Send("{SPACE}")
Sleep(5000)
Call("merchandise")
EndFuncfunc ident()
[/autoit][autoit][/autoit][autoit]
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")
EndFuncfunc mainrdy()
[/autoit][autoit][/autoit][autoit]
$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
Endfuncfunc returnmerch()
[/autoit][autoit][/autoit][autoit]
Sleep($c)
Send("v")
Send("{SPACE}")
Sleep($c-500)
Call("merchandise")
EndFuncfunc findgold1()
[/autoit][autoit][/autoit][autoit]
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
EndFuncfunc CheckInven1()
[/autoit][autoit][/autoit][autoit]
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)
EndFuncfunc fight()
[/autoit][autoit][/autoit][autoit]
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
EndFuncfunc returnmain()
[/autoit][autoit][/autoit][autoit]
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")
Endfuncfunc checkdeath()
[/autoit][autoit][/autoit][autoit]
If PixelGetColor(636, 412) = 6779518 Then
Call("returnmain")
EndIf
EndFuncfunc enter()
[/autoit][autoit][/autoit][autoit]
$a = Random(840, 880)
$b = Random(254, 260)
MouseClick("left", $a, $b, "1")
Sleep($c)
Send("{ENTER}")
Sleep(15000)
EndFuncfunc main()
[/autoit][autoit][/autoit][autoit][/autoit]
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 -
- 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.