Author Topic: Сделать скриншот области и ждать замены.  (Read 2208 times)

0 Members and 1 Guest are viewing this topic.

invahak

  • Зашел в гости
  • *
  • Posts: 8
    • View Profile
Здравствуйте, начинаю копаться с clickermann и уже понимаю суть и что да как, но вот у меня появилась задача.

Мне нужно чтобы при нажатие кнопки "капслок" делался скрин определённой области назовём этот скрин "Оригинал", далее каждые 100 мс надо делать скриншоты этой же области и сверять его с оригиналом, если скрин отличается от оригинала, то-есть картинка сменилась, то например кликать мышью, возможны ли такие махинации в этой проге? и кто может накинуть примерчиков, чтоб я знал от куда начать работу. Спасибо!

open_78

  • Активный участник
  • ***
  • Posts: 285
  • v4.13.014 x64
    • View Profile
Вот одна из таких "махинаций".
Code: (clickermann) [Select]
WHILE(ISKEYDOWN(#CAPSLOCK)=0)  // ждем нажатия
   WAITMS(50)
END_CYC

GETSCREEN(100,200,110,210)
$origin=PXLCRC(100,200,110,210)  // сохраняем оригинал

$check=$origin
WHILE($check=$origin)  //  сверяем снимок с оригиналом
   GETSCREEN(100,200,110,210)
   $check=PXLCRC(100,200,110,210)
   WAITMS(100)
END_CYC

LCLICK(105,205)  //  клик мышью

HALT

Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
Code: (clickermann) [Select]
IF(ISKEYDOWN(#CAPSLOCK)=1)
   WHILE(ISKEYDOWN(#CAPSLOCK)=1)
      WAITMS(5)
   END_CYC
   GETSCREEN
   $hash1 = PXLCRC(10,10, 100,100) // область анализа
   $hash2 = $hash1
   WHILE($hash2 = $hash1)
      WAITMS(100)
      GETSCREEN
      $hash1 = PXLCRC(10,10, 100,100) // область анализа
   END_CYC
   LCLICK(10,10) // клик
   WAITMS(100)
ELSE
   WAITMS(20)
END_IF

silver073000

  • Зашел в гости
  • *
  • Posts: 15
    • View Profile
А если мне надо дождаться изменения картинки размером 100х6, но при этом чтобы кликер ждал не более 15 секунд, если изменений нет. Изменения могут быть и на первой же секунде, а могут быть и на десятой, например. Вот хочу знать, возможно ли такое на версии 4.7 и как всё это правильно оформить?

Vint

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3935
  • Лечу куда хочу. cman 4.13.014x32, 4.14.003 W10
    • View Profile
А в чём разница между 100х6 или 90х90?
Лезешь в шаблоны -- работа с экраном ожидание картинки с таймером. (или кау-то так)
Из него выбрасываешь поиск картинки и вставляешь подсчёт хэша из постов выше.


silver073000

  • Зашел в гости
  • *
  • Posts: 15
    • View Profile
Да можно и 90х90, но в моём случае идёт участок шкалы, которая меняет цвет при заполнении или убывании. Собственно, 90х90 не сыграет значимой роли. А так картинка поменьше чуть :)

silver073000

  • Зашел в гости
  • *
  • Posts: 15
    • View Profile
Одного пикселя мало. Я тоже думал об этом.
Есть вот такая шкала. Нет смысла проверять один пиксель. Да, сократить до 100х1 можно, но брать один какой-то пиксель смысла нет в моём случае.

Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
Одного пикселя мало. Я тоже думал об этом.
Есть вот такая шкала. Нет смысла проверять один пиксель. Да, сократить до 100х1 можно, но брать один какой-то пиксель смысла нет в моём случае.

Почему мало? В определенной точке шкалы анализируется пиксел функцией PXL(10,10). Если коричневый цвет значит полоска ниже заданного уровня. В таких случаях еще хорошо использовать цветокоррекцию чтобы выровнить цвет полоски.

silver073000

  • Зашел в гости
  • *
  • Posts: 15
    • View Profile
Та коричневая полоса может заполняться или убывать всего на несколько пикселей, потому и задумался именно о проверке, изменилась ли она или нет. Она может быть почти полностью заполнена, а может и быть в самом начале.
Заданного уровня, как такового, нет. Нет цели, чтобы она заполнилась полностью и коричневый цвет сменился на другой. Цель моей задумки состоит в том, чтобы кликер дождался смещения шкалы пусть даже и на один пиксель в любую сторону и выполнил те или иные действия.
Всем спасибо за помощь :) Всё работает должным образом :)