Register for your free account! | Forgot your password?

Go Back   elitepvpers > Coders Den > AutoIt
You last visited: Today at 09:08

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

Advertisement



Problem mit Pixelsearch

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

Reply
 
Old   #1
 
elite*gold: 0
Join Date: May 2013
Posts: 85
Received Thanks: 0
Question Problem mit Pixelsearch

Hallo!

zunächst möchte ich sagen, dass ich nicht neu bin.
ihr müsst mich also nicht willkommen heißen
zum thema:


ich dacht mir es wäre schlau sich pixelsearch anzuschauen weil die idee doch sehr cool ist^^.jedenfalls habe ich mich jetzt eine weile damit beschäftigt und ein paar sachen gelesen, was gegoogelt und ein bisschen selbst rumprobiert.

lief auch alles ganz gut bis ich auf ein problem gestoßen bin, welches mir eher kopfzerbrechen bereitet als dass es sich von mir allein lösen lässt.
darum wollte ich euch um hilfe bitten

Code:
Func Start()
While 1
	$PixelPosAirEss = PixelSearch(0,0,@DesktopWidth, @DesktopHeight, 0x70AED6, 0)
	$PixelPosEarthEss = PixelSearch(0,0,@DesktopWidth, @DesktopHeight, 0xA86D58, 0)
	$PixelPosWaterEss = PixelSearch(0,0,@DesktopWidth, @DesktopHeight, 0xCB8195, 0)
		If Not @error Then
		MouseClick("left", $PixelPosAirEss[0], $PixelPosAirEss[1], 1, 0)
		Sleep(35000)

		Else
		MouseClick("left", $PixelPosEarthEss[0], $PixelPosEarthEss[1], 1, 0)
		Sleep(35000)

		ElseIf
		MouseClick("left", $PixelPosWaterEss[0], $PixelPosWaterEss[1], 1, 0)
		Sleep(35000)

		EndIf
WEnd
EndFunc
autoit sagt mir zwar:
Error: Too many "Else" statements for matching "If" statement.
aber habe trotz rumprobieren trotzdem keine lösung gefunden

(vielleicht habe ich auch etwas übersehen.in dem fall tut es mir leid )

bin noch relativ neu in autoit und hoffe ihr könnt mir helfen.

danke
RF1T2 is offline  
Old 05/25/2013, 03:17   #2


 
Requi's Avatar
 
elite*gold: 3570
The Black Market: 244/0/0
Join Date: Dec 2012
Posts: 13,044
Received Thanks: 8,252
Vor dem EndIf hast eine ElseIf Abfrage ohne Abfrage. Mach aus dem ElseIf ein Else.
Bzw. Vollende diese ElseIf Abfrage.

Ich würde dies aber lieber mit Switch Case lösen. Kann aber auch sein dass ich falsch liege (müde)
Requi is offline  
Thanks
1 User
Old 05/25/2013, 09:59   #3
 
FacePalmMan's Avatar
 
elite*gold: 0
Join Date: Jan 2013
Posts: 426
Received Thanks: 129
problem: funktion wird deklariert aber nicht aufgerufen.
lösung: while schleife und hotkeyset welcher die funktion aufruft (und ein hotkeyset um das ganze zu beenden)
volles script (mit kommentaren):
Code:
hotkeyset("{F8}","Start") ;wenn F8 gedrückt wurde dann springe zu funktion Start
hotkeyset("{F9}","_Exit") ;wenn F9 gedrückt wurde dann springe zu funktion _Exit

while 1 ;anfang der schleife
sleep(1) ;das hier soll (wort wörtlich) nichts tun
wend ;ende der schleife

Func Start() ;funktion Start fängt hier an
While 1 ;schleife startet
	$PixelPosAirEss = PixelSearch(0,0,@DesktopWidth, @DesktopHeight, 0x70AED6, 0) ;sucht nach pixel
	$PixelPosEarthEss = PixelSearch(0,0,@DesktopWidth, @DesktopHeight, 0xA86D58, 0);sucht nach pixel
	$PixelPosWaterEss = PixelSearch(0,0,@DesktopWidth, @DesktopHeight, 0xCB8195, 0);sucht nach pixel
	If IsArray($PixelPosEarthEss) Then ;wenn $PixelPosEarthEss eine array variable ist dann .....
		MouseClick("left", $PixelPosEarthEss[0], $PixelPosEarthEss[1], 1, 0) ;klickt auf den ausgesuchten pixel
		Sleep(35000) ;wartet 35 sekunden
	ElseIf IsArray($PixelPosAirEss) Then ;wenn ... eine array variable ist dann ....
		MouseClick("left", $PixelPosAirEss[0], $PixelPosAirEss[1], 1, 0) ;klickt auf den ausgesuchten pixel
		Sleep(35000) ;wartet 35 sekunden
	ElseIf IsArray($PixelPosWaterEss) Then ;wenn ... eine array variable ist dann ...
		MouseClick("left", $PixelPosWaterEss[0], $PixelPosWaterEss[1], 1, 0) ;klickt auf den ausgesuchten pixel
		Sleep(35000) ;wartet 35 sekunden
	EndIf ;If abfrage endet hier
