Register for your free account! | Forgot your password?

Go Back   elitepvpers > Coders Den > AutoIt
You last visited: Today at 04:55

  • Please register to post and access all features, it's quick, easy and FREE!

Advertisement



Pixelsearch Problem

Discussion on Pixelsearch Problem within the AutoIt forum part of the Coders Den category.

Reply
 
Old   #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
FoGzone is offline  
Old 02/25/2013, 14:04   #2
 
YatoDev's Avatar
 
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
YatoDev is offline  
Old 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
FoGzone is offline  
Old 02/25/2013, 20:28   #4
 
YatoDev's Avatar
 
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 ?
YatoDev is offline  
Old 02/25/2013, 20:36   #5

 
elite*gold: 250
Join Date: Mar 2010
Posts: 840
Received Thanks: 184
Quote:
Originally Posted by ~ⓜⓐⓢⓣⓔⓡ~ View Post
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
FoGzone is offline  
Old 02/25/2013, 20:50   #6
 
YatoDev's Avatar
 
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
YatoDev is offline  
Old 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:

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
FoGzone is offline  
Old 02/25/2013, 21:38   #8
 
YatoDev's Avatar
 
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 ?
YatoDev is offline  
Reply


Similar Threads 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.


Powered by vBulletin®
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
SEO by vBSEO ©2011, Crawlability, Inc.
This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

Support | Contact Us | FAQ | Advertising | Privacy Policy | Terms of Service | Abuse
Copyright ©2025 elitepvpers All Rights Reserved.