|
You last visited: Today at 01:46
Advertisement
autoit pixelgetcolor
Discussion on autoit pixelgetcolor within the AutoIt forum part of the Coders Den category.
04/20/2012, 17:06
|
#1
|
elite*gold: 0
Join Date: Apr 2012
Posts: 1,214
Received Thanks: 153
|
autoit pixelgetcolor
habe erst vor kurzem mit autoit angefangen und wollte nun einen trigger bot schreiben, welcher schießt, wenn ein gegner unter dem crosshair ist...
plan: mitte des bildschirms überprüfen ob eine vorher definierte farbe dort erscheint und wenn ja, dann schießen
Code:
while 1
Sleep(100)
$farbe = PixelGetColor (@DesktopWidth/2, @DesktopHeight/2)
$hex = Hex($farbe, 6)
If $hex = "02FF02" Then
MouseClick("left",@DesktopWidth/2,@DesktopHeight/2)
Sleep(400)
EndIf
WEnd
Problem 1: Er soll auch die zwei umliegenden Pixelreihen überprüfen: (Grün: Mittlerer Bildschirmpixel, Orange die Reihen die er zusätzlich überprüfen soll, Blau soll nicht mehr überprüft werden)

Frage: Wie mache ich das ohne für jeden eine getpixel funktion auszuführen? kann ich wie bei pixelsearch vielleicht ein rechteck definieren?
wenn auch nur einer dieser pixel die definierte farbe annimmt soll der mausklick ausgeführt werden...
Problem 2: Er soll nicht nur auf die Farbe reagieren, da die gefärbten Models ja auch nicht 100%ig nur eine Farbe haben, sondern auch kleine abweichungen soll er nicht nur 02FF02 erkennen, sondern z.B. auch 00FF00 bis max. 0AFF0A
Nur wie soll ich das machen ohne für jede Farbe ein eigenes if auszuführen?
Bin dankbar für jede Hilfe...
|
|
|
04/20/2012, 17:19
|
#2
|
elite*gold: 574
Join Date: Nov 2010
Posts: 2,498
Received Thanks: 726
|
|
|
|
04/20/2012, 17:29
|
#3
|
elite*gold: 0
Join Date: Apr 2012
Posts: 1,214
Received Thanks: 153
|
Aber gibt imagesearch nicht die koordinaten des punktes aus, wo diese farbe gefunden wurde, und nicht die gefundene farbe?
|
|
|
04/20/2012, 19:04
|
#4
|
elite*gold: 574
Join Date: Nov 2010
Posts: 2,498
Received Thanks: 726
|
Quote:
Originally Posted by H@CT0R
Aber gibt imagesearch nicht die koordinaten des punktes aus, wo diese farbe gefunden wurde, und nicht die gefundene farbe?
|
Ach fail.. mein fehler ,
du kannst aber mit Imagesearch
einen bereich nach etwas absuchen,
ob etwas in einem bestimmten bereich
vorhanden ist
|
|
|
04/20/2012, 19:25
|
#5
|
elite*gold: 0
Join Date: Apr 2012
Posts: 1,214
Received Thanks: 153
|
imagesearch sucht aber nach einem bild, nicht nach der farbe eines pixels (korrigiere mich wenn ich falsch liege, habe nur kurz danach gegoogelt) und bezieht sich laut google auf den gesamten bildschirm..dann müsste ich ja einen pixel rot färben, als bild speichern und mit imagesearch danach suchen, dadurch kann ich aber das farbspektrum (von 00FF00 über 02FF02 bis max. 0AFF0A) nicht abdecken...
Oder sehe ich das falsch?
|
|
|
04/20/2012, 20:50
|
#6
|
elite*gold: 528
Join Date: Jan 2012
Posts: 2,127
Received Thanks: 2,403
|
Quote:
Originally Posted by H@CT0R
habe erst vor kurzem mit autoit angefangen und wollte nun einen trigger bot schreiben, welcher schießt, wenn ein gegner unter dem crosshair ist...
plan: mitte des bildschirms überprüfen ob eine vorher definierte farbe dort erscheint und wenn ja, dann schießen
Code:
while 1
Sleep(100)
$farbe = PixelGetColor (@DesktopWidth/2, @DesktopHeight/2)
$hex = Hex($farbe, 6)
If $hex = "02FF02" Then
MouseClick("left",@DesktopWidth/2,@DesktopHeight/2)
Sleep(400)
EndIf
WEnd
Problem 1: Er soll auch die zwei umliegenden Pixelreihen überprüfen: (Grün: Mittlerer Bildschirmpixel, Orange die Reihen die er zusätzlich überprüfen soll, Blau soll nicht mehr überprüft werden)

