вообщем функция работает отлично, но некоторые люди говорят,
что 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 а для этого их нужно куда то сохранить, много городушек и лишних действий, посему там где можно не юзать триггеры лучше их не юзать.
`
ОЖИДАНИЕ РЕКЛАМЫ...
Чтобы оставить комментарий, пожалуйста, войдите на сайт.
Кет, boolexpr действительно создает хэндл, но временно и сразу же сам очишает...
Ред. Кет
Таймером можно проверять хп кастера, если хп менье 0.405 то кастер сдох...
Триггеры на манеру Ледяной Лягухи не лучшее решение....