Я изучаю, как использовать 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.

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

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

1 ответ1

2

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

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

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

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

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

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

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

Пример:

    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%.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .