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

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

Закрытая тема
 
FEARSTARTER
desert eagle
offline
Опыт: 19,364
Активность:
Отлов юнитов при нанесении урона
Привет всем!

У меня большая просьба к джазерам помочь мне с тригерами. Щас объясню что мне нужно. Короче в карте которую я давно делаю будет и уже есть много нестандартных тригерных способностей, у меня много идей, но для реализации многих из них мне не хватает одного и товоже. Я не знаю как отловить при событии нанесения урона юниту, того юнита который наносит урон.

Собственно, что мне нужно: Я бы очень бы был благодарен еслиб реализовали тригер который бы при событии нанесения урона отлавливал двух юнитов - получающего урон и юнита который наносит урон. И если это возможно, то еще просьба сделать чтобы записать этих двух юнитов в глобалки типа U1 и U2, и запустить другой ГУИ тригер который пока оставить пустым, ну чтоб я мог дальше делать в нем свои действия.

вопросы по gui задавайте, пожалуйста, в Академии. swdn

Отредактировано ShadoW DaemoN, 15.09.2008 в 10:55.
Старый 14.09.2008, 22:33
J
expert
offline
Опыт: 48,447
Активность:
в триггерах:
Triggering unit - юнит которому наносят урон
Damage Source - юнит который наносит урон
Старый 15.09.2008, 01:19
ScorpioT1000
Работаем
offline
Опыт: отключен
ну или Attacking unit при событии "Юнит атакован"
Старый 15.09.2008, 01:31
FEARSTARTER
desert eagle
offline
Опыт: 19,364
Активность:
Наверно за дебила меня принемаете! это и слону понятно.
Цитата:
в триггерах:
Triggering unit - юнит которому наносят урон
Damage Source - юнит который наносит урон

Мне нужно отловить это непосредственно при нанесении урона, а не при начале атаки, на гуи можно отловить тока начало атаки! А мне нужно отловить непосредствено момент нанесения урона. Помогите пожалуста с этим если возможно.

Прозьба пока не закрывать тему.

_ViRus_ добавил:
Цитата:
вопросы по gui задавайте, пожалуйста, в Академии

Вот именно что гуи тут непричем!
Старый 15.09.2008, 15:35
J
expert
offline
Опыт: 48,447
Активность:
Есть событие "юниит получает урон" при непосредственом его получении, и
Цитата:
Сообщение от Jon
в триггерах:
Triggering unit - юнит которому наносят урон
Damage Source - юнит который наносит урон

Каков вопрос таков и ответ
Старый 15.09.2008, 15:40
Dragon Knight
Меткий стрелок!!!
offline
Опыт: 4,138
Активность:
Цитата:
в триггерах:
Triggering unit - юнит которому наносят урон
Damage Source - юнит который наносит урон


_ViRus_ как раз это и отлавливает!
При событии :Боевая единица - Unit получет урон
А при событии :Боевая единица - Unit Атакован
Only: Triggering Unit
Attacked Unit
Attacking Unit
Старый 15.09.2008, 15:42
FEARSTARTER
desert eagle
offline
Опыт: 19,364
Активность:
Я щас не могу проверить, но тамже вроде нужно ввести юнита который получает урон, а мне нужно чтоб тригер действовал на всех юнитов сразу. На гуи всех отлавливать ведь нельзя.
Старый 15.09.2008, 15:52
J
expert
offline
Опыт: 48,447
Активность:
ну вот тагбы и ставил вопрос с самого начала в первом посте....
http://xgm.guru/forum/showpost.php?p=146230
Старый 15.09.2008, 15:54
FEARSTARTER
desert eagle
offline
Опыт: 19,364
Активность:
Извиняюсь что сразу не уточнил это, просто ваще забыл про этот гуи вариант. =)
Jon спасибо, вечером попробую разобраться, может тогда еще появятся вопросы.
Старый 15.09.2008, 16:02
FEARSTARTER
desert eagle
offline
Опыт: 19,364
Активность:
Цитата:
Собственно, что мне нужно: Я бы очень бы был благодарен еслиб реализовали тригер который бы при событии нанесения урона отлавливал двух юнитов - получающего урон и юнита который наносит урон. И если это возможно, то еще просьба сделать чтобы записать этих двух юнитов в глобалки типа U1 и U2, и запустить другой ГУИ тригер который пока оставить пустым, ну чтоб я мог дальше делать в нем свои действия.

Моя просьба остается в силе, может кто поможет? Jon ?
Старый 15.09.2008, 22:57
Scorched

offline
Опыт: 7,912
Активность:
С глобалками скорее всего не получится. Судя по тому, что юнитов много, то утечки тебе обеспечены
Старый 15.09.2008, 23:05
FEARSTARTER
desert eagle
offline
Опыт: 19,364
Активность:
Scorched юнитов не много, у меня карта наподобии арены) может сделаеш всеже?а я посмотрю на скоко утечки повлияют.
Старый 15.09.2008, 23:11
Scorched

