Register for your free account! | Forgot your password?

Go Back   elitepvpers > Coders Den > AutoIt
You last visited: Today at 19:03

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

Advertisement


Autoit ImageSearch

Discussion on Autoit ImageSearch within the AutoIt forum part of the Coders Den category.

Reply
 
Old   #1
 
elite*gold: 20
Join Date: Oct 2007
Posts: 611
Received Thanks: 1,245
Autoit ImageSearch

moin Leuts,

hab ein problem mit einem Autoit ImageSearch Bot.Unzwar wenn ich den Bot starten erscheint er für ein bruchteil einer sec unten rechts iner taskleiste(da wo die uhr ist) dann schliest er sich wieder. Warum auch immer.

Hier mal der Script


HOTKEYSET("{F6}", "Start")
HotKeySet("{F5}", "Stop")
#include <ImageSearch.au3>


Func START()
$x1 = 0
$y1 = 0

$findImage1 = _ImageSearch("L", 1, $x1, $y1, 0)

If $findImage1 = 1 Then
Sleep (5000)
Send ("{enter}")
Sleep (2000)
Send ("123")
Sleep (1000)
Send ("{enter}")
Sleep (1000)
Send ("2009")
Send ("{enter}")
Sleep (20000)
Send ("{enter}")
EndIf
EndFunc

$x1 = 0
$y1 = 0

$findImage2 = _ImageSearch("P", 1, $x1, $y1, 0)

If $findImage2 = 1 Then
Sleep (5000)
EndIf

Func STOP()
Exit
EndFunc
>Trib°lex< is offline  
Old 09/19/2009, 10:13   #2
 
elite*gold: 42
Join Date: Jun 2008
Posts: 5,427
Received Thanks: 1,886
Ohne auch nur die geringste ahnung von autoit zu haben, würd ich sagen, er findet das gesuchte nicht ;D
MoepMeep is offline  
Old 09/19/2009, 10:36   #3
 
elite*gold: 116
Join Date: Oct 2007
Posts: 677
Received Thanks: 248
Das Problem ist ganz einfach ;-) Wenn du das Script startest läuft er es einmal schnell durch und beendet wieder. Du musst es nur laufen lassen z.B. mit ner while schleife:
Quote:
#include <ImageSearch.au3>


$x1 = 0
$y1 = 0

$findImage2 = _ImageSearch("P", 1, $x1, $y1, 0)

If $findImage2 = 1 Then
Sleep (5000)
EndIf


while 1
HOTKEYSET("{F6}", "Start")
HotKeySet("{F5}", "Stop")
sleep(25)
WEnd




Func START()
$x1 = 0
$y1 = 0

$findImage1 = _ImageSearch("L", 1, $x1, $y1, 0)

If $findImage1 = 1 Then
Sleep (5000)
Send ("{enter}")
Sleep (2000)
Send ("123")
Sleep (1000)
Send ("{enter}")
Sleep (1000)
Send ("2009")
Send ("{enter}")
Sleep (20000)
Send ("{enter}")
EndIf
EndFunc



Func STOP()
Exit
EndFunc
bassbanane is offline  
Thanks
1 User
Old 09/19/2009, 13:44   #4
 
elite*gold: 20
Join Date: Oct 2007
Posts: 611
Received Thanks: 1,245
Quote:
Originally Posted by bassbanane View Post
Das Problem ist ganz einfach ;-) Wenn du das Script startest läuft er es einmal schnell durch und beendet wieder. Du musst es nur laufen lassen z.B. mit ner while schleife:
vielen dank es hat geklappt. jetz hätte ich noch ne frage unzwar kann man es so machen das der bot nur nach bild 2 (P) sucht nachdem er Bild 1 (L) gefunden hatt also so:


Bild 1 gefunden - suche nach bild 2 - bild 2 gefunden - sucht nicht mehr nach bild 2 - nach z.b 20 min bild 1 wieder gefunden - sucht wieder nach bild 2 - bild 2 gefunden -hört auf nach bild2 zu suchen .... und immer so weiter

