Добавлен N1ghtSiren
После одного-двух срабатываний, таймер udg_t паузится насовсем, и ...
...
...и всё
...
...и всё
function t3a takes nothing returns nothing
if udg_r < 3.0 then
set udg_r = udg_r + 0.5
call BJDebugMsg(R2S(udg_r)+" = udg_r")
else
call PauseTimer(udg_t)
call BJDebugMsg("Reflect Ready & Timer Paused")
endif
endfunction
function t2a takes nothing returns nothing
local unit u = GetEventDamageSource()
local real r = GetEventDamage()
call BJDebugMsg(GetUnitName(u)+" = Attacker")
call BJDebugMsg(R2S(r)+" = Damage")
if udg_r >= 3.0 then
call DestroyEffect(AddSpecialEffectTarget("Abilities\\Spells\\Human\\ThunderClap\\ThunderClapCaster.mdl",u,"origin"))
call UnitDamageTarget(gg_unit_H000_0000,u,r*5,false, false, ATTACK_TYPE_CHAOS, DAMAGE_TYPE_UNIVERSAL, WEAPON_TYPE_WHOKNOWS)
call BJDebugMsg("Reflected:"+R2S(r*5))
call ResumeTimer(udg_t)
set udg_r = 0
endif
set u = null
set r = 0
endfunction
//===========================================================================
function InitTrig_t2 takes nothing returns nothing
local unit u = gg_unit_H000_0000
set gg_trg_t2 = CreateTrigger()
call TriggerRegisterUnitEvent(gg_trg_t2,u,EVENT_UNIT_DAMAGED)
call TimerStart(udg_t,0.5,true,function t3a)
call TriggerAddAction( gg_trg_t2, function t2a )
endfunction
Проблема в паузе/анпаузе таймера, в логических условиях всё (вроде) верно, но стопается на одном и том же месте.
Могу приложить карту.
Принятый ответ
PT153:
Вспомнил про один баг. Есть сделать PauseTimer() на периодический таймер, а потом на этой таймер использовать ResumeTimer(), то таймер повторит свой цикл лишь раз, а потом остановится.
сам не пользуюсь ResumeTimer, но щас проверил, действительно не работает что-то. Видимо, это работает только тогда, когда таймер не до конца дошел.
можно обойтись и без ResumeTimer
понимаю, ты хочешь сделать какое-то ограничение после возвращения урона. Спустя 3 секунды возвратка может снова возвращать урон.
можно обойтись и без ResumeTimer
понимаю, ты хочешь сделать какое-то ограничение после возвращения урона. Спустя 3 секунды возвратка может снова возвращать урон.
Можно было сделать по-другому.
Еще не понимаю, зачем нам нужен периодический таймер.
- можем логическую переменную b завести и таймер t
- нанес противник урон = проверяем логическую переменную, если истина, запускаем одноразовый таймер, и ставим ложь в логической переменной = false
if b then
call DestroyEffect(AddSpecialEffectTarget("Abilities\\Spells\\Human\\ThunderClap\\ThunderClapCaster.?mdl",u,"origin"))
call UnitDamageTarget(udg_u,u,r*5,false, false, ATTACK_TYPE_CHAOS, DAMAGE_TYPE_UNIVERSAL, WEAPON_TYPE_WHOKNOWS)
call BJDebugMsg("Reflected:"+R2S(r*5))
call TimerStart(udg_t,0.5,false,function t3a)
set b = false
endif
- когда таймер запустится
function t3a takes nothing returns nothing
call PauseTimer(udg_t)
set b = true
endfunction
думаю все что надо это call ResumeTimer() заменить на call TimerStart()
`
ОЖИДАНИЕ РЕКЛАМЫ...
Чтобы оставить комментарий, пожалуйста, войдите на сайт.
Отредактирован Hodor
Тем более что период у таймера 0.5, а это значит нагрузки ваще 0
Отредактирован MpW
можно обойтись и без ResumeTimer
понимаю, ты хочешь сделать какое-то ограничение после возвращения урона. Спустя 3 секунды возвратка может снова возвращать урон.