offline
Опыт: 7,912
Активность:
_ViRus_, попробуй способ Jon'а(ссылка на 1й странице)
Старый 16.09.2008, 00:30
FEARSTARTER
desert eagle
offline
Опыт: 19,364
Активность:
Вот это -
Код:
globals
    gamecache udg_cache = null
endglobals

constant function H2I takes handle h returns integer
    return h
    return 0
endfunction

constant function I2U takes integer H returns unit
    return H
    return null
endfunction

constant function I2TrA takes integer i returns triggeraction
    return i
    return null
endfunction    

constant function I2TrC takes integer i returns triggercondition
    return i
    return null
endfunction

function trig_Damaged takes nothing returns nothing
    local unit    DamageSource = GetEventDamageSource() // Атакующий
    local real    Damage       = GetEventDamage()       // Урон
    local unit    Attacked     = GetTriggerUnit()       // Атакованый 
    local trigger trig = GetTriggeringTrigger ()
    if DamageSource == I2U(GetStoredInteger(udg_cache, I2S(H2I(trig)), "Attacking")) then
    
        //... 
        //ТВОИ ДЕЙСТВИЯ ПРИ ПОЛУЧЕНИИ УРОНА
        //...  
                                      
        call TriggerRemoveCondition(trig, I2TrC(GetStoredInteger(udg_cache, I2S(H2I(trig)), "TrC")))
        call TriggerRemoveAction   (trig, I2TrA(GetStoredInteger(udg_cache, I2S(H2I(trig)), "TrA")))
        call FlushStoredMission(udg_cache, I2S(H2I(trig)))
        call DestroyTrigger(trig)
    endif
    set trig = null            
endfunction                                                             

function trig_Attacked takes nothing returns nothing
    local trigger trig      = CreateTrigger ()
    local unit    Attacking = GetAttacker()
    local unit    Attacked  = GetTriggerUnit()
    local triggeraction TrA = TriggerAddAction         (trig,           function trig_Damaged    )
    local triggeraction TrC = TriggerAddCondition      (trig, Condition(function trig_Conditions)) 
    call                      TriggerRegisterUnitEvent (trig, Attacked, EVENT_UNIT_DAMAGED       )
    call StoreInteger(udg_cache, I2S(H2I(trig)), "Attacking", H2I(Attacking))
    call StoreInteger(udg_cache, I2S(H2I(trig)), "TrC"      , H2I(TrC      ))
    call StoreInteger(udg_cache, I2S(H2I(trig)), "TrA"      , H2I(TrA      ))            
    call TriggerSleepAction(3)
    if IsTriggerEnabled (trig) then
         call FlushStoredMission(udg_cache, I2S(H2I(trig)))
         call TriggerRemoveCondition(trig, TrC)
         call TriggerRemoveAction   (trig, TrA)                               
         call DestroyTrigger        (trig)
    endif
    set trig= null
    set TrA = null
    set TrC = null
endfunction

//===========================================================================
function InitTrig_Attacked takes nothing returns nothing
    set gg_trg_Attacked = CreateTrigger() 
    call TriggerAddAction             ( gg_trg_Attacked,           function trig_Attacked   )
    call TriggerAddCondition          ( gg_trg_Attacked, Condition(function trig_Conditions))
    call TriggerRegisterAnyUnitEventBJ( gg_trg_Attacked, EVENT_PLAYER_UNIT_ATTACKED         )
endfunction
Просто я нубак в джазе и незнаю толком как правельно вставить это в свою карту чтоб работало, поэтому я и прошу чтоб сделали то что я прошу(ого сказанул).
Старый 16.09.2008, 00:39
J
expert
offline
Опыт: 48,447
Активность:
http://xgm.guru/forum/showthread.php?t=15855
сдесь есть карта пример
Старый 16.09.2008, 01:46
exploder
iOS zealot
offline
Опыт: 19,394
Активность:
#14 довольно бредово. Здесь не все так просто, юнит может получить урон и спелом, так что нужно делать еще и проверку орббафа.
Старый 16.09.2008, 10:59
J
expert
offline
Опыт: 48,447
Активность:
Цитата:
довольно бредово

конешно, это ведь я написал)
но шанс что юнит получит урон от спела в течении 3-ех секунд с начала замаха руки на удар довольна мала, ну только если спецально постаратся...
Старый 16.09.2008, 13:09
FEARSTARTER
desert eagle
offline
Опыт: 19,364
Активность:
Jon спасиба, у меня все работает))

Тему можно закрыть :)
Старый 17.09.2008, 17:16
Закрытая тема

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

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

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

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



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