Какой функцией можно удалить trigger event с какого-либо триггера?

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

Никакой, события удаляются - от слова никак!

Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
0
32
7 лет назад
0
Никакой, события удаляются - от слова никак!
Принятый ответ
Этот комментарий удален
0
21
7 лет назад
0
quq_CCCP, ты отвечал в моём предыдущем вопросе (про библиотеку, которая добавляет событие на получение урона всем юнитам), там добавляется событие на каждого юнита на карте. Так как карта у меня жанра TD, получается, что карта будет иметь миллион утечек памяти?
0
26
7 лет назад
0
карта будет иметь миллион утечек памяти?
А почему вы решили, что события вызывают утечки?
0
21
7 лет назад
Отредактирован scopterectus
0
Uber, а что нет? ну не совсем утечки, но ненужный объект все равно же остаётся в памяти.
0
26
7 лет назад
0
Не знаю, может вы мне скажите.
0
21
7 лет назад
0
Uber, :-) я не знаю, поэтому тут и спросил (развёрнутого ответа).
2
32
7 лет назад
2
События висят в памяти пока существует обьект на который повешено это событие, в вашем случаи это юнит, если его удалить то не будет и события, триггер тоже можно удалить с кондишинами и экшинами. В тд вовсе ненужна никакая систетема, просто триггер на каждую волну куда и записывается все события на каждого юнита в волне, после окончания все это удаляется.
0
21
7 лет назад
0
quq_CCCP, у меня скиллы у таверов работают, когда они атакуют противников.
0
32
7 лет назад
0
ScopteRectuS:
quq_CCCP, у меня скиллы у таверов работают, когда они атакуют противников.
Совершенно не понимаю связь с триггерами на отслеживание урона?
Есть волны крипов, есть здания... Дальше что?
0
21
7 лет назад
0
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
Как видишь, на каждого нового заспавненного крипа прикрепляется евент, который остаётся после смерти крипа.
А такой триггер мне нужен, чтобы правильно работали скиллы у таверов. Например, один товер, атакуя кастует огненный столб на атакованного и т.д.
Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.