Добавлен  16GB 
                            
                            
                            
                            
                            
                            
                        
                        
                    Делал я в своей мапе систему снарядов и обнаружил что, непонятно от куда появляются утечки. Всё кучу раз перепроверил, так и не понял. Убирая лишний код, оставил лишь создание юнита в вызываемой функции и его передачу.
В общем потестив я выявил следующие
В общем потестив я выявил следующие
Хэндлы отжираемые этим кодом
function Trig_eve_Actions takes nothing returns nothing
local integer i = 0
local unit u
loop
exitwhen i > 300
set u = CreateUnit(Player(0),'hpea',0,0,0)
call UnitApplyTimedLife(u,'BTLF',1.)
set u = null
set i = i+1
endloop
endfunction
//===========================================================================
function InitTrig_Clear takes nothing returns nothing
    set gg_trg_Clear = CreateTrigger(  )
    call TriggerRegisterTimerEventPeriodic( gg_trg_Clear, 2. )
    call TriggerAddAction( gg_trg_Clear, function Trig_eve_Actions )
endfunction
А если вызывать через функцию
function CreateProjectile takes nothing returns unit
local unit u = CreateUnit(Player(0),'hpea',0,0,0)
return u
endfunction
function Trig_eve_Actions takes nothing returns nothing
local integer i = 0
local unit u
loop
exitwhen i > 300
set u = CreateProjectile()
call UnitApplyTimedLife(u,'BTLF',1.)
set u = null
set i = i+1
endloop
set u = null
endfunction
//===========================================================================
function InitTrig_Func takes nothing returns nothing
    set gg_trg_Func = CreateTrigger(  )
    call TriggerRegisterTimerEventPeriodic( gg_trg_Func, 2. )
    call TriggerAddAction( gg_trg_Func, function Trig_eve_Actions )
endfunctionто выходит вот столько 
хэндлов по сути в 5 раз больше
Кто сталкивался? как фиксили?
Ясное дело можно делать создание юнита и все действия с ним напрямую в одном триггере без функций, но хотелось бы, всё же раз бивать код на части.
Кто сталкивался? как фиксили?
Ясное дело можно делать создание юнита и все действия с ним напрямую в одном триггере без функций, но хотелось бы, всё же раз бивать код на части.
Тестовая карта xgm.guru/files/100/173044/45.w3x
Принятый ответ
Во втором случаи неудивительно, не обнуленная локлка осталась висеть в функции, пробуй юзать глобалки либо делай так:
function CreateUnitBj takes uniut u returns unit 
set u = CreateUnit( Player(0), 'hpea', 0.00, 0.00, 0.00 )
return u
endfunction
    
        
            
                `
            
            
                
        
    
    ОЖИДАНИЕ РЕКЛАМЫ...
            
                    
                        Чтобы оставить комментарий, пожалуйста, войдите на сайт.
                    
                
             
                        
                        
                    
 WC3
                                WC3
                            



 
                    
                


ну так она же обнуляется в триггере куда передана не?
А ну видимо нет не обнуляется.
Я недавно тоже тестил создание 100500 юнитов и смотрел что к чему, с юнитами не все так просто...
как выяснилось ивенты повешенные на конкретного юнита никуда не пропадают даже после удаления триггера и юнита .
ну там действия ещё проводятся с созданным юнитом. Я сделал как на скрине, что я выложил.