ist das dann so richtig ?

#include <ImageSearch.au3>

while 1
HOTKEYSET("{F6}", "Start")
HotKeySet("{F5}", "Stop")
sleep(25)
WEnd

Func START()

$x1 = 0
$y1 = 0

$findImage1 = _ImageSearch("L", 1, $x1, $y1, 0)

If $findImage1 = 1 Then
Sleep (5000)
Send ("{enter}")
Sleep (2000)
Send ("123")
Sleep (1000)
Send ("{enter}")
Sleep (1000)
Send ("2009")
Send ("{enter}")
Sleep (20000)
Send ("{enter}")
Sleep (15000)
$findImage2 = _ImageSearch("P", 1, $x1, $y1, 0)
If $findImage2 = 1 Then
Sleep (5000)
EndIf
EndIf
EndFunc

Func STOP()
Exit
EndFunc
>Trib°lex< is offline  
Old 09/19/2009, 13:59   #5
 
elite*gold: 0
Join Date: Aug 2009
Posts: 56
Received Thanks: 9
ich weis nicht ob das richtig ist bin selbe rnewbie drin

aber wenn man image 1 (L ) udn image 2 (P9 in einzelne funcs packt O.o und nur image 1 in eine while schleife einbaut?


ps.: les dir bitte die tuts durch
Maggot>< is offline  
Old 09/19/2009, 14:46   #6
 
elite*gold: 0
Join Date: Apr 2008
Posts: 1,079
Received Thanks: 436
Habs zwar dein Problem net so ganz verstanden, aber vom ablauf her müsste/könnte es so funktionieren.

Code:
#include <ImageSearch.au3>

$x1 = 0
$y1 = 0

While 1
	
Do
	$findImage1 = _ImageSearch("L", 1, $x1, $y1, 0)
	$findImage2 = _ImageSearch("P", 1, $x1, $y1, 0)
	Sleep(100)
Until ($findImage1 = 1) Or ($findImage2 = 1)

If $findImage1 = 1 Then
	Sleep (5000)
	Send ("{enter}")
	Sleep (2000)
	Send ("123")
	Sleep (1000)
	Send ("{enter}")
	Sleep (1000)
	Send ("2009")
	Send ("{enter}")
	Sleep (20000)
	Send ("{enter}")
	Sleep (15000)
	
ElseIf $findImage2 = 1 Then
	Sleep (5000)
EndIf

WEnd
Oder alternativ so.

Code:
#include <ImageSearch.au3>

$x1 = 0
$y1 = 0

While 1
	
Do
	$findImage1 = _ImageSearch("L", 1, $x1, $y1, 0)
	Sleep(100)
Until $findImage1 = 1

If $findImage1 = 1 Then
	Sleep (5000)
	Send ("{enter}")
	Sleep (2000)
	Send ("123")
	Sleep (1000)
	Send ("{enter}")
	Sleep (1000)
	Send ("2009")
	Send ("{enter}")
	Sleep (20000)
	Send ("{enter}")
	Sleep (15000)
	
	Do
		$findImage2 = _ImageSearch("P", 1, $x1, $y1, 0)
		Sleep(100)
	Until $findImage2 = 1
	
	If $findImage2 = 1 Then
		Sleep (5000)
	EndIf
EndIf
WEnd
| Moep | is offline  
Old 09/19/2009, 15:25   #7
 
elite*gold: 20
Join Date: Oct 2007
Posts: 611
Received Thanks: 1,245
Quote:
Originally Posted by | Moep | View Post
Habs zwar dein Problem net so ganz verstanden, aber vom ablauf her müsste/könnte es so funktionieren.

Code:
#include <ImageSearch.au3>

$x1 = 0
$y1 = 0

While 1
	
Do
	$findImage1 = _ImageSearch("L", 1, $x1, $y1, 0)
	$findImage2 = _ImageSearch("P", 1, $x1, $y1, 0)
	Sleep(100)
Until ($findImage1 = 1) Or ($findImage2 = 1)

If $findImage1 = 1 Then
	Sleep (5000)
	Send ("{enter}")
	Sleep (2000)
	Send ("123")
	Sleep (1000)
	Send ("{enter}")
	Sleep (1000)
	Send ("2009")
	Send ("{enter}")
	Sleep (20000)
	Send ("{enter}")
	Sleep (15000)
	
ElseIf $findImage2 = 1 Then
	Sleep (5000)
EndIf

WEnd
Oder alternativ so.

Code:
#include <ImageSearch.au3>

$x1 = 0
$y1 = 0

While 1
	
Do
	$findImage1 = _ImageSearch("L", 1, $x1, $y1, 0)
	Sleep(100)
Until $findImage1 = 1

If $findImage1 = 1 Then
	Sleep (5000)
	Send ("{enter}")
	Sleep (2000)
	Send ("123")
	Sleep (1000)
	Send ("{enter}")
	Sleep (1000)
	Send ("2009")
	Send ("{enter}")
	Sleep (20000)
	Send ("{enter}")
	Sleep (15000)
	
	Do
		$findImage2 = _ImageSearch("P", 1, $x1, $y1, 0)
		Sleep(100)
	Until $findImage2 = 1
	
	If $findImage2 = 1 Then
		Sleep (5000)
	EndIf
EndIf
WEnd
Ich versuchs mal anders zu erklären.
Der Bot ist für ein Game gedacht.
BILD L = Ein teil des einloggbildschirms
BILD P = Ein teil des Ingame Bildschirms

Wenn ich ingame bin ist BILD P immer vorhanden
Also würde der bot If $findImage2 = 1 Then Sleep (5000) mehrmals machen er soll es aber nur einmal machen unzwar soll er nur nach BILD P suchen wenn er bild L gefunden hatt aber er soll nachdem er BILD P gefunden hatt wieder aufhören danach zu suchen und nur wieder anfangen wenn er BILD L wieder gefunden hatt
>Trib°lex< is offline  
Old 09/19/2009, 15:49   #8
 
elite*gold: 0
Join Date: Apr 2008
Posts: 1,079
Received Thanks: 436
Quote:
Originally Posted by 111222333444 View Post
Ich versuchs mal anders zu erklären.
Der Bot ist für ein Game gedacht.
BILD L = Ein teil des einloggbildschirms
BILD P = Ein teil des Ingame Bildschirms

Wenn ich ingame bin ist BILD P immer vorhanden
Also würde der bot If $findImage2 = 1 Then Sleep (5000) mehrmals machen er soll es aber nur einmal machen unzwar soll er nur nach BILD P suchen wenn er bild L gefunden hatt aber er soll nachdem er BILD P gefunden hatt wieder aufhören danach zu suchen und nur wieder anfangen wenn er BILD L wieder gefunden hatt
Dieser Algorithmus würde genau dem zweiten Script von mir entsprechen...

Edit: Probier doch einfach mal das ganze mit MsgBoxen zu debuggen
| Moep | is offline  
Thanks
1 User
Old 09/20/2009, 00:17   #9
 
elite*gold: 20
Join Date: Oct 2007
Posts: 611
Received Thanks: 1,245
hatt jetz soweit geklappt allerdings macht der bot nur die ersten if..endif schleife aber nicht die folgenen.

Code:
#include <ImageSearch.au3>


$x1 = 0
$y1 = 0
$findImage3 = _ImageSearch("F.bmp", 1, $x1, $y1, 0)


while 1
Do
$findImage1 = _ImageSearch("L.bmp", 1, $x1, $y1, 0)
Until $findImage1 = 1

If $findImage1 = 1 Then
	MouseMove (528, 520)
	Sleep (1000)
	MouseClick ("left")
	sleep(1000)
	Send ("123456") 
	Sleep(1000)
	send ("{Enter}")
	Send ("123456") 
	Sleep(1000)
	send ("{Enter}")
EndIf
WEnd

While 2
Do
$findImage2 = _ImageSearch("C.bmp", 1, $x1, $y1, 0)
Until $findImage2 = 1

If $findImage2 = 1 Then
	send ("{Enter}")
ElseIf $findImage3 = 1 Then
	send ("{Enter}")
	send ("{Enter}")
EndIf
WEnd



While 3
do
$findImage4 = _ImageSearch("P.bmp", 1, $x1, $y1, 0)
Until $findImage4 = 1

If $findImage4 = 1 Then
$coord = PixelSearch ( 471 , 266 , 529 , 342 , 0x2A3333 )
mousemove($coord[0],$coord[1])
sleep (2000)
MouseClick ( "left" )
EndIf
WEnd
>Trib°lex< is offline  
Old 09/20/2009, 10:14   #10
 
elite*gold: 0
Join Date: Apr 2008
Posts: 1,079
Received Thanks: 436
Quote:
Originally Posted by 111222333444 View Post
hatt jetz soweit geklappt allerdings macht der bot nur die ersten if..endif schleife aber nicht die folgenen.

Code:
#include <ImageSearch.au3>


$x1 = 0
$y1 = 0
$findImage3 = _ImageSearch("F.bmp", 1, $x1, $y1, 0)


while 1
Do
$findImage1 = _ImageSearch("L.bmp", 1, $x1, $y1, 0)
Until $findImage1 = 1

If $findImage1 = 1 Then
	MouseMove (528, 520)
	Sleep (1000)
	MouseClick ("left")
	sleep(1000)
	Send ("123456") 
	Sleep(1000)
	send ("{Enter}")
	Send ("123456") 
	Sleep(1000)
	send ("{Enter}")
EndIf
WEnd

While 2
Do
$findImage2 = _ImageSearch("C.bmp", 1, $x1, $y1, 0)
Until $findImage2 = 1

If $findImage2 = 1 Then
	send ("{Enter}")
ElseIf $findImage3 = 1 Then
	send ("{Enter}")
	send ("{Enter}")
EndIf
WEnd



While 3
do
$findImage4 = _ImageSearch("P.bmp", 1, $x1, $y1, 0)
Until $findImage4 = 1

If $findImage4 = 1 Then
$coord = PixelSearch ( 471 , 266 , 529 , 342 , 0x2A3333 )
mousemove($coord[0],$coord[1])
sleep (2000)
MouseClick ( "left" )
EndIf
WEnd
Du hast mit "while 1" ja auch ne Schleife dessen Bedingung immer erfüllt ist. Du könntest auch schreiben "while true" oder "while 1=1". Ergo ist es eine Endlosschleife ohne Abbruchbedingung und das Script wird deshalb diese auch nie verlassen, um sich z.B. anzuschauen was in den anderen Schleifen so los ist. Um einen Schleifenabbruch zu erzwingen könntest du sie mit "exitloop" abbrechen...

Oder du benutzt einfach das Schema was ich dir in meinem zweiten Script gegeben hab. Dort wartet das Script nacheinander auf bestimmte Zustände und führt danach eine Aktion aus.

Hast du das ganze eigentlich mal mit msgboxen gedebuggt, um ein Gefühl dafür zu bekommen wie sich der code bewegt?!
| Moep | is offline  
Old 09/20/2009, 13:47   #11
 
elite*gold: 20
Join Date: Oct 2007
Posts: 611
Received Thanks: 1,245
Aber wenn ichs nach deinem zweitem schma aufbaue sucht er nur einmal danach dasheist er macht alles nur einmal er soll es aber "immer"machen.
Z.b werde ich einmal gekickt der bot logt mich wieder ein und macht das was im bot steht. dann werde ich wieder gekickt dann soll der bot mich wieder einloggen ...usw.

Die Befehle zwischen Do und Until werden ausgeführt, bis der Ausdruck wahr ist. (also nur einmal ?)


Ne hab noch keine msgbox gemacht wieso denn?
Code:
#include <ImageSearch.au3>

$x1 = 0
$y1 = 0

While 1
	
Do
	$findImage1 = _ImageSearch("L.bmp", 1, $x1, $y1, 0)
	Sleep(100)
Until $findImage1 = 1

If $findImage1 = 1 Then
    MouseMove (528, 520)
	Sleep (1000)
	MouseClick ("left")
	sleep(1000)
	Send ("123456") 
	Sleep(1000)
	send ("{Enter}")
	Send ("123123") 
	Sleep(1000)
	send ("{Enter}")
	
	Do		
		$findImage2 = _ImageSearch("C.bmp", 1, $x1, $y1, 0)
    Until $findImage2 = 1

    If $findImage2 = 1 Then
	    send ("{Enter}")
    ElseIf $findImage3 = 1 Then
	    send ("{Enter}")
	    send ("{Enter}")
	EndIf
	
	    Do
            $findImage4 = _ImageSearch("P.bmp", 1, $x1, $y1, 0)
		Until $findImage4 = 1

        If $findImage4 = 1 Then
			$coord = PixelSearch ( 471 , 266 , 529 , 342 , 0x2A3333 )
			mousemove($coord[0],$coord[1])
            sleep (2000)
            MouseClick ( "left" )
        EndIf
EndIf
WEnd
so wäre es doch richtig aber hier bei macht er auch nur das erste
>Trib°lex< is offline  
Reply


Similar Threads Similar Threads
[How To] AutoIt ImageSearch ( am Metin2 Beispiel )
01/16/2015 - Coding Tutorials - 71 Replies
Hi, Ich hab mich mal Hingesetzt und nen Video-TuT über die ImageSearch Funktion in AutoIt gemacht, da diese vielen nicht bekannt ist! Ein kleiner Programmier Fehler ist drin, aber die Imagesearch Funktioniert. Hab das Video Nachts um 3.30 Uhr gemacht. So hier das Video: YouTube - AutoIt ImageSearch
[GUIDE] AutoIt ImageSearch
10/18/2009 - Metin2 Guides & Templates - 14 Replies
Ein sehr praktischer Befehl in AutoHotkey: ImageSearch. (http://www.autohotkey.com/docs/commands/ImageSear ch.htm) Was macht der Befehl?- er sucht den ganzen Bildschrim nach einem Vorgegebenen Bild ab. Vielleicht auch Nützlich für den Angelbot, weil die Leute nicht mehr Pixel suchen müsen, sondern nuch noch Screens machen müssen! Diesen Befehl gibt es auch für AutoIt! _________________________________________________ ___________________________ . Kopiere die ImageSearchDLL.dll in...
Autoit Problem: imagesearch in metin2
07/29/2009 - AutoIt - 5 Replies
tach Ich hab ein problem mit der imagesearch funktion(muss man erst icluden) und zwar das Bild was ich suchen möchte( teil vom namen der gemsichi ) findet er auf dem Desktop, er findet es wen ich es mit der Vorschau öffne, wenn ich es mit paint öffne aber nicht im Metin2 fentser. woran kann das liegen?
autoit pixelsearch bzw imagesearch
02/04/2009 - General Coding - 0 Replies
hi leute, ich hab mir nen bot mit autoit programmiert. Es ist n Browsergame, das auf Flash basiert. Ich habe Imagesearch benutzt und alles funkzt prima. Das Problem: Der Pc ist immer besetzt, wenn ich botte... Also meine Frage: Gibts da ne alternative zu ImageSearch, die auch in minimierten Fenstern funktioniert?



All times are GMT +2. The time now is 19:03.


Powered by vBulletin®
Copyright ©2000 - 2021, 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.

BTC: 33E6kMtxYa7dApCFzrS3Jb7U3NrVvo8nsK
ETH: 0xc6ec801B7563A4376751F33b0573308aDa611E05

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