[Diamonddash] Hilfe bitte if (Pixelgetcolor)

10/01/2012 20:30 o.rly#1
Hallo
Danke erstmal, dass sich hier leute für meine "Probleme" interessieren :handsdown:

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" :cool:

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 Achat#2
Schau dir mal die ImageSearch.au3 an ;)

MfG
10/01/2012 21:50 lolkop#3
Quote:
Originally Posted by o.rly View Post
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 o.rly#4
Quote:
Originally Posted by lolkop View Post
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 View Post
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)

[Only registered and activated users can see links. Click Here To Register...]

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 Achat#5
Quote:
Originally Posted by o.rly View Post
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)

[Only registered and activated users can see links. Click Here To Register...]

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 [Only registered and activated users can see links. Click Here To Register...] 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 o.rly#6
Quote:
Originally Posted by Achat View Post
Für Scripte am besten [Only registered and activated users can see links. Click Here To Register...] 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 o.rly#7
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 Achat#8
Quote:
Originally Posted by o.rly View Post
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