Show Posts

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.


Messages - Jack

Pages: [1]
1
Как сделать задержку чтобы он не кликал мимо?

2
Я попробовал ваш скрипт. У меня он не нажимает почему-то. Есть ли более подходящая программа для моей задачи?

 :o

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
Я попробовал снова и он начал кликать, но почему-то иногда он не попадает по пикселю и кликает рядом с ним. Бывает еще что делает двойной клик типа нажал (попал) и потом еще раз туда же, возможно это из-за слишком большой скорости?

3
Я попробовал ваш скрипт. У меня он не нажимает почему-то. Есть ли более подходящая программа для моей задачи?
Это за гранью добра и зла. Человек решил за вас задачу, но из-за собственной рукожопости приведшей к "ненажатиям", сразу требуете вместо Clickermann новую программу. Смените уж сразу гражданство или пол, раз так любите радикальные решения.
Возможно вы правы, но может существует другая программа для моей задачи которая справиться лучше. Я ведь не специалист в этой области, а вы вроде как опытные.

4
:D Всеже заинтересовала задача, хоть она и бесполезная  ;)

Решил задачу с минимальными последствиями для времени выполнения.

Тестовый стенд - черный квадрат 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
Я попробовал ваш скрипт. У меня он не нажимает почему-то. Есть ли более подходящая программа для моей задачи?

5
А область большая? И насколько твой черный - черный, прямо черныйпричерный - 0х000000? Или в пределах черного?
Цвет: 0; hWND: 2490994 (не знаю что это значит), область примерно LCLICK(180,195) до LCLICK(1063,975).

6
Нужно чтобы в определенной области делался клик по цвету кроме черного. Помогите пожалуйста.

7
Для начала тебе нужно стереть все в редакторе.

Вставь этот скрипт
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"
Сама команда нам не нужна. Отсюда можно взять код цвета, вставляем его за место 255

Code: (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 найденного цвета
Спасибо за помощь, но вот у меня он не кликает по цвету который появляться. Возможно это из-за того что не совсем тот желтый цвет, а как сделать так что бы он кликал по похожему цвету. Просто тут желтые цвета, но они не много отличаются у них разные цифры.

8
откройте меню шаблонов Clickermann, графика, IF_PIXEL_IN
Я когда нажимаю вставить координату у меня вот такое появляется "LCLICK(901,510)  // 911607" и что с этим делать?

9
откройте меню шаблонов Clickermann, графика, IF_PIXEL_IN
GETSCREEN
IF_PIXEL_IN(0,0, $_xmax,$_ymax, 255)
   LCLICK($_return1, $_return2)
   WAITMS(100)
END_IF
Это оно? Как указать нужный цвет?

10
откройте меню шаблонов Clickermann, графика, IF_PIXEL_IN
Это вообще где?

11
Нужно сделать так чтобы по всему экрану искался определенный цвет и во время его нахождения по нему делался клик левой кнопки мыши. Еще нужно это зациклить.

Pages: [1]