Пишем фарм-бота для игры r2 online с помощью Kibor[Часть 1]
Добрый день! Сидя за кружкой чая в моей голове появилась идея - а почему бы не написать полноценного бота для r2 online? Который будет поднимать лут, восстанавливать здоровье по мере необходимости, улетать в город при опасности. Спустя несколько десятков минут у меня получилось написать некоторый функционал, которым я хочу с вами поделиться!
Итак, для начала, как вы, наверное, уже знаете, для создания бота я использую Kibor. Данная программа представляет из себя программируемый кликер с кучей фенечек и сладостей. Ссылку на нее я оставлю в конце поста. Приступим!
Открываем программу и видим следующее:
В верхнем меню заходим в Инструменты -> Визуальный редактор кода.
Конечный результат выглядит вот так:
Переходы между блоками соединяем с помощью "Переход", как и в случае переходов при проверке условия: условие выполняется (Переход), не выполняется (Переход при неправда).
Итак, пробежимся с самого начала:
1)В правом меню нажимаем наблок "Старт" и переносим его на рабочее поле - С него начинается любой скрипт, так же в нем объявляются начальные переменные, нужные для дальнейшего функционирования скрипта. В свойствах блока объявляем переменные.
Далее вы поймете, для чего они нужны.
2) Переносим "Блок кода" и в свойствах блока для получения параметров экрана вписываем функцию getdisplay(color, xw, yw).
3) Для поиска монстров будем использовать функцию динамического поиска finddynamic, ссылку на справку по функциям так же оставлю в конце поста. Перетаскиваем блок "Поиск изображения", в свойствах параметру "выбор функции анализа..." = finddynamic. Данную функцию используем 2 раза: 1 раз - для получения исходного изображения экрана,
а 2 раз-для сравнения динамичных объектов с исходным изображением.
Между ними ставим задержку в 100-200мс и присваиваем переменной n = 0. Для чего она - узнаем позже. Количество найденных динамических объектов (монстров) сохраняется в переменную k, а их координаты - в массивы x и y.
4) Далее ставим логический блок с условием if(n < k). n - Переменная-счетчик, то есть, если n=0, то сначала берутся координаты из массива x[0] и у[0], n=1 -> x[1] и y[1] и так далее, пока счетчик не станет равен количеству найденных объектов т.е пока не переберем всех найденных мобов.
5) Переносим блок "Мышь клик". В свойствах блока указываем параметры как на скрине. При выполнении условия из предыдущего логического блока мы перемещаем мышь по найденным координатам монстра x[n] и y[n] со смещением -5/+5px.
6) Проверку, моб ли это или нет, будем осуществлять по изображению здоровья над мобом. Открываем кибор, вкладка "Графика". В игре нажимаем CTRL+SHIFT+S. В Кибор получаем вот такую картину:
Выбираем инструмент "Выделение"(Обведен красным слева) и выделяем один кубик от всего здоровья персонажа. ПКМ по выделенной области -> сохранить выделенное. Перетаскиваем блок "Поиск изображения", в первом параметре выбираем findimage. В параметре "Путь к файлу" выбираем ранее сохраненную картинку с квадратиком от хп моба. Ставим галку "Искать по неполному совпадению" и выставляем значение от 50 до 100. Остальные переменные выставляем точно так же(они были ранее объявлены в блоке старт). Теперь, при наведении мыши скрипт проверит, появилась ли строчка хп. Если да - это моб, нет - промах.
7) Осталось совсем немного! Теперь будем проверять, обнаружена ли полоска здоровья моба или нет. Перетаскиваем 2 блока "Блок кода" для проверки истинности/ложности условия. Если изображение найдено(Истина, соединяем блоком "Переход"), то напишем на монстре "Моб" с помощью функции textout и сделаем задержку в 1000мс, чтобы текст сразу не пропал:
А если не найдено(ложь) - прибавим к переменной n+1 (n++) и выберем следующий объект для проверки:
В завершении, соединяем блок, выводящий текст "МОБ" с логическим блоком для проверки остальных объектов.
Нажимаем справа-снизу кнопку "Получить код" -> "Скопировать и закрыть редактор". Вставляем код в поле и нажимаем на кнопку:
Демонстрация работоспособности:
![Пишем фарм-бота для игры r2 online с помощью Kibor[Часть 1] Бот, Автоматизация, Ботоводство, R2, Гифка, Длиннопост](https://cs12.pikabu.ru/post_img/2021/05/13/9/1620916271149179494.jpg)
Со временем я буду обновлять функционал скрипта, добавляя новые фишки. Как и сказал, ссылки на ресурсы:
Кибор - https://kibor-bot.com/
Список функций Кибор с подробным описанием - https://kibor-bot.com/forum/topic.php?forum=14&topic=13