Автокликер Clickermann :: Форум
Основной раздел => Общие вопросы => Topic started by: belousov on October 10, 2017, 10:09:35 AM
-
Добрый день! Опять обращаюсь за помощью к знатокам.
Допустим часть скрипта выполняется минут 7-10, но иногда какое-нибудь изображение не появляется или появится совсем иное... и тогда скрипт зависает в ожидании искомого.
Пример.
Старт скрипта, в отрывке от А до B (различные действия), от B до C (поиск различных картинок, в общем выполняется за 7-10минут, здесь же и зависает, если не находит), от С до D (различные действия), Стоп.
Подскажите, как сделать, что бы часть скрипта B-C выполнялась необходимое ей время, если справится, то переходит к следующей части C-D, Но если превысит время и достигнет, например, 15 минут, с начала действия части В-С, то переходит к следующей части С-D скрипта?
-
Нужно использовать цикл с таймером
$time = $_time_t + 600 // таймер на 10 минут
WHILE($time > $_time_t) // Цикл выполняется не более 10 минут
GETSCREEN
IF_PICTURE_IN (0,0, $_xmax,$_ymax, "file.bmp", -1, 100)
$time = 0 // обнуление таймера, выход из цикла
LCLICK($_return1, $_return2)
WAITMS(100)
ELSE
WAITMS(500)
END_IF
END_CYC
-
это понятно) но в этот цикл с таймером вряд ли удастся запихнуть с десяток циклов с таймером и без таймера)
-
Это почему же? Хоть Войну и Мир можно запихнуть.
$time = $_time_t + 600
WHILE($time > $_time_t)
// здесь разные действия
// если после кокого-то признака нужно прервать цикл и выйти
// обнуляем таймер
$time = 0
// ...
// и на очередной итерации выпадаем из цикла
END_CYC
Если тебе после одного из действий нужно срочно прервать цикл и остальное не выполнять, то здесь много способов.
От заворачивания каждой серии в IF, до прыгания в конец цикла по GOTO. Или управляемый поток.
-
так как тема про циклы... спрошу прямо здесь
почему скрипт работает именно так? проскакивает "print4"
$b=3
print(0)
$time = $_time_t + 5
WHILE($time > $_time_t)
print(1)
waitms(500)
WHILE ($a<$b) //WHILE( ($a<3) & ($time > $_time_t))
print(2)
$b=3
$a=$a+1
waitms(500)
else
print(3)
$b=1
$a=$a-1
waitms(500)
END_CYC
print(4)
waitms(500)
END_CYC
print(5)
halt
в логах
0:48:55 0
0:48:55 1
0:48:55 2
0:48:56 4
0:48:56 2
0:48:57 4
0:48:57 2
0:48:58 4
0:48:58 3
0:48:59 3
0:48:59 3
0:49:00 2
0:49:00 4
0:49:01 2
0:49:01 4
0:49:02 2
0:49:02 4
0:49:03 3
0:49:03 3
0:49:04 3
0:49:04 2
-
почему скрипт работает именно так? проскакивает "print4"
Потому что в кликере у циклов нет блоков ELSE. Всё тело цикла либо выполняется, либо нет.
"Иначе" есть только в уcловиях IF.
-
вот я дебил... спасибки за разъяснение