Привет! Давно не виделись 🙂
И сразу к делу 🙂 После успешной разработки Dwar Rapid Bot решил написать еще одного бота для любимой игры на Android, в которую частенько играю по вечерам. И при этом столкнулся с некоторыми проблемами.
Во-первых, чтобы бот смог работать непосредственно на устройстве, на котором установлена игра, нужно получить root-права, а для этого придется перепрошить устройство с потерей данных, и заново все настроить — установить все приложения, игры и так далее. Помимо этого, некоторые приложения после получения root-прав перестанут работать из соображений безопасности. Например, приложение от сбербанка отказывается работать на рутованных устройствах. Об этом я узнал, когда сделал root-права на одном из своих телефонов.
Во-вторых, если использовать эмулятор Android под Windows, например тот же BlueStacks, тогда можно обойтись без получения root-прав, но тогда игра будет работать на компьютере, и придется каждый раз переносить игровой прогресс между планшетом и эмулятором, что не очень-то удобно, к тому же не все игры поддерживают синхронизацию между разными устройствами.
Тем не менее, решение было найдено достаточно быстро 🙂 Узнав из сети, что Arduino Leonardo умеет эмулировать мышь и клавиатуру при подключении по USB, я решил попробовать использовать эту функцию на Android, для автоматизации игровых действий!
О воплощении этой идеи я рассказываю в следующем видео.
Ниже приведен пример скетча для реализации аппаратного кликер-бота на базе Arduino Leonardo.
#include <Mouse.h> #include <Keyboard.h> void setup() { } void loop() { Mouse.begin(); delay(900); //двигаем курсор в правый верхний угол moveRU(); delay(500); delay(3500); //двигаем чуть ниже на кнопку с рулеткой moveRouleteBTN(); //щелкаем на рулетке delay(100); Mouse.click(MOUSE_LEFT); //теперь двигаемся к самой рулетке delay(500); moveRoulete(); //щелкаем на рулетку delay(100); Mouse.click(MOUSE_LEFT); Mouse.end(); //смотрим рекламу 55 сек delay(55000); //щелкаем НАЗАД Mouse.begin(); delay(900); //Выход из рекламы нажатием правой кнопкой мыши (виртуальная кнопка НАЗАД) Mouse.click(MOUSE_RIGHT); delay(100); //Mouse.click(MOUSE_RIGHT); // есть некоторая реклама, которая просит повторное нажатие для выхода // выход из рекламы нажатием клавиши ESC на клавиатуре //Keyboard.begin(); //delay(900); //Keyboard.write(KEY_ESC); //delay(500); //Keyboard.end(); //ждем пока раскрутится рулетка delay(12000); //забираем награду Mouse.click(MOUSE_LEFT); delay(500); Mouse.end(); delay(1000); //и погнали все по новой } void moveRU(){ for (int i=0; i <= 30; i++){ Mouse.move(90,-90); delay(9); } } void moveRouleteBTN(){ for (int i=0; i <= 3; i++){ Mouse.move(-11,20); delay(9); } } void moveRoulete(){ for (int i=0; i <= 10; i++){ Mouse.move(-33,16); // Mouse.move(-29,20); // 1920*1200 delay(9); } }
Данный способ можно применять не только для планшета или телефона, но и для обычного ПК, а также любого другого устройства, которое поддерживает работу с клавиатурой и мышью по интерфейсу USB!
Спасибо за внимание! Жду ваших комментариев 🙂