Register for your free account! | Forgot your password?

You last visited: Today at 04:19

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

Advertisement



[AutoIt] ImageSearch

Discussion on [AutoIt] ImageSearch within the Coding Tutorials forum part of the General Coding category.

Reply
 
Old   #1


 
elite*gold: 122
Join Date: May 2014
Posts: 2,722
Received Thanks: 526
[AutoIt] ImageSearch

Hallo Leute, ich möchte euch zeigen wie ihr am einfachsten einen ImageSearch Bot erstellen könnt.

Was ist ImageSearch?
ImageSearch ist eine Funktion, mit der man nach bestimmten Bildern auf dem Bildschirm suchen kann, und dann damit interagieren kann. (z.B. Wenn Bild gefunden, dann draufdrücken..)

Wie benutze ich ImageSearch? (1/2)
Zuerst ladet ihr euch die ImageSearch.au3 herunter und die ImageSearchDLL.dll
Diese findet ihr hier:
Die ImageSearch.au3 tut ihr in eurem AutoIt Ordner unter Include.
Dateipfad könnte so aussehen: C:Program Files (x86)AutoIt3Include
Jetzt sind wir noch nicht fertig! Die ImageSearchDLL.dll tut ihr in eurem Windows Ordner unter System32

Auch hier nachzulesen:


Wie benutze ich ImageSearch? (2/2)
Als aller erstes müsst ihr die ImageSearch.au3 includieren! Dies tut ihr in der aller ersten Zeile mit dem "Befehl"
Code:
#include <ImageSearch.au3>
Nun haben wir die ImageSearch.au3 mit eingebunden und können jetzt die Funktionen nutzen! Ich beschäftige mich hier nur mit _ImageSearch NICHT mit _ImageSearchArea!

Ich habe es immer gerne wenn ich ImageSearch verwende, das dieses Programm Steuerbar mit HotKeys (F1,F2) ist. Um dies zu tun schreibt ihr nach dem ihr dieses #include schriebt:
Code:
HotKeySet("{F1}","starten")
HotKeySet("{F2}","stoppen")

While 1
   Sleep(1)
WEnd

Func starten()
   
EndFunc

Func stoppen()
   Exit 1
EndFunc
Die While-Schleife kann auch ganz am Ende des Codes getan werden, ich hab es allerdings gleich am Anfang.

Gehen wir nun zu dem eigentlichen Befehl, und klamüsern erstmal alles auseinander.

Code:
$search = _ImageSearch("datei.bmp",1,$x,$y,0)
$search - eine von uns festgelegte Variable
_ImageSearch - Funktion aus der ImageSearch.au3
"datei.bmp" - hier das Bild was wir suchen (geht auch mit anderen Formaten z.B. "haus.png" etc..)
1 - die Maus wird auf die Mitte des Bildes drücken
$x,$y - hier werden die Koordinaten gespeichert wo das Bild gefunden wurde
0 - Toleranzwert (je höher der Toleranzwert, desto höher ist die Chance das die Funktion auch was anderes findet!)

Bevor wir aber den Befehl von oben kopieren & einfügen, muss man vorher noch $x und $y deklarieren! Undzwar sind die Werte der beiden Variablen "0".

Quasi:
Code:
   $x = 0
   $y = 0
   $search = _ImageSearch("datei.bmp",1,$x,$y,0)
Jetzt können wir abfragen ob die Suche Erfolgreich (1) war!

Dies tut man mit:
Code:
 If $search = 1 Then
	  
   Else
	  MsgBox("","Error 1","Bild wurde nicht gefunden")
   EndIf
Jetzt dürft ihr selber entscheiden was getan werden soll, wenn das Bild gefunden wurde. Ich benutze oft ImageSearch, um dann auf das Bild draufzudrücken, dies tut man wie folgt:

Code:
 If $search = 1 Then
	  MouseClick("left",$x,$y,1)
   Else
	 MsgBox("","Error 1","Bild wurde nicht gefunden") 
   EndIf
Da die Werte der Variablen $x,$y überschrieben werden, mit den Koordinaten wo das Bild gefunden wurde, können wir auch hier einen Klick darauf machen!


Nach dem MouseClick könntet ihr dann wieder ein anderes Bild suchen, achtet darauf das keine Variable 2 mal vorkommt! Auch nicht das x und das y!



