[Autoit] Pixelsearch if Abfrage

DukesGG

Lieutenant
Registriert
Sep. 2014
Beiträge
789
Hallo

Ich bin neu bei Autoit und versuche gerade ein Script zu schreiben. Ich brauche nur noch den richtigen Code für "wenn in diesem Bereich ein roter Pixel ist drücke dies und das".
Könntet ihr mir da weiter helfen? :)

MfG
 
Hi,

Die funktion ist hier beschrieben:
https://www.autoitscript.com/autoit3/docs/functions/PixelSearch.htm

Ungetestet sollte das in etwa hinhauen:
#include <MsgBoxConstants.au3>

; Find a pure red pixel in the range 0,0-20,300
Local $aCoord = PixelSearch(0, 0, @DesktopWidth, @DesktopHeight, 0xFF0000)
If Not @error Then
Mouseclick("left", $aCoord[0], $aCoord[1])
;MsgBox($MB_SYSTEMMODAL, "", "X and Y are: " & $aCoord[0] & "," & $aCoord[1])
EndIf


Wie gesagt, es ist ungetestet, evtl die syntax prufen, sollte aber so passen ;)

Gruß
 
Schonmal nicht schlecht danke. Gibts auch einen Befehl, dass der Bot nichts macht bis der rote Pixel auftaucht?

Sleep(...) würde hier nicht funktionieren da es immer unterschiedliche Zeiten sind deswegen ja mit Pixelsearch.
Ergänzung ()

Also der Bot soll in einem Spiel verwendet werden. Der Bot soll F drücken, solange warten bis in einem bestimmten Bereich ein roter Pixel auftaucht und soll dann nochmal F drücken.
 
Da hat jemand keine Lust sich selbst damit auseinander zu setzen.. ^^

HotKeySet("^{F1}", "doit")
HotKeySet("^!{F1}", "stopit")

$run = 0

While 1
Sleep(200)
If $run Then
Send("F")
; Find a pure red pixel in the range 0,0-20,300
Local $aCoord = PixelSearch(0, 0, @DesktopWidth, @DesktopHeight, 0xFF0000)
If Not @error Then
Mouseclick("left", $aCoord[0], $aCoord[1])
;MsgBox($MB_SYSTEMMODAL, "", "X and Y are: " & $aCoord[0] & "," & $aCoord[1])
EndIf
EndIf
WEnd

Func doit()
$run = 1
EndFunc

Func stopit()
$run = 0
EndFunc

Mit STRG+F1 startest du ihn, mit STRG+ALT+F1 stoppst du ihn.
Ist ebenfalls nur auf die schnelle gemacht, trotzdem viel spaß ;)

Gruß
 
Danke für deine Hilfe, deinen Code werde ich später noch brauchen.

Nun ein neues Problem. Mein Script macht alles was es machen soll und funktioniert gut. Nun möchte ich noch etwas einbauen.
Sobald "die Pixelsuche länger als 40 sek. dauert" soll etwas anderes gemacht werden bzw. soll er aus der Schleife raus gehen und etwas anderes ausführen und wenn er damit fertig ist wieder an den Anfang der Schleife. Ich finde nur leider nicht den richtigen Code dafür. Ich habe schon mit Timer usw. probiert, leider ohne Erfolg.
Ich lerne Autoit ja gerade erst. Wäre nett wenn ihr mir da ein bisschen weiterhelfen könntet :) In der Zwischenzeit werde ich mich ein wenig durchlesen.

Mein Code:

Code:
func start()
While 1

$waitpixelcolor=0xC7A602
Do
$waitpixel = PixelSearch(889,574,995,690,$waitpixelcolor)
Until not @error
   Send("f")
   Sleep(3000)
   Send("f")
   Sleep(3000)

WEnd
EndFunc
 
Zuletzt bearbeitet:
Zurück
Oben