Работа с анимацией

## APPLY ANIFREQ

*Описание*

      Установить частоту проигрывания случайной анимации.

*English*

      Set random-ani frequency.

*Синтаксис*

```
APPLY ANIFREQ [ani-name, frequency]
```

 *frequency* | Частота случайной анимации.

*Пример*

```
APPLY ANIFREQ R_Bench_Random_1, 1
```

      Случайная анимация в MDS-файлах начинается с приставки "**R\_**", т.е. Random.

```
// Отрывок из файла HumanS.MDS
// Случайные анимации на скамье (aniAlias от Chair)

        aniAlias    ("R_Bench_Random_1"         2   ""              0.3 0.3 M.  "R_Chair_Random_1"          F)
        aniAlias    ("R_Bench_Random_2"         2   ""              0.3 0.3 M.  "R_Chair_Random_2"          F)
        aniAlias    ("R_Bench_Random_3"         2   ""              0.3 0.3 M.  "R_Chair_Random_3"          F)
        aniAlias    ("R_Bench_Random_4"         2   ""              0.3 0.3 M.  "R_Chair_Random_4"          F)

```

Чтобы изменить частоту проигрывания случайной анимации для Npc, необходимо вселится в него с помощью клавиши **O** и установить нужную частоту для случайной анимации.

Я ввел четыре команды и установил следующие значения для всех четырех случайных анимаций сидения на лавке.

```
// Отрывок из файла HumanS.MDS
APPLY ANIFREQ R_Bench_Random_1, 1
APPLY ANIFREQ R_Bench_Random_2, 1
APPLY ANIFREQ R_Bench_Random_3, 1
APPLY ANIFREQ R_Bench_Random_4, 20

```

В результате четвертая анимация выполнялась чаще всего.

## APPLY OVERLAYMDS

*Описание*

      Применить оверлей из MDS файла.

*English*

      Enable overlay-MDS.

*Синтаксис*

```
APPLY OVERLAYMDS [mds-name]
```

*Пример*

```
APPLY OVERLAYMDS Humans_Skeleton_Fly
```

Все MDS файлы оверлеев расположены по умолчанию в папке *Gothic II\\_work\data\Anims\mds\_overlay*.

MDS файлы - это файлы описания анимаций персонажей и объектов.

В стандартной версии игры для Npc доступны следующие оверлеи:

### **Походки**

* **Humans** - Стандартная походка.
* **Humans\_Acrobatic** - Акробатика.
* **Humans\_Arrogance** - Походка рудных баронов.
* **Humans\_Babe** - Походка женщины.
* **Humans\_Flee** - Быстрый бег.
* **Humans\_Mage** - Походка мага.
* **Humans\_Milicia** - Походка военного.
* **Humans\_Relaxed** - Расслабленная походка.
* **Humans\_Skeleton** - Скелет.
* **Humans\_Skeleton\_Fly** - Летающий скелет.
* **Humans\_Sprint** - Спринт.
* **Humans\_Tired** - Уставший рудокоп.
* **Humans\_Torch** - Походка с факелом.

### **Владение оружием**

* **Humans\_1HST1** - Первая ступень владения одноручным оружием.
* **Humans\_1HST2** - Вторая ступень владения одноручным оружием.
* **Humans\_2HST1** - Первая ступень владения двуручным оружием.
* **Humans\_2HST2** - Вторая ступень владения двуручным оружием.
* **Humans\_BowT1** - Первая ступень владения луком.
* **Humans\_BowT2** - Вторая ступень владения луком.
* **Humans\_CBowT1** - Первая ступень владения арбалетом.
* **Humans\_CBowT2** - Вторая ступень владения арбалетом.

### **Другие**

* **Firewaran** - Огненный ящер.
* **Golem\_Firegolem** - Огненный голем.
* **Golem\_Icegolem** - Ледяной голем.
* **Orcbiter** - Чомпер.
* **Orc\_Torch** - Орк с факелом.

## APPLY RANDOMANI

*Описание*

      Применить случайную анимацию.

*English*

      Apply a random-ani.

*Синтаксис*

```
APPLY RANDOMANI [ani-name, random-ani-name]
```

 *frequency* | Имя случайной анимации.

*Замечание*

Проиграть случайную анимацию для Npc и для ГГ у меня не получилось, поэтому метод ее использования остается под вопросом.

## PLAY ANI

*Описание*

      Проиграть анимацию.

*English*

      Play animation.

*Синтаксис*

```
PLAY ANI [name]
```

*Пример*

```
PLAY ANI t_No
```

