Профиль NPC: различия между версиями
мНет описания правки |
м Переписано по аналогии с "Параметры оружия" |
||
| (не показана 1 промежуточная версия этого же участника) | |||
| Строка 31: | Строка 31: | ||
По '''классу''' указанному в первичной секции (в данном случае: <code>npc_class_name</code> ) читаются вторичные секции из [[*.xml]]-файлов (в данном случае: ''character_desc_*.xml'') подключенных в параметре <code>specific_characters_files</code>, секции <code>[profiles]</code>, файла ''gamedata\config\'''system.ltx''''' | По '''классу''' указанному в первичной секции (в данном случае: <code>npc_class_name</code> ) читаются вторичные секции из [[*.xml]]-файлов (в данном случае: ''character_desc_*.xml'') подключенных в параметре <code>specific_characters_files</code>, секции <code>[profiles]</code>, файла ''gamedata\config\'''system.ltx''''' | ||
== Подробнее о статусах == | == Подробнее о статусах == | ||
| Строка 41: | Строка 40: | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! | ! Теги !! Статус !! Платформа !! Описание тегов !! Пример значения !! Варианты значений и их описание | ||
|- | |- | ||
| | | <source lang=xml><specific_character id="$" team_default = "1"></source> | ||
<source lang=xml><specific_character id="$" team_default = "1"></source> | |||
или | или | ||
<source lang=xml><specific_character id="$" no_random = "1"></source> | <source lang=xml><specific_character id="$" no_random = "1"></source> | ||
|| используются || ТЧ, ЧН, ЗП | |||
|| Начало вторичной секции профиля || | || Начало вторичной секции профиля || | ||
<source lang=xml><specific_character id="main_profile_npc_name" team_default = "1"></source> | <source lang=xml><specific_character id="main_profile_npc_name" team_default = "1"></source> | ||
| Строка 63: | Строка 62: | ||
А если ни одного, то вылет: [[xrServer_Objects_ALife_Monsters.cpp]] | А если ни одного, то вылет: [[xrServer_Objects_ALife_Monsters.cpp]] | ||
|- | |- | ||
| <source lang=xml><name>$</name></source> || необязательны || ТЧ, ЧН, ЗП || Имя персонажа || | |||
<source lang=xml><name>GENERATE_NAME_stalker</name></source> | <source lang=xml><name>GENERATE_NAME_stalker</name></source> | ||
| Строка 77: | Строка 76: | ||
Если теги не указывать, просто не будет отображаться имя. | Если теги не указывать, просто не будет отображаться имя. | ||
|- | |- | ||
| <source lang=xml><icon>$</icon></source> || необязательны || ТЧ, ЧН, ЗП || Иконка персонажа в интерфейсе || <source lang=xml><icon>ui_npc_icon_name</icon></source> || Имя <code>texture id</code> из [[*.xml]]-файла подключенного в параметре <code>files</code>, секции <code>[texture_desc]</code>, файла ''gamedata\config\'''system.ltx''''' | |||
Если теги не указывать, будет установлена указанная в движке по умолчанию иконка <code>ui_npc_u_barman</code>. | Если теги не указывать, будет установлена указанная в движке по умолчанию иконка <code>ui_npc_u_barman</code>. | ||
|- | |- | ||
| <source lang=xml><class>$</class></source> || используются || ТЧ, ЧН, ЗП || Имя класса || <source lang=xml><class>npc_class_name</class></source> || Должен соответствовать указанному в первичной секции профиля. | |||
Если теги не указывать, произойдет вылет: [[xrServer_Objects_ALife_Monsters.cpp]] | Если теги не указывать, произойдет вылет: [[xrServer_Objects_ALife_Monsters.cpp]] | ||
|- | |- | ||
| <source lang=xml><community>$</community></source> || используются || ТЧ, ЧН, ЗП || Группировка. По ней определяются отношения || <source lang=xml><community>stalker</community></source> || Соответствующие указанному в параметре <code>communities</code>, секции <code>[game_relations]</code> файла по пути ''gamedata\config\creatures\'''game_relations.ltx''''' | |||
Если теги не указывать, произойдет 2 вариант вылета: [[specific_character.cpp]] | Если теги не указывать, произойдет 2 вариант вылета: [[specific_character.cpp]] | ||
|- | |- | ||
| <source lang=xml><terrain_sect>$</terrain_sect></source> || необязательны || ТЧ, ЧН, ЗП || Неизвестно || <source lang=xml><terrain_sect>stalker_terrain</terrain_sect></source> || Значения по умолчанию указаны в одноименной секции в файле по пути: ''gamedata\config\creatures\'''m_stalker.ltx''''' | |||
|- | |- | ||
| <source lang=xml><rank>$</rank></source> || используются || ТЧ, ЧН, ЗП || Ранг персонажа || <source lang=xml><rank>149</rank></source> || в цифрах; соответствующие указанному в параметре <code>rating</code>, секции <code>[game_relations]</code> файла по пути ''gamedata\config\creatures\'''game_relations.ltx''''' | |||
Если теги не указывать, произойдет 3 вариант вылета: [[specific_character.cpp]] | Если теги не указывать, произойдет 3 вариант вылета: [[specific_character.cpp]] | ||
|- | |- | ||
| <source lang=xml><reputation>$</reputation></source> || используются || ТЧ || Репутация персонажа || <source lang=xml><reputation>12</reputation></source> || Соответствующие указанному в параметре <code>reputation_names</code>, секции <code>[game_relations]</code> файла по пути ''gamedata\config\creatures\'''game_relations.ltx''''' | |||
|- | |- | ||
| <source lang=xml><money min="$" max="$" infinitive="$"/></source> || необязательны || ТЧ, ЧН, ЗП || Количество денег || <source lang=xml><money min="200" max="600" infinitive="0"/></source> || Если тег не указывать, будет использовано значение из параметра <code>money</code> по умолчанию указано в файле по пути: ''gamedata\config\creatures\'''m_stalker.ltx''''' | |||
Если параметр удалить, будет установлено значение <code>0</code>. Однако, в игре это не окажет эффекта, т.к. значение уже записано в '''all.spawn''', его можно только изменить тегом. | Если параметр удалить, будет установлено значение <code>0</code>. Однако, в игре это не окажет эффекта, т.к. значение уже записано в '''all.spawn''', его можно только изменить тегом. | ||
| Строка 111: | Строка 110: | ||
<code>infinitive="1"</code> – восполняется после каждой сделки, но каждая отдельная сделка будет ограничена количеством денег NPC. | <code>infinitive="1"</code> – восполняется после каждой сделки, но каждая отдельная сделка будет ограничена количеством денег NPC. | ||
|- | |- | ||
| <source lang=xml><snd_config>$</snd_config></source> || необязательны || ТЧ, ЧН, ЗП || Озвучка || <source lang=xml><snd_config>characters_voice\human_01\newbie\</snd_config></source> || Путь до озвучки относительно директории ''gamedata\sounds'' | |||
Если теги не указывать, NPC просто будет молчать. | Если теги не указывать, NPC просто будет молчать. | ||
|- | |- | ||
| <source lang=xml><crouch_type>$</crouch_type></source> || необязательны || ТЧ, ЧН, ЗП || Неизвестно || <source lang=xml><crouch_type>-1</crouch_type></source> || Значение параметра <code>crouch_type</code> по умолчанию указано в файле по пути: ''gamedata\config\creatures\'''m_stalker.ltx''''' | |||
|- | |- | ||
| <source lang=xml><panic_threshold>$</panic_threshold></source> || необязательны || ТЧ, ЧН, ЗП || Функция оценки вероятности победы. Если падает ниже указанного порога, то NPC впадает в панику || <source lang=xml><panic_threshold>0.1</panic_threshold></source> || от <code>0</code> до <code>1</code> | |||
<code>0</code> — вообще не паникует | <code>0</code> — вообще не паникует | ||
| Строка 125: | Строка 124: | ||
Значение параметра <code>panic_threshold</code> по умолчанию указано в файле по пути: ''gamedata\config\creatures\'''m_stalker.ltx''''' | Значение параметра <code>panic_threshold</code> по умолчанию указано в файле по пути: ''gamedata\config\creatures\'''m_stalker.ltx''''' | ||
|- | |- | ||
| <source lang=xml><visual>$</visual></source> || используются || ТЧ, ЧН, ЗП || Модель персонажа || <source lang=xml><visual><code>actors\novice\green_stalker_2</code></visual></source> || Путь к [[*.ogf]]-файлу относительно директории ''gamedata\meshes'' | |||
От прописанной в модели '''User Data''' ([[*.ltx]]-файл по пути: ''gamedata\config\models\capture'') зависит бронированность NPC. | От прописанной в модели '''User Data''' ([[*.ltx]]-файл по пути: ''gamedata\config\models\capture'') зависит бронированность NPC. | ||
| Строка 131: | Строка 130: | ||
Если теги удалить, это не окажет эффекта, т.к. значение уже записано в '''all.spawn''', его можно только изменить тегом. | Если теги удалить, это не окажет эффекта, т.к. значение уже записано в '''all.spawn''', его можно только изменить тегом. | ||
|- | |- | ||
| <source lang=xml><supplies>$</supplies></source> || необязательны || ТЧ, ЧН, ЗП || Секция спавна инвентаря || | |||
<syntaxhighlight lang=ini> | <syntaxhighlight lang=ini> | ||
<supplies> | <supplies> | ||
| Строка 184: | Строка 183: | ||
Если теги не указывать, NPC будет пустой. | Если теги не указывать, NPC будет пустой. | ||
|- | |- | ||
| <source lang=xml><critical_wound_weights> | |||
$ | $ | ||
</critical_wound_weights></source> || Неизвестно || <source lang=xml><critical_wound_weights>55,30,15</critical_wound_weights></source> | </critical_wound_weights></source> || необязательны || ТЧ, ЧН, ЗП || Неизвестно || <source lang=xml><critical_wound_weights>55,30,15</critical_wound_weights></source> | ||
или вместо этого подключить [[*.xml]]-файл с тегами из директории ''gamedata\config'' | или вместо этого подключить [[*.xml]]-файл с тегами из директории ''gamedata\config'' | ||
| Строка 194: | Строка 193: | ||
|| Значение параметра <code>critical_wound_weights</code> по умолчанию указано в файле по пути: ''gamedata\config\creatures\'''m_stalker.ltx''''' | || Значение параметра <code>critical_wound_weights</code> по умолчанию указано в файле по пути: ''gamedata\config\creatures\'''m_stalker.ltx''''' | ||
|- | |- | ||
| <source lang=xml><start_dialog>$</start_dialog></source> || необязательны || ТЧ, ЧН, ЗП || Диалог приветствия || <source lang=xml><start_dialog>hello_dialog</start_dialog></source> | |||
Также можно подключить [[*.xml]]-файл с тегами из директории ''gamedata\config'' | Также можно подключить [[*.xml]]-файл с тегами из директории ''gamedata\config'' | ||
| Строка 202: | Строка 201: | ||
|| Имя <code>dialog id</code> из [[*.xml]]-файла подключенного в параметре <code>files</code>, секции <code>[profiles]</code>, файла ''gamedata\config\'''system.ltx''''' | || Имя <code>dialog id</code> из [[*.xml]]-файла подключенного в параметре <code>files</code>, секции <code>[profiles]</code>, файла ''gamedata\config\'''system.ltx''''' | ||
|- | |- | ||
| <source lang=xml><actor_dialog>$</actor_dialog></source> || необязательны || ТЧ, ЧН, ЗП || Обычный диалог || <source lang=xml><actor_dialog>dm_cool_info_dialog</actor_dialog></source> || Имя <code>dialog id</code> из [[*.xml]]-файла подключенного в параметре <code>files</code>, секции <code>[profiles]</code>, файла ''gamedata\config\'''system.ltx''''' | |||
Также можно подключить [[*.xml]]-файл с тегами из директории ''gamedata\config'' | Также можно подключить [[*.xml]]-файл с тегами из директории ''gamedata\config'' | ||
| Строка 209: | Строка 208: | ||
Если теги удалить, это не окажет эффекта, т.к. значение уже записано в '''all.spawn''', его можно только изменить тегом. | Если теги удалить, это не окажет эффекта, т.к. значение уже записано в '''all.spawn''', его можно только изменить тегом. | ||
|- | |- | ||
| <source lang=xml></specific_character></source> || используются || ТЧ, ЧН, ЗП || Конец вторичной секции профиля || Отсутствует || Отсутствует | |||
|- | |- | ||
!colspan="6" align="center"|Устаревшие теги | !colspan="6" align="center"|Устаревшие теги | ||
|- | |- | ||
| <source lang=xml><map_icon x="$" y="$"></map_icon></source> || не используются || ТЧ || Неизвестно || <source lang=xml><map_icon x="1" y="0"></map_icon></source> || Неизвестно | |||
|- | |- | ||
| <source lang=xml><bio>$</bio></source> || не используются || ТЧ || Биография персонажа || <source lang=xml><bio>npc_bio_name</bio></source> || Имя <code>string id</code> из [[*.xml]]-файла подключенного в параметре <code>files</code>, секции <code>[string_table]</code>, файла ''gamedata\config\'''localization.ltx''''' | |||
|} | |} | ||
=== Как это работает === | === Как это работает === | ||
| Строка 224: | Строка 222: | ||
# По классу, считывается список всех вторичных секций для его профиля (например: <code>main_profile_npc_name</code>, <code>main_profile_npc_2_name</code>, <code>main_profile_npc_3_name</code> и т.д.) | # По классу, считывается список всех вторичных секций для его профиля (например: <code>main_profile_npc_name</code>, <code>main_profile_npc_2_name</code>, <code>main_profile_npc_3_name</code> и т.д.) | ||
# Одна из вторичных секций профиля выбирается случайно | # Одна из вторичных секций профиля выбирается случайно | ||
== Уникальный профиль == | == Уникальный профиль == | ||
| Строка 238: | Строка 235: | ||
</character> | </character> | ||
</syntaxhighlight> | </syntaxhighlight> | ||
=== Как это работает === | === Как это работает === | ||
| Строка 244: | Строка 240: | ||
# По первичной секции профиля, считывается класс его профиля (в данном случае: <code>npc_class_name</code>) | # По первичной секции профиля, считывается класс его профиля (в данном случае: <code>npc_class_name</code>) | ||
# По классу, считывается только та секция профиля, которая указана тегами (в данном случае: <code>main_profile_npc</code>)<br>Если указанная секция не будет найдена, произойдет 2 вариант вылета: [[xml_str_id_loader.h]] | # По классу, считывается только та секция профиля, которая указана тегами (в данном случае: <code>main_profile_npc</code>)<br>Если указанная секция не будет найдена, произойдет 2 вариант вылета: [[xml_str_id_loader.h]] | ||
== Источники == | == Источники == | ||
{{ | {{reflist|3}} | ||
[[Категория:Игровые архивы]][[Категория:Конфиги]] | [[Категория:Игровые архивы]][[Категория:Конфиги]] | ||
Текущая версия от 21:47, 26 августа 2024
|
Профиль NPC | |
| Автор | aka_sektor |
| Дополнил | Charsi |
| Тип статьи | справка |
| Актуальность | ТЧ, ЧН, ЗП |
Профиль NPC (Non-Player Character/Неигровой персонаж)[1][2] – это полное описание персонажа, включающее имя, группировку, ранг, репутацию, обмундирование, внешний вид, озвучку и диалоги. Используется для типизированной простановки персонажей, что экономит и время и позволяет достичь определенной неповторимости от игры к игре.
Сначала создается первичная секция профиля в *.xml-файле (в данном случае: npc_profile.xml) подключенном в параметре files, секции [profiles], файла gamedata\config\system.ltx
Пример:
<character id="first_profile_npc_name">
<class>npc_class_name</class>
</character>По классу указанному в первичной секции (в данном случае: npc_class_name ) читаются вторичные секции из *.xml-файлов (в данном случае: character_desc_*.xml) подключенных в параметре specific_characters_files, секции [profiles], файла gamedata\config\system.ltx
Подробнее о статусах
- используются — обязательные теги профиля NPC.
- необязательны — теги профиля NPC, но как можно понять из названия - не являющиеся обязательными. Например, если вас устраивает значение установленное по умолчанию.
- не используются — теги от предыдущих версий движков игры, были отключены или переименованы в новых версиях. Рекомендуется удалить из профиля NPC.
Вместо символа $ – значение.
| Теги | Статус | Платформа | Описание тегов | Пример значения | Варианты значений и их описание |
|---|---|---|---|---|---|
<specific_character id="$" team_default = "1">или <specific_character id="$" no_random = "1"> |
используются | ТЧ, ЧН, ЗП | Начало вторичной секции профиля |
<specific_character id="main_profile_npc_name" team_default = "1">или <specific_character id="main_profile_npc_name" no_random = "1"> |
Значения алгоритма чтения секции:
Указывать значение, нужно только одно. |
<name>$</name> |
необязательны | ТЧ, ЧН, ЗП | Имя персонажа |
<name>GENERATE_NAME_stalker</name>или <name>npc_name</name> |
Случайно сгенерированное (в данном случае: из секции stalker_names_stalker файла gamedata\config\system.ltx)
или уникальное имя Если теги не указывать, просто не будет отображаться имя. |
<icon>$</icon> |
необязательны | ТЧ, ЧН, ЗП | Иконка персонажа в интерфейсе | <icon>ui_npc_icon_name</icon> |
Имя texture id из *.xml-файла подключенного в параметре files, секции [texture_desc], файла gamedata\config\system.ltx
Если теги не указывать, будет установлена указанная в движке по умолчанию иконка |
<class>$</class> |
используются | ТЧ, ЧН, ЗП | Имя класса | <class>npc_class_name</class> |
Должен соответствовать указанному в первичной секции профиля.
Если теги не указывать, произойдет вылет: xrServer_Objects_ALife_Monsters.cpp |
<community>$</community> |
используются | ТЧ, ЧН, ЗП | Группировка. По ней определяются отношения | <community>stalker</community> |
Соответствующие указанному в параметре communities, секции [game_relations] файла по пути gamedata\config\creatures\game_relations.ltx
Если теги не указывать, произойдет 2 вариант вылета: specific_character.cpp |
<terrain_sect>$</terrain_sect> |
необязательны | ТЧ, ЧН, ЗП | Неизвестно | <terrain_sect>stalker_terrain</terrain_sect> |
Значения по умолчанию указаны в одноименной секции в файле по пути: gamedata\config\creatures\m_stalker.ltx |
<rank>$</rank> |
используются | ТЧ, ЧН, ЗП | Ранг персонажа | <rank>149</rank> |
в цифрах; соответствующие указанному в параметре rating, секции [game_relations] файла по пути gamedata\config\creatures\game_relations.ltx
Если теги не указывать, произойдет 3 вариант вылета: specific_character.cpp |
<reputation>$</reputation> |
используются | ТЧ | Репутация персонажа | <reputation>12</reputation> |
Соответствующие указанному в параметре reputation_names, секции [game_relations] файла по пути gamedata\config\creatures\game_relations.ltx
|
<money min="$" max="$" infinitive="$"/> |
необязательны | ТЧ, ЧН, ЗП | Количество денег | <money min="200" max="600" infinitive="0"/> |
Если тег не указывать, будет использовано значение из параметра money по умолчанию указано в файле по пути: gamedata\config\creatures\m_stalker.ltx
Если параметр удалить, будет установлено значение
Будет выбрано случайным образом от указанного минимума до указанного максимума. Если не указывать, будет установлено значение
|
<snd_config>$</snd_config> |
необязательны | ТЧ, ЧН, ЗП | Озвучка | <snd_config>characters_voice\human_01\newbie\</snd_config> |
Путь до озвучки относительно директории gamedata\sounds
Если теги не указывать, NPC просто будет молчать. |
<crouch_type>$</crouch_type> |
необязательны | ТЧ, ЧН, ЗП | Неизвестно | <crouch_type>-1</crouch_type> |
Значение параметра crouch_type по умолчанию указано в файле по пути: gamedata\config\creatures\m_stalker.ltx
|
<panic_threshold>$</panic_threshold> |
необязательны | ТЧ, ЧН, ЗП | Функция оценки вероятности победы. Если падает ниже указанного порога, то NPC впадает в панику | <panic_threshold>0.1</panic_threshold> |
от 0 до 1
Значение параметра |
<visual>$</visual> |
используются | ТЧ, ЧН, ЗП | Модель персонажа | <visual><code>actors\novice\green_stalker_2</code></visual> |
Путь к *.ogf-файлу относительно директории gamedata\meshes
От прописанной в модели User Data (*.ltx-файл по пути: gamedata\config\models\capture) зависит бронированность NPC. Если теги удалить, это не окажет эффекта, т.к. значение уже записано в all.spawn, его можно только изменить тегом. |
<supplies>$</supplies> |
необязательны | ТЧ, ЧН, ЗП | Секция спавна инвентаря |
<supplies>
[spawn] \n
device_torch \n
wpn_pm, cond=0.5 \n
ammo_9x18_fmj = 1 \n
wpn_ak74 = 1, silencer \n
ammo_5.45x39_fmj = 3 \n
vodka = 1, prob=0.5 \n
device_torch = 1, prob=1 \n
</supplies>Также можно подключить *.xml-файлы со спавн-секциями из директории gamedata\config <supplies>
[spawn] \n
device_torch \n
wpn_pm, cond=0.5 \n
ammo_9x18_fmj = 1 \n
wpn_ak74 = 1, silencer \n
ammo_5.45x39_fmj = 3 \n
#include "gameplay\character_items.xml" \n
#include "gameplay\character_food.xml" \n
#include "gameplay\character_drugs.xml"
</supplies> |
section = #, prob=$, cond=$ \n
или
Где:
Если теги не указывать, NPC будет пустой. |
<critical_wound_weights>
$
</critical_wound_weights> |
необязательны | ТЧ, ЧН, ЗП | Неизвестно | <critical_wound_weights>55,30,15</critical_wound_weights>или вместо этого подключить *.xml-файл с тегами из директории gamedata\config #include "gameplay\character_criticals_*.xml" |
Значение параметра critical_wound_weights по умолчанию указано в файле по пути: gamedata\config\creatures\m_stalker.ltx
|
<start_dialog>$</start_dialog> |
необязательны | ТЧ, ЧН, ЗП | Диалог приветствия | <start_dialog>hello_dialog</start_dialog>Также можно подключить *.xml-файл с тегами из директории gamedata\config #include "gameplay\character_dialogs.xml"Если теги удалить, это не окажет эффекта, т.к. значение уже записано в all.spawn, его можно только изменить тегом. |
Имя dialog id из *.xml-файла подключенного в параметре files, секции [profiles], файла gamedata\config\system.ltx
|
<actor_dialog>$</actor_dialog> |
необязательны | ТЧ, ЧН, ЗП | Обычный диалог | <actor_dialog>dm_cool_info_dialog</actor_dialog> |
Имя dialog id из *.xml-файла подключенного в параметре files, секции [profiles], файла gamedata\config\system.ltx
Также можно подключить *.xml-файл с тегами из директории gamedata\config #include "gameplay\character_dialogs.xml"Если теги удалить, это не окажет эффекта, т.к. значение уже записано в all.spawn, его можно только изменить тегом. |
</specific_character> |
используются | ТЧ, ЧН, ЗП | Конец вторичной секции профиля | Отсутствует | Отсутствует |
| Устаревшие теги | |||||
<map_icon x="$" y="$"></map_icon> |
не используются | ТЧ | Неизвестно | <map_icon x="1" y="0"></map_icon> |
Неизвестно |
<bio>$</bio> |
не используются | ТЧ | Биография персонажа | <bio>npc_bio_name</bio> |
Имя string id из *.xml-файла подключенного в параметре files, секции [string_table], файла gamedata\config\localization.ltx
|
Как это работает
- При спавне персонажа, считывается первичная секция его профиля (в данном случае:
first_profile_npc_name) - По первичной секции профиля, считывается класс его профиля (в данном случае:
npc_class_name) - По классу, считывается список всех вторичных секций для его профиля (например:
main_profile_npc_name,main_profile_npc_2_name,main_profile_npc_3_nameи т.д.) - Одна из вторичных секций профиля выбирается случайно
Уникальный профиль
Для некоторых персонажей требуется четкое соответствие вторичной секции профиля. Например, для уникальных квестовых или сюжетных персонажей.
Задается тегами <specific_character>$</specific_character>.
Пример:
<character id="first_profile_npc_name">
<class>npc_class_name</class>
<specific_character>main_profile_npc</specific_character>
</character>Как это работает
- При спавне персонажа, считывается первичная секция его профиля (в данном случае:
first_profile_npc_name) - По первичной секции профиля, считывается класс его профиля (в данном случае:
npc_class_name) - По классу, считывается только та секция профиля, которая указана тегами (в данном случае:
main_profile_npc)
Если указанная секция не будет найдена, произойдет 2 вариант вылета: xml_str_id_loader.h
Источники
- ↑ Документация к X-Ray SDK 0.7 от GSC Game World
- ↑ Пост пользователя "Malandrinus" на AMK форуме