Код: Выделить всё
Image Next = Image.load("Next");
Point Next_Area_1 = Point.get(20, 1700);
Point Next_Area_2 = Point.get(180, 1920);
int nextMidX = (int)(Next.getWidth() * 0.5);
int nextMidY = (int)(Next.getHeight() * 0.5);
//---------------------------------------------------
Point defense_Area_1 = Point.get(270, 1540);
Point defense_Area_2 = Point.get(298, 1584);
Image def1 = Image.load("1");
Image def2 = Image.load("2");
Image def3 = Image.load("3");
Image def4 = Image.load("4");
//---------------------------------------------------
Point refresh_P = Point.get(978, 1730);
//---------------------------------------------------
Image ukr = Image.load("UKR");
Image pnx = Image.load("PNX");
Image u1k = Image.load("U1K");
Image ufu = Image.load("UFU");
Point clan_Area_1 = Point.get(210, 1465);
Point clan_Area_2 = Point.get(350, 1530);
//---------------------------------------------------
Point Attack_P = Point.get(871, 1536);
//---------------------------------------------------
Image coin = Image.load("coin");
Point coin_Area_1 = Point.get(990, 180);
Point coin_Area_2 = Point.get(1055, 246);
//---------------------------------------------------
Image Gold4 = Image.load("Gold4");
Image Gold5 = Image.load("Gold5");
Image Gold6 = Image.load("Gold6");
Image Gold7 = Image.load("Gold7");
Point Gold_Area_1 = Point.get(898, 197);
Point Gold_Area_2 = Point.get(932, 237);
//---------------------------------------------------
Image k = Image.load("k");
Point k_Area_1 = Point.get(964, 164);
Point k_Area_2 = Point.get(999, 244);
//---------------------------------------------------
startScreenCapture(2);
sleep(180);
Point pFoundNext;
while (!EXIT)
{
// 2) кликер должен найти изображение Next в зоне Next_Area_1~2
// 3) пока изображения не найдено (кликер - далее К) не переходит к следующим действиям
pFoundNext = findImg(Next, Next_Area_1, Next_Area_2);
if (pFoundNext.x > -1)
{
// 4) после того как изображение Next найдено - определяем его координаты - создаём точку с центром картинки Next
// (ПРИМ. разработчика. здесь величина отклонения 15 пикселей вокруг центра, можете поменять, если нужно.)
Point pRandNext = randomize(Point.get(pFoundNext.x + nextMidX, pFoundNext.y + nextMidY), 15);
// 5) нажимаем Next с функций рандома
click(pRandNext);
// 6) ждём с функцией рандома 50-200 мс
//(ПРИМ. разработчика. здесь рандом не нужен. Достаточно просто подождать перед началом проверки цвета)
sleep(200);
// 7) проверяем в совпадение цвета в точке (х у) (задам координаты точки позже),
//делаем эту проверку до тех пор пока цвет не появится в нужной точкe
//(ПРИМ. разработчика. цвет вы также не указали, запишите его вместо color)
while (getColor(x, y) != color)
sleep(100);
// 8) ждем рандомное время (50-180мс)
sleep(rand(50, 180));
// 9) в зоне defense_Area_1~2 ищем изображения def1~2~3~4,
//что бы перейти к следующему этапу в коде необходим факт нахождения одной из картинки.
while (!hasImg(def1, defense_Area_1, defense_Area_2)
&& !hasImg(def2, defense_Area_1, defense_Area_2)
&& !hasImg(def3, defense_Area_1, defense_Area_2)
&& !hasImg(def4, defense_Area_1, defense_Area_2))
{
// 10) Если картинка не найдена то нажимаем с рандомным показателем (18) в точку refresh_P,
//ждем рандомное время 50-180 мс, и повторяем операцию в пункте «9»
click(randomize(refresh_P, 18));
sleep(rand(50, 180));
}
// 11) если изображение найдено то начинаем поиск группы изображений (ukr , pnx, u1k , ufu)
// поиск в альфа канале потому что в рандомное время может присутствовать другой цвет и наложенный градиент.
// Так же для лучшего результата точность поиска устанавливаем 70.
//(ПРИМ. разработчика. точность нужно будет тестировать, чтоб не срабатывал на любой текст. Минимальный порог 60.)
setMinMatchQuality(70);
//(ПРИМ. разработчика. вы не указали где искать эти изображения. Я предполагаю, что в зоне clan_Area_1-2, если нет - замените точки)
/*------------ Удалите эту строку после тестирования и настройки скрипта
while (hasImg(ukr, clan_Area_1, clan_Area_2, GREY)
|| hasImg(pnx, clan_Area_1, clan_Area_2, GREY)
|| hasImg(u1k, clan_Area_1, clan_Area_2, GREY)
|| hasImg(ufu, clan_Area_1, clan_Area_2, GREY))
{
//12) Если изображение найдено то делаем принтскрин в зоне PS_1~2
// (что бы в первое время проверить правильность отсеивание противников)
// и выполняем «10» пункт ( именно нажимаем refresh)
click(randomize(refresh_P, 18));
sleep(rand(50, 180));
}
------------ Удалите эту строку после тестирования и настройки скрипта */
//(ПРИМ. разработчика. этот цикл делает скрин и отмечает тот участок который он нашел.
// Его нужно будет удалить после настройки setMinMatchQuality)
while (testImgDetection(ukr, clan_Area_1, clan_Area_2, GREY) //
|| testImgDetection(pnx, clan_Area_1, clan_Area_2, GREY) //
|| testImgDetection(u1k, clan_Area_1, clan_Area_2, GREY) //
|| testImgDetection(ufu, clan_Area_1, clan_Area_2, GREY)) //
{ //
click(randomize(refresh_P, 18)); //
sleep(rand(50, 180)); //
} //
//---------------------------------------------------------------//
// 13) если изображение НЕ найдено то нажимаем с рандомным показателем (по у - 36 по х - 80 ) от центральной заданной точки Attack_P
click(rand(Attack_P.x - 80, Attack_P.x + 80), rand(Attack_P.y - 36, Attack_P.y + 36));
// (ПРИМ. разработчика. я так понимаю успешное нахождение противника считается успешным после нажатия кнопки атаки)
// сохраняем время начала атаки
long atackTime = Time.getMillis();
// 14) ждём с рандомным временем 100-300
//(ПРИМ. разработчика. здесь рандом не нужен. Достаточно просто подождать перед началом поиска)
sleep(300);
// (ПРИМ. разработчика. возвращаем точность поиска)
setMinMatchQuality(95);
// 15) ищем изображение coin в зоне coin_Area_1~2, ищем до тех пор пока не найдём.
while (!hasImg(coin, coin_Area_1, coin_Area_2))
sleep(300);
// 16) coin найден! Переходим к поиску одного из изображений Gold4~5~6~7 в зоне
// Gold_Area_1~2 и обязательно в любой совокупности изображение k в зоне k_Area_1~2
if ((hasImg(Gold4, Gold_Area_1, Gold_Area_2)
|| hasImg(Gold5, Gold_Area_1, Gold_Area_2)
|| hasImg(Gold6, Gold_Area_1, Gold_Area_2)
|| hasImg(Gold7, Gold_Area_1, Gold_Area_2))
&& hasImg(k, k_Area_1, k_Area_2))
{
// 18) если совокупность изображений найдена то в течении 20 минут,
// каждые полминуты начиная с момента обнаружение подходящего противника посылаем вибро и аудио уведомления
// а так же нажимаем в точку x,y.
long battleTime = 20 * 60 * 1000;
long lastClickTime = Time.getMillis();
//запускаем цикл на 20минут
while ((Time.getMillis() - atackTime) < battleTime)
{
//проверяем прошло ли полминуты
if ((Time.getMillis() - lastClickTime) > 30000)
{
// если прошло нажимаем в точку x,y
click(x, y);
// уведомляем о нажатии
showNotification("Нажали точку х у");
// сохраняем время последнего нажатия
lastClickTime = Time.getMillis();
}
//повторяем проверку каждые 100мс в течении 20минут
sleep(100);
}
}
// 17) если совокупность не найдена то ждём рандомное время 50-180,
//делаем принтскрин в зоне PS_3~4 и преступаем к выполнению 2 пункта (мегацикл)
//(ПРИМ. разработчика. Автокликер не умеет делать скрины в любое время,
// он умеет делать скрины только во время тестирования поиска изображения)
// До сих пор как-то никто не спрашивал об этой функции.
// Добавлю в следующем обновлении.
// Если у вас андроид 10+ можно вызвать диалог выключения и нажать на кнопку сделать скриншот
// Только скриншот будет сохранен в системную папку скриншотов, а не в папку приложения
// вот код, как это можно сделать
showPowerDialog();
sleep(200);
click(x, y); // Где х и у это координаты кнопки "Скриншот"
}
sleep(200);
}Код: Выделить всё
Image refresh = Image.load("refresh");
Point Attack_Area_1 = Point.get(720,1420);
Point Attack_Area_2 = Point.get(990,1600);
Point refresh_Area_1 = Point.get(900,1680);
Point refresh_Area_2 = Point.get(1020,1780);
Image Attack = Image.load("Attack");