Autoit Pixel Search

12/16/2013 17:16 NerDxx™#1
Hi Leute wie kann ich 2 oder mehr Farben gleichzeitig suchen ?
mein Aktuelles Script,

Code:
HotKeySet ("{F1}", "Start")
HotKeySet ("{F2}", "_Exit")

While 1
Sleep(250)
WEnd

Func Start()
While 1
$pxs = PixelSearch(3,9,1277,882, 0x9C0200)
If isArray($pxs) then
MouseMove($pxs[0],$pxs[1], 0)
MouseClick("Left")
EndIf
WEnd
EndFunc

Func _Exit()
Exit
EndFunc
12/16/2013 17:43 alpines#2
Du kannst das einfach kombinieren
Code:
$a = PixelSearch()
$b = PixelSearch()

If IsArray($a) and IsArray($b) Then ;...
12/16/2013 17:56 NerDxx™#3
Quote:
Originally Posted by alpines View Post
Du kannst das einfach kombinieren
Code:
$a = PixelSearch()
$b = PixelSearch()

If IsArray($a) and IsArray($b) Then ;...
Wie genau sollte es aussehen?

Code:
HotKeySet ("{F1}", "Start")
HotKeySet ("{F2}", "_Exit")

While 1
Sleep(250)
WEnd

Func Start()
While 1
$a = PixelSearch(3,9,1277,882, 0x0E0E22)
$b = PixelSearch(3,9,1277,882, 0x9C0200)
If IsArray($a) and IsArray($b) Then
MouseMove($pxs[0],$pxs[1], 0)
MouseClick("Left")
EndIf
WEnd
EndFunc

Func _Exit()
Exit
EndFunc
So?

habe auch das hier gefunden aber bei mir läuft das nicht ...
12/16/2013 18:04 alpines#4
Das war nur Pseudocode, so wird das natürlich nicht funktionieren da du $pxs[2] nicht definiert hast.
Kommt darauf an was du genau möchtest, möchtest du an die Fundstelle von $a klicken oder von $b, oder beides?
12/16/2013 18:05 NerDxx™#5
er soll auf beide Farben klicken
12/16/2013 18:07 alpines#6
Kannst du damit probieren. Der klickt beide an wenn beide Pixel da sind, ansonsten klickt der keins:
Code:
HotKeySet ("{F1}", "Start")
HotKeySet ("{F2}", "_Exit")

While 1
Sleep(250)
WEnd

Func Start()
While 1
$a = PixelSearch(3,9,1277,882, 0x0E0E22)
$b = PixelSearch(3,9,1277,882, 0x9C0200)
If IsArray($a) and IsArray($b) Then
MouseClick("left", $a[0], $a[1], 1, 0)
MouseClick("left", $b[0], $b[1], 1, 0)
EndIf
WEnd
EndFunc

Func _Exit()
Exit
EndFunc
Wenn du es so haben möchtest das der auch drauf klickt wenn nur eins davon sichtbar ist dann musst du das anders formulieren.
12/16/2013 18:12 NerDxx™#7
Danke was muss ich ändern damit er auf die Farbe drückt die grade da ist ?
und wenn ich zb. noch andere farben möchte dann
c,d,e,f,g etc.?
12/16/2013 18:38 alpines#8
Du hast das doch als erstes gepostet was passiert wenn er es findet, wiederhol den Teil einfach und fertig. Es scheint als ob du gar nichts davon kannst, schau dir doch mal zuerst Tutorials an.
12/17/2013 13:20 NerDxx™#9
Quote:
Originally Posted by alpines View Post
Du hast das doch als erstes gepostet was passiert wenn er es findet, wiederhol den Teil einfach und fertig. Es scheint als ob du gar nichts davon kannst, schau dir doch mal zuerst Tutorials an.

Würde ich mich auskennen hätte ich hier nicht gefragt :P
Danke für die Hilfe !

Code:
HotKeySet ("{F1}", "Start")
HotKeySet ("{F2}", "_Exit")

While 1
Sleep(250)
WEnd

Func Start()
While 1
$a = PixelSearch(3,9,1277,882, 0x9C0200)
If IsArray($a) Then
MouseClick("left", $a[0], $a[1], 1, 0)
EndIf


$b = PixelSearch(3,9,1277,882, 0x0E0E22)
If IsArray($b) Then
MouseClick("left", $b[0], $b[1], 1, 0)
EndIf
WEnd
EndFunc

Func _Exit()
Exit
EndFunc
12/17/2013 13:38 alpines#10
Du suchst aber glaube ich keine Hilfe sondern jemand der das für ich macht also gehört das entweder in den Request (Sticky) Thread oder in die Coding TBM.
12/24/2013 16:34 NerDxx™#11
Ist es möglich das er nach 2 Farben sucht zb.
es sind Blaue und Rote Bilder und Grüne und Rote Bilder er soll auf das Grüne und Rote Bild drücken ?
ein Teil Grün der andere Teil Rot, er soll 2 Farben erkennen und auf das Bild mit den passenden Farben drücken.

Mein Script;
Code:
HotKeySet ("{F1}", "Start") ;Start
HotKeySet("{F2}", "TogglePause") ;Pause + Weiter
HotKeySet ("{F3}", "_Exit"); Exit

Global $Paused

While 1
Sleep(250)
WEnd

Func Start()
While 1
$a = PixelSearch(11,13,1265,987, 0xED1B24) ;rot
$b = PixelSearch(11,13,1265,987, 0xA8E71E) ;grün
If IsArray($a) and IsArray($b) Then
MouseClick("left", $a[0], $a[1], 1, 0)
MouseClick("left", $b[0], $b[1], 1, 0)
EndIf
WEnd
EndFunc

Func TogglePause()
    $Paused = NOT $Paused
    While $Paused
        sleep(100)
    WEnd
EndFunc


Func _Exit()
Exit
EndFunc
Beispiel Bild;
[Only registered and activated users can see links. Click Here To Register...]
12/24/2013 16:38 alpines#12
Da musst du ein bisschen rechnen, eine Funktion dafür gibt es nicht. Auch keine UDF.
12/24/2013 19:57 NerDxx™#13
Quote:
Originally Posted by alpines View Post
Da musst du ein bisschen rechnen, eine Funktion dafür gibt es nicht. Auch keine UDF.
OK danke für die Antwort !