Autoit Bot problem

05/01/2009 12:38 .Cake#1
Hi hab n Problem mit nem bot von mir...
der soll imma nachdem ein pixel eine bestimmte farbe bekommt dann imma jeweils einmal eine funktion ausführn aber das problem ist das er soffort nachdem er es einma gemacht had sofort noch einmal macht... kann mir da jemand helfen?

Func Start ()
While (1)
Sleep (100)
MouseMove( x, y )
Sleep (10)
MouseClick( "left" )
Sleep (10)
MouseMove( x, y )
Sleep (800)
MouseClick( "left" )
Sleep (10)
MouseDown( "left" )
Sleep(10)
MouseMove(x,y)
Sleep(800)
MouseUp( "left" )
Sleep (100)
While (1)
$pixelb = PixelGetColor ( x,y )
If $pixelb = 0x000000 Then
Sleep (1000)
MouseMove( x, y)
MouseClick( "left" )
MouseMove( x, y )
Sleep (700)
MouseClick( "left" )
Sleep(40)
MouseDown( "left" )
Sleep(10)
MouseMove(x,y)
Sleep(300)
MouseUp( "left" )
ExitLoop
EndIf
Sleep (10)
WEnd
Sleep (10)
WEnd
EndFunc

:confused::confused::confused:
05/01/2009 17:42 TerryChan#2
Quote:
Originally Posted by xXW4yn3Xx View Post
Hi hab n Problem mit nem bot von mir...
der soll imma nachdem ein pixel eine bestimmte farbe bekommt dann imma jeweils einmal eine funktion ausführn aber das problem ist das er soffort nachdem er es einma gemacht had sofort noch einmal macht... kann mir da jemand helfen?
:confused::confused::confused:
Code:
Func Start ()
	While (1)
		Sleep (100)
		MouseMove( x, y )
		Sleep (10)
		MouseClick( "left" )
		Sleep (10)
		MouseMove( x, y )
		Sleep (800)
		MouseClick( "left" )
		Sleep (10)
		MouseDown( "left" )
		Sleep(10)
		MouseMove(x,y)
		Sleep(800)
		MouseUp( "left" )
		Sleep (100)
		$pixelb = PixelGetColor ( x,y )
		If $pixelb = 0x000000 And $Check = 0 Then  
                       AndereFunktion()
                       $Check = 1
		EndIf
		Sleep  (10)
		Sleep (10)
	WEnd
EndFunc
Mach mal [ code] am anfang des codes und [/ code] am ende dann ist das ganze ein wenig leserlicher. Also ich weiss nicht ob ich das jez richtig verstanden hab du willst gucken ob sich ein bestimmter pixel geändert hat und wenn ja soll der einmal eine funktion ausführen oder dein ablauf hinter der IF abfrage?

schonmal ein gut gemeinter tipp den part hinter der IF abfrage kannst du auch in eine 2. Funktion packen indem du einfach eine neue erstellst:

Code:
func AndereFunktion

	Sleep (1000)
	MouseMove( x, y)
	MouseClick( "left" )
	MouseMove( x, y )
	Sleep (700)
	MouseClick( "left" )
	Sleep(40)
	MouseDown( "left" )
	Sleep(10)
	MouseMove(x,y)
	Sleep(300)
	MouseUp( "left" )

EndFunc
Wenn du willst das die funktion nur einmal ausgeführt wird nachdem die bedingung erfüllt wird dann brauchst du keine 2. schleife. Außerdem musst du wissen das wenn die Pixel immernoch die selbe farbe hat das sich das ganze immer wiederholt.

Wenn du genau das verhindern willst mach einfach eine Variable und in der IF schleife wird überprüft ob diese Variable 1 oder 0 ist.

Dim $Check = 0

Wenn du aber willst das, sobald der pixel wieder anders ist, deine 2. schleife aufhört dann solltest du dir die Do Until schleife anschauen.


Ich hoffe das ist das was du wolltest. Ansonsten nochmal genauer formulieren.


-Terry
05/01/2009 19:13 .Cake#3
thx hat geklappt^^