Author Topic: Убрать постоянный клик в одну точку при ожидании картинки  (Read 2691 times)

0 Members and 2 Guests are viewing this topic.

SimplY

  • Активный участник
  • ***
  • Posts: 125
    • View Profile
Доброго времени суток:)

Code: (clickermann) [Select]
$time = $_time_t + 3 // таймер на 3 секунды
WHILE($time > $_time_t)
   GETSCREEN(113,214,701,253)
   IF_PIXEL_IN(113,214,701,253, 10198777)
      $time = 0
      LCLICK(321,223)  // 6250861
      WAITMS(200)
   ELSE
      LCLICK(850,341)  // Вечный клик
      WAITMS(100)
   END_IF
END_CYC

Он кликает постоянно в координаты 850,341, пока не закончится таймер. Как сделать так, чтобы если ELSE, то был всего один клик в одно место?

Космич

  • Активный участник
  • ***
  • Posts: 265
    • View Profile
Code: (clickermann) [Select]
$time = 3001
$timer = $_ms + $time
WHILE($timer > $_ms)
   GETSCREEN(113, 214, 701, 253)
   IF_PIXEL_IN(113, 214, 701, 253, 10198777)
      $timer = 0
   END_IF
   SWITCH($time)
   CASE(0)
      LCLICK(321,223)
   CASE(3001)
      LCLICK(850,341) 
      $time = $time  - 1
   END_SWITCH
   WAITMS(200)
END_CYC
« Last Edit: December 04, 2019, 12:14:36 PM by Космич »
«Иногда ты ваяешь до тех пор, пока до тебя не дойдёт, что именно ты делаешь.»

Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
Космич что ты там за дич понаписал  :o $time не может быть 3001

Code: (clickermann) [Select]
$time = $_ms + 3000 // таймер на 3 секунды
$f = 0
WHILE($time > $_ms)
   GETSCREEN(113,214,701,253)
   IF_PIXEL_IN(113,214,701,253, 10198777)
      $time = 0
      LCLICK(321,223)  // 6250861
      WAITMS(200)
   ELSE
      IF($f = 0)
         $f = 1 // запрещаем выполнение условия
         LCLICK(850,341)  // Клик один раз за цикл
      END_IF
      WAITMS(100)
   END_IF
END_CYC

SimplY

  • Активный участник
  • ***
  • Posts: 125
    • View Profile
Космич что ты там за дич понаписал  :o $time не может быть 3001

Code: (clickermann) [Select]
$time = $_ms + 3000 // таймер на 3 секунды
$f = 0
WHILE($time > $_ms)
   GETSCREEN(113,214,701,253)
   IF_PIXEL_IN(113,214,701,253, 10198777)
      $time = 0
      LCLICK(321,223)  // 6250861
      WAITMS(200)
   ELSE
      IF($f = 0)
         $f = 1 // запрещаем выполнение условия
         LCLICK(850,341)  // Клик один раз за цикл
      END_IF
      WAITMS(100)
   END_IF
END_CYC
Спасибо!!!

Космич

  • Активный участник
  • ***
  • Posts: 265
    • View Profile
А почему сразу дичь? просто переменную не добавил
«Иногда ты ваяешь до тех пор, пока до тебя не дойдёт, что именно ты делаешь.»

Vint

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3935
  • Лечу куда хочу. cman 4.13.014x32, 4.14.003 W10
    • View Profile
Вот ты и правда накрутил, аж сам запутался  ;D.
$time не будет равно 0 и при нахождении не будет клика
LCLICK(321,223)
точнее, будет, если это произойдёт точнёхонько через 3000 циклов, вероятность чего стремится к нулю.
Смешались в кучу $time и $timer
Тогда уж перенести LCLICK(321,223) назад под IF_PIXEL_IN, ну и SWITCH заменить IF-ом за ненадобностью.

Иногда хочется сделать элегантно и минимально, повесив на одну переменную разные функции, чего делать не рекомендуется. У нас не ООП, но принцип единственной ответственности полезно соблюдать и на обычных переменных.
Запутался, потому что повесил на $time и время ожидания и флаг одиночного срабатывания.

Помнится я тоже, для уменьшения кода, накручивал разные функции на одну переменную. Сейчас стараюсь такого не делать, разве что специально в целях защиты. Связываем полезные и защитные функции в одной переменной, чтоб её нельзя было легко выкинуть или задать жёстко. И побольше таких переменных.