Редактирование: Профили персонажей

Перейти к: навигация, поиск

Внимание! Вы не авторизовались на сайте. Ваш IP-адрес будет публично видимым, если вы будете вносить любые правки. Если вы войдёте или создадите учётную запись, правки вместо этого будут связаны с вашим именем пользователя, а также у вас появятся другие преимущества.

Правка может быть отменена. Пожалуйста, просмотрите сравнение версий, чтобы убедиться, что это именно те изменения, которые вас интересуют, и нажмите «Записать страницу», чтобы изменения вступили в силу.
Текущая версия Ваш текст
Строка 1: Строка 1:
Под '''профилем персонажа''' ('''''character profile''''') подразумевается описание в виде шаблона некоторых характеристик персонажа.
+
Устанавливаются и настраиваются в файлах '''X:\gamedata\config\gameplay\character_desc_название группы.xml'''
  
Под '''конкретным персонажем''' ('''''specific character''''') подразумевается чёткое и исчерпывающее описание сталкера, торговца или актёра. Профиль персонажа задается в [[Level Editor]] во вкладке "npc_profile" для свойств объекта.
+
'''Профиль персонажа''' – это, собственно, полное описание персонажа, включающее имя, группировку, ранг, обмундирование, описание и внешний вид. Используется для типизированной простановки персонажей, что экономит и время и позволяет достичь определенной рандомности от игры к игре.
  
Профиль нужен для того, чтобы рандомизировать тех персонажей, которые появляются в игре, но тем самым не нарушить сценарий игры (т.е. персонажи хоть и появляются случайно, но соответствуют заданным характеристикам).
 
  
[[Формат XML | XML-файлы]] шаблонов профилей задаются в секции <code>[profiles]</code> файла '''system.ltx''':
+
== Создание профиля ==
<syntaxhighlight lang="ini">[profiles]
+
В '''gamedata\config\gameplay\npc_profile.xml''' создается уникальный идентификатор типа персонажа:
;список xml файлов, содержащих профили сталкеров и торговцев
+
<syntaxhighlight lang="xml">
files = npc_profile,...
+
<character id="stalker_novice">
;список xml файлов, содержащих описания конкретных сталкеров и торговцев
+
<class>Stalker_novice</class>
specific_characters_files = character_desc_general </syntaxhighlight>
+
</character>
 +
</syntaxhighlight>
 +
'''Класс персонажа''' – это уникальный идентификатор класса, по которому будет браться конкретный профиль для данного персонажа (ссылаться на определенный файл с профилями).
  
 
+
В '''character_desc_название класса/xml''' описываются конкретные профили. Они умышленно разбиваются на файлы по группировкам или уровням, чтобы облегчить навигацию и восприятие. Обычно на каждый класс создается несколько профилей. Некоторые из них детерминированы(имеют ФИО, уникальную биографию и тд), некоторые – базовые. Базовые отмечены флажком  <code>team_default = "1"</code>. Логика работы такая: при создании персонажа считывается его тип, по типу получается класс. Затем составляется список всех доступных профилей для данного класса и из них рандомно выбирается один. Уникальные детерминированные профили (без <code>team_default = "1"</code>), будучи выбраны однажды больше не выбираются. Профиль, единственный в своём классе, должен иметь <code>team_default = "1"</code>
== Формат файла шаблонов профилей ==
 
Настраиваются в '''gamedata\config\gameplay\npc_profile.xml'''
 
<syntaxhighlight lang="xml"><character id="soldier">
 
    <team>none</team>          <!-- id группировки, к которой принадлежит. (Берётся из списка группировок) -->
 
    <rank></rank>              <!--  Ранг персонажа, возможно от 0 до 100. Персонаж выберется, если его ранг +/- 10 от заданного -->
 
    <reputation></reputation>  <!--  Карма персонажа. От 0 злой, до 100 добрый, если его репутация +/- 10 от заданного -->
 
    <specific_character></specific_character>  <!-- Идентификатор профиля описаний (если задано, то не нужно всё остальное) -->
 
</character></syntaxhighlight>
 
 
 
 
 
== Формат файла описаний конкретных персонажей ==
 
Настраиваются в '''X:\gamedata\config\gameplay\character_desc_название группы.xml'''
 
 
 