Имена всех анимаций содержатся в MDS файлах. Имя анимации указывается первым параметром функции `ani`.

```
// Да

        ani         ("t_Yes"                    2   ""              0.1 0.1 M.  "Hum_Yes_M01.asc"           F   1   44)

// Нет

        ani         ("t_No"                     2   ""              0.1 0.1 M.  "Hum_No_M01.asc"            F   1   46)

// Не знаю

        ani         ("t_DontKnow"               2   ""              0.1 0.1 M.  "Hum_DontKnow_M01.asc"      F   1   10)

// Забудь об этом

        ani         ("t_ForgetIt"               2   ""              0.1 0.1 M.  "Hum_ForgetIt_M01.asc"      F   1   27)

// Уходи

        ani         ("t_GetLost"                2   ""              0.1 0.1 M.  "Hum_GetLost_M01.asc"       F   1   34)

// Уходи (вариация)

        ani         ("t_GetLost2"               2   ""              0.1 0.1 M.  "Hum_GetLost2_M01.asc"      F   1   29)

// Эй, иди сюда

        ani         ("t_ComeOverHere"           2   ""              0.1 0.1 M.  "Hum_Hey!_o_Beine_Jue02.ASC"    F   1   80  FPS:10)

// С уважением
    // Гвардейцы

        ani         ("t_GreetGrd"               2   ""              0.1 0.1 M.  "Hum_GreetGrd_M01.asc"      F   1   19)

    // Послушники и монахи

        ani         ("t_GreetNov"               2   ""              0.1 0.1 M.  "Hum_GreetNov_M01.asc"      F   1   33)

    // Приветствие левой рукой

        ani         ("t_GreetLeft"              2   ""              0.1 0.1 M.  "Hum_GreetLeft_M01.asc"     F   1   29)

    // Приветствие правой рукой

        ani         ("t_GreetRight"             2   ""              0.1 0.1 M.  "Hum_GreetRight_M01.asc"    F   1   29)

    // Прохладное приветствие

        ani         ("t_GreetCool"              2   ""              0.1 0.1 M.  "Hum_GreetCool_M01.asc"     F   1   29)

// Я даю тебе

        ani         ("t_iGetYou"                2   ""              0.1 0.1 M.  "Hum_iGetYou_M01.asc"       F   1   59 FPS:10)

// Удар от скуки

        ani         ("t_BoringKick"             2   ""              0.1 0.1 M.  "Hum_BoringKick_M01.asc"    F   1   66 FPS:10)

// Потому что было или нет
        // Ходит/Смотрит/Ищет

        ani         ("t_Search"                 2   ""              0.1 0.1 M.  "Hum_Search_M02.asc"        F   1   74  FPS:10)

```

На изображении ниже применена анимация **t\_Search**.

## PLAY FACEANI

*Описание*

      Проиграть лицевую анимацию.

*English*

      Play a face animation.

*Синтаксис*

```
PLAY FACEANI [name]
```

*Пример*

```
PLAY FACEANI S_HOSTILE
```

Имена всех лицевых анимаций содержаться в MMS файле головы.

Основной набор анимаций следующий:

```
morphMesh ("Hum_Head_Pony")
{
   morphRef("HUM_HEAD_PONY.ASC")
   // Нейтральное выражение лица
   morphAni ("S_NEUTRAL" 1 1 -1 1 L "HUM_HEAD_PONY.ASC" 0 0 SPD:1)
   // Дружелюбное выражение лица
   morphAni ("S_FRIENDLY" 1 1 -1 1 L "HUM_HEAD_PONY_EMOTIONS.ASC" 0 0 SPD:1)
   // Злобное выражение лица
   morphAni ("S_ANGRY" 1 1 -1 1 L "HUM_HEAD_PONY_EMOTIONS.ASC" 1 1 SPD:1)
   // Ненавистное выражение лица
   morphAni ("S_HOSTILE" 1 1 -1 1 L "HUM_HEAD_PONY_EMOTIONS.ASC" 2 2 SPD:1)
   // Испуганное выражение лица
   morphAni ("S_FRIGHTENED" 1 1 -1 1 L "HUM_HEAD_PONY_EMOTIONS.ASC" 3 4 SPD:10)
   // Закрытые глаза
   morphAni ("S_EYESCLOSED" 1 0.1 -1 0.1 L "HUM_HEAD_PONY_EMOTIONS.ASC" 5 5 SPD:1)
   // Моргающие глаза [Случайная анимация]
   morphAni ("R_EYESBLINK" 4 0.04 0 0.04 . "HUM_HEAD_PONY_EMOTIONS.ASC" 6 6 SPD:1)
   // Пережовывание еды
   morphAni ("T_EAT" 1 0.1 2 0.1 . "HUM_HEAD_PONY_EAT.ASC" 0 5 SPD:10)
   // Смерть
   morphAni ("T_HURT" 1 0.1 -1 0.1 L "HUM_HEAD_PONY_EMOTIONS.ASC" 7 7 SPD:1)
   // Анимация разговора
   morphAni ("VISEME" 2 0.1 -1 0.1 L "HUM_HEAD_PONY_VISEME.ASC" 0 15 SPD:5)
}

```

