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

746
J0ki

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

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

0

1 ответ на вопрос

2
Myles

Решением вашей проблемы является использование функции 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%. 
я редактировал свой вопрос ^^ Мне нравится ответ, но я все еще не могу его воспроизвести J0ki 5 лет назад 0
Я все еще пытаюсь, но ImageSearch не работает @Myles J0ki 5 лет назад 0
@ J0ki, функция ImageSearch должна работать на вас, если ваш код верен. Лучший способ проверить, что вы все делаете правильно, - это создать очень простой скрипт, который ищет изображение на вашем экране, и, если он найден или нет, используйте функцию «msgbox», чтобы вызвать сообщение как ErrorLevel = 1, так и 0 переменные. Кроме того, сообщество AHK сможет помочь вам изменить ваш код, чтобы он работал. Они отличная группа и часто сообщают вам точно, где вы идете не так, когда вы вставляете свой код для их просмотра. Myles 5 лет назад 0

Похожие вопросы