Флажок <code>no_random="1"</code> задаётся, если нужно, чтобы персонаж не был доступен для случайного выбора по профилю.
 
 
 
<code>team_default="1"</code> должен быть задан '''ОБЯЗАТЕЛЬНО''' хотя бы один на команду — он будет использован, если вдруг (чего не должно случиться практически) израсходуются все профили. Профили без данного флажка, будучи единожды выбраны, больше не используются.
 
 
 
Параметры, отмеченные '''(Н)''', необязательны для использования.
 
 
 
<syntaxhighlight lang="xml"><specific_character id="ivan_ivanych" no_random="1" team_default="1"> <!-- Уникальный id персональной информации -->
 
 
 
    <name>Неизвестный бандит</name> <!-- Высвечиваемое имя, должно прогоняться через стрингтейбл. -->
 
 
 
    <icon x="14" y="4"></icon> <!-- Иконка, которая отображается при общении. Берётся с текстуры ui_icons_npc. Отсчитывается с верхнего левого угла, но не по пикселям, а по позициям, равным одной иконке. -->
 
 
 
    <map_icon x="3" y="2"></map_icon> <!-- Иконка, отображаемая на карте. Берётся с текстуры ui_icons_map. Отсчитывается с верхнего левого угла, но не по пикселям, а по позициям, равным одной иконке. -->
 
 
 
    <bio>Опытный бандит. Детальная информация отсутствует.</bio> <!-- (Н) Биография персонажа, должна прогоняться через стрингтейбл. В релизе не используется. -->
 
 
 
 
 
    <class>bandit_master</class> <!-- Список классов для profiles, к которым может принадлежать персонаж. То, что связывает этот профиль с идентификатором персонажа. -->
 
 
 
    <community>bandit</community> <!-- Имя группировки данного персонажа. По ней определяется отношение к актору и другим персонажам. -->
 
 
 
    <terrain_sect>stalker_terrain</terrain_sect> <!-- По каким местам разрешено ходить персонажу (см. m_stalker.ltx). Рудимент, оставшийся с билдовых времён. -->
 
 
 
    <snd_config>characters_voice\human_02\military\</snd_config> <!-- Звуковой конфиг данного персонажа. Путь к папке со звуками относительно \gamedata\sounds\ -->
 
 
 
    <crouch_type>0</crouch_type> <!-- (Н) Тип приседания. 0 - слегка присев, 1 - низкий присяд; -1 - случайный выбор. -->
 
 
 
    <panic_threshold>0.1</panic_threshold> <!-- (Н) Порог паники. Значение может изменяться от 0 до 1. Если функция оценки вероятности победы падает ниже указанного порога, то сталкер впадает в панику. Если вы установите 0 — в  панику он впадать вообще не будет, если в 1 — то будет бегать от крысы. -->
 
 
 
    <hit_probability_factor>1.0</hit_probability_factor> <!-- (Н) Меткость персонажа. Может меняться от 0 до 1. При 0 будет мазать в упор. -->
 
 
 
 
 
    <rank>10</rank> <!-- Ранг персонажа в глобальной таблице. -->
 
 
 
    <reputation>0</reputation> <!-- Репутация. Может быть отрицательной. -->
 
 
 
 
 
    <visual>actors\bandit\stalker_bandit_8</visual> <!-- Имя ogf-модели (без расширения) -->
 
 
 
    <!-- Список оборудования, которое будет проспавнено сталкеру.
 
        Если не нужно спавнить, то в Level Editor в Custom Data
 
        следует добавить строку [dont_spawn_character_supplies] -->
 
        <supplies>
 
 
 
            <!-- Формат таков:
 
            [spawn]
 
            <section> [ = <count>[, <parameters> ] ]
 
 
 
            здесь:
 
            <section>      = название секции в LTX
 
            <count>        = количество предметов, integer > 0      =1, если не задано
 
 
 
            <parameters> = [<addons>] [<condition>] [<probability>]
 
 
 
            <addons>        = <addon> [<addons>]
 
            <addon>        = {scope | silencer | launcher} – соответственно прицел, глушак, подствольник
 
            <condition>    = {cond=float_value} – состояние вещи, изменяется от 0 (сломанный), до 1 (новый)
 
            <probability>  = {prob=float_value} вероятность спауна предметов. Тоже от 0 до 1.
 
           
 
            Важно: если задаем дополнительные параметры, нужно обязательно задавать количество предметов.
 
            -->
 
 
 
            <!-- Пример: -->
 
            [spawn]
 
            device_torch
 
            wpn_ak74 = 1, silencer
 
            wpn_ak74 = 4, launcher cond=0.8
 
            wpn_ak74 = 1, scope prob=0.3
 
            wpn_ak74 = 1, scope launcher silencer cond=0.5
 
            wpn_fort = 8, cond=0.75 prob=0.5
 
 
 
        </supplies>
 
 
 
 
 
    <mechanic_mode>1</mechanic_mode> <!-- (Н) (добавлено в ЧН) Игнорировать врагов. Подразумевается, что персонаж находится в защищённом месте и бессмертен либо скрывается при нападении на базу. -->
 
 
 
 
 
    <start_dialog>hello_dialog</start_dialog> <!-- Стартовый диалог этого персонажа. Более подробно в описании диалогов. -->
 
 
 
    <actor_dialog></actor_dialog> <!-- Диалоги актера (может быть много), которые будут доступны только при встрече с данным персонажем. В принципе не сильно обязательно, но было бы очень удобно.  -->
 
 
 
