|
You last visited: Today at 22:28
Advertisement
[Diamonddash] Hilfe bitte if (Pixelgetcolor)
Discussion on [Diamonddash] Hilfe bitte if (Pixelgetcolor) within the AutoIt forum part of the Coders Den category.
10/01/2012, 20:30
|
#1
|
elite*gold: 0
Join Date: Jul 2009
Posts: 374
Received Thanks: 34
|
[Diamonddash] Hilfe bitte if (Pixelgetcolor)
Hallo
Danke erstmal, dass sich hier leute für meine "Probleme" interessieren
Soooo
Also mir ist zur Zeit relativ langweilig desswegen möchte ich für das Spiel "Diamond Dash" welches man kostenlos bei Facebook spielen kann eine art "Bot" "scripten"
Ich bin schon so weit, dass ich alle Farben, die es bei dem Spiel gibt und die Positionen auf meinem Bildschirm der "Diamanten" gefunden habe :
Code:
HotKeySet ( "{F9}" , "_START" )
HotKeySet ( "{F10}" , "_END" )
while (1)
sleep (1000)
WEnd
Func _START ()
$X1=284
$X2=324
$X3=364
$X4=404
$X5=444
$X6=484
$X7=524
$X8=564
$X9=606
$X10=644
$Y1=265
$Y2=305
$Y3=345
$Y4=385
$Y5=425
$Y6=465
$Y7=505
$Y8=545
$Y9=585
$Y10=625
while (1)
If PixelGetColor($X1,$Y1) and PixelGetColor($X2,$Y1) and PixelGetColor($X3,$Y1)=0x09AEFF or 0xCC99FF or 0xFF5051 or 0x90EC00 or 0xD6C900 Then
MouseClick ("left",$X1,$Y1,1,1)
EndIf
WEnd
EndFunc
Func _END ()
Exit
EndFunc
Nun hab ich aber das Problem, dass er immer an die Koordinaten klickt, obwohl an diesen Koordinaten nichtmal die Farbe ist.
Kann mir bitte jemand erklären, wo der Fehler ist ? Danke!
|
|
|
10/01/2012, 20:39
|
#2
|
elite*gold: 528
Join Date: Jan 2012
Posts: 2,127
Received Thanks: 2,404
|
Schau dir mal die ImageSearch.au3 an
MfG
|
|
|
10/01/2012, 21:50
|
#3
|
elite*gold: 280
Join Date: May 2007
Posts: 2,818
Received Thanks: 3,483
|
Quote:
Originally Posted by o.rly
Code:
If PixelGetColor($X1,$Y1) and PixelGetColor($X2,$Y1) and PixelGetColor($X3,$Y1)=0x09AEFF or 0xCC99FF or 0xFF5051 or 0x90EC00 or 0xD6C900 Then
MouseClick ("left",$X1,$Y1,1,1)
EndIf
|
in if abfragen werden die einzelnen boolschen ausdrücke, verknüpft durch logische operationen nacheinander abgearbeitet.
Code:
If PixelGetColor($X1,$Y1) and [...]
hier wird also zunächst geguckt was der linke teilterm für einen wert hat.
immer wenn "PixelGetColor($X1,$Y1)" ein ergebnis ungleich 0 liefert, wird der then teil ausgeführt. selbst wenn das nicht der fall wäre, so würde spätestens im "or 0xCC99FF or" teil IMMER ungleich 0 herauskommen, da 0xCC99FF != 0 IMMER gilt.
demzufolge wird der then teil auch immer ausgeführt.
|
|
|
10/01/2012, 23:12
|
#4
|
elite*gold: 0
Join Date: Jul 2009
Posts: 374
Received Thanks: 34
|
Quote:
Originally Posted by lolkop
in if abfragen werden die einzelnen boolschen ausdrücke, verknüpft durch logische operationen nacheinander abgearbeitet.
Code:
If PixelGetColor($X1,$Y1) and [...]
hier wird also zunächst geguckt was der linke teilterm für einen wert hat.
immer wenn "PixelGetColor($X1,$Y1)" ein ergebnis ungleich 0 liefert, wird der then teil ausgeführt. selbst wenn das nicht der fall wäre, so würde spätestens im "or 0xCC99FF or" teil IMMER ungleich 0 herauskommen, da 0xCC99FF != 0 IMMER gilt.
demzufolge wird der then teil auch immer ausgeführt.
|
Danke für die Antwort aber, da ich jetzt mit Imagesearch versuche zu arbeiten habe ich andere Probleme
Quote:
Originally Posted by Achat
Schau dir mal die ImageSearch.au3 an
MfG
|
Kann Jemand sich das hier mal anschauen und mir sagen, warum er entweder GARNICHT oder wenn dann nur vereinzelt klickt (1 mal pro minute oder sowas)
Danke!
Code:
#include <ImageSearch.au3>
$X1=0
$Y1=0
HotKeySet ( "{Numpad5}" , "Start")
HotKeySet ( "{9}" , "Ende" )
while (1)
sleep (1000)
WEnd
Func Start ()
while (1)
$res = _imagesearch('Diamond.png',1,$X1,$Y1,100)
If $res = 1 Then
MouseClick ( "left" , $X1,$Y1,1,1)
EndIf
$res = _imagesearch('Dunkelblau_Senkrecht.png',1,$X1,$Y1,100)
If $res = 1 Then
MouseClick ( "left" , $X1,$Y1,1,1)
EndIf
$res = _imagesearch('Dunkelblau_Waagerecht.png',1,$X1,$Y1,100)
If $res = 1 Then
MouseClick ( "left" , $X1,$Y1,1,1)
EndIf
$res = _imagesearch('DunkelblauLinksOben.png',1,$X1,$Y1,100)
If $res = 1 Then
MouseClick ( "left" , $X1,$Y1,1,1)
EndIf
$res = _imagesearch('DunkelblauLinksUnten.png',1,$X1,$Y1,100)
If $res = 1 Then
MouseClick ( "left" , $X1,$Y1,1,1)
EndIf
$res = _imagesearch('DunkelblauRechtsOben.png',1,$X1,$Y1,100)
If $res = 1 Then
MouseClick ( "left" , $X1,$Y1,1,1)
EndIf
$res = _imagesearch('DunkelblauRechtsUnten.png',1,$X1,$Y1,100)
If $res = 1 Then
MouseClick ( "left" , $X1,$Y1,1,1)
EndIf
$res = _imagesearch('Gelb_Senkrecht.png',1,$X1,$Y1,100)
If $res = 1 Then
MouseClick ( "left" , $X1,$Y1,1,1)
EndIf
$res = _imagesearch('Gelb_Waagerecht.png',1,$X1,$Y1,100)
If $res = 1 Then
MouseClick ( "left" , $X1,$Y1,1,1)
EndIf
$res = _imagesearch('GelbLinksOben.png',1,$X1,$Y1,100)
If $res = 1 Then
MouseClick ( "left" , $X1,$Y1,1,1)
EndIf
$res = _imagesearch('GelbLinksUnten.png',1,$X1,$Y1,100)
If $res = 1 Then
MouseClick ( "left" , $X1,$Y1,1,1)
EndIf
$res = _imagesearch('GelbRechtsOben.png',1,$X1,$Y1,100)
If $res = 1 Then
MouseClick ( "left" , $X1,$Y1,1,1)
EndIf
$res = _imagesearch('GelbRechtsUnten.png',1,$X1,$Y1,100)
If $res = 1 Then
MouseClick ( "left" , $X1,$Y1,1,1)
EndIf
$res = _imagesearch('Gruen_Senkrecht.png',1,$X1,$Y1,100)
If $res = 1 Then
MouseClick ( "left" , $X1,$Y1,1,1)
EndIf
$res = _imagesearch('Gruen_Waagerecht.png',1,$X1,$Y1,100)
If $res = 1 Then
MouseClick ( "left" , $X1,$Y1,1,1)
EndIf
$res = _imagesearch('GruenLinksOben.png',1,$X1,$Y1,100)
If $res = 1 Then
MouseClick ( "left" , $X1,$Y1,1,1)
EndIf
$res = _imagesearch('GruenLinksUnten.png',1,$X1,$Y1,100)
If $res = 1 Then
MouseClick ( "left" , $X1,$Y1,1,1)
EndIf
$res = _imagesearch('GruenRechtsOben.png',1,$X1,$Y1,100)
If $res = 1 Then
MouseClick ( "left" , $X1,$Y1,1,1)
EndIf
$res = _imagesearch('GruenRechtsUnten.png',1,$X1,$Y1,100)
If $res = 1 Then
MouseClick ( "left" , $X1,$Y1,1,1)
EndIf
$res = _imagesearch('Hellblau_Senkrecht.png',1,$X1,$Y1,100)
If $res = 1 Then
MouseClick ( "left" , $X1,$Y1,1,1)
EndIf
$res = _imagesearch('Hellblau_Waagerecht.png',1,$X1,$Y1,100)
If $res = 1 Then
MouseClick ( "left" , $X1,$Y1,1,1)
EndIf
$res = _imagesearch('HellblauLinksOben.png',1,$X1,$Y1,100)
If $res = 1 Then
MouseClick ( "left" , $X1,$Y1,1,1)
EndIf
$res = _imagesearch('HellblauLinksUnten.png',1,$X1,$Y1,100)
If $res = 1 Then
MouseClick ( "left" , $X1,$Y1,1,1)
EndIf
$res = _imagesearch('HellblauRechtsOben.png',1,$X1,$Y1,100)
If $res = 1 Then
MouseClick ( "left" , $X1,$Y1,1,1)
EndIf
$res = _imagesearch('HellblauRechtsUnten.png',1,$X1,$Y1,100)
If $res = 1 Then
MouseClick ( "left" , $X1,$Y1,1,1)
EndIf
$res = _imagesearch('Rot_Senkrecht.png',1,$X1,$Y1,100)
If $res = 1 Then
MouseClick ( "left" , $X1,$Y1,1,1)
EndIf
$res = _imagesearch('Rot_Waagerecht.png',1,$X1,$Y1,100)
If $res = 1 Then
MouseClick ( "left" , $X1,$Y1,1,1)
EndIf
$res = _imagesearch('RotLinksOben.png',1,$X1,$Y1,100)
If $res = 1 Then
MouseClick ( "left" , $X1,$Y1,1,1)
EndIf
$res = _imagesearch('RotLinksUnten.png',1,$X1,$Y1,100)
If $res = 1 Then
MouseClick ( "left" , $X1,$Y1,1,1)
EndIf
$res = _imagesearch('RotRechtsOben.png',1,$X1,$Y1,100)
If $res = 1 Then
MouseClick ( "left" , $X1,$Y1,1,1)
EndIf
$res = _imagesearch('RotRechtsUnten.png',1,$X1,$Y1,100)
If $res = 1 Then
MouseClick ( "left" , $X1,$Y1,1,1)
EndIf
WEnd
EndFunc
Func Ende ()
Exit
EndFunc
|
|
|
10/01/2012, 23:39
|
#5
|
elite*gold: 528
Join Date: Jan 2012
Posts: 2,127
Received Thanks: 2,404
|
Quote:
Originally Posted by o.rly
Danke für die Antwort aber, da ich jetzt mit Imagesearch versuche zu arbeiten habe ich andere Probleme
Kann Jemand sich das hier mal anschauen und mir sagen, warum er entweder GARNICHT oder wenn dann nur vereinzelt klickt (1 mal pro minute oder sowas)
Danke!
Code:
#include <ImageSearch.au3>
$X1=0
$Y1=0
HotKeySet ( "{Numpad5}" , "Start")
HotKeySet ( "{9}" , "Ende" )
while (1)
sleep (1000)
WEnd
Func Start ()
while (1)
$res = _imagesearch('Diamond.png',1,$X1,$Y1,100)
If $res = 1 Then
MouseClick ( "left" , $X1,$Y1,1,1)
EndIf
$res = _imagesearch('Dunkelblau_Senkrecht.png',1,$X1,$Y1,100)
If $res = 1 Then
MouseClick ( "left" , $X1,$Y1,1,1)
EndIf
$res = _imagesearch('Dunkelblau_Waagerecht.png',1,$X1,$Y1,100)
If $res = 1 Then
MouseClick ( "left" , $X1,$Y1,1,1)
EndIf
$res = _imagesearch('DunkelblauLinksOben.png',1,$X1,$Y1,100)
If $res = 1 Then
MouseClick ( "left" , $X1,$Y1,1,1)
EndIf
$res = _imagesearch('DunkelblauLinksUnten.png',1,$X1,$Y1,100)
If $res = 1 Then
MouseClick ( "left" , $X1,$Y1,1,1)
EndIf
$res = _imagesearch('DunkelblauRechtsOben.png',1,$X1,$Y1,100)
If $res = 1 Then
MouseClick ( "left" , $X1,$Y1,1,1)
EndIf
$res = _imagesearch('DunkelblauRechtsUnten.png',1,$X1,$Y1,100)
If $res = 1 Then
MouseClick ( "left" , $X1,$Y1,1,1)
EndIf
$res = _imagesearch('Gelb_Senkrecht.png',1,$X1,$Y1,100)
If $res = 1 Then
MouseClick ( "left" , $X1,$Y1,1,1)
EndIf
$res = _imagesearch('Gelb_Waagerecht.png',1,$X1,$Y1,100)
If $res = 1 Then
MouseClick ( "left" , $X1,$Y1,1,1)
EndIf
$res = _imagesearch('GelbLinksOben.png',1,$X1,$Y1,100)
If $res = 1 Then
MouseClick ( "left" , $X1,$Y1,1,1)
EndIf
$res = _imagesearch('GelbLinksUnten.png',1,$X1,$Y1,100)
If $res = 1 Then
MouseClick ( "left" , $X1,$Y1,1,1)
EndIf
$res = _imagesearch('GelbRechtsOben.png',1,$X1,$Y1,100)
If $res = 1 Then
MouseClick ( "left" , $X1,$Y1,1,1)
EndIf
$res = _imagesearch('GelbRechtsUnten.png',1,$X1,$Y1,100)
If $res = 1 Then
MouseClick ( "left" , $X1,$Y1,1,1)
EndIf
$res = _imagesearch('Gruen_Senkrecht.png',1,$X1,$Y1,100)
If $res = 1 Then
MouseClick ( "left" , $X1,$Y1,1,1)
EndIf
$res = _imagesearch('Gruen_Waagerecht.png',1,$X1,$Y1,100)
If $res = 1 Then
MouseClick ( "left" , $X1,$Y1,1,1)
EndIf
$res = _imagesearch('GruenLinksOben.png',1,$X1,$Y1,100)
If $res = 1 Then
MouseClick ( "left" , $X1,$Y1,1,1)
EndIf
$res = _imagesearch('GruenLinksUnten.png',1,$X1,$Y1,100)
If $res = 1 Then
MouseClick ( "left" , $X1,$Y1,1,1)
EndIf
$res = _imagesearch('GruenRechtsOben.png',1,$X1,$Y1,100)
If $res = 1 Then
MouseClick ( "left" , $X1,$Y1,1,1)
EndIf
$res = _imagesearch('GruenRechtsUnten.png',1,$X1,$Y1,100)
If $res = 1 Then
MouseClick ( "left" , $X1,$Y1,1,1)
EndIf
$res = _imagesearch('Hellblau_Senkrecht.png',1,$X1,$Y1,100)
If $res = 1 Then
MouseClick ( "left" , $X1,$Y1,1,1)
EndIf
$res = _imagesearch('Hellblau_Waagerecht.png',1,$X1,$Y1,100)
If $res = 1 Then
MouseClick ( "left" , $X1,$Y1,1,1)
EndIf
$res = _imagesearch('HellblauLinksOben.png',1,$X1,$Y1,100)
If $res = 1 Then
MouseClick ( "left" , $X1,$Y1,1,1)
EndIf
$res = _imagesearch('HellblauLinksUnten.png',1,$X1,$Y1,100)
If $res = 1 Then
MouseClick ( "left" , $X1,$Y1,1,1)
EndIf
$res = _imagesearch('HellblauRechtsOben.png',1,$X1,$Y1,100)
If $res = 1 Then
MouseClick ( "left" , $X1,$Y1,1,1)
EndIf
$res = _imagesearch('HellblauRechtsUnten.png',1,$X1,$Y1,100)
If $res = 1 Then
MouseClick ( "left" , $X1,$Y1,1,1)
EndIf
$res = _imagesearch('Rot_Senkrecht.png',1,$X1,$Y1,100)
If $res = 1 Then
MouseClick ( "left" , $X1,$Y1,1,1)
EndIf
$res = _imagesearch('Rot_Waagerecht.png',1,$X1,$Y1,100)
If $res = 1 Then
MouseClick ( "left" , $X1,$Y1,1,1)
EndIf
$res = _imagesearch('RotLinksOben.png',1,$X1,$Y1,100)
If $res = 1 Then
MouseClick ( "left" , $X1,$Y1,1,1)
EndIf
$res = _imagesearch('RotLinksUnten.png',1,$X1,$Y1,100)
If $res = 1 Then
MouseClick ( "left" , $X1,$Y1,1,1)
EndIf
$res = _imagesearch('RotRechtsOben.png',1,$X1,$Y1,100)
If $res = 1 Then
MouseClick ( "left" , $X1,$Y1,1,1)
EndIf
$res = _imagesearch('RotRechtsUnten.png',1,$X1,$Y1,100)
If $res = 1 Then
MouseClick ( "left" , $X1,$Y1,1,1)
EndIf
WEnd
EndFunc
Func Ende ()
Exit
EndFunc
|
Für Scripte am besten verwenden, ul.to ist dafür mehr als nur ungeeignet.
Ich empfehle dir, Schleifen zu benutzen. For. Mach dir ein Array mit den IMG-Namen.
Das könnte dir helfen:
Code:
Func _ImgClick($sIMGPath, $fClick = True, $iClicks = 1)
$iReturn = _ImageSearch_($sIMGPath, 1, $x1, $y1, 20)
If $iReturn = 1 And $fClick Then
MouseClick('left', $x1, $y1, $iClicks)
EndIf
Return $iReturn
EndFunc ;==>_ImgClick
Mit dieser Funktion wird aus
Code:
$res = _imagesearch('RotLinksUnten.png',1,$X1,$Y1,100)
If $res = 1 Then
MouseClick ( "left" , $X1,$Y1,1,1)
EndIf
das
Code:
_ImgClick('RotLinksUnten.png')
MfG
€dit:
Mit Arrays:
Code:
global $aNames[2]=['lol.png','Rofl.png']
while 1
For $i = 0 to Ubound($aNames)-1
_ImgClick($aNames[$i])
next
wend
Haha so sparst du dir ja fast 200 Zeilen!!!
Array for the Win!
MfG
|
|
|
10/02/2012, 07:39
|
#6
|
elite*gold: 0
Join Date: Jul 2009
Posts: 374
Received Thanks: 34
|
Quote:
Originally Posted by Achat
Für Scripte am besten verwenden, ul.to ist dafür mehr als nur ungeeignet.
Ich empfehle dir, Schleifen zu benutzen. For. Mach dir ein Array mit den IMG-Namen.
Das könnte dir helfen:
Code:
Func _ImgClick($sIMGPath, $fClick = True, $iClicks = 1)
$iReturn = _ImageSearch_($sIMGPath, 1, $x1, $y1, 20)
If $iReturn = 1 And $fClick Then
MouseClick('left', $x1, $y1, $iClicks)
EndIf
Return $iReturn
EndFunc ;==>_ImgClick
Mit dieser Funktion wird aus
Code:
$res = _imagesearch('RotLinksUnten.png',1,$X1,$Y1,100)
If $res = 1 Then
MouseClick ( "left" , $X1,$Y1,1,1)
EndIf
das
Code:
_ImgClick('RotLinksUnten.png')
MfG
€dit:
Mit Arrays:
Code:
global $aNames[2]=['lol.png','Rofl.png']
while 1
For $i = 0 to Ubound($aNames)-1
_ImgClick($aNames[$i])
next
wend
Haha so sparst du dir ja fast 200 Zeilen!!!
Array for the Win!
MfG
|
Danke, ich werd mir das genauer anschauen wenn ich zu hause bin
|
|
|
10/04/2012, 11:26
|
#7
|
elite*gold: 0
Join Date: Jul 2009
Posts: 374
Received Thanks: 34
|
Egal ob ich 200 zeilen schreibe, oder nur 10 mit den arrays oder was auh immer... Es funktioniert nicht richtig. Bei dem link den ich gepostet habe sind bilder mit dabei. Vielleicht kann sich das mal jemand anschaun ich bin am verzweifeln!
Wenn ich es mit nur 5 bildern oder so mache, dann funktioniert es einigermaßen, aber mit allen geht das nicht richtig. Kann mir jemand BITTE helfen? DANKE
|
|
|
10/05/2012, 00:24
|
#8
|
elite*gold: 528
Join Date: Jan 2012
Posts: 2,127
Received Thanks: 2,404
|
Quote:
Originally Posted by o.rly
Egal ob ich 200 zeilen schreibe, oder nur 10 mit den arrays oder was auh immer... Es funktioniert nicht richtig. Bei dem link den ich gepostet habe sind bilder mit dabei. Vielleicht kann sich das mal jemand anschaun ich bin am verzweifeln!
Wenn ich es mit nur 5 bildern oder so mache, dann funktioniert es einigermaßen, aber mit allen geht das nicht richtig. Kann mir jemand BITTE helfen? DANKE
|
Also, Bilder immer als .bmp oder besser .png speichern, du könntest außerdem mal versuchen die Toleranz höher zu stellen, z.B. 20.
Code:
$tolerance - 0 for no tolerance (0-255). Needed when colors of
; image differ from desktop. e.g GIF
Hast du vielleicht bei einem Bild noch einen Teil vom Hintergrund gespeichert? Versuche, die Bilder so klein wie möglich zu halten und wirklich nur den Ausschnitt zu verwenden, der immer gleich ist.
MfG
|
|
|
|
Similar Threads
|
PixelGetColor
06/15/2012 - AutoIt - 1 Replies
Hi leute,
bin auch noch relativ neu in der AutoIt Welt.
Ich habe ein Problem einen Color Wert in D3 zu bekommen
ich benutze folgenden Code um den Pixel auszulesen
If WinActive('Diablo III') Then
|
autoit pixelgetcolor
04/20/2012 - AutoIt - 6 Replies
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
while 1
Sleep(100)
$farbe = PixelGetColor (@DesktopWidth/2, @DesktopHeight/2)
$hex = Hex($farbe, 6)
If $hex = "02FF02" Then
MouseClick("left",@DesktopWidth/2,@Deskt opHeight/2)
Sleep(400)
EndIf
|
Pixelsearch Pixelgetcolor
07/15/2011 - AutoIt - 4 Replies
hallo liebe epvpler :)
ich sitze 3 tage daran ein pixelsearch, bzw ein pixelgetcolor bot für eine kraft anzeige zu schreiben...
ich bin am verzweifeln sufu und google benutzt aber nichts gefunden was mich weiter gebracht hat! der bot klick zu früh bzw zu spät!
ich habs auch schon per getcolor versucht aber auch ein misserfolg..
vielleicht ist ja jemand so nett mir unter die arme zu greifen :)
unten habe ich 2 images eingefügt wo die kraftanzeige zu erkennen ist.
sie füllt sich von links...
|
Brauche Hilfe für Pixelgetcolor
04/26/2010 - AutoIt - 2 Replies
Erstmal ein Vorwort ich habe jetzt 6 Tage Probiert einen Ladebildschirm ohne Ladezeiten zu überbrücken was in gewissem maße Funktioniert hat...
Das Problem war das ich in Guild Wars verschiedene Farben öffters gleich sind und bei Kamera Schwenkung trotzdem die farbe schon gefunden wurde :-( ich dachte mir das wenn die Schrift erscheint z.B rata sum diese farbe abzufragen doch ein exaktes Client Pixel wurde trotz allem nicht definiert von Autoit das heißt da ähnliche Farben das script auch dazu...
|
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
|
All times are GMT +1. The time now is 22:28.
|
|