Author Topic: Клик при ручном наведении по цвету.  (Read 4919 times)

0 Members and 1 Guest are viewing this topic.

ricc

  • Зашел в гости
  • *
  • Posts: 11
    • View Profile
Здравствуйте. Помогите пожалуйста сделать автоматизацию. Мне нужно, чтобы когда я сам навожу мышкой на выбранный цвет или картинку, происходил автоматический многократный клик левой кнопки мыши и как только увожу мышку с этого цвета или картинки, сразу же прекращался клик.

Vint

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3935
  • Лечу куда хочу. cman 4.13.014x32, 4.14.003 W10
    • View Profile
Re: Клик при ручном наведении по цвету.
« Reply #1 on: August 27, 2016, 09:04:54 PM »
Code: (clickermann) [Select]
GETSCREEN
IF(PXL($_xmouse, $_ymouse) = 255)  // 255-цвет
    LCLICK($_xmouse, $_ymouse)
    WAITMS(50)
ELSE
    WAITMS(20)
END_IF


ricc

  • Зашел в гости
  • *
  • Posts: 11
    • View Profile
Re: Клик при ручном наведении по цвету.
« Reply #2 on: August 28, 2016, 02:44:49 AM »
Code: (clickermann) [Select]
GETSCREEN
IF(PXL($_xmouse, $_ymouse) = 255)  // 255-цвет
    LCLICK($_xmouse, $_ymouse)
    WAITMS(50)
ELSE
    WAITMS(20)
END_IF
Большое спасибо! А можно увеличить диапазон цветов для поиска?

Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
Re: Клик при ручном наведении по цвету.
« Reply #3 on: August 28, 2016, 07:55:20 AM »
Большое спасибо! А можно увеличить диапазон цветов для поиска?

Конечно, для этого есть цветокоррекция.
Чтобы определить скорректированный цвет, включи лупу, под окошком лупы измени % 0 на 6
Сам увидишь как кликер будет видеть цвета. Определяй нужный тебе цвет и вписывай в скрипт

Code: (clickermann) [Select]
GETSCREEN
COLORMODE(6)
IF(PXL($_xmouse, $_ymouse) = 255)
   LCLICK($_xmouse, $_ymouse)
   WAITMS(50)
ELSE
   WAITMS(20)
END_IF

Если нужно реагировать на несколько цветов то пиши так
Code: (clickermann) [Select]
GETSCREEN
COLORMODE(6)
IF_PIXEL_IN($_xmouse, $_ymouse, $_xmouse, $_ymouse, 255,16777215,14215660)
   LCLICK($_xmouse, $_ymouse)
   WAITMS(50)
ELSE
   WAITMS(20)
END_IF

ricc

  • Зашел в гости
  • *
  • Posts: 11
    • View Profile
Re: Клик при ручном наведении по цвету.
« Reply #4 on: August 28, 2016, 11:19:48 AM »
Большое спасибо! А можно как-то объединить вот эти два скрипта, чтобы происходил автоматический поиск цвета не по всему экрану, а именно в том месте куда я наведу курсор в квадрате размером 30 на 30 пикселей?

Code: (clickermann) [Select]
GETSCREEN
COLORMODE(6)
IF(PXL($_xmouse, $_ymouse) = 255)
   LCLICK($_xmouse, $_ymouse)
   WAITMS(50)
ELSE
   WAITMS(20)
END_IF

Code: (clickermann) [Select]
GETSCREEN
IF_PIXEL_IN(0,0, $_xmax,$_ymax, 255)
   LCLICK($_return1, $_return2)
   WAITMS(100)
END_IF



Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
Re: Клик при ручном наведении по цвету.
« Reply #5 on: August 28, 2016, 11:57:25 AM »
Code: (clickermann) [Select]
GETSCREEN($_xmouse-15,$_ymouse-15,$_xmouse+15,$_ymouse+15)
IF_PIXEL_IN($_xmouse-15,$_ymouse-15, $_xmouse+15,$_ymouse+15, 255)
   LCLICK($_return1, $_return2)
   WAITMS(50)
