XGM Forum
Сайт - Статьи - Проекты - Ресурсы - Блоги

Форуме в режиме ТОЛЬКО ЧТЕНИЕ. Вы можете задать вопросы в Q/A на сайте, либо создать свой проект или ресурс.
Вернуться   XGM Forum > Warcraft> Академия: форум для вопросов
Ник
Пароль
Войти через VK в один клик
Сайт использует только имя.

Ответ
 
aprotos
Йа тигрЪ!
offline
Опыт: 2,222
Активность:
Две абилки
я тут в свободное время сообразил две абилки. Первую я назвал "Прыжок тигра". Смысл такой - герой (в моем случае мастер клинка) прыгает в указанную точку и наносит всем врагам в этой области урон. Сделать я ее сделал, но работает она коряво - герой двигается не В точку, куда направлен спелл, а В НАПРАВЛЕНИИ этой точки, да вдобавок еще и дергается, когда летит. Может, вы поможете мне довести ее до ума, чтобы герой двигался более плавно и приземлялся там, где надо.
Карта прилагается.
Вторая абилка - "Удар в спину" - герой кидает во врага копье, когда копье долетает, идет проверка, стоит ли враг к герою спиной, если да, то наносит доп. урон. Но мне кажется, что сам код абилки несовершенен - возможен абуз типа - покупаем даггер, пока копье летит, делаем блинк врагу за спину.
Вот сам код
function Trig_Backstab_Conditions takes nothing returns boolean
    if ( not ( GetSpellAbilityId() == 'A045' ) ) then
        return false
    endif
    return true
endfunction

function Trig_Backstab_Func001C takes nothing returns boolean
    if ( not ( RAbsBJ(( GetUnitFacing(GetSpellTargetUnit()) - GetUnitFacing(GetSpellAbilityUnit()) )) <= 105.00 ) ) then
        return false
    endif
    return true
endfunction

function Trig_Backstab_Actions takes nothing returns nothing
        local unit u1=GetSpellTargetUnit()
        local unit u2=GetSpellAbilityUnit()
        local location x=GetUnitLoc(GetSpellTargetUnit())
        local location y=GetUnitLoc(GetSpellAbilityUnit())
        local effect e
    if ( Trig_Backstab_Func001C() ) then
        call PolledWait( ( DistanceBetweenPoints( y , x )) / 950.00 ) 
        call UnitDamageTargetBJ( u2 , u1 , ( 100.00 + ( 75.00 * I2R(GetUnitAbilityLevelSwapped('A045', u2 )) ) ), ATTACK_TYPE_NORMAL, DAMAGE_TYPE_NORMAL )
        call AddSpecialEffectTargetUnitBJ( "chest", u1 , "Abilities\\Spells\\Other\\Stampede\\StampedeMissileDeath.mdl" )
        set e = GetLastCreatedEffectBJ()
        call DestroyEffectBJ( e )
        call RemoveLocation ( x )
        call RemoveLocation ( y )
        set e = null
        set x = null
        set y = null
        set u1 = null
        set u2 = null
    else
    endif
endfunction

//===========================================================================
function InitTrig_Backstab takes nothing returns nothing
    set gg_trg_Backstab = CreateTrigger(  )
    call TriggerRegisterAnyUnitEventBJ( gg_trg_Backstab, EVENT_PLAYER_UNIT_SPELL_EFFECT )
    call TriggerAddCondition( gg_trg_Backstab, Condition( function Trig_Backstab_Conditions ) )
    call TriggerAddAction( gg_trg_Backstab, function Trig_Backstab_Actions )
endfunction
Прикрепленные файлы
Тип файла: w3x TigerClaw.w3x (15.6 Кбайт, 11 просмотров )
Старый 28.09.2009, 22:30
Ответ

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы можете скачивать файлы

BB-коды Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход



Часовой пояс GMT +3, время: 15:47.