Автокликер Clickermann :: Форум
Основной раздел => Общие вопросы => Topic started by: dmarsel on May 14, 2014, 09:39:31 AM
-
Здравствуйте!
Есть скрипт с кучей условий. Периодически скрипт может зависнуть на одном из них по вине программы к которой применяется.
Можно ли сделать счетчик времени,то есть например, чтобы скрипт перезапускался если прошло более 3 минут с его начала.
Или можно ли засунуть счетчик в IF и тогда скрипт перезапускался бы после 20 циклов,например.
-
не совсем понятно приведите скрипт, из какого места надо скрипт перезапустить
-
не совсем понятно приведите скрипт, из какого места надо скрипт перезапустить
скрипт слишком длинный, просто в нем много условий. А программа, к которой скрипт применяется, иногда тормозит.
перезапустить - значит с начала.
Например: Есть скрипт А, и при хорошем раскладе (если не зациклится ни на одном из условии) работает не более минуты. Я хочу чтобы в случае, когда скрипт не завершается в течении 2 минут, происходила остановка скрипта и запускался скрипт В (или тот же А,как вариант).
-
у тебя там наверняка все на GOTO а нужно использовать WHILE
$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
-
Это то что я искал! :)
Но я не очень понимаю как тут работает time? Правильно ли я понимаю, что это внутренняя переменная кликера, отчитывающая время и спустя 100 циклов=10 секунд цикл завершится автоматически.
-
Но я не очень понимаю как тут работает time? Правильно ли я понимаю, что это внутренняя переменная кликера, отчитывающая время и спустя 100 циклов=10 секунд цикл завершится автоматически.
Это системная переменная возвращающая текущее время Unix (http://ru.wikipedia.org/wiki/UNIX-%D0%B2%D1%80%D0%B5%D0%BC%D1%8F) в секундах. Берем время Unix прибавляем 10 секунд и записываем полученное в переменную. Затем в цикле сравниваем, и когда время нагонит значение в переменной условие цикла станет неверным и он завершится.
-
Спасибо!