ELSE
   WAITMS(20)
END_IF

ricc

  • Зашел в гости
  • *
  • Posts: 11
    • View Profile
Re: Клик при ручном наведении по цвету.
« Reply #6 on: August 28, 2016, 12:55:23 PM »
Большое спасибо! А как можно задать плавность(скорость) передвижения мышки при автоклике, чтобы не было такого резкого перемещения курсора при нахождении пикселя? И как я понял цвета можно добавлять сколько угодно через запятую?

Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
Re: Клик при ручном наведении по цвету.
« Reply #7 on: August 28, 2016, 01:47:03 PM »
Code: (clickermann) [Select]
SUB(mouse_move,$MOVE_END_X,$MOVE_END_Y)
   $MOVE_SPEED = 4  // скорость перемещения (1 - быстро 10+ медленно)
   
   $MOVE_Start_X = $_xmouse
   $MOVE_Start_Y = $_ymouse
   $MOVE_X = $MOVE_Start_X
   $MOVE_Y = $MOVE_Start_Y     
   $dist = DIST($MOVE_END_X,$MOVE_END_Y,$MOVE_Start_X,$MOVE_Start_Y)     
   $MOVE_SPEEDVAR = INT((SQRT($dist))/$MOVE_SPEED)     
   IF($MOVE_SPEEDVAR < 1)
      $MOVE_SPEEDVAR = 1
   END_IF                 
   $MOVE_step=($dist-1)/$MOVE_SPEEDVAR
   $MOVE_X_step = ($MOVE_END_X-$MOVE_Start_X)/$MOVE_step
   $MOVE_Y_step = ($MOVE_END_Y-$MOVE_Start_Y)/$MOVE_step     
   FOR($MOVE_i=0, $MOVE_i<INT($MOVE_step))
      $MOVE_X = $MOVE_X + $MOVE_X_step
      $MOVE_Y = $MOVE_Y + $MOVE_Y_step
      MOVE(ROUND($MOVE_X,0), ROUND($MOVE_Y,0))
      WAITMS(1)
   END_CYC   
   LCLICK($MOVE_END_X, $MOVE_END_Y)
END_SUB

SUB(poisk, $x1,$y1,$x2,$y2)
   GETSCREEN($x1,$y1,$x2,$y2)
   IF_PIXEL_IN($x1,$y1,$x2,$y2, 9913087)
      mouse_move($_return1, $_return2)
      WAITMS(100)
   END_IF
END_SUB

poisk($_xmouse-100,$_ymouse-100,$_xmouse+100,$_ymouse+100) // область поиска
WAITMS(20)

ricc

  • Зашел в гости
  • *
  • Posts: 11
    • View Profile
Re: Клик при ручном наведении по цвету.
« Reply #8 on: August 28, 2016, 02:45:03 PM »
Благодарствую! :)

ricc

  • Зашел в гости
  • *
  • Posts: 11
    • View Profile
Re: Клик при ручном наведении по цвету.
« Reply #9 on: August 30, 2016, 06:17:31 PM »
 И еще подскажите как можно сделать скриншот именно в том месте куда я наведу курсор размером скажем 50 на 50 ?

Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
Re: Клик при ручном наведении по цвету.
« Reply #10 on: August 30, 2016, 07:42:28 PM »
Только учти что часто при наведении на какой то элемент он может менять цвет, подсвечиваться.

Code: (clickermann) [Select]
GETSCREEN
SCREENSHOTEX($_xmouse-24,$_ymouse-24,$_xmouse+25,$_ymouse+25, "Image_", 0)
HALT

Можно написать вот так, чтобы снимок произошел через секунду после старта. За это время можно убрать курсор.
Code: (clickermann) [Select]
$x = $_xmouse
$y = $_ymouse

WAIT(1)

GETSCREEN
SCREENSHOTEX($x-24,$y-24,$x+25,$y+25, "Image_", 0)
HALT
« Last Edit: August 30, 2016, 07:50:28 PM by Oraven »