Создал способность на основе Волшебного Огня/Замедления. Триггер отлавливает момент применения данной способности, а дальше всё как обычно. Но с жертвы нужно снять бафф, но бафф почему то хочет удаляться. Почему так происходит? Впервые такое вижу.
struct ensnare


    static  unit  caster  =  null
    static  unit  target  =  null


    public static method onUnitSpellEffect takes nothing returns nothing
        if ( GetSpellAbilityId() == 'A005' ) then
            set  thistype.caster  =  GetSpellAbilityUnit( )
            set  thistype.target  =  GetSpellTargetUnit( )

            call CastAbilityTargetUnit( GetOwningPlayer( thistype.caster ), GetUnitX( thistype.caster ), GetUnitY( thistype.caster ), GetUnitFlyHeight( thistype.caster ), 'A004', GetUnitAbilityLevel( thistype.caster, GetSpellAbilityId( ) ), OrderId( "ensnare" ), thistype.target, true )
            call UnitRemoveAbility( thistype.target, 'Bfae' )
        endif
    endmethod


    public static method onInit takes nothing returns nothing
        call RegisterAnyUnitEvent( EVENT_PLAYER_UNIT_SPELL_EFFECT, function thistype.onUnitSpellEffect )
    endmethod


endstruct

В момент получения урона бафф есть? Скиллы всегда наносят урон (равный нулю, если не указано иное)
`
ОЖИДАНИЕ РЕКЛАМЫ...

Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
21
Насколько я понял, в момент срабатывания триггера, на жертве еще не висит бафф, но почему, там же нет снаряда ( способность применяется сразу же).
26
ScopteRectuS, да баффы от заклинания вешаются через 0,01 секунду после применения. А баффы от оружия висят до момента нанесения урона.
26
в момент каста чекни наличие баффа
если его нет - значит его нет, и ты не сможешь удалять его в этот момент... логично?
либо жди 0.00 сек по таймеру да-да, заморачивайся
либо просто дай скиллу 0.01 сек длительности что на много проще
но всё же не проффитно, т.к. это целых 0.01 сек действия эффекта... или пофиг?
20
В момент получения урона бафф есть? Скиллы всегда наносят урон (равный нулю, если не указано иное)
Принятый ответ
22
Собыьия:
юнит получает урон
Условия:
урон равен 0
являет ли баф замедление
Действия:
удалить баф и шамани что зотите
а не надо проверять при каста
А чтобы определить чей владелец бафа то заносим в массив очереди владельца бафа и потом уже лови урон 0 и берем из массива начальный если есть то его владелец и удаляем чтобы сократить массив для MUI
21
8gabriel8, не знал, что скиллы накладывают бафф не сразу.

либо просто дай скиллу 0.01 сек длительности что на много проще
но всё же не проффитно, т.к. это целых 0.01 сек действия эффекта... или пофиг?
На деле на юните бафф даже не успевает появится, но, да действительно, 0.01 непозволительно для меня. Хз почему, я даже выставляю боевой единице урон, скорость атаки и т.д. на 0, даже если выключу атаку:

Diaboliko, да, именно так я понял, что бафф не успевает наложится. Придётся делать через отлов урона.

pro100master, зачем какой-то массив, если источник урона GetEventDamageSource( ) и есть тот, кто наложил бафф?
Загруженные файлы
22
ScopteRectuS, ну точно забыл о ней =) Всегда проверяй урон равен 0 значит это способности бафа
21
pro100master, да и проверять урон незачем, ведь если бафф есть, то это он и нанёс урон. Ведь бафф будет тут же удалён.
Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.