[AutoIt] Kleine Hilfe

03/25/2009 19:34 AB°Hiro#1
Guten Tag miteinander

Ich befasse mich seit einigen Stunden mit AutoIt.
Da ich aufgrund meiner Ausbildung schon einige Erfahrung mit
programmieren sammeln konnte, habe ich mich auch
gleich an ein "etwas grösseres" Projekt (einen eigenen Angelbot) gewagt :P

Nun stecke ich aber leider fest und könnte ein wenig
Hilfe gebrauchen :>

Hier mal der Code, den ich bisher habe:
[Only registered and activated users can see links. Click Here To Register...]

Die Funktionen zoomWindow und endAB klappen ohne
Probleme.

Das einzige Problem, das mir bisher aufgefallen ist, müsste in der startAB liegen.
Ab und zu holt er gar keinen Köder und versucht
gleich die Angel rauszuschmeissen, ein andermal
holt er dafür gleich 3 Köder aufs mal und
wieder ein andermal klappt das Köder aufladen hervorragend, dafür zieht der Char die Angel gleich wieder raus...

Habt ihr evtl. eine Idee, an was das liegen könnte
bzw. wie ich dies beheben kann?

Vielen Dank
AB°Hiro
03/25/2009 22:48 felixli93#2
naja, ich denke einfach, dass sich die farbe auch verändert, wenn keine fischblase auftaucht (der kopf vom charakter bewegt sich ja ständig)

versuch mal:

Code:
Func startAB()
While 1
	
	
	Send("{F1}")
	Sleep(1000)
	Send("{F2}")
	
	
	Do
		$varColor2 = PixelGetColor(655, 180)
		Sleep(250)
	Until $varColor2 = 0xFCF8FC
	
	
	Sleep(2000)
	Send("{F2}")
	Sleep(1000)
	
WEnd
EndFunc
03/26/2009 22:10 AB°Hiro#3
Hallo felixli
Vielen Dank für diesen Input.

Das Problem mit dem undefinierbaren Verhalten (einma Köder nehmen,
dann wieder nicht usw.) konnte ich nun lösen.
Bei den F1 bzw. F2 Tasten hatte ich das "down" und "up" vergessen.

Das jedoch immernoch nicht geht, ist, dass die Angelrute nach 2 Sekunden
rausgezogen wird... im Moment hält er die einfach solange rein, bis
sie automatisch rausgezogen wird.
Was auch nicht geht ist, dass sich die Methode startAB() wiederholt,
obwohl ich dies ja eigentlich mit While 1 ... gewährleistet habe,
oder irre ich mich da?

Hier einmal der aktuelle Code:
*alt.siehe.Edit*

Die Koordinaten habe ich mit dem AutoIt-Info gefreezt... also
kann ich mir nicht vorstellen, dass da etwas nicht stimmt :S

Habt ihr evtl. ne Idee was da falsch ist?

Danke und Gruss
AB°Hiro


EDIT:
Das Problem mit dem "unendlichen ausführen" konnte ich jetzt lösen :)

Das einzige, das jetzt noch nicht so richtig will ist, dass mein Char die Angel
immer ca. nach einer Sekunde rauszieht, anstatt, wie angegeben, nach 2 Sekunden.

Könnt ihr mir hier evtl. weiterhelfen?

Hier nochmals der aktuelle Code:
[Only registered and activated users can see links. Click Here To Register...]

Würde mich über eine Antwort freuen :)

Gruss
03/27/2009 23:46 fieser-hund#4
versuchs mit pixelsearch
einfach in der hilfe rumblättern
mfg
03/28/2009 14:07 felixli93#5
also dass ich das richtig verstehe: er erkennt die fischblase, zieht aber schon nach 1 sekunde statt nach 2 raus?
normal sollte das so schon passen!
03/28/2009 16:02 schlurmann#6
Quote:
Originally Posted by AB°Hiro View Post
Da ich aufgrund meiner Ausbildung schon einige Erfahrung mit
programmieren sammeln konnte
Warum dann AutoIT?
03/28/2009 16:10 Adroxxx#7
Weil AutoIt kuhl ist! :D

