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

Основной раздел => Общие вопросы => Topic started by: dmarsel on May 14, 2014, 09:39:31 AM

Title: Счетчик
Post by: dmarsel on May 14, 2014, 09:39:31 AM
Здравствуйте!

Есть скрипт с кучей условий. Периодически скрипт может зависнуть на одном из них по вине программы к которой применяется.

Можно ли сделать счетчик времени,то есть например, чтобы скрипт перезапускался если прошло более 3 минут с его начала.

Или можно ли засунуть счетчик в IF и тогда скрипт перезапускался бы после 20 циклов,например.
Title: Re: Счетчик
Post by: aden on May 14, 2014, 09:55:21 AM
не совсем понятно приведите скрипт, из какого места надо скрипт перезапустить
Title: Re: Счетчик
Post by: dmarsel on May 15, 2014, 09:42:21 PM
не совсем понятно приведите скрипт, из какого места надо скрипт перезапустить

скрипт слишком длинный, просто в нем много условий. А программа, к которой скрипт применяется, иногда тормозит.

перезапустить - значит с начала.

Например: Есть скрипт А, и при хорошем раскладе (если не зациклится ни на одном из условии) работает не более минуты. Я хочу чтобы в случае, когда скрипт не завершается в течении 2 минут, происходила остановка скрипта и запускался скрипт В (или тот же А,как вариант).
Title: Re: Счетчик
Post by: Oraven on May 15, 2014, 10:35:51 PM
у тебя там наверняка все на GOTO а нужно использовать WHILE

Code: (clickermann) [Select]
$check = 0 // переменная переключатель
$time = $_time_t + 10 // таймер на 10 секунд
WHILE(($check = 0) & ($time > $_time_t))
   GETSCREEN
   IF_PIXEL_IN(0,0, 300,300, 255)
      $check = 1 // если нашли пиксель переключаем переменную и цикл прервется
      WAITMS(100)
   Else
      WAITMS(100)
   END_IF
END_CYC

$time = $_time_t + 10
// здесь мы проверяем удачно ли завершился цикл выше
// если неудачно то все циклы ниже будут пропущены и скрипт начнется с начала
IF($check = 1)
   $check = 0
ELSE
   $check = -1
END_IF
WHILE(($check = 0) & ($time > $_time_t))
   GETSCREEN
   IF_PIXEL_IN(0,0, 300,300, 255)
      $check = 1
      WAITMS(100)
   Else
      WAITMS(100)
   END_IF
END_CYC

$time = $_time_t + 10
IF($check = 1)
   $check = 0
ELSE
   $check = -1
END_IF
WHILE(($check = 0) & ($time > $_time_t))
   GETSCREEN
   IF_PIXEL_IN(0,0, 300,300, 255)
      $check = 1
      WAITMS(100)
   Else
      WAITMS(100)
   END_IF
END_CYC

$time = $_time_t + 10
IF($check = 1)
   $check = 0
ELSE
   $check = -1
END_IF
WHILE(($check = 0) & ($time > $_time_t))
   GETSCREEN
   IF_PIXEL_IN(0,0, 300,300, 255)
      $check = 1
      WAITMS(100)
   Else
      WAITMS(100)
   END_IF
END_CYC
Title: Re: Счетчик
Post by: dmarsel on May 16, 2014, 08:56:34 AM
Это то что я искал! :)

Но я не очень понимаю как тут работает time? Правильно ли я понимаю, что это внутренняя переменная кликера, отчитывающая время и спустя 100 циклов=10 секунд цикл завершится автоматически.
Title: Re: Счетчик
Post by: Oraven on May 16, 2014, 10:58:44 AM
Но я не очень понимаю как тут работает time? Правильно ли я понимаю, что это внутренняя переменная кликера, отчитывающая время и спустя 100 циклов=10 секунд цикл завершится автоматически.

Это системная переменная возвращающая текущее время Unix (http://ru.wikipedia.org/wiki/UNIX-%D0%B2%D1%80%D0%B5%D0%BC%D1%8F) в секундах.  Берем время Unix прибавляем 10 секунд и записываем полученное в переменную. Затем в цикле сравниваем, и когда время нагонит значение в переменной условие цикла станет неверным и он завершится.
Title: Re: Счетчик
Post by: dmarsel on May 16, 2014, 10:02:21 PM
Спасибо!