Приветствую Вас Гость | RSS

SUN Rise

Вторник, 25.06.2024, 08:26
Главная » 2009 » Октябрь » 13 » Программирование на AutoHotKey (часть 3) - Учимся "видеть" - первыые шаги.
13:37
Программирование на AutoHotKey (часть 3) - Учимся "видеть" - первыые шаги.
Итак, весь примитив мы вроде как выучили, давайте перейдем к чему-то более интересному. К примеру научим "видеть". На что чаще всего мы смотрим в игре? Правильно, на ХП/ЦП/МП.

Рассмотрим это дело на примере авто-ЦП.
Для начала рассмотрим саму структуру полоски ЦП, для этого немного подсобьем его....

Полоска где нету ЦП имеет более темный оттенок, и так-же как и полоска полного ЦП градиентна (не однотонна), но к нашему счастью ее цвет изменяется только по вертикале.
Для определения наличия ЦП на каком-либо промежутке нам понадобится команда PixelSearch.
Она имеет такие параметры: PixelSearch, OutputVarX, OutputVarY, X1, Y1, X2, Y2, ColorID [, Variation, Fast|RGB] (в квадратных скобках не обязательные), где  X1, Y1 координаты левого верхнего угла зоны поиска, X2, Y2 - правого нижнего (таким образом задаем прямоугольную зону в которой ищем нужный цвет); OutputVarX, OutputVarY - координаты самой левой верхней точки, в которой этот цвет будет содержаться. ColorID - Код цвета в шестнадцатиричной системе. Variation - принимает значение от 0 до 255, показывает насколько НЕ точным может быть поиск (чем больше, тем более различные оттенки будет определять как искомый цвет).
Если моск включен, то у вас должно было сразу возникнуть минимум 2 вопроса: как мы определим координаты линии ЦП вообще, и как мы определим код цвета. Тут нам на помошь прийдет встроенная в АХК утилита Window Spy.
Если у вас запущен любой скрипт АХК, вызвать эт утилиту можно клацнув по иконке АХК в панеле задачь правой кнопкой мыши:

Появится окно, которое всегда будет на переднем плане. Переключаемся на окно Л2 и подводим мышку к отметке ЦП, при которой по-вашему стоит начинать пить банки.

На скрине не отобразился курсор, но он был где-то в раене дорисованной черной точки. мы нашли координаты (641, 296). Теперь берем некоторый разброс, дабы просматривать область, думаю (635, 290) и (650, 305) будет достаточно. Это и есть координаты Х1, Y1, X2, Y2 соответственно. Запомнили, записали. Но вот проблема, видимо Гейм Гвард блокирует цвет пикселя...на самом деле это не проблема. Включаем мозг и делаем принт скрин и проводим операцию с той-же областю ЦП на скрине, получаем ID цвета, к примеру 0x253B46 (в своем случае я скринил цвет с отсутствующим ЦП)
Вобщем пора открыть блокнот и написать как всегда:

#InstallKeybdHook
#UseHook ON
#MaxThreadsPerHotkey 1
#MaxThreadsBuffer On
#HotkeyInterval 2000 ; This is the default value (milliseconds).
#MaxHotkeysPerInterval 20000
!NumPadDiv::clipboard =SET 1

NumPadDiv::clipboard =TOP 1


Теперь делаем метку (Label 1) к в которой прописываем пожирание ЦП банок, стоящих на 8 ячейке 1 панели

Label1:
clipboard = STR 1 /useshortcut 1 8
Return

По нажатию F2 начинаем цикл проверки ЦП:

F2::
loop
{
PixelSearch, Px, Py, 635, 290, 650, 305, 0x253B46, 50, Fast

; и проверяем, нашелся-лии цвет. Для этого используем команду ErrorLevel. В данном случае она принимает значение 0, если цвет найден, 1 если не найден.
Так как я искал в определенном участке цвет ОТСУТСТВИЯ ЦП, то в случае его нахождения пора пить банки:
if ErrorLevel=0
Gosub, Label1                         ;Gosub, метка - переход к заданной метке
Если-же он не найден - продолжаем цикл
else
continue 
}

Вот, вроде должно работать, осталось только найти координаты для вашего монитора, ну и на всякий случай проверить цвет.
Все еще работает (все еще бесплатная) консультация на форуме в разделе тех. поддержки, теме Евелина.
Просмотров: 6613 | Добавил: rise | Рейтинг: 3.5/2
Всего комментариев: 4
4 Куська  
0
Всё сделала но что было не проблематично стало проблемой оО он когда не находит.. нечего не делает(

3 AXILLESS  
0
Последнее время редко просматриваю старые темы, та и новые тоже. Если есть какие-то вопросы - можно писать на ICQ 369 516 330.
По поводу цвета, на некоторых серверах реализовать эту функцию невозможно

2 Куська  
0
C нахождением цвета, разобралась.. был указан не верно.

1 Куська  
0
1::
{
PixelSearch, Px, Py, 248, 243, 997, 703, 0xff0052, 50,
if ErrorLevel=0
Send, {LButton}{LButton}
if not ErrorLevel=0
MouseClick, left, 644, 196
}

Дело в том что я хочу чтобы он находил цвет в этом участке.. Цвет есть точно а он быстро всё проскакивает и цвет не находит, хоть и стоит 50.. а вот если ставить 100 то он находит этот цвет даже если его нету... и ещё мне необходимо чтобы когда он найдёт этот пиксиль он по нему кликнул бы :( А если нет то кликать в другое указанное место(Ну это уже не проблематично сделать).


Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]