[ironie off ]

Wenn du schon Erfahrung mit anderen Sprachen hast, nimm lieber die.
03/29/2009 03:41 schlurmann#8
Quote:
Originally Posted by Adroxxx View Post
Weil AutoIt kuhl ist! :D

[ironie off ]

Wenn du schon Erfahrung mit anderen Sprachen hast, nimm lieber die.
Ich glaub es gibt so AutoIT Propagandisten. Die klingeln Sonntags um 11 an der Haustür und überzeugen arme Jugendliche von AutoIT. :p
03/29/2009 22:38 AB°Hiro#9
Arme Jugendliche,
oder lernwillige Erwachsene ;)

Warum AutoIt?

Weil ich eine neue Programmiersprache lernen wollte,
die ich mit einem Hobby verbinden kann und da war mir
AutoIt als Erstes in den Sinn gekommen :P


Btw: das Herausziehen der Angel funktioniert nun wie gewünscht.
Ich habe einfach noch einige weitere Pixelsearchs hinzugefügt.

Auch der Köder nachlader funktioniert wie gewünscht.

Im Moment bin ich gerade dabei, kleine Fische aus dem Inventar zu eliminieren :P
03/30/2009 22:35 AB°Hiro#10
Ich mal wieder :)

Irgendwie steh ich grad voll auf der Leitung

Wenn ich die Farbe eines Pixels mittels
Code:
$colorInv1_3 = PixelGetColor(1355, 589)
hole, und dann diese Variable per
Code:
MsgBox(0, "color", $colorInv1_3)
ausgebe (damit ich den numerischen Wert der Farbe hab), kommen bei mir
immer mehrere Werte raus...
bei diesem Beispiel war der Farbcode: 0x6D754E
und die Werte der MsgBox: 13485964, 1579032, 5589297 und 7173454 :S

An was könnten diese verschiedenen Werte liegen?


2. Frage:

Wenn ich dann diese 3. Position im Inventar auf diese Farbe(n)
(des kleinen Fisches) überprüfe, und es somit NUR ausführe, wenn die Farbe
einer der oben genannten ist, sollte dies ja eigentlich klappen nicht?

Nunja... bei mir ist es so, dass er jedesmal die Click-Events ausgeführt...

Deshalb habe ich eine zusätzliche Prüfung eingebaut, nämlich, dass er diesen
Abschnitt nur ausführen soll, wenn der Hintergrund nicht gleich 0x080905 ist.

Aber auch das hat nicht geklappt...


Der Code einmal mit Logischem Operator:
Code:
		
; 1. Reihe der 1. Inventarseite
If ($colorInv1_3 = 13485964) And ($colorInv1_3 <> 0x080905) Then ;0x6D754E
	MouseClick("left", 1355, 560)
	Sleep(500)
	MouseClick("left", 1224, 582)
	Sleep(500)
	MouseClick("left", 680, 480)
	Sleep(500)
ElseIf ($colorInv1_3 = 1579032) And ($colorInv1_3 <> 0x080905) Then ;0x6D754E 
	MouseClick("left", 1355, 560)
	Sleep(500)
	MouseClick("left", 1224, 582)
	Sleep(500)
	MouseClick("left", 680, 480)
	Sleep(500)
ElseIf ($colorInv1_3 = 5589297) And ($colorInv1_3 <> 0x080905) Then ;0x6D754E
	MouseClick("left", 1355, 560)
	Sleep(500)
	MouseClick("left", 1224, 582)
	Sleep(500)
	MouseClick("left", 680, 480)
	Sleep(500)
ElseIf ($colorInv1_3 = 7173454) And ($colorInv1_3 <> 0x080905) Then ;0x6D754E
	MouseClick("left", 1355, 560)
	Sleep(500)
	MouseClick("left", 1224, 582)
	Sleep(500)
	MouseClick("left", 680, 480)
	Sleep(500)
