Перад
Harald Hadrade
offline
Опыт:
120Активность: |
Event - Unit takes damage.
Есть такое Событие - Юнит получает урон. Я заметил, что его можно использовать лишь тогда, когда юнит уже стоит на карте. А можно как-нибудь сделать, чтобы это событие можно было использовать с переменными объектами? Очень нужно для триггерных заклинаний, чтобы сделать к примеру - когда юнит получает урон - произошло то-то и то-то. |
20.07.2006, 03:09 | #1
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Korneliy
DMF
offline
Опыт:
23,443Активность: |
Можно условие - triggering unit = uHero, где uHero = твой герой. |
20.07.2006, 03:41 | #2
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Nethrez1m
Dat av doe
offline
Опыт:
2,123Активность: |
из всех переменных походу только типа generated globals. А почему дальше не продолжить с этим юнитом? Если неудобно, то делать лучше так, как обьяснил Korneliy |
20.07.2006, 04:13 | #3
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
J
expert
offline
Опыт:
48,447Активность: |
Цитата:
нет |
|
20.07.2006, 04:19 | #4
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Korneliy
DMF
offline
Опыт:
23,443Активность: |
2 Jon Но ведь можно условием! Или я где-то неправ?
З.Ы. Сорри за оффтоп, хотел давно спросить: ты тот самый джон, чью карту "Царь горы" я давно-давно тестил? |
20.07.2006, 04:30 | #5
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
DioD
offline
Опыт:
45,134Активность: |
Делайте глобальный триггер и добовляйте в него события\действия. |
20.07.2006, 04:44 | #6
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
J
expert
offline
Опыт:
48,447Активность: |
Цитата:
ты прав насчет того что ты не прав:) Цитата:
Эх.. эта карта мой позор... зделана в РОК-е, и при том я тогда даже незнал че такое переменые Jon добавил: Цитата:
всеже добавить событитиями всех юнитов на карте както кривовато звучит.. несчитаеш? |
|||
20.07.2006, 04:45 | #7
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Korneliy
DMF
offline
Опыт:
23,443Активность: |
2 Jon Нельзя стыдиться первых проектов - ибо все были нубами и совершали ошибки.
И, кстати, почему я не прав? Поясни, плиз. |
20.07.2006, 05:00 | #8
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
J
expert
offline
Опыт:
48,447Активность: |
давай по другому... попробуй сам в точности обьяснить как ты хотел... и при попытки обьяснить ты поймеж что это не поможет... |
20.07.2006, 05:04 | #9
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
DioD
offline
Опыт:
45,134Активность: |
Создаётся триггер который получает каждого юнита на карте, при уроне выводит текст так, при сметри очищает событие |
20.07.2006, 05:17 | #10
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Korneliy
DMF
offline
Опыт:
23,443Активность: |
События: Generic unit takes damage (на самый край можно "атакован", но тут правда проверяется приказ) Условия: Triggering (или там attacked) unit = uHero Действия: kill yourself by the wall |
20.07.2006, 05:21 | #11
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
J
expert
offline
Опыт:
48,447Активность: |
Цитата:
takes damage - можно уловить полученый урон, но можно сделать только для определеного юнита Цитата:
Это можно сделать для любого юнито.. но при этом нельзя уловит полученый урон и призводить с ним действия Jon добавил: Цитата:
А как можно очистить событие? |
|||
20.07.2006, 05:31 | #12
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
DioD
offline
Опыт:
45,134Активность: |
function AnyUnitTakesDamage takes nothing returns nothing
your actions here Sample Damage display: call BJDebugMsg( "Damage: " + R2S(GetEventDamage()) ) endfunction part 1
function AddDamageTriggers takes nothing returns nothing local trigger takedamage = CreateTrigger() call TriggerRegisterUnitEvent(takedamage,GetTriggerUnit(),EVENT_UNIT_DAMAGED) call AttachObject(takedamage,"action",TriggerAddAction(takedamage,function AnyUnitTakesDamage)) call AttachObject(GetTriggerUnit(),"TakeDamageTrigger",takedamage) endfunction part 2
function RemoveDamageTriggers takes nothing returns nothing local unit u = GetTriggerUnit() local trigger me = GetAttachedTrigger(GetTriggerUnit(),"TakeDamageTrigger") local string t = GetAttachmentTable(me) local boolean revived = false
if not revived then
delete action and trigger call TriggerRemoveAction(me,GetTableTriggerAction(t,"action")) call DestroyTable(t) call DestroyTrigger(me) endif set me = null set u = null endfunction part 3
function InitTrig_AddDmg takes nothing returns nothing local trigger entermap = CreateTrigger() local group startingunits = CreateGroup() local unit u local trigger takedamage local trigger upondeath = CreateTrigger() call GroupEnumUnitsInRect(startingunits,bj_mapInitialPlayableArea,null) loop set u = FirstOfGroup(startingunits) exitwhen u == null set takedamage = CreateTrigger() call TriggerRegisterUnitEvent(takedamage,u,EVENT_UNIT_DAMAGED) call AttachObject(takedamage,"action",TriggerAddAction(takedamage,function AnyUnitTakesDamage)) call AttachObject(u,"TakeDamageTrigger",takedamage) call GroupRemoveUnit(startingunits,u) endloop set takedamage = null unit enters the map/revives
call TriggerRegisterAnyUnitEventBJ(entermap ,EVENT_PLAYER_HERO_REVIVE_FINISH) call TriggerRegisterEnterRectSimple(entermap, bj_mapInitialPlayableArea) call TriggerAddAction(entermap,function AddDamageTriggers) unit dies call TriggerRegisterAnyUnitEventBJ(upondeath,EVENT_PLAYER_UNIT_DEATH) call TriggerAddAction(upondeath,function RemoveDamageTriggers) endfunction |
|||||||||||||||
20.07.2006, 05:44 | #13
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Перад
Harald Hadrade
offline
Опыт:
120Активность: |
Правильно говорит Jon!!!
События: Generic unit takes damage Такого события просто не существует! Unit takes damage нету в списке событий Generic Unit. Только в Specific Unit. В том то и проблема. DioD Извини, но я в джассе не бум-бум. Может сделаешь пример карты, где я могу всё это лицезреть? |
20.07.2006, 14:24 | #14
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
J
expert
offline
Опыт:
48,447Активность: |
Цитата:
я не тук тук в жазе.. но мне почемута кажется что он не "очищает событие", а "пересоздает тригер" |
|
20.07.2006, 14:28 | #15
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Перад
Harald Hadrade
offline
Опыт:
120Активность: |
Так я не понял. Можно как-нибудь сделать, чтобы эта команда работала с переменными? И вообще почему она не может работать? Неужели так трудно было сделать, чтоб могла работать? Может тут какой-то смысл скрыт? |
20.07.2006, 18:23 | #16
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
XFaNT
Злобный Модер
offline
Опыт:
4,328Активность: |
Перад в редакторе триггеров не учтено, что получать демаг может нетолько юнит , стоящий на карте изначально =), поэтому, ставишь на карту юнита, прописываешь весь триггер на него, потом конвертируешь в текст, находишь:
call TriggerRegisterUnitEvent( gg_trg_S, gg_unit_hfoo_0000, EVENT_UNIT_DAMAGED ) здесь gg_trg_S имя твоего тригера, оно состоит из приставки gg_trg_ и названия. gg_unit_hfoo_0000 это, имя юнита, которого ты выбрал, странное обозначение но ничё не поделаешь. в Джассе название переменных тоже составное, udg_ и дальше собственно имя. ( например udg_unit) тебе надо заменить имя юнита (в примере это -- gg_unit_hfoo_0000), на нужную тебе переменную, например hero (незабудь приставку udg_ ) должно быть примерно так: call TriggerRegisterUnitEvent( gg_trg_S, udg_hero, EVENT_UNIT_DAMAGED ) воть . другого способа нет. |
20.07.2006, 19:46 | #17
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Перад
Harald Hadrade
offline
Опыт:
120Активность: |
Может я расскажу мою ситуацию?
Вообщем карта у меня AoS типа, т.е. вы понимаете, что постоянно респятся юниты. Есть герои, которыми управляют игроки, и герои изначально не расположены на карте, как впрочем и юниты. Так вот у одного героя есть триггерное умение, что каждый раз когда он атакует какой-либо юнит, запускается одно действие. Пока что я использую Unit is attacked и проверяю врага этого героя. Всё работает, единственное, НО, в том что когда герой только размахивается на юнита - действие уже срабатывает, и получается, что герой ещё не нанёс удар, а действие уже совершилось. Мне же нужно, чтобы действие совершалось в тот момент, когда герой наносит урон, т.е. его оружее соприкасается с целью и наносит урон. Я сделал небольшую задержку, но с ростом уровня героя - растёт его ловкость и паузу нужно уменьшать. Можно конечно продолжать играться вот так с паузами. Но я решил спросить это здесь, возможно люди знают как сделать такое действие, что когда Generic Unit takes damage. Чтоб именно так выглядело. И из него тогда исходить делать уже проверки и условия, и действия. XFaNT Я конечно понимаю, что весь топик перечитывать часто бывает проблемно. Я писал, что в джассе ничего не понимаю, поэтому ничего не понял из того, что ты сказал. Может ты лучше пример сделаешь? |
20.07.2006, 19:56 | #18
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
XFaNT
Злобный Модер
offline
Опыт:
4,328Активность: |
Перад Generic Unit takes damage такой функции нет и зделать её такой нельзя.
без джасса такой триггер не сделаешь, я тебе могу зделать пример но он будет джассовый. XFaNT добавил: мде... я неправ =), оказывается можно сослать это событие на переменную. создаёшь триггер без события, пихаешь в него что угодно, кроме события. В другом тригере ставишь следующее Событие map initialization Условие Действие Триггер - Add to *имя триггера без события* the event (Боевая единица - *твоя переменная* получает урон) Аказывается всё проще чем я думал =) и никакого джасса =) |
20.07.2006, 20:42 | #19
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
GadenbIsh
Просто Гад
offline
Опыт:
70,430Активность: |
XFaNT
а как ты будешь получать *твоя переменная* ? =)) |
20.07.2006, 21:48 | #20
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|