autoIT Hilfe gesucht

07/08/2010 07:30 Babykiller#1
Hallo, ich habe mal eine frage ... man stelle sich ein viereck vor welches aus 3x3 feldern besteht .... nun möchte ich ein skript bauen, welches durchgängig immer wieder alle felder überprüft, ob sich eine farbe ändert... wenn dies der fall ist soll ein klick erfolgen .... das habe ich soweit schon hinbekommen, aber das problem, welches ich zurzeit habe ist, das dieses programm zu schnell arbeitet... sprich wenn auf feld 5 und 9 sich die farbe geändert hat, klickt das programm nur zwischen diesen beiden hin und her und "vergisst" sozusagen mal feld 1

hier mal mein quellcode:

Code:
HotKeySet("{F6}", "Ende")
While 1
If PixelGetColor(181,300) = 0x6599BB Or 0xFFFFFF Then
	MouseClick("Left", 181, 300, 1, 1)
EndIf
If PixelGetColor(394,300) = 0x6599BB Or 0xFFFFFF Then
	MouseClick("Left", 394, 300, 1, 1)
EndIf
If PixelGetColor(606,300) = 0x6599BB Or 0xFFFFFF Then
	MouseClick("Left", 606, 300, 1, 1)
EndIf
If PixelGetColor(181,414) = 0x6599BB Or 0xFFFFFF Then
	MouseClick("Left", 181, 414, 1, 1)
EndIf
If PixelGetColor(394,414) = 0x6599BB Or 0xFFFFFF Then
	MouseClick("Left", 394, 414, 1, 1)
EndIf
If PixelGetColor(606,414) = 0x6599BB Or 0xFFFFFF Then
	MouseClick("Left", 606, 414, 1, 1)
EndIf
If PixelGetColor(181,533) = 0x6599BB Or 0xFFFFFF Then
	MouseClick("Left", 181, 533, 1, 1)
EndIf
If PixelGetColor(394,533) = 0x6599BB Or 0xFFFFFF Then
	MouseClick("Left", 394, 533, 1, 1)
EndIf
If PixelGetColor(606,533) = 0x6599BB Or 0xFFFFFF Then
	MouseClick("Left", 606, 533, 1, 1)
EndIf
WEnd
Func Ende()
Exit
EndFunc
vielen dank für jede antwort
07/08/2010 10:44 DraaaKe#2
du müsstest mal genau beschreiben was es machen soll^^ so wie ich das verstanden habe:

Wenn auf Feld 1 eine Farbe erscheint soll er 1mal drauf drücken, und nicht immer wieder, dann wenn auf Feld 6 die Farbe erscheint, soll er 1mal drauf drücken und auch nicht immer wieder?

Verschwindet die Farbe oder bleibt sie da?
Wie oft soll er drauf drücken?

Beantworte die paar Fragen und ich helf dir weiter :D
07/08/2010 17:51 Imaginär#3
Wenn es zu schnell ist dann bau doch
" sleep() "

ein oder ersetze bei

" MouseClick("Left", 606, 533, 1, 1) "

die letzte " 1 " in dem Eingeklammertem mt einer höheren Zahl.
07/08/2010 23:45 Metzer#4
KEINE FRAGEN + Falsche Sektion.

~>reported
07/09/2010 05:20 Der-Eddy#5
#moved
07/09/2010 12:02 omer36#6
wie _DownTime schon sagt, bau einfach überall ein sleep ein..

If PixelGetColor(181,300) = 0x6599BB Or 0xFFFFFF Then
MouseClick("Left", 181, 300, 1, 1)
Sleep(500)
EndIf
07/09/2010 13:10 PenGuin :O#7
Würde auch direkt die CPU Probleme beheben, die durch diese Schleife entstehen.

Hab hier mal die Performance erhöht und den Fehler korrigiert. Source kürzer gemacht und das Script schneller auswerten lassen ;)

Code:
HotKeySet("{F6}", "Ende")

Dim $aX[3] = [181, 394, 606]
Dim $aY[3] = [300, 414, 533]

While Sleep(50)
	For $a = 0 To 2
		For $b = 0 To 2
			If PixelGetColor($aX[$b], $aY[$a]) = 0x6599BB Or 0xFFFFFF Then
				MouseClick("Left", $aX[$b], $aY[$a], 1)
				Sleep(500)
			EndIf
		Next
	Next
WEnd

Func Ende()
	Exit
EndFunc   ;==>Ende
For ist immer schneller als If.
07/10/2010 12:13 Babykiller#8
ja an die sleep funktion hatte ich auch schon gedacht .... das problem bei sleep ist nur das wärend des sleeps ja nichts anderes passiert .... und bei diesem spiel wofür ich den bot bauen will ist so gebaut das mehrere klicks folgen müssen ... zur einfachen verständnis ein screen [Only registered and activated users can see links. Click Here To Register...]

//edit: achso und ja sie verschwinden wieder ^^
07/10/2010 18:37 omer36#9
ohh mann... warum so umständlich? :D machs so:

PHP Code:
HotKeySet("!{F1}""_Exit")


While 
1
    $B 
PixelSearch(1412599006070xFFFFFF 2)
    if 
IsArray($B) = True Then
    MouseMove
($B[0], $B[1], 1)
    
MouseClick("left")
    
Sleep(175)
    EndIf
WEnd

Func _Exit
()
    Exit
EndFunc 
benutz den au3info tool um die blaube farbe zu bekommen,und grenz den bereich ein wo die hasen da raus schauen....
müsste klappen...
07/10/2010 19:25 PenGuin :O#10
MouseDown - MouseUp ist schneller als MouseClick ;)
07/10/2010 20:17 Babykiller#11
omer36 das skript ist ja cool ^^ aber wenn ich die blaue farbe von den hasen einfüge dann klickt er nur (logischer weise) auf die höchste stelle die blau ist ... sprich auf die ohren und es passiert oft, das er daneben schlägt
07/10/2010 20:56 Shadow992#12
Quote:
Originally Posted by Babykiller View Post
omer36 das skript ist ja cool ^^ aber wenn ich die blaue farbe von den hasen einfüge dann klickt er nur (logischer weise) auf die höchste stelle die blau ist ... sprich auf die ohren und es passiert oft, das er daneben schlägt
Dann addier doch immer 20 pixel auf die X und 20-40 auf die Y Koordinate drauf , dann sollte es gehen .
07/11/2010 11:37 omer36#13
Quote:
Originally Posted by Babykiller View Post
omer36 das skript ist ja cool ^^ aber wenn ich die blaue farbe von den hasen einfüge dann klickt er nur (logischer weise) auf die höchste stelle die blau ist ... sprich auf die ohren und es passiert oft, das er daneben schlägt
dann such nach dem "rot" in deren mündern. (dann halt aufpassen, das es die piltze im hintergrund nicht trifft, oder machs wie shadow es sagt, dann müsstest du das ergänzen:

PHP Code:
MouseMove($B[0]+20$B[1]+301
musst halt bischen rum testen bis es klappt ;)

aber mit dem rot müsste glaube ich klappen...