|
You last visited: Today at 04:55
Advertisement
Pixelsearch Problem
Discussion on Pixelsearch Problem within the AutoIt forum part of the Coders Den category.
02/24/2013, 22:51
|
#1
|
elite*gold: 250
Join Date: Mar 2010
Posts: 840
Received Thanks: 184
|
Pixelsearch Problem
Also ich versuche hier gerade ein kleines Tool zu schreiben und habe folgendes Problem:
Es soll in einem Bereich nach einer bestimmten Farbe gesucht werden. Wird die Farbe gefunden, soll er auf Feld1 klicken. Wird die Farbe nicht gefunden, soll er auf Feld2 drücken.
Das Ganze sieht momentan so aus:
Code:
Func _Start()
$Xstabbar2 = GuiCtrlRead($Xstabbar) + 5
$Ystabbar2 = GuiCtrlRead($Ystabbar) + 2
$suchebild1 = _imagesearcharea('bild1.png',1,GuiCtrlRead($OLX),GuiCtrlRead($OLY),GuiCtrlRead($URX),GuiCtrlRead($URY),$mx,$my,100)
$suchebild2 = _imagesearcharea('bild2.png',1,GuiCtrlRead($OLX),GuiCtrlRead($OLY),GuiCtrlRead($URX),GuiCtrlRead($URY),$sx,$sy,100)
If $suchemute & $suchestab = 0 Then
MsgBox(0,"Error","Abgebrochen")
EndIf
While 1
$stabbar = PixelSearch($Xstabbar,$Ystabbar,$Xstabbar2,$Ystabbar2,0xFFAAAA,2)
Sleep(1000)
If not @error Then
MouseMove($mx,$my,1)
MouseClick("left",$mx,$my,1,0)
Sleep(1000)
MouseClick("left",$mx,$my,1,0)
Return
EndIf
If @error Then
MouseMove($sx,$sy,1)
MouseClick("left",$sx,$sy,1,0)
Sleep(100)
MouseClick("left",$sx,$sy,1,0)
Return
EndIf
WEnd
EndFunc
Er läuft also den Loop einmal durch aber reagiert nicht auf die Veränderung in dem Pixelsearch Bereich
|
|
|
02/25/2013, 14:04
|
#2
|
elite*gold: 50
Join Date: Sep 2012
Posts: 3,841
Received Thanks: 1,462
|
Code:
-Start()
Func _Start()
$Xstabbar2 = GuiCtrlRead($Xstabbar) + 5
$Ystabbar2 = GuiCtrlRead($Ystabbar) + 2
$suchebild1 = _imagesearcharea('bild1.png',1,GuiCtrlRead($OLX),GuiCtrlRead($OLY),GuiCtrlRead($URX),GuiCtrlRead($URY),$mx,$my,100)
$suchebild2 = _imagesearcharea('bild2.png',1,GuiCtrlRead($OLX),GuiCtrlRead($OLY),GuiCtrlRead($URX),GuiCtrlRead($URY),$sx,$sy,100)
If $suchemute & $suchestab = 0 Then ; ?????
MsgBox(0,"Error","Abgebrochen")
EndIf
While 1
$stabbar = PixelSearch($Xstabbar,$Ystabbar,$Xstabbar2,$Ystabbar2,0xFFAAAA,2)
Sleep(1000) ; wofür ? verursacht nur fehler
If not @error Then
MouseMove($mx,$my,1)
MouseClick("left",$mx,$my,1,0)
Sleep(1000)
MouseClick("left",$mx,$my,1,0)
;Return musst du anders lösen
Else
MouseMove($sx,$sy,1)
MouseClick("left",$sx,$sy,1,0)
Sleep(100)
MouseClick("left",$sx,$sy,1,0)
;Return musst du anders lösen außerdem steht nichtmal bei was
;er soll z.b. Return 1
EndIf
WEnd
EndFunc
|
|
|
02/25/2013, 20:03
|
#3
|
elite*gold: 250
Join Date: Mar 2010
Posts: 840
Received Thanks: 184
|
wie kann ich es also lösen dass er es folgender maßen macht:
Pixelsearch (Überprüfung ob der Bereich noch der Farbe entspricht)
Bei Farbe "Ok" auf Feld1 klicken
Bei Farbe "falsch" Feld2 klicken
Pixelsearch
Bei Farbe "falsch" Feld2 klicken
Bei Farbe "Ok" auf Feld1 klicken
Pixelsearch
Momentan erkennt er zwar am anfang die Farbe, aber anscheinend macht er danach nicht nochmal Pixelsearch
Das Ganze halt in nem Loop
|
|
|
02/25/2013, 20:28
|
#4
|
elite*gold: 50
Join Date: Sep 2012
Posts: 3,841
Received Thanks: 1,462
|
Code:
_Start()
Func _Start()
$Xstabbar2 = GuiCtrlRead($Xstabbar) + 5
$Ystabbar2 = GuiCtrlRead($Ystabbar) + 2
$suchebild1 = _imagesearcharea('bild1.png',1,GuiCtrlRead($OLX),GuiCtrlRead($OLY),GuiCtrlRead($URX),GuiCtrlRead($URY),$mx,$my,100)
$suchebild2 = _imagesearcharea('bild2.png',1,GuiCtrlRead($OLX),GuiCtrlRead($OLY),GuiCtrlRead($URX),GuiCtrlRead($URY),$sx,$sy,100)
If $suchemute & $suchestab = 0 Then ; ?????
MsgBox(0,"Error","Abgebrochen")
EndIf
While 1
$stabbar = PixelSearch($Xstabbar,$Ystabbar,$Xstabbar2,$Ystabbar2,0xFFAAAA,2)
Sleep(1000) ; wofür ? verursacht nur fehler
If not @error Then
MouseMove($mx,$my,1)
MouseClick("left",$mx,$my,1,0)
Sleep(1000)
MouseClick("left",$mx,$my,1,0)
;Return musst du anders lösen
Else
MouseMove($sx,$sy,1)
MouseClick("left",$sx,$sy,1,0)
Sleep(100)
MouseClick("left",$sx,$sy,1,0)
;Return musst du anders lösen außerdem steht nichtmal bei was
;er soll z.b. Return 1
EndIf
WEnd
EndFunc
soll er 2 mal pixelsearch machen und das in einer while schleife oder soll eine andere func aufgerudfen werden wenn das 1 pixelsearch beendet wird ?
|
|
|
02/25/2013, 20:36
|
#5
|
elite*gold: 250
Join Date: Mar 2010
Posts: 840
Received Thanks: 184
|
Quote:
Originally Posted by ~ⓜⓐⓢⓣⓔⓡ~
Code:
_Start()
Func _Start()
$Xstabbar2 = GuiCtrlRead($Xstabbar) + 5
$Ystabbar2 = GuiCtrlRead($Ystabbar) + 2
$suchebild1 = _imagesearcharea('bild1.png',1,GuiCtrlRead($OLX),GuiCtrlRead($OLY),GuiCtrlRead($URX),GuiCtrlRead($URY),$mx,$my,100)
$suchebild2 = _imagesearcharea('bild2.png',1,GuiCtrlRead($OLX),GuiCtrlRead($OLY),GuiCtrlRead($URX),GuiCtrlRead($URY),$sx,$sy,100)
If $suchemute & $suchestab = 0 Then ; ?????
MsgBox(0,"Error","Abgebrochen")
EndIf
While 1
$stabbar = PixelSearch($Xstabbar,$Ystabbar,$Xstabbar2,$Ystabbar2,0xFFAAAA,2)
Sleep(1000) ; wofür ? verursacht nur fehler
If not @error Then
MouseMove($mx,$my,1)
MouseClick("left",$mx,$my,1,0)
Sleep(1000)
MouseClick("left",$mx,$my,1,0)
;Return musst du anders lösen
Else
MouseMove($sx,$sy,1)
MouseClick("left",$sx,$sy,1,0)
Sleep(100)
MouseClick("left",$sx,$sy,1,0)
;Return musst du anders lösen außerdem steht nichtmal bei was
;er soll z.b. Return 1
EndIf
WEnd
EndFunc
soll er 2 mal pixelsearch machen und das in einer while schleife oder soll eine andere func aufgerudfen werden wenn das 1 pixelsearch beendet wird ?
|
Wird über einen Hotkey aufgerufen
[Loop]
Pixelsearch
Farbe vorhanden klick 2x auf Feld1
Farbe nicht vorhanden klick 2x auf Feld2
[/Loop]
So soll es aussehen
Momentan macht er einfach nur den Pixelsearch und klickt dann dauerhaft auf Feld1
|
|
|
02/25/2013, 20:50
|
#6
|
elite*gold: 50
Join Date: Sep 2012
Posts: 3,841
Received Thanks: 1,462
|
Code:
Func _Start()
#cs
$Xstabbar2 = GuiCtrlRead($Xstabbar) + 5
$Ystabbar2 = GuiCtrlRead($Ystabbar) + 2
$suchebild1 = _imagesearcharea('bild1.png',1,GuiCtrlRead($OLX),GuiCtrlRead($OLY),GuiCtrlRead($URX),GuiCtrlRead($URY),$mx,$my,100)
$suchebild2 = _imagesearcharea('bild2.png',1,GuiCtrlRead($OLX),GuiCtrlRead($OLY),GuiCtrlRead($URX),GuiCtrlRead($URY),$sx,$sy,100)
If $suchemute & $suchestab = 0 Then ; ?????
MsgBox(0,"Error","Abgebrochen")
EndIf
#ce
;den teil kommentier ich mal aus da der beim pixelsearch erst nicht stört oder ;?
While 1
$stabbar = PixelSearch($Xstabbar,$Ystabbar,$Xstabbar2,$Ystabbar2,0xFFAAAA,2)
Sleep(1000) ; wofür ? verursacht nur fehler
If not @error Then
MouseMove($mx,$my,1)
MouseClick("left",$mx,$my,1,0)
Sleep(1000)
MouseClick("left",$mx,$my,1,0)
;Return musst du anders lösen
Else
MouseMove($sx,$sy,1)
MouseClick("left",$sx,$sy,1,0)
Sleep(100)
MouseClick("left",$sx,$sy,1,0)
;Return musst du anders lösen außerdem steht nichtmal bei was
;er soll z.b. Return 1
EndIf
WEnd
EndFunc
hab grad kein scite installiert ich kann nix überprüfen aber tu doch mal in jede zeile : consolewrite("1") consolewrite("2") consolewrite("3")überprüf bitte ob das so richtig ist und lass es mit console compilen bzw einfach in scite run . damit du siehst wo das programm stoppt
|
|
|
02/25/2013, 21:05
|
#7
|
elite*gold: 250
Join Date: Mar 2010
Posts: 840
Received Thanks: 184
|
Doch den oberen Part brauchst du, da die Bilder die dort gesucht werden, die Felder sind, auf die nach dem Pixelsearch geklickt werden.
So sieht das aus:
Code:
Func _Start()
$Xstabbar2 = GuiCtrlRead($Xstabbar) + 5
$Ystabbar2 = GuiCtrlRead($Ystabbar) + 2
$suchemute = _imagesearcharea('mute.png',1,GuiCtrlRead($OLX),GuiCtrlRead($OLY),GuiCtrlRead($URX),GuiCtrlRead($URY),$mx,$my,100)
$suchestab = _imagesearcharea('stab.png',1,GuiCtrlRead($OLX),GuiCtrlRead($OLY),GuiCtrlRead($URX),GuiCtrlRead($URY),$sx,$sy,100)
While 1
$stabbar = PixelSearch($Xstabbar,$Ystabbar,$Xstabbar2,$Ystabbar2,0xFFAAAA,0)
If Not @error Then
MouseMove($mx,$my,1)
MouseClick("left",$mx,$my,1,0)
Sleep(1000)
MouseClick("left",$mx,$my,1,0)
Else
MouseMove($sx,$sy,1)
MouseClick("left",$sx,$sy,1,0)
Sleep(1000)
MouseClick("left",$sx,$sy,1,0)
EndIf
WEnd
EndFunc
Was der Code momentan macht:
- Sucht die Bilder
- Pixelsearch
- da Farbe erkannt, klickt er 2x auf Feld1 und das passiert dann im Loop.
Entweder erkennt er es nicht, dass sich die Farbe geändert hat, oder er klickt halt andauernd
edit: habs jetzt gelöst!!!
ich hab einfach die 2 bedingungen umgedreht und eine andere farbe genommen
|
|
|
02/25/2013, 21:38
|
#8
|
elite*gold: 50
Join Date: Sep 2012
Posts: 3,841
Received Thanks: 1,462
|
Code:
Func _Start()
$Xstabbar2 = GuiCtrlRead($Xstabbar) + 5
$Ystabbar2 = GuiCtrlRead($Ystabbar) + 2
$suchemute = _imagesearcharea('mute.png',1,GuiCtrlRead($OLX),GuiCtrlRead($OLY),GuiCtrlRead($URX),GuiCtrlRead($URY),$mx,$my,100)
$suchestab = _imagesearcharea('stab.png',1,GuiCtrlRead($OLX),GuiCtrlRead($OLY),GuiCtrlRead($URX),GuiCtrlRead($URY),$sx,$sy,100)
While 1
$stabbar = PixelSearch($Xstabbar,$Ystabbar,$Xstabbar2,$Ystabbar2,0xFFAAAA,0)
If Not @error Then
MouseMove($mx,$my,1)
MouseClick("left",$mx,$my,1,0)
Sleep(1000)
MouseClick("left",$mx,$my,1,0)
Else
MouseMove($sx,$sy,1)
MouseClick("left",$sx,$sy,1,0)
Sleep(1000)
MouseClick("left",$sx,$sy,1,0)
EndIf
WEnd
EndFunc
Ich find es so trotzdem noch übersichtlicher ^^ ich machs halt immer so
für was brauchst du das denn ?
|
|
|
 |
