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

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

Закрытая тема
 
truth troll
Silenced by truth troll
offline
Опыт: 7,396
Активность:
Отлов атаки
Здарова всем. Я делал спелл по принципу "стремительности" у Мастера Клинка, т.е. при использовании спелла герой исчезает на время и если он атакует в этот момент то врага оглушает. Сам спелл сделать у меня получилось, но я заметил один баг: Когда герой начинает атаковать и сразу отменяет это действие, то триггер всё равно срабатывает. Я понял это из-за события "юнит- атакован"... В "Барахолке" есть множество систем по отлову урона и они могут мне помочь. Но есть трудность и она в том, что в коде авторов можно сломать ногу...
Так вот объясните по какому принципу работают такие системы. Мне в частности необходимо чтобы атакующий и атакованный юниты были занесены в глобалки...

Зарание благодарю...
Старый 02.08.2009, 13:56
bee
vjass.optimizer
offline
Опыт: 16,615
Активность:
<атакующий> == GetAttackingUnit()
<аттакованный> == GetTriggerUnit()
надо заносить всех воинов (кроме dummy юнитов) в глобальную группу, при их смерти убирать их оттуда. создать триггер и поставить там событие "а unit enters region" и поствить там GetMapArea чето такое... вот и добавлять их в группу и давать им событие получает урон.
Старый 02.08.2009, 14:10
truth troll
Silenced by truth troll
offline
Опыт: 7,396
Активность:
Bee, Если не сложно примерчик...
Старый 02.08.2009, 14:21
Uk_gruby

offline
Опыт: 6,948
Активность:
Bee, Лол
ПРоще юнит атакует условие атакованный юнит получил демаг = да то убирать инвиз все решение
Старый 02.08.2009, 14:34
ToChilo
■□□□□
offline
Опыт: 356
Активность:
Код:
function trigger01_Func00 takes nothing returns nothing
    local unit u1 = GetEventDamageSource() // атакующий
    local unit u2 = GetTriggerUnit()       // атакованный
    
    // твои действия
    
    call DestroyTrigger(GetTriggeringTrigger())
    set u1 = null
    set u2 = null
endfunction

function trigger01_Actions takes nothing returns nothing
    local trigger trg = CreateTrigger()
    
    call TriggerRegisterUnitEvent( trg, GetTriggerUnit(), EVENT_UNIT_DAMAGED )
    call TriggerAddAction( trg, function trigger01_Func00 )
    
    set trg = null
endfunction

function InitTrig_trigger01 takes nothing returns nothing
   set gg_trg_trigger01 = CreateTrigger()
   call TriggerRegisterAnyUnitEventBJ( gg_trg_trigger01, EVENT_PLAYER_UNIT_ATTACKED )
   call TriggerAddAction( gg_trg_trigger01, function trigger01_Actions )
endfunction

думаю тебе подойдет этот код
смыс в том что при отлове атаки создаеться тригер с отловам нанесённого урона на атакованого юнита
Старый 02.08.2009, 15:12
SRes
1110101000
offline
Опыт: 9,997
Активность:
Но тут главное не создавать по несколько на одного юнита, делай группу, в которую заноситься юнит с уже созданным триггером отлова дмг по нему. Когда юнит умирает - убирай его из группы. А перед созданием нового триггера - проверяй, есть ли юнит в группе.
Старый 02.08.2009, 15:40
truth troll
Silenced by truth troll
offline
Опыт: 7,396
Активность:
Всем большое спасибо...
Старый 03.08.2009, 15:43
Закрытая тема

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

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

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

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



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