AnkuLua. Пишем ботов на Android (аналог SikuliX)

Предисловие.

AnkuLua — приложение для Android, позволяющее создавать ботов с использованием сканирования экрана телефона. Данная программа, почти, полная копия SikuliX, поэтому, если вы читали предыдущую статью, вы найдете много общего. К тому же, она не требует root.

Подготовка

Сперва скачайте и установите эти 3 программы:

  • QuickEdit — удобный редактор кода
  • ScreenMaster — программа для создания скриншотов
  • AnkuLua — программа для запуска ботов

Далее, в папке с вашим будущим ботом, создайте lua скрипт(текстовый файл с расширением .lua) и папку image.

  • В папке image, будут хранится изображения, которые бот будет искать на экране.
  • Lua скрипт будет содержать код бота.

Теперь, откройте AnkuLua, и запустите созданный Lua скрипт.

Далее, с помощью QuickEdit откройте Lua скрипт бота. Подготовка завершена, время написать Hello World.

Пишем Hello World (v1).

В Lua скрипт, пропишите следующий код.

print("hello world")

Сохраните и запустите скрипт, нажатием на кнопку проигрывания.

В итоге, получили сообщение на экране.

Пишем Hello World (v2).

Можно написать Hello World и так.

type("hello world")

Тогда, hello world, напечатается в активном окне.

Настраиваем Screen Master.

Сперва настроим ScreenMaster. В настройках выберите:

  • Формат изображения — PNG
  • Качество изображения — 100%.

Т.к. бот будет искать картинку на экране, картинка должна быть максимального качества.

Скриншоты с этой программы, будут помещаться в папку ScreenMaster.

Кликаем по картинке.

Для примера, создадим бота, который будет открывать QuickEdit, кликая по его картинке.

Сначала, обрежьте его картинку, примерно вот так:

Важно, не задевать элементы фона, иначе бот не сможет найти картинку.

Далее, переместите эту картинку в папку image в директории бота и переименуйте в qe.png (для удобства).

В Lua скрипте, пропишите следующее:

click("qe.png")

Сохраните и запустите скрипт. Если скрипт найдет картинку, то он кликнет по ней, и откроет программу.

Подсвечиваем цель.

Точно так же как и SikuliX, здесь можно подсвечивать регион. Измените код на это:

btn = find("qe.png")
btn:highlight(2)
click(btn)

Разберемся как этот код работает.

  1. В начале я с помощью функции find, нашел регион в котором находится наша картинка.
  2. Далее, подсветил этот регион с помощью функции highlight на 2 секунды.
  3. И кликнул по нему.

В итоге, получили красную рамку на 2 секунды возле картинки.

Создаем диалог.

Сейчас я вам покажу, как создать диалог с выбором скрипта.

Перепишите следующий код.

function mainMenu()
  rg1 = 0 --переменная в которой будет хранится индекс выбранной радио-кнопки
  dialogInit() --создаем окно диалога
  addTextView("Text View") --Добавляем в него текстовую строку
  newRow() --переходим на следующий ряд
  addRadioGroup("rg1", 0) -- создаем радио группу, значение выбранной кнопки записывается в rg1, если ничего не выбрано, rg1 = 0
  addRadioButton("Choice 1", 1) --если выбрал "Choice 1" то rg1 = 1
  addRadioButton("Choice 2", 2) --если выбрал "Choice 2" то rg1 = 2
  dialogShow("TestBot") --Выводим диалог на экран, передавав название "TestBot"
end

mainMenu() --вызываем функцию создания диалога

Весь код я объяснил в комментариях (—).

Таким образом, в зависимости от значения rg1, вы можете выбрать нужную функцию и сделать многофункционального бота, примерно так:

function mainMenu()
  rg1 = 0 --переменная в которой будет хранится индекс выбранной радио-кнопки
  dialogInit() --создаем окно диалога
  addTextView("Text View") --Добавляем в него текстовую строку
  newRow() --переходим на следующий ряд
  addRadioGroup("rg1", 0) -- создаем радио группу, значение выбранной кнопки записывается в rg1, если ничего не выбрано, rg1 = 0
  addRadioButton("Choice 1", 1) --если выбрал "Choice 1" то rg1 = 1
  addRadioButton("Choice 2", 2) --если выбрал "Choice 2" то rg1 = 2
  dialogShow("TestBot") --Выводим диалог на экран, передавав название "TestBot"
  if rg1 == 1 then
    doSomething1()
  end
  else if rg1 == 2 then
    doSomething2()
  end
end

mainMenu() --вызываем функцию создания диалога

Где, doSomething1 и doSomething2, функции отвечающие за нужные вам действия.

Узнаем координаты нажатия.

В AnkuLua есть функция getTouchEvent, которая ждет пока ты нажмешь на экран, после чего выводит информацию о нажатии. Из всей этой информации, нам понадобятся только координаты.

Перепишите этот код:

function showTouchCoords()
  local action, locTable, touchTable = getTouchEvent()
  print(locTable)
end

Теперь, при вызове функции showTouchCoords, экран подсветится желтым.

И после касания, выведет координаты нажатия.

Кликаем на координаты.

Чтобы кликнуть по координатам, нужно передать Location в функцию click.

click(Location(500,500))

Данная комманда, кликает на координаты 500, 500.

Прочие функции.

Здесь я распишу остальные функции которые вам могут понадобится в написании бота.

  • toast(текст) — показывает всплывающее сообщение снизу.
  • exists(картинка) — возвращает True, если картинка найдена.
  • wait(картинка) — ждет появления картинки.
  • keyevent(4) — нажимает кнопку назад.
  • keyevent(3) — жмет кнопку домой.
  • keyevent(187) — жмет кнопку переключения приложений.
  • swipe — свайп по экрану.

Подробная информация в документации.

Итоговый результат.

Пожалуйста отключи блокировщик рекламы, или внеси сайт в белый список!

Please disable your adblocker or whitelist this site!