Выявление утечек в коде.
Привет всем, помогите пожалуйста найти утечки в коде спавна двух типов мобов у 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
===========================================================================
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

Принятый ответ

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 есть утечка, но это нативно, она минимальная и это никак не исправляется.
`
ОЖИДАНИЕ РЕКЛАМЫ...

Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
2 комментария удалено
2
18
6 лет назад
2
Эм.. А зачем использовать ""Location(0.00, 5300.00)" ? Можно же без точек. Примерно так:
call CreateUnit (Player(0), 'o000', 0, 5300, 0)
а как тебя забанить что бы ты у меня в темах не писал?
Но тут ledoed прав, утечек действительно много. Не буду я его за это банить
0
8
6 лет назад
Отредактирован VVelikolepniy
0
Maniac_91:
Эм.. А зачем использовать ""Location(0.00, 5300.00)" ? Можно же без точек. Примерно так:
call CreateUnit (Player(0), 'o000', 0, 5300, 0)
а как тебя забанить что бы ты у меня в темах не писал?
Но тут ledoed прав, утечек действительно много. Не буду я его за это банить
Вот сижу разбираюсь, но с функцией CreateNUnitsAtLoc получается вызывать несколько юнитов, а с функцией CreateUnit не получается. Я что то не так делаю или цикл нужен?
Maniac_91:
Эм.. А зачем использовать ""Location(0.00, 5300.00)" ? Можно же без точек. Примерно так:
call CreateUnit (Player(0), 'o000', 0, 5300, 0)
а как тебя забанить что бы ты у меня в темах не писал?
Но тут ledoed прав, утечек действительно много. Не буду я его за это банить
И кстати CreateNUnitsAtLoc я не нашел в том мануале, что ты скинул. Нашел эту функцию из конвертации обычного триггера
0
18
6 лет назад
0
VVelikolepniy, цикл нужен.
Там в разделе "integer".
Загруженные файлы
Этот комментарий удален
1
32
6 лет назад
1
Extrime candy war в помощь.
1
21
6 лет назад
1
точки утекают все по-моему
группы надо не только разрушать но и обнулять
и после беглого просмотра не полная уверенность что в группы вообще везде правильно юниты добавляются
ты возьми систему в которой знаешь что утечек нет и адаптируй под себя
уж найти такую систему должен мочь
0
8
6 лет назад
Отредактирован VVelikolepniy
0
quq_CCCP:
Extrime candy war в помощь.
Открыл по твоему совету Канди вар, и вот что увидел. Разве здесь не больше утечек, чем у меня?
ClotPh:
точки утекают все по-моему
группы надо не только разрушать но и обнулять
и после беглого просмотра не полная уверенность что в группы вообще везде правильно юниты добавляются
ты возьми систему в которой знаешь что утечек нет и адаптируй под себя
уж найти такую систему должен мочь
Ну вот да, я пытаюсь найти сейчас, доту открываю но там такое месиво, пока ничего не понял)
Щаз еще посмотрю в функциях как ОБНУЛЯТЬ группы!
Загруженные файлы
0
32
6 лет назад
0
VVelikolepniy, меньше раз в 10.
Ваш код одна большая утечка...
0
8
6 лет назад
Отредактирован VVelikolepniy
0
quq_CCCP:
VVelikolepniy, меньше раз в 10.
Ваш код одна большая утечка...
Но он же просто назначает точку как цент области, заставляет двигаться юнита к этой точке и удаляет точку. А я Создаю отряд по координатам, заставляю бжать отряд а потом удаляю отряд из памяти. Вы имеее ввиду что нужно удалять из памяти назначенные точки тоже?
Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.