Попробовал переделать триггер под перемещение юнита
function Move takes nothing returns nothing
local timer t = GetExpiredTimer()
local integer h = GetHandleId(t)
local unit caster = LoadUnitHandle(udg_hash,h,1)
local integer counter = LoadInteger(udg_hash,h,2)
if counter>0 then
call SetUnitFacingToFaceLocTimed(caster, GetSpellTargetLoc(),0)
call SetUnitPositionLoc(caster,PolarProjectionBJ(GetUnitLoc(caster),40.00,0))
call SaveInteger(udg_hash,h,2,counter-1)
else
call DestroyTimer(t)
call FlushChildHashtable(udg_hash,h)
endif
set caster = null
set t = null
endfunction
function Dash takes nothing returns nothing
local unit caster = GetSpellAbilityUnit()
local timer t = CreateTimer()
local integer h = GetHandleId(t)
call SaveUnitHandle(udg_hash,h,1,caster)
call SaveInteger(udg_hash,h,2,125)
call TimerStart(t,0.04,true, function Move)
set caster = null
set t = null
endfunction
function SpellCond takes nothing returns boolean
return GetSpellAbilityId()=='AEbl'
endfunction
//===========================================================================
function InitTrig_Dash takes nothing returns nothing
set gg_trg_Dash = CreateTrigger( )
call TriggerRegisterAnyUnitEventBJ( gg_trg_Dash, EVENT_PLAYER_UNIT_SPELL_EFFECT )
call TriggerAddCondition( gg_trg_Dash,Condition(function SpellCond))
call TriggerAddAction( gg_trg_Dash, function Dash )
set udg_hash = InitHashtable()
endfunction
И не могу понять, где ошибка (я нубло), если убрать элемент если/тогда/инчае функции Move, и без подсчета целочисленной, то юнит двигается, но бесконечно, пока не упрется в край карты. Подскажите, что здесь нужно исправить?
» WarCraft 3 / Hashtable - работаем с хеш-таблицей
» WarCraft 3 / Hashtable - работаем с хеш-таблицей