Автокликер Clickermann :: Форум
Основной раздел => Общие вопросы => Topic started by: Ramzesia on November 14, 2019, 01:54:33 AM
-
прошу помочь со скриптом, никак не могу придумать как реализовать следующее.
Есть окно с клетками 9 клеток по ширине 11 по высоте, от центра одной клетки до центра второй 35 пикселей что по высоте что по ширине, нужно проверить каждую на наличии пикселя каждую если он есть кликнуть 2 раза.
-
зачем тогда кликер тогда уж сам покликаю), ожидал более уную схему, которая сама пробежалась бы по клеткам, без тыканья носом в каждую)
-
Если б я разбирался во всем этом "умно" то не просил бы помощи тут, если ты хорошо разбираешься в скрипте то это не значит что ты не ламер в другом, человек не может знать все. И с чего ты взял что я не искал или не пробовал? Да может это и нубский скрип но я его не смог сделать.
И вообще не понимаю людей которые пишут подобное, если можешь помочь, помоги если нет желания пройди мимо, а раздувай тему бессмысленными ответами, не по теме.
Ничего личного просто высказался.
И да, я всегда сперва пробую найти на форуме, потом пытаюсь сделать сам, и только потом, когда не получилось, создаю тему.
-
Получилось так, проходит девять клеток нижнего ряда, подняться на верх не получается, пробовал цикл в цикле но не сработало.
Важно: скрипт должен проходить с низу в верх и с права налево по строчке.
Прикрутил скрин для теста.
WAIT(1)
$x1=331
$y1=579
MOVE($x1,$y1)
GETSCREEN // Обновлять не нужно хватает одного снимка
FOR($a=0,$a<9)
IF_PIXEL_IN($_xmouse, $_ymouse, $_xmouse+6, $_ymouse+7, 255)
DBLCLICK($_xmouse, $_ymouse)
WAITMS(500)
LOGWRITE ("Что то получается")
WAITMS(100)
END_IF
MOVE($_xmouse-35, $_ymouse)
END_CYC
halt
-
$start_X = 331
$start_Y = 579
$end_X = $start_X + (9 * 35)
$end_Y = $start_Y + (11 * 35)
GETSCREEN($start_X, $start_Y, $end_X, $end_Y)
FOR($k = $end_Y, $k > $start_Y, - 35)
FOR($i = $end_X, $i > $start_X, - 35)
IF(PXL($i, $k) = 255)
// ...
END_IF
END_CYC
END_CYC
-
В место точек поставил даблклик, ничего не делает. Там пиксель в участке 6х7 пикселей искать надо, чисто за 1 цепляться не получится, ну или я не понял как твой скрипт работает.
Раньше проще понимал все, щас что то со мной не то, или примеры умнее стали:(
// Как я это понимаю
//коры левый верх
$start_X = 331
$start_Y = 579
//коры правый низ
$end_X = $start_X + (9 * 35)
$end_Y = $start_Y + (11 * 35)
GETSCREEN($start_X, $start_Y, $end_X, $end_Y) // снимок всех клеток
// Дальше не понимаю
FOR($k = $end_Y, $k > $start_Y, - 35)
FOR($i = $end_X, $i > $start_X, - 35)
IF(PXL($i, $k) = 255)
// ...
END_IF
END_CYC
END_CYC
-
Твой вариант так и не получилось заставить работать.
Доделал свой, вроде работает как надо Во всяком случае спасибо за потраченное время, лучший форум из всех что встречал!
Вот мой вариант, возможно криво но что есть, как говорится)
WAIT(1)
$x1 = 331
$y1 = 579
MOVE($x1, $y1)
GETSCREEN
FOR($a = 0,$a < 11)
FOR($b = 0,$b < 9)
IF_PIXEL_IN($_xmouse, $_ymouse, $_xmouse + 6, $_ymouse + 7, 255)
DBLCLICK($_xmouse, $_ymouse)
WAITMS(500)
LOGWRITE ("Что то получается")
WAITMS(100)
END_IF
MOVE($_xmouse - 35, $_ymouse)
END_CYC
INC($y1, - 35)
MOVE($x1, $y1)
END_CYC
halt
-
покажи реальный скрин этой сетки
-
это скрин эксель файла проверял там, координаты указаные в моем скрипте нижний правый угол
-
тоже самое, но только за место пикселя нужна картинка
GETSCREEN
SCANPICTURE($arr, $_xmin, $_ymin, $_xmax, $_ymax, "picture.bmp", -1, 100)
FOR($i = ARRSIZE($arr), $i > 0, - 2)
DBLCLICK($arr[$i - 2], $arr[$i - 1])
WAITMS(500)
END_CYC
HALT
-
Спасибо, но с картинкой не пойдет (содержимое клетки меняется), там именно область 6х7 надо сканировать на наличие пикселя, мой вариант меня устраивает, но в нем есть 2 минуса, первое это курсор после сдвига в лево, делает один шаг в 35 пикселей лишним, второе скрип не стабилен, то есть если мышку сдвинуть все собьется. если убрать эти 2 минуса ну хотя бы второй то было бы супер.
-
ты скрипт делаешь для эксель таблицы или для чего то другого?
-
для другого, но с картинкой и тут уже не сработает.
-
Поверь пример с эксель файлом идентичен, если заработает тут будет работать и там.
Повторюсь, нужно сканировать участок в клетке 6х7 пикселей, на наличие пикселя.
-
всё работает
https://i.zhyk.ru/image/1sqoM
-
а картинку какую взять? там возможных вариантов, по 50+ штук будет, а единственный участок который объединяет их всех, это тот уголок про который я говорю. Почему с пикселеп проблемно сделать? Помоги стабилизировать, курсор в моем примере, получится идеально.
-
Теперь точно все, сам сделал теперь все отлично, спасибо большое Космич, на твоих примерах, созрело решение :)
$x1 = 331
$y1 = 579
GETSCREEN
FOR($a = 0,$a < 11)
FOR($b = 0,$b < 9)
IF_PIXEL_IN($x1, $y1, $x1 + 6, $y1 + 7, 255)
DBLCLICK($x1, $y1)
LOGWRITE ("Все получилось :)")
WAITMS(100)
END_IF
INC($x1, - 35)
END_CYC
INC($y1, - 35)
INC($x1, + 35 * 9)
END_CYC
halt
-
Забыл упомяну, это координаты левый верх области 6х7 поиска пикселе
$x1 = 331
$y1 = 579