Autoit schleife die wartet bis das eine oder andere eintritt

07/19/2008 19:53 DarkAngel76#1
Hallo zusammen,

ich bastel jetzt schon seit tagen an einem scriptteil aber komme nicht weiter!

Folgendes ich versuche in autoit ein schleife zu bauen , die darauf wartet das
sich entweder ein pixel an der stelle x oder ein pixel an der stelle y verändert .

Anders gesagt die schleife soll warten bis ein pixel am oberen rand schwarz wird
oder der andere pixel unten in einer leiste sich verändert wobei da die farbe unterschiedlich ist !

Wäre super wenn jemand dafür eine lösung hätte!

Danke
07/19/2008 21:13 wadimwadim#2
Code:
Do
	$YourColor = PixelGetColor (100, 100) ; 100, 100 = Positionen deines Pixels
	Sleep (10)
Until $YourColor = Dec ("0xFF0000") ; Farbe in Hex eingeben; Fall du in Dec haben willst, einfach Dec weglassen.
schau dir [Only registered and activated users can see links. Click Here To Register...] mal an, MasteR GunneR hat es sehr schön erklärt.
07/19/2008 21:33 DarkAngel76#3
danke für die antwort , aber eine einfache do until schleife geht da nicht !

ich muss eine schleife bauen die erst aufhört zu laufen wenn:

1. sich ein pixel am oberen rand verändert oder
2. sich ein pixel am unteren rand verändert

erst dann soll die schleife aufhören und das script normal weiterlaufen !

also brauch ich etwas in 1 schleife was zwei verschiedene positionen von pixeln abfragt
und wenn sich eine der beide verändert sich die schleife beendet.
07/19/2008 22:17 Term!nX#4
If-Abfragen und ExitLoop sollten helfen.
07/19/2008 22:41 Hikkikomori#5
du kannst auch einfach das, was wadimwadim geschrieben hat, erweitern:

Do
$YourColor = PixelGetColor (100, 100) ; 100, 100 = Positionen deines Pixels
$YourColor2 = PixelGetColor(1024,768) ; 1024 , 768 = Positionen deines Pixels
Sleep (10)
Until $YourColor = Dec ("0xFF0000") Or $YourColor2 = Dec("0xFF0000"); Farbe in Hex eingeben; Fall du in Dec haben willst, einfach Dec weglassen.
07/20/2008 12:13 DarkAngel76#6
ah sowas wusste ich nicht das sowas geht weil in der hilfe steht nix von einer erweiterung mit OR.

Die schleife funktioniert jetzt soweit , solange sich die farbe nicht verändert !

$3astro = PixelGetColor (455, 56)
$wcargo = PixelSearch(275, 625, 270, 625, 0xbc9b58, 50)
Sleep (100)
Until $3astro = 0x000000 or $wcargo = ???

jetzt muss ich nur noch wissen was ich bei den ??? schreiben muss.
leider ist es anders nicht möglich da sich die farbe bei $wcargo etwas im farbton verschiebt sprich nicht immer genau x farbe dort zu finden ist !
Die farbe verändert sich die ganze zeit ein wenig , wenn die anzeige das anzeigt damit das skript weiter machen soll ist die farbe von blau auf eine art rot gewandert !
oder gibt es da noch eine andere möglichkeit ?

Danke für die schnelle und gute hilfe "bin ich anscheindend im richtigen forum gelandet":D
07/20/2008 13:02 wadimwadim#7
Nun Pixelsearch liefert dir ja 2 arrays der Positionen zurück, dann musst du wohl aus sie nehmen.
07/20/2008 13:09 DarkAngel76#8
ja das weis ich es liefert mir 2 werte zurück 1 mal x und 1 mal y
nur mein problem ist wie schreibe ich es bei den fragezeichen hin das er es erkennt !

z.b. 275,625 nimmt er nicht

$3astro = PixelGetColor (455, 56)
$wcargo = PixelSearch(275, 625, 275, 625, 0xbc9b58, 50)
Sleep (100)
Until $3astro = 0x000000 or $wcargo = $wcargo[0]

würde das so gehen ?

oder eher
Until $3astro = 0x000000 or $wcargo[0] = 275

Hat sich erledigt ; hab das jetzt so gelöst
Do
$w3astro = PixelGetColor(455, 56)
$wcargo = PixelSearch(275, 625, 275, 625, 0xbc9b58, 50)
Sleep(100)
Until $w3astro = 0x000000 Or IsArray($wcargo)

Danke nochmal für die hilfe !!!
07/20/2008 21:18 Hikkikomori#9
Until $3astro = 0x000000 or $wcargo[0] = 275
^hast du selber geschrieben, sollte aber auch klappen meine ich. wenn nicht machste vor dem Until noch ne zeile mit $wcargox = $wcargo[0] und dann Until $wcargox = 275.
aber wie gesagt eigentlich sollte deine zeile schon funktionieren.
07/21/2008 11:19 °Remus°#10
probiers ma so (ich hoffe ich habs richtig verstanden

While 1
If Pixelgetcolor(x,y) = .... Then
ExitLoop
Else
PixelSearch(x1,y1,x2,y2,color)
If not @error Then exitloop
EndIf

ka obs funktioniert aber ich hoffe ich konnte helfen