Autohotkey для поиска изображений

Я учусь пользоваться autohotkey и хотел создать скрипт, который откроет игру из steam и автоматически присоединится к определенному серверу. Мой код до сих пор:

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

Итак, с этим кодом я запускаю игру и присоединяюсь к последней сессии. Моя мета - сделать цикл, который делает:

1 - открыть игру, если она не открыта. Если он открыт, перезапустите его.

2-Проверьте, когда появится меню, и нажмите кнопку "Присоединиться", расположенную в x, y(156,520).

3 - Проверка при появлении кнопки "присоединиться к последней сессии" нажмите на нее.

4-Если появляется всплывающее окно (у меня есть скриншоты для всех ошибок), перейдите к пункту 1.

Я думал об OCR, но не знаю, как реализовать его с помощью autohotkey.

любая помощь будет оценили.

24
задан J0ki
16.02.2023 18:15 Количество просмотров материала 2654
Распечатать страницу

1 ответ

решение вашей проблемы заключается в использовании функции ImageSearch.

Если вы нажмете кнопку Печать экрана всякий раз, когда эти всплывающие окна происходят, вы можете затем CRTL+V вставить его в краску. Затем обрезайте изображение так, чтобы все, что у вас есть, - это всплывающее окно и сохраните его как .файл BMP. Затем этот растровый файл можно использовать в коде ImageSearch.

быстрый взгляд на чей-то ImageSearch код можно найти здесь.

Так что если ваш скрипт найдет изображение, то в поисках вы можете наметить дальнейший код для запуска под 'ErrorLevel = 0'

Если ваш скрипт не может найти изображение, вы можете набросать другой код для запуска под 'ErrorLevel = 1'

желательно, чтобы в этот момент Вы начали маркировать свои разделы кода и использовать "Gosub", чтобы ваш код мог прыгать между подпрограммами, когда он попадает в разные переменные "if". Таким образом, вам не нужно создавать гигантский сценарий, повторяющий себя слишком много.

также имейте в виду, что Поиск картинок не будет функционировать должным образом, когда ваш скрипт передается от одной машины к другой, если разрешение экрана даже немного отличаются. Если вы попытаетесь запустить код на компьютере с другим разрешением экрана, вам придется снова сделать скриншот всплывающих окон, чтобы он работал.

пример:

    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%.
2
отвечен Myles 2023-02-18 02:03

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]

Ваш ответ

Опубликуйте как Гость или авторизуйтесь

Имя
Вверх