</specific_character> </syntaxhighlight>
 
 
 
Для некоторых персонажей требуется чёткое соответствие "тип персонажа – персонаж". Например, для уникальных квестовых или сюжетных персонажей. В таком случае делаем так, чтобы соответствующему классу персонажа соответствовал только один профиль. В качестве примера класс и профиль Волка:
 
<syntaxhighlight lang="xml">    <character id="stalker_esc_wolf">
 
        <class>stalker_esc_wolf</class>    <!-- уникальный класс для Волка -->
 
        <specific_character>stalker_esc_wolf</specific_character>
 
    </character></syntaxhighlight>
 
 
 
<syntaxhighlight lang="xml">   <specific_character id="stalker_esc_wolf" team_default = "1">    <!-- обязательно team_default="1" -->
 
        <name>Сталкер "Волк"</name>
 
        <icon x="16" y="4"></icon>
 
        <map_icon x="0" y="0"></map_icon>
 
        <bio>Главарь лагеря новичков.</bio>
 
 
 
        <class>stalker_esc_wolf</class>    <!-- уникальный класс для Волка -->
 
        <community>stranger</community>
 
       
 
        <rank>30</rank>
 
        <reputation>0</reputation>
 
 
 
        <visual>actors\neytral\stalker_neytral_balon_1</visual>
 
        <supplies>
 
            [spawn] \n
 
            wpn_pb \n
 
            ammo_9x18_pbp \n
 
            af_medusa \n
 
            wpn_ak74 \n
 
            ammo_5.45x39_fmj \n
 
            device_torch \n
 
        </supplies>
 
 
 
        <start_dialog>escape_lager_volk_hello</start_dialog>
 
        <actor_dialog>escape_lager_volk_job</actor_dialog>
 
        <actor_dialog>escape_lager_volk_info</actor_dialog>
 
        <actor_dialog>escape_lager_volk_dynamite_done</actor_dialog>
 
    </specific_character></syntaxhighlight>
 
Обратите внимание: хоть класс Волка и отличается от класса сталкера-новичка, оба они относятся к одной и той же группировке.
 
 
 
 
 
'''Скопировано из доков GSC за 2005г.'''
 
 
 
{{#related:Формат XML}}
 
{{#related:Диалоги}}
 
  
 
[[Категория:Справка]]
 
[[Категория:Справка]]

Обратите внимание, что все добавления и изменения текста статьи рассматриваются как выпущенные на условиях лицензии GNU Free Documentation License 1.3 или более поздняя (см. xrWiki:Авторские права). Если вы не хотите, чтобы ваши тексты свободно распространялись и редактировались любым желающим, не помещайте их сюда.
Вы также подтверждаете, что являетесь автором вносимых дополнений или скопировали их из источника, допускающего свободное распространение и изменение своего содержимого.
НЕ РАЗМЕЩАЙТЕ БЕЗ РАЗРЕШЕНИЯ МАТЕРИАЛЫ, ОХРАНЯЕМЫЕ АВТОРСКИМ ПРАВОМ!

To protect the wiki against automated edit spam, we kindly ask you to solve the following CAPTCHA:

Отменить | Справка по редактированию  (в новом окне)