Введение
Для создания персонажа необходимо создать его профиль, описание и спаун-секцию.
Создание профиля персонажа
Чтобы создать профиль персонажа, необходимо в файл gamedata\configs\gameplay\npc_profile.xml добавить строки:
<character id="идентификатор_профиля">
<class>идентификатор_класса</class>
</character>
Идентификатор профиля конструируется как <префикс_уровня>_<идентификатор_сцены>_<группировка_персонажа>_<описательное_название>, например, zat_b7_stalker_raider_leader. Во избежание путаницы, класс персонажа указывается такой же, как идентификатор профиля. Класс персонажа используется для связи профиля и описания персонажа.
Создание описания персонажа
С одним профилем персонажа может быть ассоциировано несколько описаний персонажей. Это позволяет, добавив в игру несколько персонажей с одним и тем же профилем, получить в результате персонажей с различным набором вещей, разным внешним видом (visual), и т.д. Для того, чтобы создать описание персонажа, необходимо в файл gamedata\configs\gameplay\character_desc_<имя_уровня>.xml добавить следующую конструкцию:
<specific_character id="идентификатор_описания" team_default = "1">
<name>идентификатор_строки_имени</name>
<icon>идентификатор_текстуры_иконки</icon>
<map_icon x="1" y="0"></map_icon>
<bio>идентификатор_строки_биографии</bio>
<class>идентификатор_класса</class>
<community>группировка_персонажа</community> <terrain_sect>stalker_terrain</terrain_sect>
<rank>ранг</rank>
<reputation>репутация</reputation>
<money min="минимум_денег" max="максимум_денег" infinitive="<восполняемость>"/>
<visual>внешний_вид</visual>
<snd_config>папка_озвучки</snd_config>
<supplies>
[spawn] \n
<предмет> \n
<предмет> \n
#include "gameplay\character_items.xml"
#include "gameplay\character_food.xml"
#include "gameplay\character_drugs.xml"
</supplies>
#include "gameplay\character_criticals_4.xml"
<start_dialog>идентификатор_стартового_диалога</start_dialog>
<actor_dialog>идентификатор_диалога_актёра</actor_dialog>
<actor_dialog>идентификатор_диалога_актёра</actor_dialog>
#include "gameplay\character_dialogs.xml"
</specific_character>
Элемент конструкции Описание
идентификатор_описания Во избежание путаницы идентификатор описания:
a) аналогичен идентификаторам класса и профиля в случае, если с профилем ассоциируется только одно описание;
b) конструируется как <идентификатор_профиля>_default_<номер> (начиная с нуля), если с профилем ассоциируется несколько описаний.
идентификатор_строки_имени Идентификатор строки имени конструируется, как <идентификатор_описания>_name. Строка имени
персонажа добавляется в файл gamedata\configs\text\<локализация>\st_characters.xml конструкцией:
<string id="идентификатор_строки_имени">
<text>текст_имени</text>
</string>
Также, имя можно сгенерировать, поставив в описание персонажа вместо идентификатора строки имени конструкцию GENERATE_NAME_<имя_группировки>.
идентификатор_текстуры_иконки Идентификатор текстуры иконки берётся из файла gamedata\configs\ui\textures_descr\ui_npc_unique.xml. Эта иконка видна во время диалога с персонажем.
идентификатор_строки_биографии На данный момент в игре не используется, так что это поле можно оставить пустым.
идентификатор_класса Идентификатор класса, который связывает описание персонажа с соответствующим профилем персонажа.
группировка_персонажа Имя группировки, к которой принадлежит данный персонаж.
ранг Число, определяющее относительную «крутизну» персонажа:
0 - 300 – новичок (novice)
301 - 600 – опытный (experienced)
601 - 900 – ветеран (veteran)
901 - 999 – мастер (master)
репутация На данный момент в игре не используется, так что это поле можно оставить пустым.
минимум_денег
максимум_денег восполняемость
Количество денег, имеющихся у персонажа, будет выбрано случайным образом от указанного минимума до указанного максимума. Восполняемость может принимать значения 0 или 1. В последнем случае количество денег у персонажа будет восполняться после каждой сделки, но каждая отдельная сделка будет ограничена количеством денег персонажа.
внешний_вид Путь к файлу *.ogf от папки gamedata\meshes, содержащему внешний вид (visual) персонажа. Указывается без начальной «обратной косой», без точки и без расширения файла. От внешнего вида зависит бронированность персонажа.
папка_озвучки Путь к папке универсальной озвучки персонажа от папки gamedata\sounds. Имеет вид characters_voice\human_номер\группировка\. В этой конструкции номер может быть 01 либо 02 (обычные голоса), или же 03 (приглушённый голос из-за дыхательной маски, противогаза либо купола).
предмет \n
предмет \n
При помощи конструкций предмет задаётся список предметов, которые должны быть у данного персонажа. Конструкции имеют следующий вид: идентификатор_предмета = количество, навес. При этом, = количество и , навес необязательны.
Параметр навес имеет смысл только для оружия и может принимать следующие значения:
scope (оптический прицел)
silencer (глушитель)
launcher (подствольный гранатомёт)
Можно добавить несколько конструкций , навес, но все они должны стоять после конструкции = количество. В конце всей вышеописанной конструкции обязательно должны стоять символы \n (перенос строки). Пример:
wpn_abakan = 1, scope, launcher
#include "gameplay\character_items.xml" Эта и все остальные строки #include должны стоять в начале строки (без отступов перед ней). Она добавляет в список предметов персонажа бинокль, фонарь, детектор и, с долей вероятности, гитару.
#include "gameplay\character_food.xml" Эта строка добавляет в список предметов персонажа хлеб, колбасу и водку.
#include "gameplay\character_drugs.xml" Эта строка с определённой долей вероятности добавляет в список предметов персонажа бинты и аптечку.
идентификатор_стартового_диалога Идентификатор диалога, являющегося для персонажа стартовым. Если этот параметр (вместе с тэгами <start_dialog></start_dialog>) не будет указан – будет использован стандартный стартовый диалог.
идентификатор_диалога_актёра Идентификатор диалога актёра. Можно указать несколько диалогов актёра (каждый – в тэгах <actor_dialog></actor_dialog>).
#include "gameplay\character_dialogs.xml" Эта строка добавляет диалоги персонажу.