Автокликер Clickermann :: Форум
Основной раздел => Общие вопросы => Topic started by: Kas on February 25, 2018, 02:12:07 PM
-
Всем привет. Такая вот проблема. Есть сценарий, в котором происходит поиск картинки, затем клик по ней, выполнение отпредленных действий, а затем возвращение к поиску картинки.
Проблема в том, что изображение появляется не в единственном экземпляре, и находятся картинки друг под другом, в виде списка. Кликер, возвращаясь к поиску картинок, кликает на самую верхнюю. Так вот, хотелось бы узнать, есть ли возможность сделать так, чтобы кликер не тыкал в картинку на одном и там же месте в течение 1 минуты? То есть сначала кликал на 1 картинку в списке, затем, возвращаясь к поиску после определенных действий, игнорировал картинку в том же месте и кликал на 2 по списку если прошло менее одной минуты?
-
Чтобы найти все картинки на экране нужно использовать SCANPICTURE.
В данном примере в массив $ARR_SCAN будут записаны координаты всех найденных картинок, и далее в цикле по каждой из этих координат будет произведен клик. После клика, в том же цикле, можно написать и другие действия.
GETSCREEN
SCANPICTURE($ARR_SCAN, 0,0, $_xmax,$_ymax, "picture.bmp", -1, 100)
$ARR_NUM = 0
WHILE ($ARR_NUM < ARRSIZE($ARR_SCAN))
$X = $ARR_SCAN [$ARR_NUM]
INC($ARR_NUM,1)
$Y = $ARR_SCAN [$ARR_NUM]
INC($ARR_NUM,1)
LCLICK($X, $Y) // Клик
WAITMS(100)
// Далее действия после клика
END_CYC
UNDEFINE($ARR_SCAN)
-
Проблема в том, что таблица, в которой находятся картинки, все время обновляется. То есть одни исчезают, другие появляются и иногда немного смещаются по горизонтали. Из-за этого по этому сценарию кликер частенько "промахивается" или тыкает туда, где уже нет картинки(
Хотелось бы узнать, есть ли возможность сделать что-то вроде:
1)Поиск картинки и клик по ней
2)Выполнение определенного действия и возвращение к вкладке с картинками
3)Поиск картинки с игнорирование того места, где была найдена предыдущая, в течение 1 минут
Расписать все не прошу, наглеть не хочется, но за наводку, какими методами это реально воплотить, буду очень благодарен)
-
Вроде так
$check = 0
WHILE($check = 0)
GETSCREEN
SCANPICTURE($ARR_SCAN, 0,0, $_xmax,$_ymax, "picture.bmp", -1, 100)
FOR($i=0,$i<ARRSIZE($ARR_SCAN),2)
$x = $ARR_SCAN[$i]
$y = $ARR_SCAN[$i+1]
IF(((($x < $sx-5)|($x > $sx+30)) & (($y < $sy-5)|($y > $sy+30))) | ($time < $_time_t))
$sx = $x
$sy = $y
LCLICK($x, $y) // Клик
WAITMS(100)
$time = $_time_t + 60
$check = 1
$i=99999
END_IF
END_CYC
UNDEFINE($ARR_SCAN)
WAITMS(100)
END_CYC
-
Просто кликает на первую, ждет минуту и снова кликает на нее, весь остальной список не видит :(
-
Да действительно, в условии нужно не И а ИЛИ.
Исправь вот эту строку
IF(((($x < $sx-5)|($x > $sx+30)) | (($y < $sy-5)|($y > $sy+30))) | ($time < $_time_t))
Кстати значения -5 и +30 это охват области вокруг найденной точки для X и Y. Значения зависят от размера твоей картинки, установи их сам.
-
Спасибо большое)