WEnd ;schleife endet hier
EndFunc ;funktion endet hier

Func _Exit() ;Funktion _Exit startet hier
Exit ;Beendet das script
EndFunc ;Funktion _Exit endet hier
FacePalmMan is offline  
Thanks
1 User
Old 05/25/2013, 17:56   #4
 
elite*gold: 0
Join Date: May 2013
Posts: 85
Received Thanks: 0
danke für die antworten,
habe es nun so stehen:
Code:
Func Start()
While 1
	$PixelPosAirEss = PixelSearch(0,0,@DesktopWidth, @DesktopHeight, 0x70AED6, 0)
	$PixelPosEarthEss = PixelSearch(0,0,@DesktopWidth, @DesktopHeight, 0xA86D58, 0)
	$PixelPosWaterEss = PixelSearch(0,0,@DesktopWidth, @DesktopHeight, 0xCB8195, 0)
		If IsArray($PixelPosAirEss) Then
		MouseClick("left", $PixelPosAirEss[0], $PixelPosAirEss[1], 1, 0)
		Sleep(35000)

		ElseIf IsArray($PixelPosEarthEss) Then
		MouseClick("left", $PixelPosEarthEss[0], $PixelPosEarthEss[1], 1, 0)
		Sleep(35000)

		ElseIf IsArray($PixelPosWaterEss) Then
		MouseClick("left", $PixelPosWaterEss[0], $PixelPosWaterEss[1], 1, 0)
		Sleep(35000)

		EndIf
WEnd
EndFunc
ich bekomme zwar keine fehlermeldung mehr,
allerdings erziele ich nicht das ergebnis auf $PixelPosEarthEss oder $PixelPosWaterEss zu klicken falls sich kein $PixelPosAirEss findet

EDIT:
was ich vergessen hatte zu sagen ist, dass das nur ein ausschnitt des scripts ist das über hotkeyset verfügt. wollte es nur nicht unübersichtlich machen und habe deshalb nur die funktion "Func Start()" gepostet
RF1T2 is offline  
Old 05/25/2013, 18:51   #5
 
FacePalmMan's Avatar
 
elite*gold: 0
Join Date: Jan 2013
Posts: 426
Received Thanks: 129
achso! o.k
hier das fertige script
Code:
Func Start() ;funktion Start fängt hier an
While 1 ;schleife startet
	$PixelPosAirEss = PixelSearch(0,0,@DesktopWidth, @DesktopHeight, 0x70AED6, 0) ;sucht nach pixel
	$PixelPosEarthEss = PixelSearch(0,0,@DesktopWidth, @DesktopHeight, 0xA86D58, 0);sucht nach pixel
	$PixelPosWaterEss = PixelSearch(0,0,@DesktopWidth, @DesktopHeight, 0xCB8195, 0);sucht nach pixel
	If IsArray($PixelPosEarthEss) Then ;wenn $PixelPosEarthEss eine array variable ist dann .....
		MouseClick("left", $PixelPosEarthEss[0], $PixelPosEarthEss[1], 1, 0) ;klickt auf den ausgesuchten pixel
		Sleep(35000) ;wartet 35 sekunden
	Else ;wenn $PixelPosEarthEss keine array variable ist dann
		If IsArray($PixelPosAirEss) Then ;wenn ... eine array variable ist dann ....
			MouseClick("left", $PixelPosAirEss[0], $PixelPosAirEss[1], 1, 0) ;klickt auf den ausgesuchten pixel
			Sleep(35000) ;wartet 35 sekunden
		ElseIf IsArray($PixelPosWaterEss) Then ;wenn ... eine array variable ist dann ...
			MouseClick("left", $PixelPosWaterEss[0], $PixelPosWaterEss[1], 1, 0) ;klickt auf den ausgesuchten pixel
			Sleep(35000) ;wartet 35 sekunden
		EndIf ;If abfrage endet hier
	EndIf
WEnd ;schleife endet hier
EndFunc ;funktion endet hier
FacePalmMan is offline  
Thanks
1 User
Old 05/25/2013, 19:55   #6
 
