Autotaste zum Suchen von Bildern

903
J0ki

Ich lerne, Autohotkey zu verwenden, und ich wollte ein Skript erstellen, das ein Spiel aus dem Dampfmodus öffnet und automatisch einem bestimmten Server beitritt. Mein Code ist bisher:

F1:: Run, steam://rungameid/346110 Sleep, 15000 <--- This is more or less the time that my computer takes to load it, and I want another way to check if the game is already loaded MouseClick, left, 156, 520 <--- (Position of "JOIN ARK") Sleep, 1500 <--- This is the time that takes to load the button (JOIN LAST SESSION) also I want to check this with another more efficient way MouseClick, left, 746, 940 <--- Click the button "JOIN LAST SESSION" return 

Mit diesem Code führe ich das Spiel aus und trete der letzten Sitzung bei. Meine Meta ist, eine Schleife zu machen, die Folgendes tut:

1- Open Game, wenn es nicht geöffnet ist. Wenn es geöffnet ist, starten Sie es neu.

2- Prüfen Sie, wann das Menü angezeigt wird, und klicken Sie auf die Schaltfläche "JOIN" bei x, y (156,520).

3- Prüfen Sie, wann der Button "JOIN LAST SESSION" erscheint und klicken Sie darauf.

4- Wenn ein Popup-Fenster erscheint (ich habe Screenshoots für alle Fehler), fahren Sie mit Punkt 1 fort.

Ich habe über OCR nachgedacht, weiß aber nicht, wie ich es mit autohotkey implementieren soll.

Jede Hilfe wäre dankbar.

0

1 Antwort auf die Frage

2
Myles

Die Lösung Ihres Problems ist die Verwendung der Funktion "ImageSearch".

Wenn Sie auf die Schaltfläche "Drucken" klicken, wenn diese Popups auftreten, können Sie sie mit CRTL + V in Farbe einfügen. Dann beschneiden Sie das Bild, sodass Sie nur noch Ihr Popup-Fenster haben, und speichern Sie es als BMP-Datei. Sie können diese Bitmap-Datei dann in Ihrem ImageSearch-Code verwenden.

Einen kurzen Blick auf den ImageSearch-Code einer Person finden Sie hier .

Wenn Ihr Skript also das gesuchte Bild findet, können Sie weiteren Code unter 'ErrorLevel = 0' angeben.

Wenn Ihr Skript das Bild nicht finden kann, können Sie einen anderen Code zur Ausführung unter 'ErrorLevel = 1' angeben.

Es ist ratsam, dass Sie an dieser Stelle beginnen, Ihre Codeabschnitte zu kennzeichnen und 'Gosub' zu verwenden, damit Ihr Code zwischen Routinen wechseln kann, wenn er auf andere 'if'-Variablen trifft. Auf diese Weise müssen Sie kein riesiges Skript erstellen, das sich zu sehr wiederholt.

Beachten Sie auch, dass ImageSearch nicht ordnungsgemäß funktioniert, wenn Ihr Skript von einem Computer auf einen anderen übertragen wird, wenn die Bildschirmauflösung sogar etwas anders ist. Wenn Sie versuchen, Ihren Code auf einem Computer auszuführen, der eine andere Bildschirmauflösung hat, müssen Sie die Popups erneut scannen, damit er funktioniert.

Beispiel:

 ImageSearch, FoundX, FoundY, 40,40, 300, 300, C:\My Images\test.bmp  if ErrorLevel = 2 MsgBox Could not conduct the search. else if ErrorLevel = 1 MsgBox Icon could not be found on the screen. else MsgBox The icon was found at %FoundX%x%FoundY%. 
Ich habe meine Frage bearbeitet ^^ Ich mag die Antwort, kann sie aber immer noch nicht reproduzieren J0ki vor 6 Jahren 0
Ich versuche es immer noch, aber ImageSearch scheint @Myles nicht zu funktionieren J0ki vor 6 Jahren 0
@ J0ki Die ImageSearch-Funktion sollte für Sie funktionieren, solange Ihr Code korrekt ist. Um zu testen, dass Sie es richtig machen, sollten Sie ein sehr einfaches Skript erstellen, das auf Ihrem Bildschirm nach einem Bild sucht. Wenn Sie die Funktion 'msgbox' gefunden haben oder nicht, wird eine Meldung für ErrorLevel = 1 und 0 ausgegeben Variablen. Die AHK-Community kann Ihnen auch dabei helfen, Ihren Code so zu ändern, dass er funktioniert. Sie sind ein großartiger Haufen und lassen Sie oft wissen, wo Sie falsch laufen, wenn Sie Ihren Code einfügen, damit sie sie sehen können. Myles vor 6 Jahren 0