Author Topic: Счетчик  (Read 4069 times)

0 Members and 1 Guest are viewing this topic.

dmarsel

  • Освоившийся
  • **
  • Posts: 22
    • View Profile
Счетчик
« on: May 14, 2014, 09:39:31 AM »
Здравствуйте!

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

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

Или можно ли засунуть счетчик в IF и тогда скрипт перезапускался бы после 20 циклов,например.

aden

  • Оплот сообщества
  • ****
  • Posts: 363
    • View Profile
Re: Счетчик
« Reply #1 on: May 14, 2014, 09:55:21 AM »
не совсем понятно приведите скрипт, из какого места надо скрипт перезапустить

dmarsel

  • Освоившийся
  • **
  • Posts: 22
    • View Profile
Re: Счетчик
« Reply #2 on: May 15, 2014, 09:42:21 PM »
не совсем понятно приведите скрипт, из какого места надо скрипт перезапустить

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

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

Например: Есть скрипт А, и при хорошем раскладе (если не зациклится ни на одном из условии) работает не более минуты. Я хочу чтобы в случае, когда скрипт не завершается в течении 2 минут, происходила остановка скрипта и запускался скрипт В (или тот же А,как вариант).

Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
Re: Счетчик
« Reply #3 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

dmarsel

  • Освоившийся
  • **
  • Posts: 22
    • View Profile
Re: Счетчик
« Reply #4 on: May 16, 2014, 08:56:34 AM »
Это то что я искал! :)

Но я не очень понимаю как тут работает time? Правильно ли я понимаю, что это внутренняя переменная кликера, отчитывающая время и спустя 100 циклов=10 секунд цикл завершится автоматически.

Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
Re: Счетчик
« Reply #5 on: May 16, 2014, 10:58:44 AM »
Но я не очень понимаю как тут работает time? Правильно ли я понимаю, что это внутренняя переменная кликера, отчитывающая время и спустя 100 циклов=10 секунд цикл завершится автоматически.

Это системная переменная возвращающая текущее время Unix в секундах.  Берем время Unix прибавляем 10 секунд и записываем полученное в переменную. Затем в цикле сравниваем, и когда время нагонит значение в переменной условие цикла станет неверным и он завершится.

dmarsel

  • Освоившийся
  • **
  • Posts: 22
    • View Profile
Re: Счетчик
« Reply #6 on: May 16, 2014, 10:02:21 PM »
Спасибо!