Показать сообщение отдельно
Старый 19.06.2014, 03:45   #1
smay123
Освоившийся
Аватар для smay123
OFFLINE
Регистрация: 05.02.2014
Сообщений: 40
Благодарностей:
5 всего
Мнения: + 49
Репутация: 16

Создаем сами простенького бота для танков (World of Tanks)


Всем привет! Некоторые игроки не хотят покупать ботов, и готовы брать даже самое худшее. Что же, я вас обрадую - есть возможность создать своего бота и совершенствовать его!
Где вы можете его использовать? Основная его задача, на данный момент, - прокачка экипажа Т62А Спорт.
Что же нам потребуется для создания данного чуда? Программа Clickermann.
Немного о ней:
1. Кликер с возможностью записи действий
2. Возможность анализа экрана(количество пикселей в определенной области, цвет пикселя, картинки и тд)
3. Есть редактор скриптов, которые вы можете писать сами, если нету смысла записывать самому
4. Простой и понятный язык написания скриптов, даже для новичков, требующий минимальные знания английского.
Официальный сайт программы:
http://crapware.aidf.org/
Официальная группа кликера:
http://vk.com/clickermann
ЭТО НЕ РЕКЛАМА, ПЕРВАЯ ССЫЛКА НУЖНА ДЛЯ СКАЧИВАНИЯ, ВТОРАЯ - ЕСЛИ У ВАС ВОЗНИКНУТ ВОПРОСЫ, ТАМ ВАМ МОГУТ ПОМОЧЬ!

Немного ознакомимся с ее интерфейсом.
Image 1:
Красным отмечены настройки, где вы можете настроить хоткеи.
Желтым - кнопки "Начать выполнение скрипта", "Начать запись скрипта", "Остановить"
И зеленым - редактор, место где есть возможность написать свой собственный скрипт.

Что же, приступим! Не забывайте, WoT открыт в оконном режиме.
Раздел I - создание "ориентиров" для нашего бота.
Что такое ориентир? Это часть интерфейса, по которой бот будет определять, где он "находится" в данный момент времени и выполнять соответствующую задачу.
Что может быть ориентиром? Давайте разберемся, для начала, какие 3 стадии боя у нас есть:
1. Танк в ангаре
2. Сам бой
3. Результаты после боя
Для каждой стадии есть свой ориентир. Заметьте, он должен быть статическим, т.е быть неизменным.
Допустим, у меня есть 3 ориентира:
1. Кнопка "в бой", горящая красным.
2. Зеленая полосочка хп внизу экрана
3. Задний фон результатов боя

Нужно сделать скриншоты этих областей в формате bmp. Не реклама, но советую вам использовать программу FastStone Capture, покопавшись в настройках, определите, как сделать сохранение в нужном формате.
Далее, их нужно сложить в папку "Clickermann/projects/WOT"
Мои скриншоты прилагаются(к сожалению, фон результатов не загружается, сами сделаете, в случае чего).

Раздел II - определение координат
Какие нам координаты нужны?
1. Область, где у вас находится кнопка "в бой", а так же любые координаты, с помощью которых можно нажать на нее.
2. Координаты полоски хп внизу, точнее область, в которой она находится
3. Координаты фона результатов, а так же координаты крестика для закрытия.
Как их определить?
К счастью, в нашу программку вставлена возможность отображения координат мышки. Мы просто наводим на определенную область, и записываем координаты.
НЕ ЗАБЫВАЙТЕ - НУЖНЫ КООРДИНАТЫ СНАЧАЛА СЛЕВА СВЕРХУ, ПОТОМ СЛЕВА СНИЗУ, ЕСЛИ ЭТО ОБЛАСТЬ

Раздел III - создание нашего искусственного интеллекта
Открываем редактор, и начинаем ТВОРИТЬ.
К сожалению, сейчас 3 часа ночи, и объяснять по кускам я просто физически не могу, так что я напишу просто код с объяснениями. Если хотите получить более детальную информацию - там есть встроенная справка, где описаны все доступные команды.
Код:
getscreen // с помощью данной команды мы получаем снимок экрана, с помощью которого программа и ориентируется, если его нету - программа работает по устаревшим данным
IF_PICTURE_IN (x1,y1, x2, y2,"название нашей картинки которая лежит по правильной директории.bmp") // IF_PICTURE_IN (x, y, x2, y2, "file") - производит поиск изображения в прямоугольной области буфера анализа. Координаты - область, где мы должны искать кнопку "в бой". И не забывайте - слева вверху и справа внизу
Wait(2) // Делаем задержку, что бы все работало даже при лагах
Lclick(x,y) // Делаем клик по области, x и y - координаты на кнопке, куда кликать
END_IF
getscreen
IF_PICTURE_IN (x1,y1, x2,y2, "картинка с полоской хп.bmp") // Тут мы проверяем, в бою ли танк или нет
#ps2_keyboard //Специальный режим эмуляции нажатий клавиатуры, но, увы, я не могу о нем рассказать подробно, если вам интересно - прочитайте в справке.
Wait(2)
// Тут вы должны определить поведение бота в бою. Тут есть много вариантов. Один из которых просто записать пару движений или выстрелов и вставить сюда(не забывайте, тут есть функция записи действий), или для более рукастых: самому написать движения с помощью определенных команд, о которых вы прочитаете в справочнике по редактору. А для особо умных, вы можете сделать проверку положения на карте, и в зависимости от него, выполнить определенное действие. Этого я писать не буду, ибо слишком геморно, да и статья только для ознакомления, своими скриптами вы можете, и ПРОСТО ПРОШУ ВАС, ЕСЛИ ВЫ СДЕЛАЛИ РЕАЛЬНО ГОДНОГО БОТА, ПОДЕЛИТЕСЬ СО ВСЕМИ, ИЛИ ЖЕ ПРОСТО МОЖЕТЕ ПИСАТЬ ПРЕДЛОЖЕНИЯ, ЧТО СТОИТ ДОБАВИТЬ!
END_IF
getscreen
IF_PICTURE_IN (x1,y1, x2,y2, "фон послебоевой статистики.bmp")
Wait(2)
Lclick(x1, y2)
END_IF
// Проверка, вышел ли танк из боя, и если вышел, нажать на крестик для выхода.


Вроде все, мы создали своего первого бота, теперь пора заглянуть в справочник, и придумать еще лучше! Совершенствуйте свои скрипты и присылайте сюда.

Статья криво написана с ошибками by smay123.
Задавайте свои вопросы тут.
P.s модератор, прошу, проверьте тему, что стоит исправить, первая статья.
Изображения
Тип файла: bmp boi.bmp (1.5 Кб, 91 просмотров)
Тип файла: bmp boy.bmp (7.3 Кб, 53 просмотров)
Тип файла: jpg 123132.jpg (14.2 Кб, 207 просмотров)

Последний раз редактировалось dark; 20.06.2014 в 10:53.
 
Сказали спасибо:
Alex_S (30.07.2014), cristi (30.06.2014), lllSerzHlll (23.06.2014)