Mit freundlichen Grüßen, Melli-
Melli- is offline  
Old 06/04/2016, 02:06   #2
Moderator


 
elite*gold: 66
Join Date: Apr 2012
Posts: 3,457
Received Thanks: 1,739
Schön, dass du dir die Zeit genommen hast, die ImageSearch Funktion zu erklären. Ich find das Tutorial leider nicht sehr gelungen. Aber du kannst es ausbauen und überarbeiten, da die Funktion mMn sehr nützlich ist und sie ein ordentliches Tutorial verdient hat. Daher komm ich auch direkt mal zu meinen Kritikpunkten/Verbesserungsvorschlägen:

1. Die ImageSearchDLL.dll würde ich nicht in den Windowsordner packen, außer man will das Script nur für sich benutzen. Da hier aber viele Bots o.Ä. schreiben wollen, würde ich die DLL lokal vom Script aus speichern, am besten in einen Ordner, wo sich dann auch die ganzen anderen Ressourcen, wie z.B. die zu suchenden Bilder, befinden.
2. ̶i̶̶n̶̶c̶̶l̶̶u̶̶d̶̶i̶̶e̶̶r̶̶e̶̶n̶ --> importieren
3.
Code:
While 1
   Sleep(1)
WEnd
Den Sleep änderst du bitte schnell in mind. 100, bevor alpines hier auftaucht.
4. Die Parameter kann man ruhig ausführlicher erläutern. Was hat ImageSearch für einen Rückgabetyp? Wo müssen sich die Bilder befinden, wenn ich einfach name.bmp eingebe? Funktioniert das auch mit transparenten Bildern?
5. ImageSearch lässt sich gut an Beispielen erklären. Man muss jetzt keinen ganzen Bot schreiben, aber man könnte sich ein kleines Spiel herausnehmen und selbst mit Pseudo Code zeigen, in welche Richtung das gehen würde.
Moneypulation is offline  
Old 06/06/2016, 07:25   #3
 
elite*gold: 60
Join Date: Aug 2009
Posts: 2,256
Received Thanks: 814
Quote:
Originally Posted by Moneypulation View Post
Den Sleep änderst du bitte schnell in mind. 100, bevor alpines hier auftaucht.
Ich sollte beim nächsten Mal die Threads nicht überfliegen sonst verpasse ich hier noch was

Die Sleep-Funktion von AutoIt sleept immer mindestens 10ms, das ist ganz leicht nachprüfbar mit folgendem Script.
Code:
$tmr = TimerInit()
Sleep(1)
MessageBox(0, "", TimerDiff($tmr))
Sleep(100) sollte auch eigentlich in den meisten Fällen reichen, da das hier aber eine Schleife ist die das Programm nur am laufen hält, kannst du auch 1000ms oder mehr nehmen.
alpines is offline  
Old 06/11/2016, 17:48   #4
 
elite*gold: 11
Join Date: Aug 2011
Posts: 833
Received Thanks: 150
Code:
#include<ImageSearch.au3>

HotKeySet("(NUMPAD2)","starten")
HotKeySet("(NUMPAD3)","beenden")
$x1=0
$y1=0
$x2=0
$y2=0

While 1
   Sleep(1)
WEnd

Func starten()
	  While 1
		 $resulte=_ImageSearch("IdleWC.png",1,$x1,$y1,0)
			If $resulte=1 Then
			  $resulte_ImageSearch("yewtext.png",1,$x2,$y2,0)
				  IF $resulte=1 Then
					 MouseClick("LEFT",$x2,$y2)
					 EndIf
				  EndIf
			   WEnd
			EndFunc

Func beenden()
   exit 0
EndFunc
was stimmt damit nicht ? nichts passiert
epvpImg: simple.
epvpImg: superb image hosting.
hier sind die zwei bilder
.TheBlueOptic is offline  
Old 06/11/2016, 20:55   #5


 
elite*gold: 122
Join Date: May 2014
Posts: 2,722
Received Thanks: 526
Quote:
Originally Posted by .TheBlueOptic View Post
Code:
#include<ImageSearch.au3>

