вообщем функция работает отлично, но некоторые люди говорят,
что boolexpr эта хэндл т.е создает утечку, на практике я такое не обнаружил т.е хэндлы то не создаются
и еще ведь сам IceFrog использовал condition и много раз...
что boolexpr эта хэндл т.е создает утечку, на практике я такое не обнаружил т.е хэндлы то не создаются
и еще ведь сам IceFrog использовал condition и много раз...
function BootsOfSpeedExpired takes nothing returns boolean
local trigger t = GetTriggeringTrigger()
local integer h = GetHandleId(t)
local unit a = LoadUnitHandle(H,h,0)
if GetTriggerEventId()==EVENT_WIDGET_DEATH then
if GetTriggerUnit()== a then
call UnitRemoveAbility( a, 'Aspb' )
call FlushChildHashtable(H,h)
call DestroyTrigger(t)
endif
endif
if GetTriggerEventId()==EVENT_GAME_TIMER_EXPIRED then
call UnitRemoveAbility( a, 'Aspb' )
call FlushChildHashtable(H,h)
call DestroyTrigger(t)
endif
set t=null
set a=null
return false
endfunction
function BootsOfSpeed takes unit a returns nothing
local trigger t = CreateTrigger()
local integer h = GetHandleId(t)
call UnitAddAbility(a,'Aspb')
call SetPlayerAbilityAvailable( GetOwningPlayer(a),'Aspb',false)
call SaveUnitHandle(H,h,0,a)
call TriggerRegisterTimerEvent(t,4.0,false)
call TriggerRegisterUnitEvent(t,a,EVENT_UNIT_DEATH )
call TriggerAddCondition(t,Condition(function BootsOfSpeedExpired))
set t = null
set a = null
endfunction
Принятый ответ
Zeuz:
Поэтому там где используются локальные триггеры которые будут удалены нужно удалять и triggeraction и triggercondition а для этого их нужно куда то сохранить, много городушек и лишних действий, посему там где можно не юзать триггеры лучше их не юзать.
Лол, обьясняю еще раз
- Condition( function SomeFunc ) и Filter( function SomeFunc ) возвращают Boolexpr, он кешируется, и не утекает
Поэтому там где используются локальные триггеры которые будут удалены нужно удалять и triggeraction и triggercondition а для этого их нужно куда то сохранить, много городушек и лишних действий, посему там где можно не юзать триггеры лучше их не юзать.
`
ОЖИДАНИЕ РЕКЛАМЫ...
Чтобы оставить комментарий, пожалуйста, войдите на сайт.
его можно создать где угодно)
и использовать как фрог?
Отредактирован quq_CCCP
Поэтому там где используются локальные триггеры которые будут удалены нужно удалять и triggeraction и triggercondition а для этого их нужно куда то сохранить, много городушек и лишних действий, посему там где можно не юзать триггеры лучше их не юзать.
Отредактирован quq_CCCP
Ивенты триггера тоже никуда не деются, пока есть связанный с ними обьект.
Отредактирован Кет
для тех кто в танке ниже пример кода айсфрога
returns nothing?
что она делает и как ее вызывать для удаления condition?
quq_CCCP, пожалуйста можешь обьяснить про правильную удаления триггера и Евента?
quq_CCCP, и показать простой пример
Отредактирован Кет
Кет, правильное удаление триггера и евент
Отредактирован Кет