Автокликер Clickermann :: Форум
Основной раздел => Использование => Topic started by: alwhite on April 19, 2015, 09:39:21 PM
-
Есть некоторые моменты хотелось бы понять.
к примеру мне надо отработка партии задач.
Как лучше реализовать в одном скрипте или с подгрузкой из файлов..
Задача
Сканирование площади
если находится изображение то клик
снова сканирование новой области
если находится изображение то клик
если нет - то клик на другое изображение
после переход на новую страницу сканирование, нахождение изображений (или отработка команд по координатам)
цикл 20 раз
после сканирование клик по картинке для перехода в следующий
так же скрипт со временем каждые полтора час клик на область (по картинке) затем последовательность нахождения других изображений и проклик. (возможно по координатам)
начал
$check = 0 // взял с форума для чего он ? может заменить на чтото другое ?
WHILE($check = 0)
GETSCREEN // сканирование области
IF_PICTURE_IN (2739,1011, 2789,1065, "vokzal.bmp", -1, 80) // если нашлось изображение изображения
LCLICK($_return1+15, $_return2+15) //клик на найденое изображение с отступом в 15
WAITMS(100) // ожидание
// необходим переход к этому действию
GETSCREEN //сканирование новой открытой области
IF_PICTURE_IN (2921, 3829,1070, "bablo.bmp", -1, 80) //если нашлось изображения
LCLICK($_return1+15, $_return2+15)
WAITMS(100)
// если не нашлось то перейти к поиску дргого изображения тут же
ELSE // правильно ли это ?
IF_PICTURE_IN (2921, 3829,1070, "opit.bmp", -1, 80) //если нашлось изображения
LCLICK($_return1+15, $_return2+15)
ELSE
$check = 1
WAITMS(50)
// body
END_IF
-
Из твоего алгоритма мало что понятно, нарисуй нормальную блок схему, например с помощью этого онлайн сервиса https://www.gliffy.com/ (https://www.gliffy.com/) Выбери там Start Drawing.
Твой исправленный скрипт. Цикл WHILE завершится только если "если нет - то клик на другое изображение"
$check = 0 // взял с форума для чего он ? может заменить на чтото другое ?
WHILE($check = 0)
GETSCREEN // сканирование области
IF_PICTURE_IN (2739,1011, 2789,1065, "vokzal.bmp", -1, 80) // если нашлось изображение изображения
LCLICK($_return1+15, $_return2+15) //клик на найденое изображение с отступом в 15
WAITMS(100) // ожидание
// необходим переход к этому действию
GETSCREEN //сканирование новой открытой области
IF_PICTURE_IN (2921, 3829,1070, "bablo.bmp", -1, 80) //если нашлось изображения
LCLICK($_return1+15, $_return2+15)
WAITMS(100)
// если не нашлось то перейти к поиску дргого изображения тут же
ELSE
IF_PICTURE_IN (2921,1011, 3829,1070, "opit.bmp", -1, 80) //если нашлось изображения
LCLICK($_return1+15, $_return2+15)
WAITMS(100)
$check = 1
END_IF
END_IF
END_IF
WAITMS(50)
END_CYC
-
Так.... нарисую попозже, как сделать так, что бы он скаинровал область каждый раз
Прошу посмотреть не прокликивает на вором нахождении картинки
GETSCREEN
IF($time < $_time_t)
// тайм 5400 сек
IF_PICTURE_IN (1950,240, 3836,1069, "plan.bmp", -1, 86)
LCLICK($_return1+5, $_return2+5)
WAITMS(1000)
LCLICK(3189,384) //ïëàíèðîâùèê
waitms(3000)
FOR ($var, $var < 12)
GETSCREEN (2412,290, 3341,841)
$var=plan_st
$check = 0
if($check = 0)
IF_PICTURE_IN (2897,679, 2950,729, "plan_dor.bmp", -1, 85) //нахождение клик
waitms(1000)
LCLICK($_return1+5, $_return2+5) // сработало
waitms(1000)
IF_PICTURE_IN (2706,469, 2766,500, "plan_nxt.bmp", -1, 85) // находит
waitms(1000)
LCLICK($_return1+5, $_return2+5) // !!!!! НЕ КЛИКАЕТ почему ?
waitms(1000)
// $check = 1
// if($check = 1)
// IF_PICTURE_IN (2731,472, 2759,499, "plan_nxt.bmp", -1, 80) // ñëåä ïîå
// waitms(1000)
// LCLICK($_return1+2, $_return2+2)
// end_if
else
$check = 2
GOTO($var=plan_nxt)
end_if
$var=plan_nxt
$check = 0
if($check = 0)
IF_PICTURE_IN (2897,679, 2950,729, "plan_nxt.bmp", -1, 80) // ñëåä ïîå
LCLICK($_return1+2, $_return2+2)
waitms(1000)
else
$check = 1
GOTO($var=plan_st)
end_if
end_cyc
WAITMS(100)
$time = $_time_t + 5400
END_IF
$var=a
$check = 0
if($check = 0)
GETSCREEN
IF_PICTURE_IN (1950,240, 3836,1069, "vokzal.bmp", -1, 86)
LCLICK($_return1+5, $_return2+5)
WAITMS(100)
ELSE
$check = 1
GOTO($var=b)
END_IF
$var=b
$check = 0
if($check = 0)
GETSCREEN
IF_PICTURE_IN (2691,1009, 3070,1064, "lab.bmp", -1, 99)
LCLICK($_return1+5, $_return2+5)
WAITMS(100)
ELSE
$check = 1
GOTO($var=b)
END_IF
END_IF
halt // for single run
-
Блоки с началом, но без конца...
Не хватает трёх END_IF для IF из строк 15, 16, 41 (должны быть до end_cyc из строки 51)
И нет END_IF для строк 2 и 59
-
в цикл не уходит в чем гемор?
идея вроде такая http://prntscr.com/6xi2rw
FOR ($var, $var < 12)
GETSCREEN (494,268, 1420,820)
$var=plan_st
$check = 0
if($check = 0)
GETSCREEN (989,658, 1031,701)
IF_PICTURE_IN (989,658, 1031,701, "plan_dor.bmp", -1, 82) //íîâûé ïóòü
waitms(1000)
LCLICK($_return1+5, $_return2+5)
waitms(1000)
else
$check = 1
waitms(1000)
GOTO($var=plan_nxt)
end_if
$var=plan_nxt
$check = 0
if($check = 0)
GETSCREEN (807,443, 845,481)
IF_PICTURE_IN (807,443, 845,481, "plan_nxt.bmp", -1, 85) // ñëåä ïîå
waitms(1000)
LCLICK($_return1+10, $_return2+10)
waitms(1000)
else
$check = 1
waitms(1000)
GOTO($var=plan_kypit)
end_if
end_cyc
-
Вот что это такое?
GOTO($var=plan_nxt)
$var=plan_nxt
правильно писать так
GOTO(plan_nxt)
plan_nxt:
Вот как то так
$count = 0
WHILE($count < 12) // цикл отработает 12 раз
GETSCREEN (989,658, 1031,701)
IF_PICTURE_IN (989,658, 1031,701, "plan_dor.bmp", -1, 82) //Картинка 1
INC($count,1) // увеличиваем счетчик только при успешном нахождении
LCLICK($_return1+5, $_return2+5)
waitms(1000)
GETSCREEN (807,443, 845,481)
IF_PICTURE_IN (807,443, 845,481, "plan_nxt.bmp", -1, 85) // след пое
LCLICK($_return1+10, $_return2+10) // если все нормально
waitms(1000)
else
// если новое окно всплыло
GETSCREEN (807,443, 845,481)
IF_PICTURE_IN (807,443, 845,481, "Картинка 3.bmp", -1, 85) // скан области на наличие новой картинки
LCLICK($_return1+10, $_return2+10)
waitms(1000)
// и цикл заново
end_if
end_if
else
WAITMS(50)
end_if
end_cyc
HALT // стоп
-
Спасибо огромное. что именно в данный момент у меня получается.
Сканирование области по таймеру - нахождение нужной картинки - новое окно - сканирование - поиск картинки клик - сканирование области дальше цикл.
Цикл - поиск в области изображение если есть клик - если нет переходит к поиску другой картинки - сканирование если есть клик - если вылезло новое окно - сканирование поиск другой кнопки клик - и на повтор цикла.
// делаем скан
GETSCREEN
// таймер выставелен снизу полтора часа $time = $_time_t + 5400
IF($time < $_time_t)
// поиск изображения
IF_PICTURE_IN (772,975, 1153,1026, "plan.bmp", -1, 86)
LCLICK($_return1+5, $_return2+5)
WAITMS(1000)
Getscreen // для обновления буфера изображения
IF_PICTURE_IN (494,268, 1420,820, "plan_plus.bmp", -1, 86)
LCLICK($_return1+5, $_return2+5) //ïëàíèðîâùèê
waitms(1000)
//уход в цикл
$count = 0
WHILE($count < 12) // öèêë 12 ðàç
GETSCREEN (494,268, 1420,820)
plan_st //поиск одного изображения
GETSCREEN (989,658, 1031,701)
IF_PICTURE_IN (989,658, 1031,701, "plan_dor.bmp", -1, 82) //если нашел клик
waitms(1000)
LCLICK($_return1+5, $_return2+5)
waitms(1000)
else //если не нашел в этой области то переход к поиску другого изображения
waitms(1000)
GOTO(plan_nxt)
end_if
plan_nxt // поиск другой кнопки если предыдущая сработала либо была отклонена
GETSCREEN (807,443, 845,481)
IF_PICTURE_IN (807,443, 845,481, "plan_nxt.bmp", -1, 85) // клик по нахождению
waitms(1000)
LCLICK($_return1+10, $_return2+10)
waitms(1000)
else // переход если кнопка не будет найдена
waitms(1000)
GOTO(plan_kypit)
end_if
plan_kypit // скан области если всплывет новое окно и поиск кнопки для отработки
GETSCREEN (725,403, 1194,670)
IF_PICTURE_IN (866,617, 1020,652, "kypit.bmp", -1, 85) // êóïèòü âàãîí
waitms(1000)
LCLICK($_return1+10, $_return2+10)
waitms(1000)
else
waitms(1000)
LCLICK($_return1+210, $_return2+10)
end_if
INC($count,1) // к циклу +1 после прохождения всех отработок
end_cyc
WAITMS(100)
$time = $_time_t + 5400 // время через которое должен начаться этот модуль. Проблема в том что начинает отрабатывать с нуля
END_IF
-
Зачем ты пишешь эти бессмысленные в твоем коде ГОТО? Да еще и упорно неправильно plan_nxt: двоеточие в конце где? В твоем коде недостает 2х END_IF
Вот пример бессмысленного кода, мы указываем кликеру перейти на следующую строку, но и без гото он сделал бы тоже самое.
GOTO(plan_nxt)
plan_nxt:
else //если не нашел в этой области то переход к поиску другого изображения
waitms(1000)
GOTO(plan_nxt) //прыгаем от сюда
end_if
plan_nxt: // сюда, но и без этого кликер сам туда направится
Исправленный код
// таймер выставелен снизу полтора часа $time = $_time_t + 5400
IF($time < $_time_t)
// делаем снимок
GETSCREEN
IF_PICTURE_IN (772,975, 1153,1026, "plan.bmp", -1, 86)
LCLICK($_return1+5, $_return2+5)
WAITMS(1000)
Getscreen // для обновления буфера изображения
IF_PICTURE_IN (494,268, 1420,820, "plan_plus.bmp", -1, 86)
LCLICK($_return1+5, $_return2+5) //планировщик
waitms(1000)
//уход в цикл
$count = 0
WHILE($count < 12) // цикл 12 раз
//поиск одного изображения
GETSCREEN (989,658, 1031,701)
IF_PICTURE_IN (989,658, 1031,701, "plan_dor.bmp", -1, 82) //если нашел клик
waitms(1000)
LCLICK($_return1+5, $_return2+5)
waitms(1000)
else //если не нашел в этой области то переход к поиску другого изображения
waitms(1000)
end_if
// поиск другой кнопки если предыдущая сработала либо была отклонена
GETSCREEN (807,443, 845,481)
IF_PICTURE_IN (807,443, 845,481, "plan_nxt.bmp", -1, 85) // клик по нахождению
waitms(1000)
LCLICK($_return1+10, $_return2+10)
waitms(1000)
else // переход если кнопка не будет найдена
waitms(1000)
end_if
// скан области если всплывет новое окно и поиск кнопки для отработки
GETSCREEN (725,403, 1194,670)
IF_PICTURE_IN (866,617, 1020,652, "kypit.bmp", -1, 85) // купить вагон
waitms(1000)
LCLICK($_return1+10, $_return2+10)
waitms(1000)
else
waitms(1000)
LCLICK($_return1+210, $_return2+10)
end_if
INC($count,1) // к циклу +1 после прохождения всех отработок
end_cyc
END_IF
END_IF
WAITMS(100)
$time = $_time_t + 5400 // время через которое должен начаться этот модуль. Проблема в том что начинает отрабатывать с нуля
END_IF
WAITMS(500)