Добавлен Vampir_kolik
Столкнулся с такой проблемой. При прокрутке цикла более 2 тысяч оборотов цикл перестаёт работать и остальной код файла jass не выполняется. Как быть в такой ситуации когда требуется сделать 16 тысяч оборотов в цикле через переменную?
function Test takes nothing returns nothing
local integer i
call DisplayTextToForce( GetPlayersAll(), "1!" )
set i = 0
loop
exitwhen i > ( ( 128 * 128 ) - 1 )
set i = i + 1
endloop
call DisplayTextToForce( GetPlayersAll(), "2!" )
endfunction
//===========================================================================
function InitTrig_____________________________________001_____________________u takes nothing returns nothing
local trigger trg
set trg = CreateTrigger( )
call TriggerRegisterTimerEventSingle( trg, 1.00 )
call TriggerAddAction( trg, function Test )
endfunction
И 2 рой вариант проекта, тоже самое но без арифметических действий в условии цикла. Триггер 2 работает, триггер 3 нет(не полностью завершается код триггера).
function Test2 takes nothing returns nothing
local integer i
call DisplayTextToForce( GetPlayersAll(), "Test2!" )
call DisplayTextToForce( GetPlayersAll(), "1!" )
set i = 0
loop
exitwhen i > 16383
set i = i + 1
endloop
call DisplayTextToForce( GetPlayersAll(), "2!" )
endfunction
function Test3 takes nothing returns nothing
local integer i
local integer n
call DisplayTextToForce( GetPlayersAll(), "Test3!" )
call DisplayTextToForce( GetPlayersAll(), "1!" )
set i = 0
set n = 0
loop
exitwhen i > 16383
set n = n + 1
set i = i + 1
endloop
call DisplayTextToForce( GetPlayersAll(), "2!" )
endfunction
//===========================================================================
function InitTrig_____________________________________001______________________2 takes nothing returns nothing
local trigger trg2
local trigger trg3
set trg2 = CreateTrigger( )
call TriggerRegisterTimerEventSingle( trg2, 1.00 )
call TriggerAddAction( trg2, function Test2 )
set trg3 = CreateTrigger( )
call TriggerRegisterTimerEventSingle( trg3, 1.00 )
call TriggerAddAction( trg3, function Test3 )
endfunction
Не хватает производительности в Warcraft'e?
Принятый ответ
Лимит операций примерно 4 к. А у тебя тут поболее 16к.
Обойти лимит операций можно только разнеся действия в разные потоки. К примеру для через таймер.
Обойти лимит операций можно только разнеся действия в разные потоки. К примеру для через таймер.
`
ОЖИДАНИЕ РЕКЛАМЫ...
Чтобы оставить комментарий, пожалуйста, войдите на сайт.
Обойти лимит операций можно только разнеся действия в разные потоки. К примеру для через таймер.
то есть примерно каждые 2000 операций юзай TriggerSleepAction(0.01)
а вообще у нас на сайте есть статьи