Register for your free account! | Forgot your password?

Go Back   elitepvpers > Coders Den > General Coding
You last visited: Today at 16:31

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

Advertisement



AutoIt_PixelSearch_Tut-fail_hilfe?

Discussion on AutoIt_PixelSearch_Tut-fail_hilfe? within the General Coding forum part of the Coders Den category.

Reply
 
Old   #1
 
elite*gold: 0
Join Date: Apr 2010
Posts: 5
Received Thanks: 0
AutoIt_PixelSearch_Tut-fail_hilfe?

Hallo liebe User,

ich dachte mir, ich schreibe mal ein kleines Toturial, nur leider funktioniert mein Skript selber nicht :/ hoffentlich kann mir da jemand weiterhelfen?
Ich bin nicht gerade ein Profi in diesem Bereich und habe es auch schon mit ImageSearch probiert aber da komm ich noch weniger zurecht..=(

Der Bot soll einfach nur in 2 Bereichen ein Pixel suchen (linker Bereich/rechter Bereich), wenn es auftaucht soll er, je nach dem ob es im linken oder rechten Bereich ist, die linke oder rechte Pfeiltaste drücken.

lt. SyntaxCheck Prod gibt es zwar keinen Fehler (mehr) aber es funktioniert dennoch nicht. Hier mal der komplette Code:

-----------------------------------
HotKeySet ("{F4}","_Exit") ;F4 zum Beenden des Bots
HotKeySet ("{F3}","_Pause") ;F3 zum Pausieren des Bots

While 1
Sleep(1)
WEnd

$color1 = 0xFAF3E0 ;1. Farbe
$color2 = 0xFAF3E0 ;2. Farbe
$oben = 390 ;Feldgrenzen oben
$unten = 680 ;Feldgrenzen unten
$L_li = 875 ;Linkes Feld - Feldgrenze links
$L_re = 915 ;Linkes Feld - Feldgrenze rechts
$R_li = 1000 ;Rechtes Feld - Feldgrenze links
$R_re = 1050 ;Rechtes Feld - Feldgrenze rechts
$var1 = PixelSearch($L_li,$unten,$L_re,$oben,$color1,100,0 )
;Variablenausdruck 1
$var2 = PixelSearch($R_li,$unten,$R_re,$oben,$color2,100,0 )
;Variablenausdruck 2

While 1 ;Beginn der 1. Schleife
$var1 = PixelSearch($L_li,$unten,$L_re,$oben,$color1,100,0 )
If not @error Then ;wenn im 1. Feld das gesuchte Pixel erscheint, dann
Send ("{left}") ;drücke "Pfeil links"
Sleep(200)
EndIf ;Ende der Wenn-Funktion

$var2 = PixelSearch($R_li,$unten,$R_re,$oben,$color2,100,0 )
If not @error Then ;wenn im 2. Feld das gesuchte Pixel erscheint, dann
Send ("{right}") ;drücke "Pfeil rechts"
Sleep(200)
EndIf ;Ende der Wenn-Funktion
WEnd ;Ende der Schleife

Func _Exit() ;Definition des "HotKeySet" Exit - Beenden des Bots
Exit ;Bot beenden
EndFunc ;Ende der Funktions-Definition

Func _Pause()
While True
Sleep(1)
WEnd
Endfunc
----------------------------------------

Wie ihr sehen könnt habe ich (testweise) sogar die Toleranz für die Pixel auf 100 gesetzt - nichteinmal damit läuft es. Heißt für mich entfeder sucht er garnicht erst oder der Fehler liegt im Send-Befehl (was ist eher nicht glaube?).

Für eure Hilfe bei meinem 1. Tut wäre ich dankbar :-)
alaplaya92 is offline  
Old 05/24/2015, 15:26   #2


 
elite*gold: 122
Join Date: May 2014
Posts: 2,721
Received Thanks: 532
"$var1 = PixelSearch($L_li,$unten,$L_re,$oben,$color1,100,0 )"
Kurze Frage. Die Zeile hast du 2x stehen.

Einmal:
"$var2 = PixelSearch($R_li,$unten,$R_re,$oben,$color2,100,0 )"
und einmal:
"$var2 = PixelSearch($R_li,$unten,$R_re,$oben,$color2,100,0 )
If not @error Then ;wenn im 2. Feld das gesuchte Pixel erscheint, dann"

Muss man nicht einfach bei $var2 = PixelSearch blabla If not @error
$var2 und danach If not @error
schreiben?
Melli- is offline  
Thanks
1 User
Old 05/24/2015, 16:53   #3
 
elite*gold: 0
Join Date: Apr 2010
Posts: 5
Received Thanks: 0
Hallo Melli,

erstmal danke für deine Hilfe,
wie genau meinst du das?

Oben habe ich die var1 und 2 erwähnt (Definition für die beiden Felder)
weiter unter in der Schleife hab ich das jeweils nochmal geschrieben, weil es nicht funktioniert hat mit der Variable oben und unten dann ausschließlich
$var1 = PixelSearch
If not @error Then send ("{left}")

wie gesagt bin leider kein Profi in diesem Bereich

Habe auch versucht die Variable oben weg zu lassen, aber das hat auch nichts gebracht.
Sobald es funktioniert wollte ich das ganze dann aber auch sowieso von "verwirrenden Störfaktoren" befreien :-)
alaplaya92 is offline  
Old 05/24/2015, 16:56   #4


 
elite*gold: 122
Join Date: May 2014
Posts: 2,721
Received Thanks: 532
Ah. Ja ok dachte schon.
Vielleicht liegt es auch einfach an den Variablen?
Melli- is offline  
Old 05/24/2015, 17:46   #5
 