HotKeySet("(NUMPAD2)","starten")
HotKeySet("(NUMPAD3)","beenden")
$x1=0
$y1=0
$x2=0
$y2=0

While 1
   Sleep(1)
WEnd

Func starten()
	  While 1
		 $resulte=_ImageSearch("IdleWC.png",1,$x1,$y1,0)
			If $resulte=1 Then
			  $resulte_ImageSearch("yewtext.png",1,$x2,$y2,0)
				  IF $resulte=1 Then
					 MouseClick("LEFT",$x2,$y2)
					 EndIf
				  EndIf
			   WEnd
			EndFunc

Func beenden()
   exit 0
EndFunc
was stimmt damit nicht ? nichts passiert
epvpImg: simple.
epvpImg: superb image hosting.
hier sind die zwei bilder
Dein Fehler lag daran, das du nachdem du If $resulte=1 Then
du bei "$resulte_ImageSearch" ein "=" vergessen hast. Außerdem darfst du zwei Bilder nicht auf eine Variable festlegen, deswegen schrieb ich im umgeschriebenen Script "$resulte1", so kannst du dir sicher sein, das du dies als Fehlerquelle ausschließen kannst, falls es nicht klappen sollte.
Code:
#include<ImageSearch.au3>

HotKeySet("(NUMPAD2)","starten")
HotKeySet("(NUMPAD3)","beenden")
$x1=0
$y1=0
$x2=0
$y2=0

While 1
   Sleep(1)
WEnd

Func starten()
	  While 1
		 $resulte=_ImageSearch("IdleWC.png",1,$x1,$y1,0)
			If $resulte=1 Then
			  $resulte1= _ImageSearch("yewtext.png",1,$x2,$y2,0)
				  If $resulte1=1 Then
					 MouseClick("LEFT",$x2,$y2)
					 EndIf
				  EndIf
			   WEnd
			EndFunc

Func beenden()
   exit 0
EndFunc
Melli- is offline  
Old 06/11/2016, 23:17   #6
 
elite*gold: 11
Join Date: Aug 2011
Posts: 833
Received Thanks: 150
Ich habe die DLL alle Bilder und die .au3 Dateien in einem Ordner aber er gibt mir immer.
"C:\Program Files (x86)\AutoIt3\Include\ImageSearch.au3" (44) : ==> Subscript used on non-accessible variable.:
if $result[0]="0" then return 0
if $result^ ERROR
hab auch schon als admin ausgefürt

.TheBlueOptic is offline  
Old 01/21/2021, 19:21   #7
 
elite*gold: 0
Join Date: Dec 2009
Posts: 1
Received Thanks: 0
Imagesearch verschiedener Bilder

Hallo,
ich bin ein absoluter Newbie was das programmieren betrifft.
Habe mir für ein Spiel einen Bot mit AutoIt erstellt welches auch läuft.
Das einzige was mich daran stört ist die lange Liste, welche sich auch ständig erweitert, da im laufe der Zeit immer mehr Bilder hinzukommen. Bisher habe ich die Liste erweitert wie man es gut im Script erkennen kann.
Ich denke aber dass es auch einfacher geht, weiß aber nicht wie.
Vielleicht hat ja einer eine Idee und hilft mir auf die Sprünge.
Ich freue mich auf eine Antwort von euch.
Hier nun der Script:
Ich hoffe ich füge ihn richtig ein :-)
wrabbit is offline  
Reply


Similar Threads Similar Threads
AutoIt - ImageSearch
11/22/2013 - SRO Private Server - 0 Replies
#include <ImageSearch.au3> $X = 0 $Y = 0 Func Start () $Search = _ImageSearch('Weapon.bmp', 0, $x, $y, 0) if $Search = 1 Then MouseMove($x, $y,10) EndIf
[S] Autoit bot Imagesearch
07/31/2011 - Trading - 0 Replies
Hallo ich suche eine Möglichkeit peer Autoit ein bild auf meinen Bildschirm zu suchen. Sollte Autoit dieses Bild gefunden haben Sollte nach Möglichkeit ein Farbiger Kasten um dieses Bild erscheinen. Hier einmal das Bild ImageShack® - Online Photo and Video Hosting PUSH
Autoit ImageSearch
09/20/2009 - AutoIt - 10 Replies
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>



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


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.