Author Topic: Кликер по нескольким пикселям  (Read 6506 times)

0 Members and 1 Guest are viewing this topic.

Logosh

  • Зашел в гости
  • *
  • Posts: 8
    • View Profile
Кликер по нескольким пикселям
« on: April 27, 2014, 08:39:56 AM »
есть программа при которой мышь щелкает по углу экрана без остановки в разные точки, в процессе которого кликер найдя на экране пиксель щелкает на него:
$x= 1280
$y= 960
sub(box)
lclick($x/2+60,$y/2)
cvb:
WAITMS(100)
GETSCREEN
IF_PIXEL_IN(0,$y/2,$x,$y, 8088144)
lclick($_return1, $_return2)
else
goto (xcv)
END_IF
WAITMS(1600)
GETSCREEN
IF_PIXEL_IN(0,$y/2,$x,$y, 8088144)
goto (cvb)
else
goto (xcv)
END_IF
xcv:
WAITMS(1100)
GETSCREEN
IF_PIXEL_IN(0,0,$x,$y, 8088144)
lclick($_return1, $_return2)
WAITMS(1600)
goto (cvb)
END_IF
end_sub
ghj:
LCLICK(rnd($x-150,$x-65),rnd($y-50,$y-20))
ppo:
WAITMS(1200)
GETSCREEN
IF_PIXEL_IN(0,0,$x,$y, 8088144)
GOSUB(box)
END_IF
GETSCREEN
IF_PIXEL_IN($x-150,$y-50,$x-65,$y-20,  8088144)
goto (ppo)
else
goto (ghj)
END_IF

Может кто помочь дописать программу при которой кликер будет щелкать по нескольким пикселям, а не по одному(допустим по трём)?
П.С. сам в этом деле нуб, так что прошу если кто знает помогите...
Кликер: Clickerman v4.7

Atas

  • Активный участник
  • ***
  • Posts: 147
    • View Profile
Re: Кликер по нескольким пикселям
« Reply #1 on: April 27, 2014, 03:17:17 PM »
Сценарий вроде не сложный или я неправильно понял задачу.
Кликер непрерывно кликает в рандомные координаты на экране, ограниченные указанной прямоугольной областью. И одновременно проверяет, не появился ли пиксель с цветом 8088144 в указанных зонах экрана. Если такой пиксель найден, то выполняет клик по этому пикселю. Скрипт выполняется до отключения Кликермана.
Code: (clickermann) [Select]
WAITMS(500)

$x= 1280
$y= 960

WHILE($var < 1) // Цикл
   
   LCLICK(rnd($x-150,$x-65),rnd($y-50,$y-20)) // Клик в рандомные координаты (всегда и без условий)
   
   //--------------------------------
   
   GETSCREEN // В этом примере - один снимок экрана для поиска всех нужных пикселей
   
   IF_PIXEL_IN(0,0,$x,$y, 8088144) // Если найден первый пиксель
      lclick($_return1, $_return2)
   END_IF
   
   IF_PIXEL_IN(0,$y/2,$x,$y, 8088144) // Если найден второй пиксель
      lclick($_return1, $_return2)
   END_IF
   
   IF_PIXEL_IN($x-150,$y-50,$x-65,$y-20,  8088144) // Если найден третий пиксель
      lclick($_return1, $_return2)
   END_IF
   
   // Если найден четвертый пиксель и т.д.
   
   //--------------------------------
   
   WAITMS(100) // Частота выполнения тела цикла
   
END_CYC

HALT

Logosh

  • Зашел в гости
  • *
  • Posts: 8
    • View Profile
Re: Кликер по нескольким пикселям
« Reply #2 on: April 28, 2014, 08:22:45 AM »
Это получается что программа ищет 3 пикселя и работает как вы описали, значит 2-й и 3-й параметры pixel_in можно заменить на еще дрyгие цвета?

Atas

  • Активный участник
  • ***
  • Posts: 147
    • View Profile
Re: Кликер по нескольким пикселям
« Reply #3 on: April 28, 2014, 05:35:33 PM »
Это получается что программа ищет 3 пикселя и работает как вы описали, значит 2-й и 3-й параметры pixel_in можно заменить на еще дрyгие цвета?
Конечно можно. Можно так же добавить в тело цикла еще много IF_PIXEL_IN, для поиска разных цветов, в разных координатах. Я просто скопировал из вашего скрипта эти функции, а там был только один цвет - 8088144. Естественно, можно добавить не только IF_PIXEL_IN, но и другие функции и процедуры, которые требуется выполнять в цикле одновременно с поиском пикселей.
Даже можно в одной функции IF_PIXEL_IN прописать, чтобы искалось несколько цветов:
IF_PIXEL_IN (x, y, x2, y2, color1, color2, color3, ...)

Цитата из справки:
Code: (clickermann) [Select]
// поиск красного или зеленого пикселя
IF_PIXEL_IN (10,20, 100, 40, 255, 65280)
 lclick($_return1, $_return2)
END_IF

Примечания
Как только первый попавшийся пиксель будет найден, инструкция вернет его координаты в переменные $_return1, $_return2 и прекратит анализ
Добавление каждого цвета увеличивает длительность анализа на 100%