elite*gold: 0
Join Date: Apr 2010
Posts: 5
Received Thanks: 0
Ich habe schon ne Menge durch probiert, auch alle Variablen aufgelöst und die Werte direkt eingesetzt, klappt leider nicht so recht :/
Ich habe in einigen Toturials auch Leute gefunden, die statt mit if not @error mit If IsArray = True arbeiten, nur leider bezogen sich diese alle auf "wenn x Pixel im Bereich y erscheint dann klicke mit der Maus drauf"
Auch das habe ich ausprobiert, aber bei Taste drücken klappt dies leider auch nicht :/
alaplaya92 is offline  
Old 05/26/2015, 13:57   #6

 
Moneypulation's Avatar
 
elite*gold: 138
Join Date: Apr 2012
Posts: 3,494
Received Thanks: 1,769
1. Bessere Pause Funktion:


2. Sleep(1) ist ziemlich wenig und verursacht unnötig CPU Auslastung. Du kannst auch Sleep(1000) benutzen. Ist besser für den PC und bringt genau das selbe. Ein Hotkey unterbricht den Sleep, daher brauchst du nicht so einen geringen.

3. Du hast $unten und $oben in PixelSearch vertauscht.

4. Ja, man sollte besser mit If IsArray($var1) prüfen, da die If @error Abfrage zu Fehlern führen kann
Moneypulation is offline  
Thanks
1 User
Old 05/26/2015, 18:22   #7
 
alpines's Avatar
 
elite*gold: 60
Join Date: Aug 2009
Posts: 2,256
Received Thanks: 815
Vorallem bringt Sleep(1) eh nichts da AutoIt mindestens 10ms sleept.
Code:
$t = TimerInit()
Sleep(1)
ConsoleWrite("1: " & TimerDiff($t) & @CRLF)
$t = TimerInit()
Sleep(10)
ConsoleWRite("10: " & TimerDiff($t) & @CRLF)
Code:
1: 10.636155149119
10: 10.7468232715457
alpines is offline  
Thanks
1 User
Old 05/28/2015, 23:07   #8
 
elite*gold: 0
Join Date: Apr 2010
Posts: 5
Received Thanks: 0
Danke Moneypulation, danke für den Tipp, hab es so eingesetzt wie du sagtst
zu 3. nur zum Verständnis:
Wo hab ich das vertauscht?
1. Mein Au3Info zeigt mir an, dass oben links der 0-Punkt ist (was ich an sich auch unlogisch finde^^)
2. Ist das nicht "egal" in welcher Reihenfolge ich es eingebe? Drehe ich es um, so sucht er doch nur von unten nach oben statt von oben nach unten oder?

und auch danke für deinen Tipp alpines, nur leider *shame* kann ich damit nichts anfangen bzw. weiß nicht, was du mir damit zu sagen versuchst =(

Also das ganze läuft jetzt, zumindest zum Teil.
Suche ich mir ein Pixel z.B. im Browser und gebe das mit entsprechenden Koord. ein, läuft das ganze an, aber sobald das Pixel weg ist, stoppt er nicht :/
und 2. macht er nichts in dem Fenster, in dem er eigentlich etwas machen soll.
Habe auch versucht mit ControlSend weiter zukommen an dem Punkt hat es mir aber leider auch nicht sonderlich weitergeholfen :/

hier einmal der "neue" Code


Hat jemand von euch vielleicht noch eine Idee?
Könnte es evtl. helfen, wenn ich die Koord. errechnen lasse oder ist das "Jacke wie Hose"? (ich vermute auf letzteres? :/ )
alaplaya92 is offline  
Old 05/29/2015, 16:37   #9

 
Moneypulation's Avatar
 
elite*gold: 138
Join Date: Apr 2012
Posts: 3,494
Received Thanks: 1,769
Quote:
PixelSearch ( left, top, right, bottom, color [, shade-variation = 0 [, step = 1 [, hwnd]]] )
Laut deinen Variablennamen hast du erst den "unten parameter" und dann den "oben parameter" in die funktion geschrieben. Richtig ist es aber andersrum
Dass er nicht mehr stoppt, wenn der Pixel nicht mehr da ist, liegt daran, dass du garnicht mehr nach dem Pixel suchst, nachdem er 1x gefunden worden ist. Du musst die Zeile $var1 = PixelSearch($L_li,$unten,$L_re,$oben,$color1,100,0 ) vor die If-Abfrage stellen. Genauso mit $var2 vor dessen Abfrage
Moneypulation is offline  
Thanks
1 User
Old 06/19/2015, 20:15   #10
 
elite*gold: 0
Join Date: Apr 2010
Posts: 5
Received Thanks: 0
Entschuldigung für die späte Rückmeldung, ich war leider für einige Zeit verhindert und habe auch einige Abende mit Ausdauer rumprobiert.
Nach langen Versuchen und herumprobieren ohne jegliche Form von Erfolg zu erkennen habe ich es schlussendlich aufgegeben, es will einfach nicht laufen :/
womöglich gibt es ja irgendwann mal jemanden, der ähnliche Probleme wie ich hat, diese jedoch lösen kann. Dieser Person wäre ich dann dankbar, wenn er hier vielleicht seinen Lösungsweg posten würde =)
Nichts desto trotz: vielen vielen lieben dank, an euch, die mir hier dennoch so freundlich weitergeholfen haben aber bei mir scheint leider Hopfen und Malz verloren =P dennoch danke =)
alaplaya92 is offline  
Reply




All times are GMT +1. The time now is 16:31.


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.