elite*gold: 0
Join Date: May 2013
Posts: 85
Received Thanks: 0
Code:
Func Start()
While 1
	$PixelPosAirEss = PixelSearch(0,0,@DesktopWidth, @DesktopHeight, 0x70AED6, 0)
	$PixelPosEarthEss = PixelSearch(0,0,@DesktopWidth, @DesktopHeight, 0xA86D58, 0)
	$PixelPosWaterEss = PixelSearch(0,0,@DesktopWidth, @DesktopHeight, 0xCB8195, 0)
		If IsArray($PixelPosAirEss) Then
		MouseClick("left", $PixelPosAirEss[0], $PixelPosAirEss[1], 1, 0)
		Sleep(1000)

		Else
		If IsArray($PixelPosEarthEss) Then
		MouseClick("left", $PixelPosEarthEss[0], $PixelPosEarthEss[1], 1, 0)
		Sleep(1000)

		ElseIf IsArray($PixelPosWaterEss) Then
		MouseClick("left", $PixelPosWaterEss[0], $PixelPosWaterEss[1], 1, 0)
		Sleep(1000)
		EndIf

		EndIf
WEnd
EndFunc
(sleep zu testzwecken verkürzt)
habe leider immernoch das problem, dass nur auf $PixelPosAirEss geklickt wird.
(soll falls es nicht da ist auf $PixelPosEarthEss oder $pixelPosWaterEss klicken)
habe das script schon compiled was aber auch nicht half.
weisst du vllt wo das problem liegt?
habe übrigens keinen speziellen include befehl gegeben
RF1T2 is offline  
Old 05/25/2013, 20:03   #7
 
YatoDev's Avatar
 
elite*gold: 50
Join Date: Sep 2012
Posts: 3,841
Received Thanks: 1,462
es liegt am else .....
If
Else
EndIf
=
Wenn
wenn was anderes
Ende wenn

naja so ungefähr also er findet bei dir den pixel also brauch er die else abfrage nicht mehr zu bearbeiten
YatoDev is offline  
Thanks
1 User
Old 05/25/2013, 20:11   #8
 
WJNeeson's Avatar
 
elite*gold: 1445
Join Date: Sep 2011
Posts: 199
Received Thanks: 177
benutz am besten select
WJNeeson is offline  
Thanks
1 User
Old 05/25/2013, 20:33   #9
 
elite*gold: 0
Join Date: May 2013
Posts: 85
Received Thanks: 0
Quote:
Originally Posted by »FlutterShy™ View Post
naja so ungefähr also er findet bei dir den pixel also brauch er die else abfrage nicht mehr zu bearbeiten
ne wenn er $airEss nich findet dann wartet er nur bis er es tut. aber klickt nicht auf $earthEss oder $waterEss

oder habe ich die jetzt falsch verstanden?
RF1T2 is offline  
Old 05/25/2013, 20:55   #10
 
WJNeeson's Avatar
 
elite*gold: 1445
Join Date: Sep 2011
Posts: 199
Received Thanks: 177
er schaut ob airess gefunden ist , falls nicht schaut er ob wateress gefunden ist , falls keins von beiden gefunden wurde schaut er ob earthess gefunden wurde
allerdings wäre das hier besser:
PHP Code:
Func Start()
While 
1
    $PixelPosAirEss 
PixelSearch(0,0,@DesktopWidth, @DesktopHeight0x70AED60)
    
$PixelPosEarthEss PixelSearch(0,0,@DesktopWidth, @DesktopHeight0xA86D580)
    
$PixelPosWaterEss PixelSearch(0,0,@DesktopWidth, @DesktopHeight0xCB81950)
    
Select
        
Case IsArray($PixelPosAirEss)
            ;
Anweisung
        
Case IsArray($PixelPosEarthEss)
            ;
Anweisung
        
Case IsArray($PixelPosWaterEss)
            ;
Anweisung
    EndSelect
WEnd
EndFunc 
WJNeeson is offline  
Thanks
1 User
Old 05/25/2013, 22:11   #11
 
elite*gold: 0
Join Date: May 2013
Posts: 85
Received Thanks: 0
klappt!
das hauptproblem war jedoch ein anderes: die farbe von wateress und earthess sind nicht vorgekommen da das objekt in bewegung ist.das ist aber ein anderes problem dem ich mich lieber selbst annehme

dass es nun funtioniert weiss ich daher, dass wenn ich den screenshot,von dem ich die farben habe, in paint öffne übermalt das script alle gewünschten bereiche.

vielen vielen dank an euch für die hilfe
RF1T2 is offline  
Reply

Tags
autoit, pixelsearch


Similar Threads Similar Threads
Pixelsearch Problem
02/25/2013 - AutoIt - 7 Replies
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: Func _Start() $Xstabbar2 = GuiCtrlRead($Xstabbar) + 5 $Ystabbar2 = GuiCtrlRead($Ystabbar) + 2 $suchebild1 =...
> 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}",...
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 09:09.


Powered by vBulletin®
Copyright ©2000 - 2026, 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 ©2026 elitepvpers All Rights Reserved.