вообщем функция работает отлично, но некоторые люди говорят,
что 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 то кастер сдох...
Триггеры на манеру Ледяной Лягухи не лучшее решение....
удалять не надо так как он хэшируется он то ещё дно
простой просмотр его кода доказывает это
а если учесть что почти весь его код переписывали потом другие люди чтобы не было утечек то он глубокое дно
триггеры тут нафиг не нужны
если же твоя цель написать как можно более дебильный код то добавь перед каждой строчкой
if(true!=false and true==true and false==false)
не стоит забывать что фрог работал над дотой не 1
его можно создать где угодно)
и использовать как фрог?
Отредактирован quq_CCCP
Поэтому там где используются локальные триггеры которые будут удалены нужно удалять и triggeraction и triggercondition а для этого их нужно куда то сохранить, много городушек и лишних действий, посему там где можно не юзать триггеры лучше их не юзать.
Отредактирован quq_CCCP
Ивенты триггера тоже никуда не деются, пока есть связанный с ними обьект.
Отредактирован Кет
для тех кто в танке ниже пример кода айсфрога
returns nothing?
что она делает и как ее вызывать для удаления condition?
quq_CCCP, пожалуйста можешь обьяснить про правильную удаления триггера и Евента?
quq_CCCP, и показать простой пример
Отредактирован Кет
Кет, правильное удаление триггера и евент
Отредактирован Кет
его не нужно удалять (да и не возможно)