Код
set timer4 // сброс контрольного таймера (4 чисто для примера, если остальные заняты)
while 1=1 // вечный глобальный цикл
// действие 2
set #usl1 // Сброс признака выполнения блока 1
set #usl2 // Сброс признака выполнения блока 2
set #usl3 // Сброс признака выполнения блока 3
if timer4 > 30000 // если контрольное время (30 сек.) истекло
set timer4 // сброс таймера контроля (уже для следующего контроля)
set #usl2 1 // будет выполняться блок 2 (чисто для примера)
else // иначе выполнить стандартный анализ
if ...
set #usl1 1 // будет выполняться блок 1
end_if
if ...
set #usl2 1 // будет выполняться блок 2
end_if
if ...
set #usl3 1 // будет выполняться блок 3
end_if
end_if
// завершение действия 2
// условный блок 1
if #usl1 = 1 // если обнаружен признак выполнения блока 1
...
continue // ДАЛЕЕ НИЧЕГО ВЫПОЛНЯТЬСЯ НЕ БУДЕТ
// а произойдёт переход на начало цикла
// по сути как goto
end_if
// и так далее с остальными блоками
...
end_while
Если внутри условного блока выполняются другие циклы любого типа, то нужно следить за уровнем continue. Т.е. если проверка прерывания сработала например внутри for, то нужно задать переход на следующий шаг глобального цикла так: continue 2, иначе прервётся цикл for.
Попытался объяснить как можно проще, по крайней мере Дарка не будет раздражать goto. Хотя в lua нашей версии continue тоже нет, так что если планируете переход на lua, то лучше подумать над другой архитектурой кода. Пример чисто для понимания процесса.