Similar Threads
|
> Pixelsearch problem
06/06/2012 - AutoIt - 4 Replies
guten tag und danke im vorraus
Problem
pixelsearch klickt unerwünschte pixel/farbe an (obwohl die PixelID nicht übereinstimmt)
€nglish
Pixelsearch is clicking random pixels,even if the PixelID is wrong
Func Start() ;^^
|
Pixelsearch Problem
03/18/2011 - AutoIt - 7 Replies
Hey Leute,
wie ihr vielleicht mitbekommen habt, hab ich ja einen kleinen Aion Bot erstellt.
Klappt auch alles ganz wunderbar usw...Jetzt hab ich aber folgendes Problem :
Ich hab einen Pixelsearch Befehl eingebaut, damit er erkennt, wenn das Monster tot ist. Also wenn das Monster am Ende kein rotes Leben mehr hat, dann sammelt er Gegenstände auf. Bei mir klappt das auch alles ganz wunderbar. Nur bei einem Freun haben wir es dann nochmal getestet und bei ihm fing er an die Loot Taste zu...
|
Pixelsearch Bot Problem
10/12/2010 - Nostale - 22 Replies
Ich habe mich entschlossen auch mal mit Autoit anzufangen und solche einfachen Leertasten Bots u.ä. bekomm ich auch hin aber irgendwie hab ich grade Probleme mit nem Pixelsearch Bot und zwar:
Mein Bot soll einen selbst Auswählbaren Bereich Nach einer Bestimmten Farbe "absuchen" und wenn diese Farbe kommt soll er einen Ton von sich geben - gleichzeitig soll er aber auch Botten. Mein script sieht im Moment so aus:
HotKeySet("{F1}", "starten")
HotKeySet("{F2}", "pause")
HotKeySet("{F3}",...
|
Kleines Problem mit PixelSearch
04/08/2010 - AutoIt - 4 Replies
Da bin ich mal wieder >_>
Is eig ganz simpel:
Do
$pixel2=PixelSearch(351,249,431,532,0xFFFFFF, 5)
Until IsArray($pixel2)
If IsArray($pixel2) Then
If $get2 = "German" Then
MouseClick(360, 346)
ElseIf $get2 = "English" Then
MouseClick(400, 293)
|
pixelsearch problem
09/27/2009 - GW Bots - 4 Replies
hi,
will mir nen bot schreiben komme aba ned weiter QQ
also er soll etwas solange tun bis er via pixelsearch die angegebene farbe ned mehr findet. so weit so gut nur bekomme ich das nich so richtig hin QQ.
hier meine versuche:
nr1:
do
send("1")
sleep(200)
send("2")
|
All times are GMT +1. The time now is 04:55.
|
|