Автокликер Clickermann :: Форум

Основной раздел => Общие вопросы => Topic started by: SimplY on December 04, 2019, 10:45:55 AM

Title: Убрать постоянный клик в одну точку при ожидании картинки
Post by: SimplY on December 04, 2019, 10:45:55 AM
Доброго времени суток:)

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, то был всего один клик в одно место?
Title: Re: Убрать постоянный клик в одну точку при ожидании картинки
Post by: Космич on December 04, 2019, 11:09:30 AM
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
Title: Re: Убрать постоянный клик в одну точку при ожидании картинки
Post by: Oraven on December 04, 2019, 11:35:35 AM
Космич что ты там за дич понаписал  :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
Title: Re: Убрать постоянный клик в одну точку при ожидании картинки
Post by: SimplY on December 04, 2019, 12:06:32 PM
Космич что ты там за дич понаписал  :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
Спасибо!!!
Title: Re: Убрать постоянный клик в одну точку при ожидании картинки
Post by: Космич on December 04, 2019, 12:11:39 PM
А почему сразу дичь? просто переменную не добавил
Title: Re: Убрать постоянный клик в одну точку при ожидании картинки
Post by: Vint on December 05, 2019, 09:43:45 AM
Вот ты и правда накрутил, аж сам запутался  ;D.
$time не будет равно 0 и при нахождении не будет клика
LCLICK(321,223)
точнее, будет, если это произойдёт точнёхонько через 3000 циклов, вероятность чего стремится к нулю.
Смешались в кучу $time и $timer
Тогда уж перенести LCLICK(321,223) назад под IF_PIXEL_IN, ну и SWITCH заменить IF-ом за ненадобностью.

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

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