Возможно так, если я правильно понял:
Code
function Trigger_Action takes nothing returns nothing
call Trigger_Action()
endfunction
function InitTrig_Trigger takes nothing returns nothing
set gg_trg_Trigger = CreateTrigger()
call TriggerAddAction(gg_trg_Trigger, function Trigger_Action)
endfunction
Скорее всего поток грохнется, либо просто вылетит игра.
Вообще в Warcraft нельзя организовать бесконечный ход действий, это записано на уровне движка.
- Любой слишком длинный цикл -> игра оборвёт его.
- Создать 100500 потоков с помощью ExecuteFunc -> вылет.
- Использовать PeriodicEvent с временем 0.0 -> не будет непрерывным по определению, ещё и тормоза появятся.
Какой выход? Можно попробовать потанцевать с бубном около некоторой integer переменной и ExecuteFunc().
Смысл в том, чтобы после, скажем, 1000 вызовов функции использовать call ExecuteFunc(MyFunc) и сбросить счётчик. Как-то так:
Code
function Trigger_Action takes nothing returns nothing
set udg_i = udg_i + 1
//Некие действия... чем их больше, тем меньшее число нужно поставить вместо 1000.
if udg_i < 1000 then
call Trigger_Action()
else
set udg_i = 0
call ExecuteFunc("Trigger_Action")
endif
endfunction
function InitTrig_Trigger takes nothing returns nothing
set gg_trg_Trigger = CreateTrigger()
call TriggerAddAction(gg_trg_Trigger, function Trigger_Action)
endfunction
Хотя, наверное, всё равно всё грохнется. А зачем оно нужно? Измеряем скорость работы процессора?