While 1 schleife hört auf zu arbeiten

12/27/2012 23:12 EinfachSö#1
Hallo,

Ich habe jetzt meinen Prom Bug Bot für DarkOrbit ziemlich weit. Er kann den Bug schon ausnutzen und gibt mir Gewinn.
Ich habe die ganzen relevanten Befehle in ein while 1 Schleife geschrieben.
Also:

While 1
.
.
.
Wend

Der Part sollte sich ja eigentlich immer wiederholen. Ich habe ca. 2 Minuten beim arbeiten des Bottes zugeschaut, bis er auf einmal stoppte. Und zwar genau als der letzte Befehl aus der Schleife getätigt war ( er soll leicht nach rechts unten fliegen)


Warum???


Mfg
EinfachSö
12/27/2012 23:51 Croco™#2
Wir können dir keine eventuellen Fehler sagen wenn wir dein Script nicht kennen.
Aber normalerweise hört eine Schleife nicht einfach aus Spaß an der Freude auf zu arbeiten.
12/28/2012 01:15 EinfachSö#3
es könnte möglich sein, dass der skript nicht am ende aufgehört hat zu arbeiten, sondern mitten drin. Das Schiff fliegt nämlich 2 mal an diesen Punkt. Und ich glaube es war, weil er ein Bild nicht gefunden hat. Wenn man Leben verliert, blinkt der Bildschirm rot. Und da ich nicht geschrieben habe:

Do
Sleep(100)
Until "Bild gefunden"

hat er einaml gesucht und nichts gefunden. Und dann konnte er nicht weiterarbeiten.
Das habe ich gelöst, indem ich statt der imagesearch funktion einfach einen bestimmten pixel angegeben habe. Das funktioniert an der Stelle zum Glück auch gut.

Es klappt soweit alles perfekt. Ausser, dass mein Computer immer die Verbindung zum Server verliert. Es liegt NICHT an meinem Internet.
Das passiert nur, wenn man zu lange inaktiv ist. Wie ich das löse weiß ich leider auch nicht.
Mein Bildschirm ging auch in den Standby-Modus. Ob es während des laufen des Skriptes war oder nachdem es gestoppt hat weiß ich leider nicht. Ich vermute danach. Es ergbt sonst keinen Sinn.

Mit der Hoffnung, das nichts geklaut wird ;)

:ist eig AutoIt-Code. weiß aber nicht, wie ich ihn sonst einfüge ;)
PHP Code:
#cs ----------------------------------------------------------------------------

 
AutoIt Version3.3.8.1
 Author
:         EinfachSö

 Script 
Function:
    
Template AutoIt script.

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

Script Start Add your code below here

HotKeySet 
"{F8}""ende")

Func ende()
   Exit
EndFunc

#include <Imagesearch.au3>
$x1=0
$y1
=0
$x2
=0
$y2
=0
$x3
=0
$y3
=0
$x4
=0
$y4
=0

MouseClick
"left"5221059);===
MouseClick"left"641947);====öffnen des Browsers
Sleep
(1000);================

While 
1
         $result
=_Imagesearch("punkt.png"1$x1$y10);==== punkt anpeilen
            
If $result=1 Then
               MouseClick
"left"$x1$y1)
            EndIf
            
         Do
            
Sleep(100)
            
$pixelPixelGetColor1033689);==== "schlafen"bis man respawnen kann
         Until $pixel
0x3D8625

         MouseClick
"left"1033689);======= respawnen
        
         
Do
            
Sleep(100)
            
$handel=PixelGetColor1529114);===== warten bis man handel öfnen kann
         Until $handel
0xA48860
         
         $result2
=_ImageSearch("handel.png"1$x2$y20);===== öffnen des Handels
            
If $result2=1 Then
               MouseClick
"left"$x2$y2)
            EndIf
         
         Do
            
Sleep(100)
            
$prom=PixelGetColor1135495);==== warten bis handel geladen ist
         Until $prom
0xFFF752
         
         MouseClick
"left"1126532);=== sachen verkaufen
         Sleep
(100)
         
Send"62")
         
Sleep(100)
         
MouseClick"left"1125571)
         
Sleep(100)
         
MouseClick"left"690406)
         
         
MouseMove595143);==== zurück zum Bug fliegen
         Sleep
(100)
         
MouseDown"left")
         
Sleep(2000)
         
