Добавлен Farrien
function AzibD_Check takes nothing returns boolean
return GetSpellAbilityId() == 'A056'
endfunction
function AzibD_Action takes nothing returns nothing
local integer val=LoadInteger(udg_MyHashtable, StringHash("Azib_Move"), 0)
local unit tu=LoadUnitHandle(udg_MyHashtable, StringHash("Azib"), StringHash("Hero"))
local location p
local real a
if val > 0 then
set p = GetUnitLoc(tu)
set a = GetUnitFacing(tu) //AngleBetweenPoints(p, p)
call MoveLocation(p, GetLocationX(p) + 32 * CosBJ(a), GetLocationY(p) + 32 * SinBJ(a))
call SetUnitPositionLoc(tu, p)
call RemoveLocation(p)
call SetInteger(val-1, StringHash("AZID_Move"), 0)
endif
if val==0 then
call SaveUnitHandle(udg_MyHashtable, 0, 0, null)
call DisableTrigger(GetTriggeringTrigger())
endif
endfunction
function AzibD_Spell takes nothing returns nothing
local trigger obt=CreateTrigger()
call SetInteger(25, StringHash("Azib_Move"), 0)
call SetUnit(GetTriggerUnit(), StringHash("Azib"), StringHash("Hero"))
call TriggerRegisterTimerEvent(obt, 0.04, true)
call TriggerAddAction(obt, function AzibD_Action)
endfunction
//===========================================================================
function InitTrig_AzibD takes nothing returns nothing
local trigger mjt = CreateTrigger( )
call TriggerRegisterAnyUnitEventBJ( mjt, EVENT_PLAYER_UNIT_SPELL_EFFECT )
call TriggerAddCondition( mjt, Condition( function AzibD_Check ) )
call TriggerAddAction( mjt, function AzibD_Spell )
endfunction
почему не работает?
по идее он должен выключится когда пройдут заряды.
по идее он должен выключится когда пройдут заряды.
Принятый ответ
В базе есть статья об этом?перебор 1 таймером стека быстрее чем хэш в 3n раз где n - количество одновременно работающих триггеров
Чтобы оставить комментарий, пожалуйста, войдите на сайт.
что дебаг показал?
не оптимален
ибо на локейшинах, триггерах и хеше
Kolya12: за идиота меня считаешь?
nvc123: а что еще юзает. один из самых безутечных способов
Farrien:
триггер утекает
во вторых
координаты работают в несколько раз быстрее локейшенов
в третьих
перебор 1 таймером стека быстрее чем хэш в 3n раз где n - количество одновременно работающих триггеров
но тут достаточно и 1 пункта
тоесть у тебя утечка
причём не маленькая точка а реально большой объект
запомни
все движения юзаются по принципу ткс
таймер координаты список
либо на форуме