Имена анимаций указываются первым параметром функции `morphAni`.

На рисунке ниже применена анимация **S\_HOSTILE**.

## REMOVE OVERLAYMDS

*Описание*

      Удалить примененный к Npc оверлей. Не работает.

*English*

      Remove overlay MDS.

*Синтаксис*

```
REMOVE OVERLAYMDS [mds-name]
```

*Пример*

```
REMOVE OVERLAYMDS Humans_Skeleton_Fly
```

Все MDS файлы оверлеев расположены в папке *Gothic II\\_work\data\Anims\mds\_overlay*.

MDS файлы - это файлы описания анимаций персонажей и объектов.

Все доступные в стандартной версии игры оверлеи описаны в команде APPLY OVERLAYMDS.

*Примечание*

После нескольких тестов выяснилось, что команда не удаляет примененный оверлей.

## TOGGLE ANIINFO

*Описание*

Включить/выключить вывод информации по анимации главного героя или управляемого Npc.
*English*

Animation info on/off.
*Синтаксис*

```
TOGGLE ANIINFO
```

Вместо команды можно использовать клавишу **G** для вывода информации по управляемому Npc, и клавиши **G** + **Shift** по Npc в фокусе.

## ZOVERLAYMDS APPLY

*Описание*

Применить оверлей из MDS файла к интерактивным VOB (MOB).
*English*

Applies overlay MDS to vob's model.
*Синтаксис*

```
ZOVERLAYMDS APPLY [vob_name | vob_id] [mds_name]
```

 *mds\_name* | Имя MDS файла с оверлеем.

*Пример*

```
ZOVERLAYMDS APPLY MyChest NewChestOpenStyle
```

В игре нет оверлеев для интерактивных объектов.
## ZOVERLAYMDS REMOVE

*Описание*

Удалить примененный оверлей из MDS файла у интерактивного MOB.
*English*

Removes overlay MDS from VOB's model.
*Синтаксис*

```
ZOVERLAYMDS REMOVE [vob_name | vob_id] [mds_name]
```

 *mds\_name* | Имя MDS файла с оверлеем.

*Пример*

```
ZOVERLAYMDS REMOVE MyChest NewChestOpenStyle
```

В игре нет оверлеев для интерактивных объектов.
## ZSTARTANI

*Описание*

Запустить анимацию MOBsi объекта в фокусе, если таковая существует.
*English*

Starts ani on specified vob if it has a animatable visual.
*Синтаксис*

```
ZSTARTANI REMOVE [vob_name] [ani_name]
```

 *ani\_name* | Имя анимации из MDS файла для MOBsi объекта.

*Пример*

```
ZSTARTANI REMOVE MyChest t_S0_2_S1
```

Имя анимации указано первом параметром функции ani в соответствующем MDS файле.

```
// Анимация открытия сундука из файла CHESTBIG_NW_NORMAL_OPEN.MDS
ani         ("t_S0_2_S1"            1   "s_S1"  0.0 0.0 .   "DOOR_WOODEN_USE.asc"       F   6   29)

```

Используя команду описанную в примере, можно проиграть анимацию открытия сундука.

## ZTOGGLE MODELSKELETON

*Описание*

Включить/выключить отрисовку узловой иерархии костей для всех моделей.
*English*

Toggles drawing of all models node-hierarchies.
*Синтаксис*

```
ZTOGGLE MODELSKELETON
```

## ZTOGGLE SMOOTHROOTNODE

*Описание*

Включить/выключить сглаживание анимации корневой кости модели.
*English*

Toggles smoothing of model root nodes translation.
*Синтаксис*

```
ZTOGGLE SMOOTHROOTNODE
```

*Примечание*

При тестах ни на что не повлияло.
## ZTOGGLE VOBMORPH

*Описание*

Включить/выключить морфированную анимацию игрового мира.
*English*

Toggles morphing of vobs.
*Синтаксис*

```
ZTOGGLE VOBMORPH
```

*Примечание*

Воздействует только на морфированную анимацию встроенную в движок: колыхание ветра или волны на воде.