MouseUp"left")
         
Sleep(4000)
         
MouseClick"left"655169);==== cargo aufsammeln
         
         
Do
            
Sleep(100)
            
$aufgenommen=PixelGetColor118896);=== wenn aufgenommen ein bisschen
         Until $aufgenommen
0xE2D49A;============= wegfliegen und dann wieder von vorne
         MouseClick
"left"1254806)
         
Sleep(5000)
         
WEnd

While 1
   Sleep
(1)
WEnd 

Ich kann Autoit erst seit 2/3 Tagen, also entschuldigt mir bitte womögliche "Unnötigkeiten"
Man kann manches noch besser schreiben und auf das Sleep verzichten. Mach ich auch noch, muss aber den Bot grob zum laufen kriegen ;)
12/28/2012 03:30 Requi#4
Sieht ganz gut aus. Aber versuch soweit wie möglich nur ImageSearch zu nutzen, da es effektiver und genauer ist.
Morgen Mittag/Nachher können wir ja zsm dran arbeiten
01/02/2013 13:41 EinfachSö#5
Quote:
Originally Posted by 'RD. View Post
Sieht ganz gut aus. Aber versuch soweit wie möglich nur ImageSearch zu nutzen, da es effektiver und genauer ist.
Morgen Mittag/Nachher können wir ja zsm dran arbeiten
bin grad bei verwandten (Ferien)
kann also nicht wirklich an den Rechner. Ich melde mich mal, wenn ich wieder zurück bin.
01/02/2013 14:23 Croco™#6
Als kleinen Tipp.
Während der test Phase lass dir so viel wie möglich über ToolTips etc. anzeigen.
Dadurch kannst du genau sagen wo die Schleife aufhört zu arbeiten. Ich bin mir relativ sicher das sie einfach in einer Do schleife steckt und das nötige Ergebnis um diese Schleife zu verlassen nicht findet.
01/02/2013 20:44 logical691#7
I agree with the tool tips they are very useful when you are testing scripts.

As for imagesearch, its good but i dont know how well it will do with the moving images i never got it to work too good so i think a unique pixel will be best unless its for an image that does not move. Also its best to run the image though a loop of variations as its not 100% accurate and use to "sometimes" stop my GO2 bot because it could not find an image it did 5mins ago. Then again i was using PNG's so maybe that was the issue but i doubt it.

Btw here was one of my image loops could be done better but script is a few months old and i never re-wrote it because i quit the game.
Code:
;imgdir = image directory example images\
;image = image name for example "okbtn"
;$i = variation 1,2,3 example okbtn0, okbtn1, okbtn2
;$c = global number of images to check defalt for me is 5
;

For $i = 0 To $c
;added this so you can see how tooltips work
Tooltip("Checking image: " & $image & $i, 100, 100)
		$img = _ImageSearchArea($imgdir & $image & $i & ".png", 1, 0, 0, @DesktopHeight, @DesktopWidth, $x, $y, $tollerence)
		If $img = 1 Then
			MouseClick("left", $x, $y)
			Return
		EndIf
	Next
;if building was not foun d above check to see if it is upgrading (warehouse)
	For $i = 0 To $c
;added this so you can see how tooltips work
Tooltip("Checking image: " & $image & "ug" & $i, 100, 100)
		$img = _ImageSearchArea($imgdir & $image & "ug" & $i & ".png", 1, 0, 0, @DesktopHeight, @DesktopWidth, $x, $y, $tollerence)
		If $img = 1 Then
			MouseClick("left", $x, $y)
			Return
		EndIf
	Next

If $img = 0 Then
		MsgBox(0, "Error:", "Unable to find the image named " & $image & ".png" & @CRLF & "Bot will now close so you can correct the error.", 5)
		LogError("@ERROR: " & $image & ".png was not found forcing the bot to close.")
		Exit
	EndIf
01/02/2013 21:04 Achat#8
Quote:
Originally Posted by logical691 View Post
I agree with the tool tips they are very useful when you are testing scripts.
How about [Only registered and activated users can see links. Click Here To Register...]

Code:
TrayIconDebug 	If enabled shows the current script line in the tray icon tip to help debugging.
0 = no debug information (default)
1 = show debug
Rgds
01/02/2013 21:48 logical691#9
Thanks for that info Achat but im a tooltip fan i just change a setting in the function i ahve to disable ;)