quq_CCCP, ты отвечал в моём предыдущем вопросе (про библиотеку, которая добавляет событие на получение урона всем юнитам), там добавляется событие на каждого юнита на карте. Так как карта у меня жанра TD, получается, что карта будет иметь миллион утечек памяти?
События висят в памяти пока существует обьект на который повешено это событие, в вашем случаи это юнит, если его удалить то не будет и события, триггер тоже можно удалить с кондишинами и экшинами. В тд вовсе ненужна никакая систетема, просто триггер на каждую волну куда и записывается все события на каждого юнита в волне, после окончания все это удаляется.
library TriggerRegisterAnyUnitDamagedEvent initializer Init
globals
public constant trigger TRIGGER = CreateTrigger()
private constant trigger TRIGGER_ADDER = CreateTrigger()
endglobals
private function TriggerAddEvent takes nothing returns boolean
if not HaveSavedHandle(HASHTABLE, GetHandleId(GetFilterUnit()), StringHash("bla_bla")) then
call SaveTriggerEventHandle(HASHTABLE, GetHandleId(GetFilterUnit()), StringHash("bla_bla"), TriggerRegisterUnitEvent(TRIGGER, GetFilterUnit(), EVENT_UNIT_DAMAGED))
endif
return false
endfunction
private function Init takes nothing returns nothing
local group g = CreateGroup()
local rect r = GetWorldBounds()
local region reg = CreateRegion()
local boolexpr filter = Condition(function TriggerAddEvent)
call GroupEnumUnitsInRect(g, r, filter)
call RegionAddRect(reg, r)
call TriggerRegisterEnterRegion(TRIGGER_ADDER, reg, filter)
call DestroyGroup(g)
call RemoveRect(r)
set g = null
set r = null
set reg = null
endfunction
function TriggerRegisterAnyUnitDamagedEvent takes code c returns nothing
call TriggerAddCondition(TRIGGER, Condition(c))
endfunction
endlibrary
Как видишь, на каждого нового заспавненного крипа прикрепляется евент, который остаётся после смерти крипа.
А такой триггер мне нужен, чтобы правильно работали скиллы у таверов. Например, один товер, атакуя кастует огненный столб на атакованного и т.д.
Загруженные файлы
Показан только небольшой набор комментариев вокруг указанного.
Перейти к актуальным.
Отредактирован scopterectus
Есть волны крипов, есть здания... Дальше что?