Frage: Wie mache ich das ohne für jeden eine getpixel funktion auszuführen? kann ich wie bei pixelsearch vielleicht ein rechteck definieren?
wenn auch nur einer dieser pixel die definierte farbe annimmt soll der mausklick ausgeführt werden...
Problem 2: Er soll nicht nur auf die Farbe reagieren, da die gefärbten Models ja auch nicht 100%ig nur eine Farbe haben, sondern auch kleine abweichungen soll er nicht nur 02FF02 erkennen, sondern z.B. auch 00FF00 bis max. 0AFF0A
Nur wie soll ich das machen ohne für jede Farbe ein eigenes if auszuführen?
Bin dankbar für jede Hilfe...
|
Also von der Logik her würde ich das so machen:
Code:
IF PixelGetColor(@DesktopWidth/2, @DesktopHeight/2) = Farbe AND Pixelgetcolor(@DesktopWidth/2+1, @DesktopHeight/2+1) = Farbe AND .... usw. Then
MouseClick()
Endif
Warum speicherst du denn die Farbe von Pixelgetcolor und vergleichst sie dann? Geht doch auch direkt mit Pixelgetcolor beim If  Mit F1 kannst du die Hilfe zu einer Funktion aufrufen.
MfG
EDIT:
Zum IF:
Code:
If Hex(PixelGetColor(@DesktopWidth/2, @DesktopHeight/2)) = "02FF02" Then ; <--- spart dir 2 Variablen und 2 Zeilen Code
|
|
|
04/20/2012, 21:39
|
#7
|
elite*gold: 0
Join Date: Apr 2012
Posts: 1,214
Received Thanks: 153
|
Quote:
Originally Posted by Achat
Also von der Logik her würde ich das so machen:
Code:
IF PixelGetColor(@DesktopWidth/2, @DesktopHeight/2) = Farbe AND Pixelgetcolor(@DesktopWidth/2+1, @DesktopHeight/2+1) = Farbe AND .... usw. Then
MouseClick()
Endif
|
AND, macht der das dann nicht nur, wenn ALLE Bedingungen erfüllt sind?
Da wäre ein und/oder gut, also eins von beidem...vmtl. würde ein OR aber schon reichen, werde ich die tage mal ausprobieren, danke
Quote:
Warum speicherst du denn die Farbe von Pixelgetcolor und vergleichst sie dann? Geht doch auch direkt mit Pixelgetcolor beim If Mit F1 kannst du die Hilfe zu einer Funktion aufrufen.
|
Habe die Funktionen alle Nacheinander geschrieben und miteinander verknüpft, aber deine Möglichkeit ist natürlich besser, danke dafür
|
|
|
 |
Similar Threads
|
AutoIt PixelGetColor problem
05/21/2011 - AutoIt - 4 Replies
Hi zusammen,
ich habe einen eigenen Metin2 dss Switcher gemacht, der genau bei 50 dss stoppen soll. Und nun lautete meine Frage: Wie kann ich mehrere PixelGetColor Werte
in ein If "packen" :confused:
So gehts auf jedenfall schon mal nicht :(
Wäre sehr nett wenn ihr mir helfen könntet.
|
PixelGetColor
12/05/2009 - AutoIt - 2 Replies
Hi ich schreibe schon seit längerem an einem Tool für Warcraft3.
Jetzt wollte ich einbauen, dass er nach dem Map laden automatisch den Modus eingibt.
Ich dachte das geht mit PixelGetColor, also hab ich es so probiert:
If GUICtrlRead ($checkbox3) = 1 Then
Do
PixelGetColor (1063, 520)
sleep (150)
Until PixelGetColor (1063, 520) = 0x000000
|
AutoIt PixelGetColor oder PixelSearch
07/08/2009 - General Coding - 1 Replies
Hi also für ein Spiel wollte ich (habe ich zum Teil auch) so einen Relogger scripten dass wenn ich vom Spiel getrennt werde, der Bot mich dann wieder einloggt.Damit der Bot weiß wann dies geschehen soll, habe ich die Funktion PixelGetColor benutzt.Die Funktion kennt ihr wahrscheinlich.Mein Code sieht bisher so aus :
so jetzt hab ich das Problem dass nix passiert wenn der $relogpx = 0xF75DAD...habe mal was von SearchPixel gehört...könnte man dass evtl. da i-wie einbauen ?
Vielen Dank für...
|
autoit prob mit pixelgetcolor
02/22/2009 - General Coding - 1 Replies
; wenn Pixel 137,133 dann
Send("{$Char down}")
sleep(500)
Send("{$Char UP}")
sleep(1000)
mouseclick("left",191,564)
;end if
wie schreibe ich des
ich will halt das wenn 137,133 den farbcode 0x1E2971 bekommt der mit
|
AutoIt - PixelGetColor Probem auf versch. PC
06/04/2008 - AutoIt - 4 Replies
Hallo,
möglicherweise kann jemand von Euch helfen. Derzeit bin ich dabei, einen
AOE Bot für Archlord zu schreiben. Dieser funktioniert recht ordentlich und
flott. Allerdings nur auf meinem Rechner und nicht auf einem anderen. Das
ist natürlich grossartig für mich aber nicht für andere ^.o
Das merkwürdiges Problem ist, dass ich mit PixelGetColor auf PC1 z.B. den
Farbwert 73695A erhalte aber auf PC2 einen völlig anderen Farbwert.
|
All times are GMT +1. The time now is 01:47.
|
|