Выявление утечек в коде.
Привет всем, помогите пожалуйста найти утечки в коде спавна двух типов мобов у 4х фракций. Все по гайдам, но начинает лагать со временем. Заранее спасибо.
function Trig_CreepsCenter1_Actions takes nothing returns nothing
local group deter1
local group insp1
local group absorb1
local group destr1
call CreateNUnitsAtLoc( 5, 'o000', Player(0), Location(0.00, 5300.00), 0.00 )
set deter1 = GetLastCreatedGroup()
call CreateNUnitsAtLoc( 2, 'o001', Player(0), Location(0.00, 5300.00), 0.00 )
call GroupAddGroup( GetLastCreatedGroup(), deter1 )
call GroupPointOrderLocBJ( deter1, "attack", Location(0.00, -5300.00) )
call DestroyGroup (deter1)
call CreateNUnitsAtLoc( 5, 'h000', Player(1), Location(-5300.00, 0.00), 0.00 )
set insp1 = GetLastCreatedGroup()
call CreateNUnitsAtLoc( 2, 'h001', Player(1), Location(-5300.00, 0.00), 0.00 )
call GroupAddGroup( GetLastCreatedGroup(), insp1 )
call GroupPointOrderLocBJ( insp1, "attack", Location(5300.00, 0.00) )
call DestroyGroup (insp1)
call CreateNUnitsAtLoc( 5, 'n000', Player(3), Location(0.00, -5300.00), 0.00 )
set absorb1 = GetLastCreatedGroup()
call CreateNUnitsAtLoc( 2, 'n001', Player(3), Location(0.00, -5300.00), 0.00 )
call GroupAddGroup( GetLastCreatedGroup(), absorb1 )
call GroupPointOrderLocBJ( absorb1, "attack", Location(0.00, 5300.00) )
call DestroyGroup (absorb1)
call CreateNUnitsAtLoc( 5, 'u000', Player(6), Location(5300.00, 0.00), 0.00 )
set destr1 = GetLastCreatedGroup()
call CreateNUnitsAtLoc( 2, 'u001', Player(6), Location(5300.00, 0.00), 0.00 )
call GroupAddGroup( GetLastCreatedGroup(), destr1 )
call GroupPointOrderLocBJ( destr1, "attack", Location(-5300.00, 0.00) )
call DestroyGroup (destr1)
endfunction
local group deter1
local group insp1
local group absorb1
local group destr1
call CreateNUnitsAtLoc( 5, 'o000', Player(0), Location(0.00, 5300.00), 0.00 )
set deter1 = GetLastCreatedGroup()
call CreateNUnitsAtLoc( 2, 'o001', Player(0), Location(0.00, 5300.00), 0.00 )
call GroupAddGroup( GetLastCreatedGroup(), deter1 )
call GroupPointOrderLocBJ( deter1, "attack", Location(0.00, -5300.00) )
call DestroyGroup (deter1)
call CreateNUnitsAtLoc( 5, 'h000', Player(1), Location(-5300.00, 0.00), 0.00 )
set insp1 = GetLastCreatedGroup()
call CreateNUnitsAtLoc( 2, 'h001', Player(1), Location(-5300.00, 0.00), 0.00 )
call GroupAddGroup( GetLastCreatedGroup(), insp1 )
call GroupPointOrderLocBJ( insp1, "attack", Location(5300.00, 0.00) )
call DestroyGroup (insp1)
call CreateNUnitsAtLoc( 5, 'n000', Player(3), Location(0.00, -5300.00), 0.00 )
set absorb1 = GetLastCreatedGroup()
call CreateNUnitsAtLoc( 2, 'n001', Player(3), Location(0.00, -5300.00), 0.00 )
call GroupAddGroup( GetLastCreatedGroup(), absorb1 )
call GroupPointOrderLocBJ( absorb1, "attack", Location(0.00, 5300.00) )
call DestroyGroup (absorb1)
call CreateNUnitsAtLoc( 5, 'u000', Player(6), Location(5300.00, 0.00), 0.00 )
set destr1 = GetLastCreatedGroup()
call CreateNUnitsAtLoc( 2, 'u001', Player(6), Location(5300.00, 0.00), 0.00 )
call GroupAddGroup( GetLastCreatedGroup(), destr1 )
call GroupPointOrderLocBJ( destr1, "attack", Location(-5300.00, 0.00) )
call DestroyGroup (destr1)
endfunction
===========================================================================
function InitTrig_CreepsCenter1 takes nothing returns nothing
set gg_trg_CreepsCenter1 = CreateTrigger( )
call TriggerRegisterTimerEventPeriodic( gg_trg_CreepsCenter1, 10.00 )
call TriggerAddAction( gg_trg_CreepsCenter1, function Trig_CreepsCenter1_Actions )
endfunction
function InitTrig_CreepsCenter1 takes nothing returns nothing
set gg_trg_CreepsCenter1 = CreateTrigger( )
call TriggerRegisterTimerEventPeriodic( gg_trg_CreepsCenter1, 10.00 )
call TriggerAddAction( gg_trg_CreepsCenter1, function Trig_CreepsCenter1_Actions )
endfunction
Accepted answer
nvc123, внутри GetRectCenter нет утечки
// blizzard.j:1772
function GetRectCenter takes rect whichRect returns location
return Location(GetRectCenterX(whichRect), GetRectCenterY(whichRect))
endfunction
а эвент регистрируется 1 раз, так что можно забить
// blizzard.j:7959
function TriggerRegisterEnterRectSimple takes trigger trig, rect r returns event
local region rectRegion = CreateRegion()
call RegionAddRect(rectRegion, r)
return TriggerRegisterEnterRegion(trig, rectRegion, null)
endfunction
Другое дело, что у order есть утечка, но это нативно, она минимальная и это никак не исправляется.
`
LOADING AD...
To leave a comment please sign in to the site.
я не про скрин а про карту
и я и говорю что на них можно забить
Edited by nvc123
она просто циклом создаёт юнитов и добавляет их в группу
группа это просто набор юнитов
она не имеет никакого отношения к тому как идут юниты и прочему
Edited by MpW
Зачем тебе несколько груп и несколько точек, ты не можешь отправить всех юнитов сразу, ты отправляешь юнитов последовательно по одному, следовательно достаточно одной точки и одной группы...
Далее если создавать юнитов в цикле, то выяснится что ненужна и группа вовсе, т.к отдать приказ придется каждому юниту после создания...
т.к юниты спаунятся всегда в отдном и том же месте и идут в одно и тоже место, зачем нам каждый раз определять координаты и создавать точки?
Можно сделать массив с координатами, типами юнитов, а так же их кол-вом и создать сразу для всех точек всех юнитов в одном цикле, правда круто?
А кода меньше в разы....