MDS - eventy 31682 6

O temacie

Autor inż. Avallach

Zaczęty 29.01.2011 roku

Wyświetleń 31682

Odpowiedzi 6

inż. Avallach

inż. Avallach

Administrator
posty7662
Propsy5238
NagrodyV
ProfesjaProgramista
  • Administrator

inż. Avallach
Administrator

MDS - eventy
2011-01-29, 16:15(Ostatnia zmiana: 2013-08-07, 23:02)
Na razie jest to tylko lista, jak będę miał chwilę czasu może dodam krótkie opisy. Niestety nawet jeśli, to będę musiał pisać z pamięci bo Gothic od dawna mi nie działa.
Na początek, lista "głównych" poleceń (niekoniecznie najczęściej używanych. W nawiasach kwadratowych przykłady użycia. W kolejnych nawiasach ewentualne komentarze (z czasem może dodam więcej).
*eventCAMTREMOR (numer_klatki zasieg_w_cm czas_w_ms min_drgania_cm max_drgania_cm) - wstrząsy kamery, np: *eventCamTremor (12 1000 500 2 8)
*eventMMSTARTANI (numer_klatki "nazwa_animacji" "nazwa_slotu" I:intensywność H:czas_utrzymywania) - odtworzenie animacji MorphMesh, np: *eventMMStartAni (14 "T_HURT"), część parametrów jest opcjonalna: nazwa slotu, intensywność i czas utrzymywania
*eventSETMESH (numer_klatki "nazwa_slotu")
*eventPFX (numer_klatki identyfikator_efektu "identyfikator_pfx'a" "nazwa_slotu" attach) - efekt cząsteczkowy, np: *eventPFX (12 "ZMODELLANDDUST" "Bip01" ), część parametrów jest opcjonalna: identyfikator efektu służy do użycia z eventPFXSTOP, attach na końcu oznacza że efekt nie tylko powstaje w danym slocie, ale porusza się z nim, a nie podanie slotu spowoduje użycie "Bip01" (środka ciała)
*eventPFXGRND (numer_klatki)
*eventPFXSTOP (numer_klatki identyfikator_efektu) - zatrzymanie efektu cząsteczkowego o danym identyfikatorze, np: *eventPFXStop (45 1)
*eventSWAPMESH (numer_klatki "zs_źródłowy" "zs_docelowy") - przemieszczenie mesha między slotami, np *eventSwapMesh (5 "ZS_CROSSBOW" "ZS_LEFTARM")
*eventSFX (numer_klatki "nazwa_sfx_lub_pliku_wav" R:zasięg_w_cm EMPTY_SLOT - odtworzenie dźwięku, np *eventSFX (10 "Swim"), część parametrów jest opcjonalna: zasięg słyszalności i EMPTY_SLOT (którego nie użycie powoduje że poprzedni efekt dźwiękowy zostanie przerwany przez ten)
*eventSFXGRND (numer_klatki "nazwa_sfx_lub_pliku_wav") - np: *eventSFXGrnd (12 "Run")
*eventTag (klatka_animacji "nazwa_eventtagu" "parametr1" "parametr2" "parametr3" "parametr4") - lista dostępnych poniżej, parametry są opcjonalne
*modelTag (to co wyżej, ale odnosi się do wszystkich animek modelu)
*event (???)

eventTagi:
DEF_CREATE_ITEM [*eventTag (4 "DEF_CREATE_ITEM" "ZS_RIGHTHAND" "ItMw_1H_Sledgehammer_01")]
DEF_INSERT_ITEM [*eventTag (5 "DEF_INSERT_ITEM" "ZS_LEFTHAND")]
DEF_REMOVE_ITEM [*eventTag (0 "DEF_REMOVE_ITEM")]
DEF_DESTROY_ITEM [*eventTag (35 "DEF_DESTROY_ITEM")]
DEF_PLACE_ITEM [*eventTag (90 "DEF_PLACE_ITEM")]
DEF_EXCHANGE_ITEM [*eventTag (37 "DEF_EXCHANGE_ITEM" "ZS_LEFTHAND" "ItMiSwordrawhot")]
DEF_FIGHTMODE [*eventTag (5 "DEF_FIGHTMODE" "FIST")] ["", "FIST", "1H", "1HS", "2H", "2HS", "BOW", "CBOW", "MAG"]
DEF_PLACE_MUNITION [*eventTag (9 "DEF_PLACE_MUNITION" "ZS_RIGHTHAND")]
DEF_REMOVE_MUNITION [*eventTag (19 "DEF_REMOVE_MUNITION")]
DEF_DRAWSOUND [*eventTag (5 "DEF_DRAWSOUND")]
DEF_UNDRAWSOUND [*eventTag (5 "DEF_UNDRAWSOUND")]
DEF_SWAPMESH [nigdy nie użyte (?), *eventTag (5 "DEF_SWAPMESH" "ZS_CROSSBOW" "ZS_LEFTHAND")]

//eventTagi pochodni
DEF_DRAWTORCH [nigdy nie użyte (?), *eventTag (1 "DEF_DRAWTORCH")]
DEF_INV_TORCH [*eventTag (6 "DEF_INV_TORCH")]
DEF_DROP_TORCH [nigdy nie użyte (?), *eventTag(1 "DEF_DROP_TORCH")]

//eventTagi walki (szczegółowe omówienie Orcwarriora: http://themodders.org/index.php?showtopic=1381)
DEF_HIT_LIMB [*eventTag (0 "DEF_HIT_LIMB" "ZS_RIGHTHAND")] [atakująca kończyna]
DEF_DIR [nieużywane, *eventTag (0 "DEF_DIR" "L")] [kierunek ataku]
DEF_DAM_MULTIPLIER [*eventTag (0 "DEF_DAM_MULTIPLIER" "2.0")] [mnożnik obrażeń]
DEF_PAR_FRAME [nieużywane, *eventTag (0 "DEF_PAR_FRAME" "1 8")] [klatka na parowanie ciosu]
DEF_OPT_FRAME [*eventTag (0 "DEF_OPT_FRAME" "9 24")] [optymalna klatka na obrażenia]
DEF_HIT_END [*eventTag (0 "DEF_HIT_END" "15 29")] [klatka kończąca cios]
DEF_WINDOW [*eventTag (0 "DEF_WINDOW" "9 15 24 29")] [klatka w której można kontynuować combo]

Teraz ogólny schemat:
*eventTag (klatka_animacji "nazwa_tagu" "parametr1" "parametr2" "parametr3" "parametr4")Nie pamiętam dokładnie, ale chyba ilość parametrów nie zawsze jest sztywna - w zależności od sytuacji można nie korzystać z ostatnich.
Warto wiedzieć że istnieje też coś takiego jak *modelTag - używa się go tak jak *eventTagu, ale dotyczy on wszystkich animacji.

//edit: dodam jeszcze listę innych "słów kluczowych" jednak raczej nie będę w stanie opisać które do czego służą. Może komuś się do czegoś przyda:
aniComb
aniBatch
ANIDISABLE
aniSync
aniBlend
aniAlias
ani
aniMaxFps
registerMesh
startMesh
MeshAndTree
aniEnum
model
morphAni
morphMesh
meshEnum //przestarzałe?
MeshLib //przestarzałe?

Informacje wykorzystane w tutorialu pochodzą z oryginalnych skryptów gry, zdeassemblowanego silnika gry oraz artykułów Kerraxa i NicoDE.

Mark56

Mark56

Moderator
som veľký magič
posty1632
Propsy1846
ProfesjaAnimator
  • Moderator
  • som veľký magič

Mark56
Moderator

MDS - eventy
#1 2011-02-19, 01:03(Ostatnia zmiana: 2013-12-29, 11:08)
 :ok:
 


MaGoth

MaGoth

Użytkownicy
WoG.ru Admin
posty129
Propsy205
  • Użytkownicy
  • WoG.ru Admin
Avallach,
Cytuj
Na razie jest to tylko lista, jak będę miał chwilę czasu może dodam krótkie opisy. Niestety nawet jeśli, to będę musiał pisać z pamięci bo Gothic od dawna mi nie działa ...
To może być przydatne.
Bardziej szczegółowe i dokładne informacje w języku rosyjskim.
Dynamiczny model: opis eventTag's.

MfG MaGoth, WoG.ru-Community.
 
|: WOG.de :|: WOG.en :|: WOG.ru :|: WOG.ro :|||: MAGIC-Team :|



|: WOR.de :|: WOR.en :|: WOR.ru :|: WOR.ro :|||: Piranha-Bytes :|

Дитетка ночи... погибель миров... светильник Теней... сокроет света покров... (Песнь MaGoth'a)

-=GOTHIC UND DIE FREUNDSCHAFT FÜR ALLE ZEITEN!=-


MaGoth

MaGoth

Użytkownicy
WoG.ru Admin
posty129
Propsy205
  • Użytkownicy
  • WoG.ru Admin

MaGoth

MDS - eventy
#4 2013-01-07, 23:26(Ostatnia zmiana: 2013-01-07, 23:30)
Cytat: Avallach#msg date=1357597592H[/size

Синтаксис
*eventTag(КАДР DEF_SWAPMESH СЛОТ1 СЛОТ2)
Поменяет местами предметы в слотах;

СЛОТ1 и СЛОТ2 - это имена слотов, объекты в которых нужно поменять. Пустые имена не допускаются.

Не рекомендуется использовать ZS_RIGHTHAND и ZS_LEFTHAND в качестве имени первого или второго слота, т.к. в этом случае движок произведет попытку перевести NPC в один из боевых режимов (аналогично eventTag DEF_FIGHTMODE), что иногда может закончиться зависанием игры.

Существует похожий способ переставлять предметы в слотах - это команда:
*eventSwapMesh(КАДР СЛОТ1 СЛОТ2)
Основные отличия: eventSwapMesh меняет местами только меши предметов в слотах, а eventTag DEF_SWAPMESH меняет местами сами эти предметы. Кроме того, eventSwapMesh одинаково работает для любых имен слотов, а eventTag DEF_SWAPMESH имеет особое поведение, когда один из слотов является ZS_LEFTHAND или ZS_RIGHTHAND.


3. Операции с факелами

3.1. DEF_DRAWTORCH

Синтаксис
*eventTag(КАДР DEF_DRAWTORCH)
Ничего не делает.


3.2. DEF_INV_TORCH

Синтаксис
*eventTag(КАДР DEF_INV_TORCH)
Если в левой руке NPC нет факела, то ничего не делает.

Если же в левой руке NPC держит факел, то убирает факел в инвентарь до конца текущего набора анимаций, связанных с использованием предмета/MOB#msg1066454а. Пример: NPC подходит с горящим факелом к кровати, ложится спать. Нужно временно убрать факел из левой руки, иначе NPC может поджечь кровать :)


3.3. DEF_DROP_TORCH

Синтаксис
*eventTag(КАДР DEF_DROP_TORCH)
То же, что и DEF_INV_TORCH, только факел не убирается в инвентарь, а кидается на землю.


4. Атака и защита

4.1. DEF_HIT_LIMB

Синтаксис
*eventTag(0 DEF_HIT_LIMB КОНЕЧНОСТЬ1 КОНЕЧНОСТЬ2 КОНЕЧНОСТЬ3 КОНЕЧНОСТЬ4)
Устанавливает, какой частью тела персонаж наносит повреждение другим персонажам. В качестве параметров используются имена костей/слотов. Можно указать до четырех повреждающих конечностей.

Пример:
[indent]//для кулачной драки устанавливается
*eventTag(0 DEF_HIT_LIMB Bip01 R Hand)
//для драки одноручным оружием устанавливается
*eventTag(0 DEF_HIT_LIMB ZS_RIGHTHAND)
//(в боевом режиме одноручное оружие находится в слоте ZS_RIGHTHAND)
//для кусающегося снеппера устанавливается
*eventTag(0 DEF_HIT_LIMB BIP01 HEAD)
[/indent]


4.2. DEF_HIT_DIR

Синтаксис
*eventTag(0 DEF_HIT_DIR НАПРАВЛЕНИЕ)
Устанавливает направление удара - влияет на выбор анимации защиты. Например, если первый NPC бьет другого посредством анимации:
[indent]ani (s_2hAttack ...)
{
        ...
        *eventTag (0 DEF_DIR  U)
        ...
}
[/indent]

а другой, дерущийся одноручным оружием, успевает заблокировать удар, то будет использована анимация t_1hParade_U для блока. То есть при определении анимации атаки можно указать, какой анимацией нужно поставить блок. (Понятно, что если атакуемый NPC - сам игрок, то выбор соответствующей анимации для блока выполнит движок, а не человек.)

НАПРАВЛЕНИЕ - любая строка текста длиной до 10 символов. Направление по умолчанию - O (заглавная английская буква, не ноль).

То есть:
[indent]//отсутствие строчки
*eventTag (0 DEF_DIR ...)
//дает то же, что и присутствие
*eventTag (0 DEF_DIR O)
[/indent]


4.3. DEF_DAM_MULTIPLY

Синтаксис
*eventTag(0 DEF_DAM_MULTIPLY МНОЖИТЕЛЬ)
Позволяет указать множитель урона для анимации атаки. То есть, например, если для какой-то анимации атаки мы пишем:
[indent]ani (s_2hAttack_1 ...)
{
...
*eventTag (0 DEF_DAM_MULTIPLIER 2.0)
...
}
[/indent]

то это означает, что эта атака будет наносить урон вдвое больший, чем вообще-то положено при таких соотношениях силы, урона оружия и брони противника. Урон будет умножаться на два независимо от того, критическая атака или нет. Можно написать число, меньшее 1.0, и тогда урон будет уменьшен.


4.4. DEF_PAR_FRAME

Синтаксис
*eventTag(0 DEF_PAR_FRAME НАЧ_КАДР КОН_КАДР)
Используется для анимации блокирования. Указывает, начиная с какого кадра и заканчивая каким блок будет давать защиту от урона. Если не указать такой eventTag или указать 0 0 в качестве начального и конечного кадров, то блок будет давать защиту все время проигрывания анимации.


4.5. DEF_OPT_FRAME

Синтаксис
*eventTag(0 DEF_OPT_FRAME КАДР1 КАДР2 КАДР3 ... КАДР10)
Используется для анимации атаки. Указываются кадры (числом от 1 до 10), когда нужно проверять на столкновение повреждающей конечности (см. описание DEF_HIT_LIMB) и жертвы. Несколько кадров указывается, чтобы реализовать комбоудар. Таким образом, комбоудар может состоять из максимум 10 ударов. Обычно eventTag DEF_OPT_FRAME применяется вместе с DEF_HIT_END и DEF_WINDOW.

Пример (mds_overlayhuman_2hST2.mds, Г2):
[indent]ani (s_2hAttack 1 s_2hAttack 0.0 0.2 M. Hum_2hAttackComboT3_M02.asc F 1 150)
{
    *eventTag (0 DEF_HIT_LIMB ZS_RIGHTHAND)
    *eventTag (0 DEF_OPT_FRAME 5 45 90 138)
    *eventTag (0 DEF_HIT_END 35 75 120 147)
    *eventTag (0 DEF_WINDOW 13 41 53 81 98 126 146 149)
    ...
}
[/indent]

Анимация содержит кадры с 1 по 150. Полный комбоудар будет состоять из 4 ударов - на 5, 45, 90 и 138 кадрах. При этом возможны случаи:
  • Если игрок не нажмет клавишу вверх между 13 и 41 кадрами, то его персонаж нанесет только 1 удар и анимация закончится на 35 кадре;
  • Если игрок нажмет клавишу вверх между 13 и 41 кадрами, но не нажмет клавишу вверх между 53 и 81 кадрами, то его персонаж нанесет 2 удара и анимация закончится на 75 кадре;
  • Если игрок нажмет клавишу вверх между 13 и 41 кадрами,  нажмет клавишу вверх между 53 и 81 кадрами, но не нажмет клавишу вверх между 98 и 126 кадрами, то его персонаж нанесет 3 удара и анимация закончится на 120 кадре;
  • и т.д.
4.6. DEF_HIT_END

Синтаксис
*eventTag(0 DEF_HIT_END КАДР1 КАДР2 КАДР3 ... КАДР10)
Указывает кадр, на котором обрубается комбоудар, если не нажать во время клавишу вверх (Г1
 
|: WOG.de :|: WOG.en :|: WOG.ru :|: WOG.ro :|||: MAGIC-Team :|



|: WOR.de :|: WOR.en :|: WOR.ru :|: WOR.ro :|||: Piranha-Bytes :|

Дитетка ночи... погибель миров... светильник Теней... сокроет света покров... (Песнь MaGoth'a)

-=GOTHIC UND DIE FREUNDSCHAFT FÜR ALLE ZEITEN!=-

Toworish

Toworish

Użytkownicy
http://chomikuj.pl/ToWoRiSh
posty1664
Propsy254
ProfesjaNierób
  • Użytkownicy
  • http://chomikuj.pl/ToWoRiSh
Hehe odkopujemy :D kombinując z DEF_FIGHTMODE zacząłem rozmyślać:

Czy to że odpalając kuszę to gra korzysta z animacji kuszy jest zaprogramowane w silniku? czy ZS są zapisane w silniku i nie da się np dodać nowych? więc jeśli w itemie użwam mainflagi broni dystansowej i flagi kuszy nie jestem w stanie poza Mdl_ApplyOverlayMds zmusić gry do używania moich mds i animcji? uwzględnionych w humans.mds ?
 
Niebawem...Pierdolnę se poradniki do Goticzka. Albo i nie, bo sie mnie nie chce.

Draks

Draks

Użytkownicy
Gothic 2 Nowy porządek
posty1714
Propsy766
ProfesjaGrafik 3D
  • Użytkownicy
  • Gothic 2 Nowy porządek
Według mnie to klasa broni za to odpowiada wysyła informację i korzysta z ZS, da się dodać nowe ZS :)
 


0 użytkowników i 1 Gość przegląda ten wątek.
0 użytkowników
Do góry