Добавлен wetalq
Пытался реализовать функцию стана в одну строчку на одной способности и получил интереснный результат. Если ставлю дленительность больше секунды - все ок, если ставлю меньше секунды - стана нет.
globals
integer STUN_ID = 'stun'
integer DUMMY_ID = 'dumy'
endglobals
function StunUnit takes unit Target, real stunDuration returns nothing
local unit dummy = CreateUnit(Player(PLAYER_NEUTRAL_PASSIVE),DUMMY_ID,GetUnitX(Target),GetUnitY(Target),0)
local ability a = BlzGetUnitAbility(dummy, STUN_ID)
call UnitAddAbility(dummy,STUN_ID)
call BlzSetAbilityRealLevelField(a , ABILITY_RLF_DURATION_NORMAL, 0, stunDuration)
call BlzSetAbilityRealLevelField(a , ABILITY_RLF_DURATION_HERO, 0, stunDuration)
call UnitApplyTimedLife(dummy, 'BTLF', stunDuration)
call IssueTargetOrder(dummy, "creepthunderbolt", Target)
set dummy = null
endfunction
Принятый ответ
Ух я починил, теперь всё чётко работает
раскрыть
stuneff="Abilities\\Spells\\Human\\Thunderclap\\ThunderclapTarget"
StunSystem={}
function StunUnit(hero,dur)
if not StunSystem[GetHandleId(hero)] then
-- print("оглушен первый раз")
StunSystem[GetHandleId(hero)]={
Time=0,
Eff=nil,
Timer=nil
}
end
local data=StunSystem[GetHandleId(hero)]
local curdur=0
if data.Time==0 then
data.Timer=CreateTimer()
--print("старт нового таймера")
data.Eff=AddSpecialEffectTarget(stuneff,hero,"overhead")
BlzPauseUnitEx(hero,true)
end
if data.Time<dur then
--print("Более сильное оглушение, обновляем время")
data.Time=dur
else
--print("Есть более долгое оглушение")
return
end
TimerStart(data.Timer, 0.1, true, function()
curdur=curdur+0.1
data.Time=data.Time-0.1
--print(data.Time)
if curdur>=dur then
--print("Вышел из стана")
BlzPauseUnitEx(hero,false)
--BlzPauseUnitEx(hero,false)
DestroyTimer(GetExpiredTimer())
data.Time=0
DestroyEffect(data.Eff)
data.Timer=nil
end
end)
end
wetalq, просто я делал уже такой даммистан и это не очень, на последнем патче стоит двигаться дальше, и как раз таки даммистан это велосипед
`
ОЖИДАНИЕ РЕКЛАМЫ...
Чтобы оставить комментарий, пожалуйста, войдите на сайт.
Отредактирован Ельнур
Отредактирован Ельнур
а если стан имеет больше count то есть 10 сек то накладывать слабый стан бесполезен