Pixel search Bot Problem

01/10/2011 16:16 Tayes#1
Hallo ich habe hier folgenden Bot gemacht:

Auto it

Code:
Global $paused
Global $i
Global $a = 100
Global $Mouse
Global $ii
HotKeySet("{F8}", "_Scannerstart")
HotKeySet("{F9}", "_Pause")
HotKeySet("{ESC}", "_Exit")

While Sleep(50)
WEnd
Func _Scannerstart()

    For $i = 0 To @DesktopWidth Step 5

        $Pixel = PixelSearch($a - 50, $i - 100, $a + 50, $i, 0x000000)
        If Not @error Then
		$Mouse = MouseGetPos()
            Call("_Angriff")
            Return
        EndIf
    Next
    If $a >= @DesktopHeight Then
        $i = $i
        MsgBox(0, "", $i & "," & $a)
        $a = 100
        Call("_Scannerstart")
    Else
        $a += 100
        Call("_Scannerstart")
    EndIf
EndFunc

Func _Angriff()
    Local $i
	MsgBox(0, "", $Mouse[0] & "," & $Mouse[1])
    MouseClick("left", $Mouse[0], $Mouse[1
	Sleep(2000)
	Send("1")
	Sleep(1000)
	Send("2")
	Sleep(1000)
	Send("3")
	Sleep(1000)
	Send("4")
EndFunc 

Func _Exit()
    Exit
EndFunc 

Func _Pause()
    $paused = Not $paused
    While $paused
        Sleep(50)
    WEnd
EndFunc
Problem:
Der Bot soll auf eine bestimmte Farbe reagieren und darauf klicken. Anschliessend soll er wieder von vorn starten, jedoch zeigt er mir immer die Position an wo er gerade ist, doch das will ich ausblenden aber wenn ich nur die MsgBox wegnehm sagt er es trotzdem kann mir bitte wer helfen, Ausserdem fängt er nicht wieder an wenn er fertig ist...

Edit: Sry hab aussversehn Auto it Bereich übersehen bitte verschieben
01/10/2011 16:30 omer36#2
kury mal überflogen, und der fehler ist glaube ich hier:
$Mouse = MouseGetPos()
MouseClick("left", $Mouse[0], $Mouse[1


du willst doch auf diesen pixel clicken, falls es gefunden wird
$Pixel = PixelSearch(......)

die x und y coord´s werden in arrays wiedergegeben...
-> MouseClick("left", $Pixel [0], $Pixel [1])
01/10/2011 16:35 Tayes#3
Quote:
Originally Posted by omer36 View Post
kury mal überflogen, und der fehler ist glaube ich hier:
$Mouse = MouseGetPos()
MouseClick("left", $Mouse[0], $Mouse[1


du willst doch auf diesen pixel clicken, falls es gefunden wird
$Pixel = PixelSearch(......)

die x und y coord´s werden in arrays wiedergegeben...
-> MouseClick("left", $Pixel [0], $Pixel [1])

Also muss ich es dann so machen?

Code:
Func _Scannerstart()

    For $i = 0 To @DesktopWidth Step 5

        $Pixel = PixelSearch($a - 50, $i - 100, $a + 50, $i, 0x000000)
        If Not @error Then
		[COLOR="Red"]$Pixel = PixelSearch($a - 50, $i - 100, $a + 50, $i, 0x000000)[/COLOR]
            Call("_Angriff")
            Return
        EndIf
    Next
    If $a >= @DesktopHeight Then
        $i = $i
        MsgBox(0, "", $i & "," & $a)
        $a = 100
        Call("_Scannerstart")
    Else
        $a += 100
        Call("_Scannerstart")
    EndIf
EndFunc
Aber dann ist doich Pixelsearch 2mal da---

und dass Angriff dann so?

Code:
Func _Angriff()
    Local $i
	MsgBox(0, "", $Mouse[0] & "," & $Mouse[1])
    MouseClick("left", $Pixel [0], $Pixel [1])
	Sleep(2000)
	Send("1")
	Sleep(1000)
	Send("2")
	Sleep(1000)
	Send("3")
	Sleep(1000)
	Send("4")
EndFunc
01/10/2011 16:37 omer36#4
würd ma so sagen

Code:
Func _Scannerstart()
    For $i = 0 To @DesktopWidth Step 5

        $Pixel = PixelSearch($a - 50, $i - 100, $a + 50, $i, 0x000000)
       [COLOR="SeaGreen"] If IsArray($Pixel) Then[/COLOR]
            Call("_Angriff")
            Return
        EndIf
    Next
    If $a >= @DesktopHeight Then
        $i = $i
        MsgBox(0, "", $i & "," & $a)
        $a = 100
        Call("_Scannerstart")
    Else
        $a += 100
        Call("_Scannerstart")
    EndIf
EndFunc
01/10/2011 16:41 Tayes#5
Quote:
Originally Posted by omer36 View Post
würd ma so sagen

Code:
Func _Scannerstart()
    For $i = 0 To @DesktopWidth Step 5

        $Pixel = PixelSearch($a - 50, $i - 100, $a + 50, $i, 0x000000)
       [COLOR="SeaGreen"] If IsArray($Pixel) Then[/COLOR]
            Call("_Angriff")
            Return
        EndIf
    Next
    If $a >= @DesktopHeight Then
        $i = $i
        MsgBox(0, "", $i & "," & $a)
        $a = 100
        Call("_Scannerstart")
    Else
        $a += 100
        Call("_Scannerstart")
    EndIf
EndFunc
Ok und das bei Angriff stimmt dann oder?
01/10/2011 16:47 omer36#6
ja, halt das weglassen:
Local $i
MsgBox(0, "", $Mouse[0] & "," & $Mouse[1])

bzw die $mouse in $pixel umbenennen
01/10/2011 16:52 Tayes#7
Also ich hab jetzt alles geschafft jedoch die meldung wird ncoh angezeigt beendet sich aber anch 1sec wieder... Jedoch habe ich jetzt noch eine Frage:

Welche Farbe visiert man von einem Mob an? Da sich die Farbe ja meist verändert, und mein Bot zeigt mir die Farben immer irgendwo an aber nicht da wo er soll bitte helft mir---

Code:

Code:
Global $paused
Global $i
Global $a = 0
Global $a = 100
Global $Mouse
Global $ii
HotKeySet("i", "_Scannerstart")
HotKeySet("o", "_Pause")
HotKeySet("{ESC}", "_Exit")

While 1
Sleep(10)
$f = 0
Do
    $f = $f + 1
Until $f = 10
WEnd

Func _Scannerstart()
	While 1
    For $i = 0 To @DesktopWidth Step 20

        $Pixel = PixelSearch(450,202,1467,917, 0x4C3A4E)
        If Not @error Then
            $Mouse = MouseGetPos()
            Call("_Angriff")
            Return
        EndIf
        $Mouse = MouseMove($i, $a, 1)
    Next
    If $a >= @DesktopHeight Then
        $i = $i
        MsgBox(0, "", $i & "," & $a)
        $a = 100

        Call("_Scannerstart")
    Else
        $a += 100
        Call("_Scannerstart")
    EndIf
Wend
EndFunc

Func _Ausruhen()
		send ("r")
		sleep (18000)
		send("w")		
EndFunc
Func _Angriff()
	While 1
    Local $i
    MsgBox(0, "", $Mouse[0] & "," & $Mouse[1], 2)
    MouseClick("left", $Mouse[0], $Mouse[1], 2)
	send ("1")
	sleep (1000)
	send ("1")
	sleep (30000)

Wend
EndFunc 

Func _Exit()
    Exit
EndFunc 

Func _Pause()
    $paused = Not $paused
    While 1 $paused
        Sleep(50)
    WEnd
EndFunc