EndIf

Und einmal mit einem verschachtelten If:
Code:
		
; 1. Reihe der 1. Inventarseite
If ($colorInv1_3 = 13485964) Then ;0x6D754E
	If ($colorInv1_3 <> 0x080905) Then
		MouseClick("left", 1355, 560)
		Sleep(500)
		MouseClick("left", 1224, 582)
		Sleep(500)
		MouseClick("left", 680, 480)
		Sleep(500)
	EndIf
ElseIf ($colorInv1_3 = 1579032) Then ;0x6D754E 
	If ($colorInv1_3 <> 0x080905) Then
		MouseClick("left", 1355, 560)
		Sleep(500)
		MouseClick("left", 1224, 582)
		Sleep(500)
		MouseClick("left", 680, 480)
		Sleep(500)
	EndIf
ElseIf ($colorInv1_3 = 5589297) Then ;0x6D754E
	If ($colorInv1_3 <> 0x080905) Then
		MouseClick("left", 1355, 560)
		Sleep(500)
		MouseClick("left", 1224, 582)
		Sleep(500)
		MouseClick("left", 680, 480)
		Sleep(500)
	EndIf
ElseIf ($colorInv1_3 = 7173454) Then ;0x6D754E
	If ($colorInv1_3 <> 0x080905) Then
		MouseClick("left", 1355, 560)
		Sleep(500)
		MouseClick("left", 1224, 582)
		Sleep(500)
		MouseClick("left", 680, 480)
		Sleep(500)
	EndIf
EndIf

Leider klappen beide so nicht...

Sehr ihr evtl. den Fehler?


Danke und Gruss
AB°Hiro
03/31/2009 15:30 felixli93#11
es kann nie sein, dass ein fisch auf dem selben pixel 2 verschiedene farben hat!
dann hast du die maus einfach irgendwo falsches hinbewegt
check auch mal, ob du im info-tool die selbe einstellung bei "options-coord mode" hast wie die
Opt ("pixelcoordmode"/"mousecoordmode",0)
im Script
04/05/2009 14:37 Rayser9119#12
felixli93 finde ich kann echt mit marco mit halten wenn nicht sogar besser scripten
04/06/2009 16:01 verT!c4L#13
Habt ihr 'nen Nagel im Kopf? Wayne intressiert das denn schon?
Vermutlich ziehen wir euch um Längen ab, vorallem wenn ich dann
so komische Threads von felixli93 finde die Code enthalten
mit den größten Kinderkrankheiten überhaupt.
04/06/2009 18:53 felixli93#14
Quote:
Originally Posted by verT!c4L View Post
Habt ihr 'nen Nagel im Kopf? Wayne intressiert das denn schon?
Vermutlich ziehen wir euch um Längen ab, vorallem wenn ich dann
so komische Threads von felixli93 finde die Code enthalten
mit den größten Kinderkrankheiten überhaupt.
fühlst dich selber wohl so toll, weil du guard bist!
und dann mit 60 thx durchs forum rennen...

ich habe auch selbst nie behauptet, dass ich's drauf hab

dir sollte auch klar sein, dass ich nicht gerade meine gesamten kenntnisse in so einen thread schreiben kann oder?
klar könnte man die ganzen codes auch auf einem höheren niveau schreiben, aber dann würde das niemand mehr verstehen

und wenn ich mir mal so ansehe, was die anderen "großen" so zusammenscripten, dann muss ich mich schon manchmal fragen, wer hier die größten kinderkrankheiten schreibt!
04/07/2009 01:09 Bot_interesierter#15
Quote:
Originally Posted by felixli93 View Post
...
klar könnte man die ganzen codes auch auf einem höheren niveau schreiben, aber dann würde das niemand mehr verstehen...
Kannst du das mal bitte näher erläutern?
Wieso sollte dein Code schwieriger zu verstehen sein wenn du ordentlicher programmierst?