Job Tree
Файл Job Tree - это файл с расширением .w2job, используемый в разработке для определения и управления последовательностями анимаций NPC. В редакторе представляется в виде иерархического дерева, состоящего из узлов. Каждый узел может содержать анимации, быть зацикленным и включать другие узлы, создавая сложные последовательности действий.
Узлы
Узлы в файле Job Tree представляют собой основные строительные блоки для определения последовательностей анимаций NPC.
Каждый узел также содержит набор анимаций, которые исполняются последовательно в соответствии с заданными параметрами.
Узлы могут содержать вложенные узлы, создавая иерархическую структуру анимаций. Это позволяет формировать сложные последовательности действий, где каждый узел может включать свои собственные анимации и условия.
Также узел имеет несколько дополнительных компонентов:
Enter animation: Анимация, которая запускается, когда NPC входит в данный узел.
Leave animation: Анимация, которая выполняется, когда NPC покидает узел.
Fast leave animation: Быстрая анимация покидания, выполняемая при необходимости быстрого завершения действия.
Узлы могут быть зацикленными, с позначкой LOOPED, что означает, что анимации внутри этого узла будут повторяться установленное количество итераций.
Кроме того, каждый узел имеет набор валидных категорий анимаций, установленных в свойстве validCategories. Это позволяет связывать узел с определенными типами NPC или ситуациями, например, один узел может быть валидным только для мужских персонажей, а другой — для женских. Категория, с которой будет воспроизводиться Job Tree, выбирается при подключении Action Point в расписании конкретного NPC в Community файле.
Анимация
Объект узла
Класс: CJobTreeNode
validCategories
Тип: <array[string]>
Массив категорий, которые определяют, для каких типов категорий данный узел является валидным.
К примеру если категория Action Point выбрана как work_man, то будут исполнены анимации только тех узлов для которых эта категория будет в списке валидных.
selectionMode
Тип: <enum>
Определяет режим выбора анимаций в узле:
Sequence
Анимации будут воспроизводиться по порядку, сверху вниз.
Random
Анимации будут воспроизводиться в случайном порядке.
iterations
Тип: <int>
Указывает, сколько раз узел будет воспроизводиться. Если установлено значение больше 1, узел будет повторять свои анимации заданное количество раз.
leftItem
Тип: <string>
Определяет, какой предмет может быть в левой руке NPC во время выполнения анимаций в данном узле.
rightItem
Тип: <string>
Определяет, какой предмет может быть в правой руке NPC во время выполнения анимаций в данном узле.
looped
Тип: <bool>
Указывает, является ли узел зацикленным. Если установлено значение true, анимации в узле будут повторяться до тех пор, пока не произойдет внешнее прерывание.
Объект анимации
Класс: CJobActionBase
categoryName
Тип: <string>
Определяет категорию анимации. Это позволяет связывать анимацию с определенной группой NPC или действиями. Например, "work_man" указывает, что анимация относится к категории работ для мужских персонажей.
animName
Тип: <string>
Название анимации, которая будет выполнена.
animBlendIn
Тип: <float>
Определяет продолжительность плавного перехода в данную анимацию. Значение указывается в секундах.
animBlendOut
Тип: <float>
Определяет продолжительность плавного выхода из данной анимации. Значение указывается в секундах.
fireBlendedEvents
Тип: <bool>
?
allowedLookAtLevel
Тип: <enum>
Определяет уровень взгляда на игрока, разрешенный для NPC во время выполнения анимации.
Body
NPC будет смотреть на уровень тела.
Head
NPC будет смотреть на уровень головы.
Eyes
NPC будет смотреть на уровень глаз.
Null
NPC не будет смотреть на игрока.
ignoreIfItemMounted
Тип: <string>
Определяет название предмета при наличии которого у NPC анимация будет игнорироваться и не воспроизводиться. Значение None указывает, что анимация не будет игнорироваться.
isSkippable
Тип: <bool>
?
Класс: CJobAction
place
Тип: <string>
Указывает на тэг вейпоинта который установлен в EntityTemplate данного ActionPoint.
itemName
Тип: <string>
Название предмета, который должен взять или положить NPC. Если у NPC уже есть этот предмет, он его положит; если его нет - он его возьмет.