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

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

Ответ
 
Gold D Dragon

offline
Опыт: 904
Активность:
кулдаун спела триггерами.
  1. Можно ли это сделать?
  2. В доте после смерти кулдаун ультры сохраняемый...
  3. В общем это нужно для такого спела... Возможно и можно это сделать проще. Спел - контр заклинание, блокирует любую следующую способность врага и наносит урон. В коде я убираю применённый скил у кастера.
» код
unction Trig_contrspell_Conditions takes nothing returns boolean
    if ( not ( GetSpellAbilityId() == 'A001' ) ) then
        return false
    endif
    return true
endfunction

function endcontr takes nothing returns nothing
    local integer i = 0
    loop
        exitwhen udg_contr_timer[i] == GetExpiredTimer()
        set i = i + 2
    endloop
    call DestroyTimer(udg_contr_timer[i])
    set udg_contr_timer[i] = null
    call TriggerClearActions(udg_contr_trig[i])
    call DestroyTrigger(udg_contr_trig[i])
    set udg_contr_trig[i] = null
    set udg_contr_unit[i] = null
    set udg_contr_unit[i+1] = null
endfunction

function nextnospell takes nothing returns nothing
    local integer i = 0
    loop
        exitwhen udg_contr_timer[i] == GetExpiredTimer()
        set i = i + 2
    endloop
    if udg_contr_ability_level[i] > 0 then
        call UnitAddAbility(udg_contr_unit[i], udg_contr_ability[i])
        call SetUnitAbilityLevel(udg_contr_unit[i], udg_contr_ability[i], udg_contr_ability_level[i])
        call UnitRemoveBuffs(udg_contr_unit[i], true, false)
    endif
    call DestroyTimer(udg_contr_timer[i])
    set udg_contr_timer[i] = null
    set udg_contr_unit[i] = null
    set udg_contr_unit[i+1] = null
    call TriggerClearActions(udg_contr_trig[i])
    call DestroyTrigger(udg_contr_trig[i])
    set udg_contr_trig[i] = null
endfunction

function nospell takes nothing returns nothing
    local integer i = 0
    loop
        exitwhen udg_contr_trig[i] == GetTriggeringTrigger()
        set i = i + 2
    endloop
    if GetUnitAbilityLevel(udg_contr_unit[i], 'B000') > 0 then
        set udg_contr_ability[i] = GetSpellAbilityId()
        set udg_contr_ability_level[i] = GetUnitAbilityLevel(udg_contr_unit[i], udg_contr_ability[i])
        call UnitRemoveAbility(udg_contr_unit[i], 'B000')
        call IssueImmediateOrder(udg_contr_unit[i], "stop")
        call UnitRemoveAbility(udg_contr_unit[i], udg_contr_ability[i])
        call AddSpecialEffectTarget("Abilities\\Spells\\Undead\\FrostNova\\FrostNovaTarget.mdl", udg_contr_unit[i], "origin")
        call UnitDamageTarget(udg_contr_unit[i+1], udg_contr_unit[i], udg_contr_damage[i], true, false, ATTACK_TYPE_CHAOS, DAMAGE_TYPE_MAGIC, WEAPON_TYPE_WHOKNOWS)
    endif
    call PauseTimer(udg_contr_timer[i])
    call TimerStart(udg_contr_timer[i], 5, false, function nextnospell)
endfunction

function Trig_contrspell_Actions takes nothing returns nothing
    local integer i = 0
    local unit caster = GetSpellAbilityUnit()
    local integer abi = GetUnitAbilityLevel(caster, 'A001')
    local unit u = GetSpellTargetUnit()
    if GetUnitAbilityLevel(u, 'B000') == 0 then
        loop
            exitwhen udg_contr_trig[i] == null
            set i = i + 2
        endloop
        set udg_contr_trig[i] = CreateTrigger(  )
        call TriggerRegisterUnitEvent(udg_contr_trig[i], u, EVENT_UNIT_SPELL_EFFECT)
        call TriggerAddAction(udg_contr_trig[i], function nospell)
        set udg_contr_timer[i] = CreateTimer()
        call TimerStart(udg_contr_timer[i], (5 * abi), false, function endcontr)
        set udg_contr_unit[i] = u
        set udg_contr_unit[i+1] = caster
        set udg_contr_damage[i] = 150 * abi - 50
    endif
    set caster = null
    set u = null
endfunction

//===========================================================================
function InitTrig_contrspell takes nothing returns nothing
    set gg_trg_contrspell = CreateTrigger(  )
    call TriggerRegisterAnyUnitEventBJ( gg_trg_contrspell, EVENT_PLAYER_UNIT_SPELL_EFFECT )
    call TriggerAddCondition( gg_trg_contrspell, Condition( function Trig_contrspell_Conditions ) )
    call TriggerAddAction( gg_trg_contrspell, function Trig_contrspell_Actions )
endfunction
Gold D Dragon добавил:
  1. И еще как отловить авто применение "ледяные стрелы" и тому подобное.
Старый 02.01.2010, 00:39
YellowStar
poon
offline
Опыт: 15,144
Активность:
  1. Героя при воскрешении кулдауны не сбрасывает вроде.
  2. Отлов ордера (про автокаст)
Старый 02.01.2010, 12:26
DioD

offline
Опыт: 45,134
Активность:
  1. На 124 версии запустить кулдаун способом отличным от применения способности не возможно.
ни рунами, ни теневыми абилками, ни каналом ни спеллбуком.
  1. На заборе тоже много чего написано
  1. Молодец
  1. Юнит получил урон, на юните есть баф стрел, удалить баф, сделать что надо.
Старый 02.01.2010, 14:14
Gold D Dragon

offline
Опыт: 904
Активность:
narayan:
Героя при воскрешении кулдауны не сбрасывает вроде.
Отлов ордера (про автокаст)
DioD:
  1. На 124 версии запустить кулдаун способом отличным от применения способности не возможно.
ни рунами, ни теневыми абилками, ни каналом ни спеллбуком.
  1. На заборе тоже много чего написано
  1. Молодец
  1. Юнит получил урон, на юните есть баф стрел, удалить баф, сделать что надо.
Понятно полноценным контр заклинание не будет... А для отлова авто-каста мне походу надо делать 2 триггер.=\.
Gold D Dragon добавил:
Спс тем кто отписал тему можно закрывать...
Старый 02.01.2010, 16:26
Ответ

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

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

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

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



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