Добавлен
При создании полностью кастомного фаерболла есть одна загвоздка - когда я направляю заклинание, способность амулета защиты от магии прокает, но мой снаряд все равно появляется, летит к цели и дамажит. Если же кастануть за сек. до перезарядки амулета, чтобы он успел откатиться до попадания фаерболла в цель, огнешар все равно дамажит а амулет ни гу-гу.
Собсно что мучает - как извратиться так, чтобы амулет работал нормально?
Мне думается, что не наносить урон, пока снаряд не подлетит к цели, а следом дамми кастер не повесит оглушение, и если бафф оглушалки прокнет - наносить урон, но опять же амулет уже будет снят кастом абилки у героя. И плюс придется лепить кучу баффов оглушения.

Принятый ответ

проверка на бафф. спасибо всем
`
ОЖИДАНИЕ РЕКЛАМЫ...

Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
0
32
9 лет назад
0
Кароче при касте скилла добавляй событие на урон от кастера по цели, если цель получила 0.00 урона и у неё есть бафф способности, то значит снаряд попал, если нет то снаряд не попал в цель.
вот простенький пример такой системы:
код
scope DummyMissile

    struct DMD
        trigger trg
        triggercondition trc
        triggeraction tra
        triggeraction extra
        unit cast
        unit targ
        integer id
        timer trix
        boolean del
            
        method FlushData takes nothing returns nothing
            call DisableTrigger( .trg )
            call TriggerRemoveCondition( .trg, .trc )
            call TriggerRemoveAction( .trg, .tra )
            call TriggerRemoveAction( .trg, .extra )
            call TriggerClearActions( .trg )
            call TriggerClearConditions( .trg )
            call RemoveDataBX( .trg )
            call RemoveDataBX( .trix )
            call DestroyTrigger( .trg )
            call DestroyTimer( .trix )

            set this.trg = null
            set this.trc = null
            set this.tra = null
            set this.extra = null
            set this.cast = null
            set this.targ = null
            set this.trix = null
            set this.id = 0
            set this.del = false
        endmethod
    endstruct

    function IsTargetHasBuff takes nothing returns boolean
        local DMD st = GetDataBX( GetTriggeringTrigger( ) )
        return GetEventDamage( ) == 0.00 and GetUnitAbilityLevel( st.targ, st.id ) > 0 and GetEventDamageSource( ) == st.cast and GetEventDamageSource( ) != DummyAttacker
    endfunction

    function Destroy_DMD takes nothing returns nothing
        local DMD st = GetDataBX( GetExpiredTimer( ) )
        call st.FlushData( )
        call st.destroy( )
    endfunction
    
    function RemoveDMDBuff takes nothing returns nothing
        local DMD st = GetDataBX( GetTriggeringTrigger( ) )
        if st.del then
            call UnitRemoveAbility( st.targ, st.id )
        endif
        call PauseTimer( st.trix )
        call DisableTrigger( st.trg )
        call TimerStart( st.trix, 0.00, false, function Destroy_DMD )
        return
    endfunction
    
    function DummyMissile takes unit target, unit caster, integer buffid, real time, boolean del, code actions returns nothing
        local DMD st = DMD.create( )
        set st.cast = caster
        set st.targ = target
        set st.id = buffid
        set st.del = del
        set st.trix = CreateTimer( )
        set st.trg = CreateTrigger( )
        set st.trc = TriggerAddCondition( st.trg, Condition( function IsTargetHasBuff ) )
        set st.tra = TriggerAddAction( st.trg, actions )
        set st.extra = TriggerAddAction( st.trg, function RemoveDMDBuff )
        call TriggerRegisterUnitEvent( st.trg, target, EVENT_UNIT_DAMAGED )
        call TimerStart( st.trix, time, false, function Destroy_DMD )
        call SetDataBX( st.trg, st )
        call SetDataBX( st.trix, st )
    endfunction
endscope
0
29
9 лет назад
0
call SetDataBX( st.trg, st )
call SetDataBX( st.trix, st )
а это что? смысла выкладывать не полный код?
0
32
9 лет назад
0
Эмм пример, не думаю что автор будет юзать jass.
Систему можно найти тут XATtach
0
20
9 лет назад
0
quq_CCCP:
проверка на бафф в итоге. хорошо
2
32
9 лет назад
2
ssbbssc:
quq_CCCP:
проверка на бафф в итоге. хорошо
Ну разумеется, абилку делаешь на основе аксид бомбы, бафф любойб на него и проверяешь, там бафф тут же удаляется после проверки, с такой системой небудут багатся всякие линки и прочие скиллы позволяющие уворачиваться от заклинаний и или снарядов. Тк. бафф один и негде более не юзается кроме как для отслеживания ничего не будет багатся.
0
20
9 лет назад
0
проверка на бафф. спасибо всем
Принятый ответ
Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.