Добавлен bifurcated
Помогите как убрать утечку в этом триггере изображённом на скрине. Как я понял утечку создаёт условие, как бы я не пытался я так и не понял как его устранить.
Как триггер выглядит на JASS:
function Trig_init_Conditions takes nothing returns boolean
if ( not ( CountUnitsInGroup(GetUnitsInRectAll(gg_rct_Oblast)) == 0 ) ) then
return false
endif
return true
endfunction
if ( not ( CountUnitsInGroup(GetUnitsInRectAll(gg_rct_Oblast)) == 0 ) ) then
return false
endif
return true
endfunction
function Trig_init_Actions takes nothing returns nothing
call DisableTrigger( GetTriggeringTrigger() )
call CreateNUnitsAtLoc( 1, 'hfoo', Player(0), GetRectCenter(gg_rct_Oblast), bj_UNIT_FACING )
call TriggerSleepAction( 20.00 )
call EnableTrigger( GetTriggeringTrigger() )
endfunction
call DisableTrigger( GetTriggeringTrigger() )
call CreateNUnitsAtLoc( 1, 'hfoo', Player(0), GetRectCenter(gg_rct_Oblast), bj_UNIT_FACING )
call TriggerSleepAction( 20.00 )
call EnableTrigger( GetTriggeringTrigger() )
endfunction
===========================================================================
function InitTrig_init takes nothing returns nothing
set gg_trg_init = CreateTrigger( )
call TriggerRegisterTimerEvent( gg_trg_init, 0.01, true)
call TriggerAddCondition( gg_trg_init, Condition( function Trig_init_Conditions ) )
call TriggerAddAction( gg_trg_init, function Trig_init_Actions )
endfunction
function InitTrig_init takes nothing returns nothing
set gg_trg_init = CreateTrigger( )
call TriggerRegisterTimerEvent( gg_trg_init, 0.01, true)
call TriggerAddCondition( gg_trg_init, Condition( function Trig_init_Conditions ) )
call TriggerAddAction( gg_trg_init, function Trig_init_Actions )
endfunction
Принятый ответ
Ты создаешь в "Trig_init_Conditions" группу которую потом не удаляешь.
Почитай статью xgm.guru/p/wc3/jass_optimisations_and_leaks
Если вкратце: сохрани группу в переменную и после подсчитывания количества юнитов в ней -- удаляй ее.
`
ОЖИДАНИЕ РЕКЛАМЫ...
Чтобы оставить комментарий, пожалуйста, войдите на сайт.
Что мешает каждые 20 секунд создавать пехотинца в области, причем ненадо использовать локейшины - это тоже утечки.
quq_CCCP, Да это пример, я хочу просто устранить утечку в условии: if ( not ( CountUnitsInGroup(GetUnitsInRectAll(gg_rct_Oblast)) == 0 ) ) then
return false
endif
return true
Так сложно? Группа в виде глобальной переменной, перед каждым использованием очищается.