Найти тему

24.06.2021 - 26.06.2021. Автокликер и Хроники Хаоса. Арена: система распознавания "свой-чужой"

с сайта Infourok.ru
с сайта Infourok.ru

Сегодня 24 июня 2021 года 10 часов 53 минуты, четверг. За окном +32.
Всем доброго дня!

В предыдущих статьях:

14.06.2021. Автокликеры и онлайн игры. Автоматизируем сбор титанита в игре Хроники Хаоса.

16.06.2021. Автокликер: простой и доступный способ автоматизации рутинных действий

мы рассмотрели простые способы автоматизации игровых заданий (рутинных действий).

После автоматизации прохождения Башни, Запределья и Магазина (игровое золото) возникла мысль автоматизировать 1 битву на арене на случай если прозеваю арены и не получу награды. А затем слепить все в кучу.

Чего там, четыре кнопки кликнуть: арена, напасть на левого игрока, завершить бой и выйти из арены.

Но вот тут возникают подводные камни. Левый игрок может быть "своим" из твоей гильдии. Таким образом, родилась идея написать систему распознавания "свой-чужой".

Механизм работы распознавания описан в статье

14.06.2021 - 16.06.2021. Автокликер и Трофейная рыбалка 2: Начало.

с той лишь разницей, что этот механизм распознает поклевки.

В нашем случае будем распознавать флаг гильдии (ги).

авторский скорректированный скриншот
авторский скорректированный скриншот

Нас интересует обозначенная зона. Зона определяется координатами левого верхнего угла и правого нижнего. Сравнивать будем изображения флагов. Главное, чтобы изображения флагов вписывались в обозначенную зону (были меньше, но не больше).

Для скриншота будем использовать скрипт без цветокоррекции:

GETSCREEN // Clickermann помещает в свой графический буфер скриншот ва экрана
SCREENSHOTFIX(0,0, $_xmax,$_ymax, "screen_001.bmp")
HALT // Останавливает скрипт

Далее ищем свой флаг на арене и делаем скриншот кликером.

Открываем скриншот редактором "Paint' аккуратно выделяем наш флаг, копируем, вставляем в новый документ, обрезаем и сохраняем 24-разрядный рисунок .bmp

26 июня 2021 года 13 часов 32 минуты, суббота. +30

Продолжаем наши изыскания. Зашел на арену сделал кликером скриншот флага слева и для теста немного написал:

////заходим на арену
//LCLICK(1137,513)
////ждем
//WAIT(5)
//проверяем флаг
GETSCREEN(742,413,823,483)
IF_PICTURE_IN (742,413,823,483, "flag.bmp", -1, 100)
LOGWRITE ("Сообщение")
END_IF

Все сработало. Осталось вместо абы какого флага вставить наш в файл "flag.bmp".

Если флаг не найден - давим на кнопку "напасть".

Если флаг найден - давим кнопку "обновить".

Можно проверять несколько флагов. У меня получилось так:

$check=0
$check1=0
$check2=0
////заходим на арену
LCLICK(1137,513)
//ждем
WAIT(5)
WHILE($check=0)
//проверяем флаг №1
GETSCREEN(742,413,823,483)
IF_PICTURE_IN (742,413,823,483, "flag1.bmp", -1, 100)
$check1=0
ELSE
$check1=1
END_IF
//проверяем флаг №2
GETSCREEN(742,413,823,483)
IF_PICTURE_IN (742,413,823,483, "flag2.bmp", -1, 100)
$check2=0
ELSE
$check2=1
END_IF
IF ($check1=0) or ($check2=0)
//LOGWRITE ("Давим обновить")
LCLICK(1286,596)
WAIT(5)
END_IF
IF ($check1=1) and ($check2=1)
$check=1
END_IF
END_CYC
///////LOGWRITE ("нападаем")
LCLICK(737,604)
WAIT(2)
//в бой
LCLICK(1400,801)
WAIT(20)
//кнопка Пауза
LCLICK(1489,263)
WAIT(3)
//кнопка Пропустить
LCLICK(1028,606)
WAIT(5)
//вернуться в город
LCLICK(1447,295)

Удачи!

Канал "Дневник программиста 1С"