|
You last visited: Today at 21:48
Advertisement
AutoIt
Discussion on AutoIt within the General Coding forum part of the Coders Den category.
11/17/2008, 20:08
|
#1
|
elite*gold: 0
Join Date: Oct 2007
Posts: 18
Received Thanks: 4
|
AutoIt
Nabend zusammen,
ich wollte mal fragen, ob sich einer gut mit autoit auskennt.
und zwar hätte ich zwei fregen:
1. gibt es einen befehl bei autoit, de rmerkt, wenn das programm nicht mehr reagiert, also nix mehr macht? Und es dann von vorne neu startet? (Da mein angelbot öfter abbricht, und er natürlich wiieter angeln soll^^)
2. kann man 2 If schleifen zusammenfügen? also BEISPIEL:
PHP Code:
$PixelSearch(540,613,540,613, 0xA9796A)
Sleep(500)
Sleep (5000)
Send ( "{F3 down}" , 0 )
Sleep (500)
Send ( "{F3 up}" , 0 )
Sleep (1000)
Send ( "{F4 down}" , 0 )
Sleep (500)
Send ( "{F4 up}" , 0 )
Sleep (1000)
$Fischblase = PixelSearch ( 297 , 95 , 468 , 284 , 0xFCF8FC )
If not @error then
Sleep ( 2600 )
Send("{F4 down}")
Sleep(500)
Send("{F4 up}")
ExitLoop
EndIf
Das Programm soll nun erstmal dein erstenpixel finden, dann satrten und nun aufd den zweiten pixel warten bis er erscheint (Angelbot).
Das problem so ist, erstens: so findet er imemr wieder den ersten pixel ($PixelSearch(540,613,540,613, 0xA9796A)) und drückt daraufhin immer wieder f3 und f4... Also bricht in dem fall das angeln wieder ab. Es soll aber erstmal auf den zewiten pixel warten (fischblase) bevor er wieder neu von vorne beginnt und den ersten pixxel sucht...
warum ich es so kompliziert mache hat seine gründe^^ natürlich ginge es leichter, aber dann würde es nicht in meinem Kompletten script funktionieren (relog etc.)
Ich hoffe es kann mir einer meine fragen beantworten
danke schonmal im vorraus Gruß und schönen abend noch Jonske
PS: groß und kleinschreibung und rechtschreibfehler inbegriffen    
|
|
|
11/17/2008, 23:27
|
#2
|
elite*gold: 0
Join Date: Nov 2008
Posts: 28
Received Thanks: 3
|
mhh also so wie du das da schreibst kann das nicht klappen, weil das Script nicht wartet bis es die Fischblase gefunden hat.
ich mach jetzt nur die grobe, logischen Verbesserungen, da ich nicht mit AutoIT programmiere (also fast nie jedenfalls  ).
PHP Code:
$PixelSearch(540,613,540,613, 0xA9796A)
Sleep(500)
Sleep (5000)
Send ( "{F3 down}" , 0 )
Sleep (500)
Send ( "{F3 up}" , 0 )
Sleep (1000)
Send ( "{F4 down}" , 0 )
Sleep (500)
Send ( "{F4 up}" , 0 )
soweit in Ordnung
PHP Code:
...
Send ( "{F4 up}" , 0 )
Sleep (1000)
$Fischblase = PixelSearch ( 297 , 95 , 468 , 284 , 0xFCF8FC )
...
Hier ist ein Fehler. Dein Script wirft die Angel aus, wartet 1 Sekunde und schaut dann, ob eine Fischblase da ist. Logischer weise ist sie das nicht, also macht sie im Else Teil
PHP Code:
...
Sleep (1000)
$Fischblase = PixelSearch ( 297 , 95 , 468 , 284 , 0xFCF8FC )
If not @error then
...
EndIf
weiter.
Du musst deshalb mit While-Schleifen arbeiten. Genauer gesagt mit einer Endlosschleife ( while 1 ), die so lange nach der Fischblase sucht, bis diese auftaucht. Vorher darf das Script nicht weiterlaufen.
Schau dir doch mal diesen Guide hier an:
MFG MaToBe
|
|
|
11/18/2008, 06:48
|
#3
|
elite*gold: 0
Join Date: Oct 2007
Posts: 18
Received Thanks: 4
|
ich habe das Problem bereits schon bhoben, aber trotzdem danke nochmal!
habe jetzt noch eine viel wichtigere frage, ist es möglich, dass ich irgendwie dort reinschreiben kann, das wenn das programm nicht mehr reagiert (für ne gewisse zeit keine tasten/maus aktion mehr aussführt) das programm von anfang neu startet?
|
|
|
11/18/2008, 08:18
|
#4
|
elite*gold: 0
Join Date: Dec 2007
Posts: 496
Received Thanks: 171
|
Wenn du meinst dass dein Bot an ist, aber ein Fehler im Spiel die Fischblase nicht zeigt.. dann empfehle ich dir ne counter variable^^ ist i.wo im Forum erklärt..
|
|
|
11/18/2008, 11:55
|
#5
|
elite*gold: 0
Join Date: Oct 2007
Posts: 18
Received Thanks: 4
|
Ja genau da smeinte ich! also das mein bot durch nen Fehler des spieles nicht mehr funktioniert, also die angel nicht mehr raus/rein packt, die fischblase nicht findet....
Im normalfall läuft mein bod wie ne eins, doch öfters pasiert es, dass weenn ich ihn über nacht laufen lasse, dass er dann morgens einfach nciht mehr angelt....
Am besten würde es sein, wenn sich der sript mit einer funktion wieder an anfang setz, also wieder von neuem startet (wenn halt fehler auftreten wie oben benannt).
Kann mir einwer vielleicht sagen, wo ich etwas über die "counter variable" finde? habe über die sufu nix gefunden-.-
Danke Gruß Jonaske
|
|
|
11/18/2008, 14:42
|
#6
|
elite*gold: 0
Join Date: Feb 2008
Posts: 2,754
Received Thanks: 1,748
|
Wie er schon richtig gesagt hat, mach nen Counter mit Rollback-Funktion rein, müsste iwo beschribeen sein.
|
|
|
11/18/2008, 16:51
|
#7
|
elite*gold: 2
Join Date: Mar 2008
Posts: 8,541
Received Thanks: 4,539
|
wie man mit timern umgeht wird hier relativ verständlich erklärt
sollte in etwa so gehen
Code:
Global $TimerInit
Global $Timer
Global $Rollbacktime = 60000 ;ms = 1min
$TimerInit = TimerInit()
While 1
$Fischblase = PixelSearch ( 297 , 95 , 468 , 284 , 0xFCF8FC )
If not @error then
Sleep ( 2600 )
Send("{F4 down}")
Sleep(500)
Send("{F4 up}")
ExitLoop
EndIf
$Timer = int(TimerDiff($TimerInit))
If $Timer >= $Rollbacktime Then ExitLoop
WEnd
|
|
|
11/18/2008, 17:59
|
#8
|
elite*gold: 1371
Join Date: Dec 2007
Posts: 14,903
Received Thanks: 19,354
|
Achte nächstes mal auf die richtige Kategorie
*moved
Mfg
banjo1
|
|
|
11/19/2008, 14:27
|
#9
|
elite*gold: 81
Join Date: Jul 2005
Posts: 1,921
Received Thanks: 2,239
|
Quote:
Originally Posted by °Remus°
wie man mit timern umgeht wird hier relativ verständlich erklärt
sollte in etwa so gehen
Code:
Global $TimerInit
Global $Timer
Global $Rollbacktime = 60000 ;ms = 1min
$TimerInit = TimerInit()
While 1
$Fischblase = PixelSearch ( 297 , 95 , 468 , 284 , 0xFCF8FC )
If not @error then
Sleep ( 2600 )
Send("{F4 down}")
Sleep(500)
Send("{F4 up}")
ExitLoop
EndIf
$Timer = int(TimerDiff($TimerInit))
If $Timer >= $Rollbacktime Then ExitLoop
WEnd
|
Timer sind eine feine Sache, trotzdem sollte man imo darauf verzichten wenn es einfacher geht.
Das hier im dem Teil angeben wo keine Angelblase gefunden wird;
ie = ie+1;
if( ie >= 1000 )
neustart();
Das hier im Script angeben wo die Angelblase gefunden wird;
ie = 0;
Sobald die Angelblase nicht gefunden wird, sollte die Variable ie hochzählen und ab einen gewissen Fehler-Wert wird die Funktion neustart() ausgeführt um den bot nochmal zu starten.
|
|
|
11/19/2008, 21:42
|
#10
|
elite*gold: 2
Join Date: Mar 2008
Posts: 8,541
Received Thanks: 4,539
|
Quote:
Originally Posted by Atheuz
Timer sind eine feine Sache, trotzdem sollte man imo darauf verzichten wenn es einfacher geht.
Das hier im dem Teil angeben wo keine Angelblase gefunden wird;
ie = ie+1;
if( ie >= 1000 )
neustart();
Das hier im Script angeben wo die Angelblase gefunden wird;
ie = 0;
Sobald die Angelblase nicht gefunden wird, sollte die Variable ie hochzählen und ab einen gewissen Fehler-Wert wird die Funktion neustart() ausgeführt um den bot nochmal zu starten.
|
hab ich am anfang auch so gemacht, aber timer sind einfach viel preziser als so nen simpler Counter,
und du hast vergessen zu erwähnen das der counter resetet werden sollte wenn die angelblase gefunden wurde sonst überspringt der bot das warten auf die angelblase nach nen paar minuten immer
|
|
|
11/20/2008, 15:30
|
#11
|
elite*gold: 81
Join Date: Jul 2005
Posts: 1,921
Received Thanks: 2,239
|
Quote:
Originally Posted by °Remus°
hab ich am anfang auch so gemacht, aber timer sind einfach viel preziser als so nen simpler Counter,
und du hast vergessen zu erwähnen das der counter resetet werden sollte wenn die angelblase gefunden wurde sonst überspringt der bot das warten auf die angelblase nach nen paar minuten immer
|
Ich zitiere mich selbst.. :
Quote:
Das hier im Script angeben wo die Angelblase gefunden wird;
ie = 0;
|
Natürlich ist ie = 1000 nicht 1000 Sekunden, dafür hast du aber bei der ausführung ein Script welches zur gleichen Laufzeit deine gewünschte Funktion aufruft. Ein Timer dagegen hat vorallem in Autoit eine minimale Abweichung die je nach Länger der Laufzeit Probleme verursachen wird.
|
|
|
11/20/2008, 17:36
|
#12
|
elite*gold: 2
Join Date: Mar 2008
Posts: 8,541
Received Thanks: 4,539
|
Quote:
Originally Posted by Atheuz
Ich zitiere mich selbst.. :
Natürlich ist ie = 1000 nicht 1000 Sekunden, dafür hast du aber bei der ausführung ein Script welches zur gleichen Laufzeit deine gewünschte Funktion aufruft. Ein Timer dagegen hat vorallem in Autoit eine minimale Abweichung die je nach Länger der Laufzeit Probleme verursachen wird.
|
hab ich übersehen sry,
ich hatte noch nie probleme mit timern und ich setzt die aber auch nicht so oft ein
der threadersteller scheint sich ja auch nicht mehr zu melden
|
|
|
All times are GMT +1. The time now is 21:50.
|
|