1
Общие вопросы / Re: Помогите написать скрипт.
« on: March 21, 2019, 04:23:03 PM »
Как сделать задержку чтобы он не кликал мимо?
Добавлена тема оформления "Clickermann" для кода с подсветкой синтаксиса. Выбирается из выпадающего списка "Код" (рядом с "цвет", "размер" и "шрифт") в режиме редактирования поста. Либо просто BB-тегом "code=clickermann"
This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.
Я попробовал снова и он начал кликать, но почему-то иногда он не попадает по пикселю и кликает рядом с ним. Бывает еще что делает двойной клик типа нажал (попал) и потом еще раз туда же, возможно это из-за слишком большой скорости?Я попробовал ваш скрипт. У меня он не нажимает почему-то. Есть ли более подходящая программа для моей задачи?
Code: (clickermann) [Select]$x1 = 200 //КООРДИНАТЫ СВОИ.
$y1 = 200
$x2 = 1200
$y2 = 1200
//проверяем в области на наличие не черного
SUB(check_white, $yy1, $yy2)
IF(PXLCOUNT ($x1,$yy1, $x2,$yy2,0)=($x2+1-$x1)*($y2+1-$y1))
$check = 0
ELSE
$check = 1
END_IF
END_SUB
//$ms = $_ms
GETSCREEN($x1,$y1, $x2,$y2)
//первая проверка на всей области
check_white($y1,$y2)
IF($check = 0)
print("Все чернО")
ELSE
//создаем массив всех горизонтальных линий
undefine($arr_y)
FOR($a=$y1,$a<$y2)
arrpush($arr_y,$a)
END_CYC
WHILE(($y2-$y1)>0) //пока не останется одна линия
//с каждым проходом цикла, делим пополам и смотрим где есть светлый
$y1 =$arr_y[0]
$y2 =$arr_y[int((arrsize($arr_y)-1)/2)]
$y1_rem = $y1
$y2_rem = $y2
check_white($y1,$y2)
IF($check = 0)
$y1 =$arr_y[int((arrsize($arr_y)-1)/2)]
$y2 =$arr_y[arrsize($arr_y)-1]
$y1_rem = $y1
$y2_rem = $y2
check_white($y1,$y2)
END_IF
undefine($arr_y)
FOR($a=$y1,$a<$y2) //массив тоже пополам
arrpush($arr_y,$a)
END_CYC
END_CYC
$check = 0 //небольшая подгоночка для точности
check_white($y1,$y2)
WHILE($check = 0)
inc($y1)
inc($y2)
check_white($y1,$y2)
END_CYC
// print("Светлый в координате Y - ",$y1)
FOR($a=$x1,$a<$x2)
IF(pxl($a,$y1) > 0)
$x = $a
$y = $y1
END_IF
END_CYC
/////////////////////////////////////////////////////////
//готовый результат
print("нужный не черный пиксель в координате - ",$x,"x",$y)
/////////////////////////////////////////////////////////////
LCLICK($x,$y) // КЛИК ПО НАЙДЕнНому!!!!!
///////////////////////////////////////////////////////////////
END_IF
Возможно вы правы, но может существует другая программа для моей задачи которая справиться лучше. Я ведь не специалист в этой области, а вы вроде как опытные.Я попробовал ваш скрипт. У меня он не нажимает почему-то. Есть ли более подходящая программа для моей задачи?Это за гранью добра и зла. Человек решил за вас задачу, но из-за собственной рукожопости приведшей к "ненажатиям", сразу требуете вместо Clickermann новую программу. Смените уж сразу гражданство или пол, раз так любите радикальные решения.
Всеже заинтересовала задача, хоть она и бесполезнаяЯ попробовал ваш скрипт. У меня он не нажимает почему-то. Есть ли более подходящая программа для моей задачи?
Решил задачу с минимальными последствиями для времени выполнения.
Тестовый стенд - черный квадрат 1000х1000, примерно как у тебя, и рандомно кидал точки (любого цвета) на него для теста. Время на поиск точки ~ 500-600мсCode: (clickermann) [Select]$x1 = 200
$y1 = 200
$x2 = 1200
$y2 = 1200
//проверяем в области на наличие не черного
SUB(check_white, $yy1, $yy2)
IF(PXLCOUNT ($x1,$yy1, $x2,$yy2,0)=($x2+1-$x1)*($y2+1-$y1))
$check = 0
ELSE
$check = 1
END_IF
END_SUB
//$ms = $_ms
GETSCREEN($x1,$y1, $x2,$y2)
//первая проверка на всей области
check_white($y1,$y2)
IF($check = 0)
print("Все чернО")
ELSE
//создаем массив всех горизонтальных линий
undefine($arr_y)
FOR($a=$y1,$a<$y2)
arrpush($arr_y,$a)
END_CYC
WHILE(($y2-$y1)>0) //пока не останется одна линия
//с каждым проходом цикла, делим пополам и смотрим где есть светлый
$y1 =$arr_y[0]
$y2 =$arr_y[int((arrsize($arr_y)-1)/2)]
$y1_rem = $y1
$y2_rem = $y2
check_white($y1,$y2)
IF($check = 0)
$y1 =$arr_y[int((arrsize($arr_y)-1)/2)]
$y2 =$arr_y[arrsize($arr_y)-1]
$y1_rem = $y1
$y2_rem = $y2
check_white($y1,$y2)
END_IF
undefine($arr_y)
FOR($a=$y1,$a<$y2) //массив тоже пополам
arrpush($arr_y,$a)
END_CYC
END_CYC
$check = 0 //небольшая подгоночка для точности
check_white($y1,$y2)
WHILE($check = 0)
inc($y1)
inc($y2)
check_white($y1,$y2)
END_CYC
// print("Светлый в координате Y - ",$y1)
FOR($a=$x1,$a<$x2)
IF(pxl($a,$y1) > 0)
$x = $a
$y = $y1
END_IF
END_CYC
/////////////////////////////////////////////////////////
//готовый результат
print("нужный не черный пиксель в координате - ",$x,"x",$y)
END_IF
//print(($_ms - $ms),"ms затрачено." )
halt
А область большая? И насколько твой черный - черный, прямо черныйпричерный - 0х000000? Или в пределах черного?Цвет: 0; hWND: 2490994 (не знаю что это значит), область примерно LCLICK(180,195) до LCLICK(1063,975).
Для начала тебе нужно стереть все в редакторе.Спасибо за помощь, но вот у меня он не кликает по цвету который появляться. Возможно это из-за того что не совсем тот желтый цвет, а как сделать так что бы он кликал по похожему цвету. Просто тут желтые цвета, но они не много отличаются у них разные цифры.
Вставь этот скриптCode: (clickermann) [Select]GETSCREEN
IF_PIXEL_IN(0,0, $_xmax,$_ymax, 255)
LCLICK($_return1, $_return2) // Клик по найденному цвету
WAITMS(100)
END_IF
WAITMS(50)
В редакторе отображается текущий цвет под курсором. Чтоб его проще было скопировать можно нажать Alt+Q и в скрипт вставится клик по координатам курсора и закомментированным кодом цвета.
"LCLICK(901,510) // 911607"
Сама команда нам не нужна. Отсюда можно взять код цвета, вставляем его за место 255Code: (clickermann) [Select]GETSCREEN
IF_PIXEL_IN(0,0, $_xmax,$_ymax, 911607)
LCLICK($_return1, $_return2) // Клик по найденному цвету
WAITMS(100)
END_IF
WAITMS(50)
Этого уже достаточно. Выполнение в кликере идет по кругу.
Можно также указать более конкретные координаты поиска. Данные параметры 0,0, $_xmax,$_ymax обозначают что поиск идет от верхнего левого угла монитора с координаты 0,0 до нижнего правого угла (системные переменные $_xmax,$_ymax возвращают размер твоего монитора)
IF_PIXEL_IN(100,100, 800,600, 911607) например сейчас поиск ведется от координаты 100,100 до 800,600
В системные переменные $_return1, $_return2 возвращается координата XY найденного цвета
откройте меню шаблонов Clickermann, графика, IF_PIXEL_INЯ когда нажимаю вставить координату у меня вот такое появляется "LCLICK(901,510) // 911607" и что с этим делать?
откройте меню шаблонов Clickermann, графика, IF_PIXEL_INGETSCREEN
откройте меню шаблонов Clickermann, графика, IF_PIXEL_INЭто вообще где?