Пытаюсь сделать комбинацию для разбойника: одна абилка даёт комбо-очки, другая за эти комбо-очки наносит урон.
Так как мне исключительно впадлу ждать время каста за рогу, я поставил ему нулевой каст-тайм в "Канале", следовательно, абилку он применяет мнгновенно, но очень грустно то, что spell_cast регистрирует применение абилки до её применения, т.е.:
Так как мне исключительно впадлу ждать время каста за рогу, я поставил ему нулевой каст-тайм в "Канале", следовательно, абилку он применяет мнгновенно, но очень грустно то, что spell_cast регистрирует применение абилки до её применения, т.е.:
У юнита 100хп, абилка наносит 200 урона => юнит умирает мнгновенно => цели для абилки нет => мана не тратится, абилка в кд не уходит. Я потихоньку полез в 2к19 изучать мемхак, т.к. наконец-то нашёл для этого время. Нашёл там AddAbilityCooldownConverted(a, r), решил кинуть хоть через код кулдаун. Но почему-то вар фаталит. Собственно, вопрос комплексный: почему вар фаталит, и чем детектить каст, чтобы он не фаталил?
код
function Trig_Eviscerate_Conditions takes nothing returns boolean
if ( not ( GetSpellAbilityId() == 'A00J' ) ) then
return false
endif
return true
endfunction
function Trig_Eviscerate_Actions takes nothing returns nothing
call UnitDamageTargetBJ( GetSpellAbilityUnit(), GetSpellTargetUnit(), ( I2R(udg_ComboPoints) * ( 3.00 + ( 2.00 * I2R(GetUnitAbilityLevelSwapped('A00J', GetSpellAbilityUnit())) ) ) ), ATTACK_TYPE_NORMAL, DAMAGE_TYPE_NORMAL )
call AddAbilityCooldownConverted('A00J', 10)
set udg_ComboPoints = ( udg_ComboPoints + ( GetUnitAbilityLevelSwapped('A00I', GetSpellAbilityUnit()) * 10 ) )
endfunction
function InitTrig_Eviscerate takes nothing returns nothing
set gg_trg_Eviscerate = CreateTrigger( )
call TriggerRegisterAnyUnitEventBJ( gg_trg_Eviscerate, EVENT_PLAYER_UNIT_SPELL_CAST )
call TriggerAddCondition( gg_trg_Eviscerate, Condition( function Trig_Eviscerate_Conditions ) )
call TriggerAddAction( gg_trg_Eviscerate, function Trig_Eviscerate_Actions )
endfunction
Принятый ответ
этот ивент отслеживает сам факт каста, а не его завершение
используйте EVENT_PLAYER_UNIT_SPELL_EFFECT
используйте EVENT_PLAYER_UNIT_SPELL_EFFECT
`
ОЖИДАНИЕ РЕКЛАМЫ...
Чтобы оставить комментарий, пожалуйста, войдите на сайт.
используйте EVENT_PLAYER_UNIT_SPELL_EFFECT
Отредактирован Naadir
тогда дамаг будет наносится после каста и необходимости в задании кд не будет
EVENT_PLAYER_UNIT_SPELL_EFFECT
Отредактирован Naadir
EVENT_PLAYER_UNIT_SPELL_EFFECT не помог. Но сейчас протестирую ещё раз.
на каст спела есть 4 или 5 событий
ты используешь не правильное
EVENT_PLAYER_UNIT_SPELL_EFFECT
EVENT_PLAYER_UNIT_SPELL_FINISH
попробуй эти события
Отредактирован Naadir