AutoIT Farberkennung Hilfe!

01/24/2013 02:48 airfight1#1
Hallo Liebe Leute :handsdown:
Ich suche jemanden der mir mal eben behilflich sein kann bei einem code.
Irgendwie klappt das mit der Farberkennung nicht so richtig bzw überhaupt gar nicht. Er soll die farbe bei den koordinaten "738, 681, 874, 695" suchen und wenn er sie gefunden hat soll er mit der maus an einer bestimmten position gehen und die linke maus taste 1x drücken. Bzw würde es mir auch reichen wenn er einfach eine taste drück wie zb 6. Falls er die bestimmte farbe nicht findet soll er das script normal weiter laufen lassen.

Falls mich jemand verstanden hat, bitte ich um hilfe :(
Und gäbe es die möglichkeit das er nach 2 farben sucht und die taste drückt?
also farbe 1 gefunden push 6 falls nich gefunden weiter laufen lassen farbe 2 gefunden push 6 usw usw :rolleyes:

Ich habe schon einge zeit selbst geguckt auch hier im forum aber es funzt und funzt einfach nich mit der maus und der farbe. :o

Mfg Airfight


Quote:
HotKeySet("{ü}", "Start")
HotKeySet("{ä}", "_Exit")

While 1
Sleep(250)
WEnd

Func start()
While 1
Send("{1}")
Sleep(4000)
$Variable = PixelSearch(738, 681, 874, 695, 0xE3E5F2)
If IsArray($Variable) = True Then
MouseMove($Variable [782], $Variable [836], 1
MouseClick("left")
EndIf
Send("{2}")
Sleep(1000)
Send("{4}")
Sleep(1000)

WEnd
EndFunc

Func _Exit()
Exit
EndFunc
01/24/2013 07:40 Havelock_Vetinari#2
Man muss $Variable[0] $Variable[1] bei Pixelsearch nehmen , da dort die Koordinaten eingetragen werden , wenn die Farbe gefunden wurde
01/24/2013 11:53 airfight1#3
Quote:
Originally Posted by Alex_II View Post
Man muss $Variable[0] $Variable[1] bei Pixelsearch nehmen , da dort die Koordinaten eingetragen werden , wenn die Farbe gefunden wurde
Könntest du mir das ganze in einem code schicken pls? :D
irgendwie versteh ich´s net .. :(:handsdown:
01/24/2013 12:21 Lawliet#4
Der ganze Code ist falsch.
PixelSearch ist dazu da um nach einer Farbe zu suchen, nicht um die Farbe an einer Stelle herauszufinden.
Dazu musst du PixelGetColor nutzen.
Bei PixelSearch wir ein Array zurückgegeben, d.h. ein 1D, 2D, 3D (++) Feld, welches du dir so vorstellen musst:
1D:
wert1|wert2|wert3|wert4...
2D:
x|y|z|w|
-----------
c|v|n|u|
3D:
Das ganze eben noch im Raum.

Code:
MouseMove($Variable [782], $Variable [836])
In diesem fall hast du versucht auf Element 782 und 836 zuzugreifen, obwohl Pixelsearch nur ein Array mit 2 Elementen liefert.
Da du aber sowieso PixelGetColor nutzen musst, wird dein Code nun so aussehen:
Pseudocode:
Code:
if(PixelGetColor(x,y) == rgbcolor) Then MouseClick(x,y)
01/24/2013 12:45 airfight1#5
Quote:
Originally Posted by Lawliet! View Post
Der ganze Code ist falsch.
PixelSearch ist dazu da um nach einer Farbe zu suchen, nicht um die Farbe an einer Stelle herauszufinden.
Dazu musst du PixelGetColor nutzen.
Bei PixelSearch wir ein Array zurückgegeben, d.h. ein 1D, 2D, 3D (++) Feld, welches du dir so vorstellen musst:
1D:
wert1|wert2|wert3|wert4...
2D:
x|y|z|w|
-----------
c|v|n|u|
3D:
Das ganze eben noch im Raum.

Code:
MouseMove($Variable [782], $Variable [836])
In diesem fall hast du versucht auf Element 782 und 836 zuzugreifen, obwohl Pixelsearch nur ein Array mit 2 Elementen liefert.
Da du aber sowieso PixelGetColor nutzen musst, wird dein Code nun so aussehen:
Pseudocode:
Code:
if(PixelGetColor(x,y) == rgbcolor) Then MouseClick(x,y)
Aber sucht er nicht dann nur auf der x,y koordinate nach der farbe? er soll mir ja ein kleines feld durchsuchen. Und könntest du mir den code bitte direkt einbaun bin grade überfragt wo ich ihn einbaun muss hab gestern erst mit AutoIT angefangen *schmunzel*

Ok hab das ganze mal versucht.. is wahrscheinlich total falsch, weils eh nich funktioniert :D
Das ganze sieht jetz so aus,
Quote:
HotKeySet("{ü}", "Start")
HotKeySet("{ä}", "_Exit")

While 1
Sleep(250)
WEnd

Func start()
While 1
Send("{1}")
Sleep(4000)
if(PixelGetColor(736, 705) == 230,233,242 ) Then MouseClick(782,836)
MouseMove($Variable [782], $Variable [836])
Send("{1}")
Sleep(4000)

WEnd
EndFunc

Func _Exit()
Exit
EndFunc
Also folgender fehler tritt auf,

"Line 12 (File "C:\Userblablablabla"):

if(PixelGetColor(736,705)== 230,233,242) Then MouseClick(782,836)
if^ ERROR

Error: Missingright bracket ´)´in expression"


Ich bin ja nicht aufn kopf gefallen und suche immer zuerst im internet nach lösungen bevor ich irgendwo um hilfe frage. Aber irgendwie check ich das ganze grade nich :D

Bitte helft mir und macht es mir so einfach wie möglich, damit selbst ich es wieder verstehe :D
01/28/2013 13:23 airfight1#6
Mag mir niemand den code direkt in meinen einbaun :/
01/28/2013 13:54 omer36#7
du willst in dem bereich nach deiner farbe suchen und wenn die farbe da ist, willst du einen mausklick auf die posi 782,836 ausführen, richtig?

Quote:
Und gäbe es die möglichkeit das er nach 2 farben sucht und die taste drückt?
also farbe 1 gefunden push 6 falls nich gefunden weiter laufen lassen farbe 2 gefunden push 6 usw usw
wenn das oben soweit stimmt;
01/28/2013 14:15 airfight1#8
Quote:
Originally Posted by omer36 View Post
du willst in dem bereich nach deiner farbe suchen und wenn die farbe da ist, willst du einen mausklick auf die posi 782,836 ausführen, richtig?


wenn das oben soweit stimmt;
werde es gleich mal testen schonmal vielen dank im vorraus :)
die sachen die du hinter ";" geschrieben hast müssen gelöscht werden oder kann man die als text einfach stehen lassen?

Quote:
Originally Posted by omer36 View Post
du willst in dem bereich nach deiner farbe suchen und wenn die farbe da ist, willst du einen mausklick auf die posi 782,836 ausführen, richtig?


wenn das oben soweit stimmt;
Ok ich weiß nicht warum aber es geht und geht einfach nicht... hat das vielleicht mit der version meines programms zu tun? bzw muss ich vielleicht ein anderen farbecode nehmen RGB oder hex oder so..
ich hab nich das gefühl das er die farbe in dem fenster sucht und die maus bewegt er dann auch nicht auf die vorgeschriebenen koordienaten.
Das fenster was er durchsuchen soll sieht so aus [Only registered and activated users can see links. Click Here To Register...] Es soll die farbe in dem fenster erkennen wo Magischer Äther steht, habe die obere ecke über den text "Magischer Äther" und die untere ecke vom text genommen. Die farbe sollte man ja gut erkennen da der hintergrund von dem ausgewählten bereich ja gut zu unterscheiden ist. Aber es geht einfach nicht :(