Интересный способ рандомной привязки визуалов к профилям НПС — S.T.A.L.K.E.R. Inside Wiki

Интересный способ рандомной привязки визуалов к профилям НПС

Материал из S.T.A.L.K.E.R. Inside Wiki

Версия от 12:23, 22 декабря 2013; 213.87.129.238 (обсуждение)

(разн.) ← Предыдущая | Текущая версия (разн.) | Следующая → (разн.)
Перейти к: навигация, поиск

Теория

В этой заметке я расскажу о том, как назначить нескольким профилям неписей разные визуалы, которые рандомно распределяться для каждого профиля.

Для примера возьмём деревню новичков из ТЧ. Находим в файле gamedata/config/gameplay/character_desc_escape.ltx профили новичков обитающих в деревне возле бункера Сидоровича:
<!-- - - - - - - -         STALKER NOVICE         - - - - - - - -->
 
<specific_character id="esc_stalker_novice_default1" team_default = "1">
<name>GENERATE_NAME_stalker</name>
<icon>ui_npc_u_green_stalker_2</icon>
<bio>esc_stalker_novice_bio</bio>
 
<class>esc_stalker_novice</class>
<community>stalker</community> <terrain_sect>stalker_terrain</terrain_sect>
 
<rank>140</rank>
<reputation>12</reputation>
<money min="200" max="600" infinitive="0"/>
 
<snd_config>characters_voice\human_01\newbie\</snd_config>
<crouch_type>-1</crouch_type>
 
<visual>actors\novice\green_stalker_2</visual>
<supplies>
[spawn] \n
wpn_bm16 \n
ammo_12x70_buck \n
#include "gameplay\character_items.xml" \n
#include "gameplay\character_food.xml"
</supplies>
 
#include "gameplay\character_criticals_3.xml"
 
<start_dialog>hello_dialog</start_dialog>
#include "gameplay\character_dialogs.xml"
</specific_character>
<!-- - - - - - - - - - - - - - - -->
<specific_character id="esc_stalker_novice_default2" team_default = "1">
<name>GENERATE_NAME_stalker</name>
<icon>ui_npc_u_green_stalker_2</icon>
<bio>esc_stalker_novice_bio</bio>
 
<class>esc_stalker_novice</class>
<community>stalker</community> <terrain_sect>stalker_terrain</terrain_sect>
 
<rank>127</rank>
<reputation>-8</reputation>
<money min="200" max="600" infinitive="0"/>
 
<snd_config>characters_voice\human_01\newbie\</snd_config>
<crouch_type>-1</crouch_type>
 
<visual>actors\novice\green_stalker_2</visual>
<supplies>
[spawn] \n
wpn_pm \n
ammo_9x18_fmj = 1 \n
device_torch \n
#include "gameplay\character_items.xml" \n
#include "gameplay\character_food.xml"
</supplies>
 
#include "gameplay\character_criticals_3.xml"
 
<start_dialog>hello_dialog</start_dialog>
#include "gameplay\character_dialogs.xml"
</specific_character>
<!-- - - - - - - - - - - - - - - -->
<specific_character id="esc_stalker_novice_default3" team_default = "1">
<name>GENERATE_NAME_stalker</name>
<icon>ui_npc_u_green_stalker_3</icon>
<bio>esc_stalker_novice_bio</bio>
 
<class>esc_stalker_novice</class>
<community>stalker</community> <terrain_sect>stalker_terrain</terrain_sect>
 
<rank>214</rank>
<reputation>9</reputation>
<money min="200" max="600" infinitive="0"/>
 
<snd_config>characters_voice\human_01\stalker\</snd_config>
<crouch_type>-1</crouch_type>
 
<visual>actors\novice\green_stalker_3</visual>
<supplies>
[spawn] \n
wpn_bm16 \n
ammo_12x70_buck \n
#include "gameplay\character_items.xml" \n
#include "gameplay\character_food.xml"
</supplies>
 
#include "gameplay\character_criticals_3.xml"
 
<start_dialog>hello_dialog</start_dialog>
#include "gameplay\character_dialogs.xml"
</specific_character>
<!-- - - - - - - - - - - - - - - -->
<specific_character id="esc_stalker_novice_default4" team_default = "1">
<name>GENERATE_NAME_stalker</name>
<icon>ui_npc_u_green_stalker_3</icon>
<bio>esc_stalker_novice_bio</bio>
 
<class>esc_stalker_novice</class>
<community>stalker</community> <terrain_sect>stalker_terrain</terrain_sect>
 
<rank>175</rank>
<reputation>8</reputation>
<money min="200" max="600" infinitive="0"/>
 
<snd_config>characters_voice\human_01\stalker\</snd_config>
<crouch_type>-1</crouch_type>
 
<visual>actors\novice\green_stalker_3</visual>
<supplies>
[spawn] \n
wpn_pm \n
ammo_9x18_fmj = 1 \n
#include "gameplay\character_items.xml" \n
#include "gameplay\character_food.xml"
</supplies>
 
#include "gameplay\character_criticals_3.xml"
 
<start_dialog>hello_dialog</start_dialog>
#include "gameplay\character_dialogs.xml"
</specific_character>
<!-- - - - - - - - - - - - - - - -->
<specific_character id="esc_stalker_novice_default5" team_default = "1">
<name>GENERATE_NAME_stalker</name>
<icon>ui_npc_u_green_stalker_4</icon>
<bio>esc_stalker_novice_bio</bio>
 
<class>esc_stalker_novice</class>
<community>stalker</community> <terrain_sect>stalker_terrain</terrain_sect>
 
<rank>268</rank>
<reputation>-10</reputation>
<money min="200" max="600" infinitive="0"/>
 
<snd_config>characters_voice\human_02\newbie\</snd_config>
<crouch_type>-1</crouch_type>
 
<visual>actors\novice\green_stalker_4</visual>
<supplies>
[spawn] \n
wpn_bm16 \n
ammo_12x70_buck \n
device_torch \n
#include "gameplay\character_items.xml" \n
#include "gameplay\character_food.xml"
</supplies>
 
#include "gameplay\character_criticals_3.xml"
 
<start_dialog>hello_dialog</start_dialog>
#include "gameplay\character_dialogs.xml"
</specific_character>
<!-- - - - - - - - - - - - - - - -->
<specific_character id="esc_stalker_novice_default6" team_default = "1">
<name>GENERATE_NAME_stalker</name>
<icon>ui_npc_u_green_stalker_4</icon>
<bio>esc_stalker_novice_bio</bio>
 
<class>esc_stalker_novice</class>
<community>stalker</community> <terrain_sect>stalker_terrain</terrain_sect>
 
<rank>133</rank>
<reputation>6</reputation>
<money min="200" max="600" infinitive="0"/>
 
<snd_config>characters_voice\human_02\newbie\</snd_config>
<crouch_type>-1</crouch_type>
 
<visual>actors\novice\green_stalker_4</visual>
<supplies>
[spawn] \n
wpn_bm16 \n
ammo_12x70_buck \n
#include "gameplay\character_items.xml" \n
#include "gameplay\character_drugs.xml" \n
#include "gameplay\character_food.xml"
</supplies>
 
#include "gameplay\character_criticals_3.xml"
 
<start_dialog>hello_dialog</start_dialog>
#include "gameplay\character_dialogs.xml"
</specific_character>
<!-- - - - - - - - - - - - - - - -->
<specific_character id="esc_stalker_novice_default9" team_default = "1">
<name>GENERATE_NAME_stalker</name>
<icon>ui_npc_u_green_stalker_5</icon>
<bio>esc_stalker_novice_bio</bio>
 
<class>esc_stalker_novice</class>
<community>stalker</community> <terrain_sect>stalker_terrain</terrain_sect>
 
<rank>224</rank>
<reputation>18</reputation>
<money min="200" max="600" infinitive="0"/>
 
<snd_config>characters_voice\human_02\stalker\</snd_config>
<crouch_type>-1</crouch_type>
 
<visual>actors\novice\green_stalker_5</visual>
<supplies>
[spawn] \n
wpn_pm \n
ammo_9x18_fmj = 1 \n
#include "gameplay\character_items.xml" \n
#include "gameplay\character_drugs.xml" \n
#include "gameplay\character_food.xml"
</supplies>
 
#include "gameplay\character_criticals_3.xml"
 
<start_dialog>hello_dialog</start_dialog>
#include "gameplay\character_dialogs.xml"
</specific_character>
<!-- - - - - - - - - - - - - - - -->
<specific_character id="esc_stalker_novice_default10" team_default = "1">
<name>GENERATE_NAME_stalker</name>
<icon>ui_npc_u_green_stalker_5</icon>
<bio>esc_stalker_novice_bio</bio>
 
<class>esc_stalker_novice</class>
<community>stalker</community> <terrain_sect>stalker_terrain</terrain_sect>
 
<rank>58</rank>
<reputation>-2</reputation>
<money min="200" max="600" infinitive="0"/>
 
<snd_config>characters_voice\human_02\stalker\</snd_config>
<crouch_type>-1</crouch_type>
 
<visual>actors\novice\green_stalker_5</visual>
<supplies>
[spawn] \n
wpn_pm \n
ammo_9x18_fmj = 1 \n
device_torch \n
#include "gameplay\character_items.xml" \n
#include "gameplay\character_drugs.xml" \n
#include "gameplay\character_food.xml"
</supplies>
 
#include "gameplay\character_criticals_3.xml"
 
<start_dialog>hello_dialog</start_dialog>
#include "gameplay\character_dialogs.xml"
</specific_character>

Нас интересуют теги <visual> </visual> - в них указывается название профиля. Как видно из представленных выше профилей, каждому отдельному профилю строго присвоен свой визуал. Всегда ли уместна такая точность? У нас есть группа профилей НПС и несколько визуалов подходящих этой группе профилей, можно предположить, что не важно какому именно НПС присвоеться определённый визуал. Проще говоря, в игре, все новички в деревне одинаковые, только куртки разные у них и нам не важно какая именно куртка будет на том или ином мужике. Мы выбираем нужные нам визуалы для какой то группы НПС (из gamedata/meshes/actors) даём визуалам любое одинаковое имя, после имени ставим знак подчёркивания и цифру или число. Пример:

name_1.ogf
name_2.ogf
mame_24.ogf 

Затем в нужных профилях НПС в тегах <visual> </visual> пишем имя которое задавали нашим визуалам. В примере выше, имя визуалов было name , в этом случае теги заполняются примерно так: <visual>actors\novice\name</visual>. Таким образом визуалы рандомно распределятся по каждому профилю.

Отработанный пример на деревне новичков.

Находим профили новичков в файле gamedata/config/gameplay/character_desc_escape.ltx, (их профили были вынесены, в этом уроке выше). И мы, например, скачали 5 новых визуалов которые привяжем к новичкам. Нам бы пришлось каждый раз прописывать отдельный визуал в каждом профиле, но мы поступим по другому, для начала мы переименуем скаченные визуалы таким образом:

esc_novichok_1.ogf
esc_novichok_2.ogf
esc_novichok_3.ogf
esc_novichok_4.ogf
esc_novichok_5.ogf

Закидываем эти визуалы, например сюда: gamedata\meshes\actors\novice Прописываем во всех профилях новичков визуал таким образом: <visual>actors\novice\esc_novichok</visual> сохраняем, начинаем новую игру, приходим в деревню, видим наших новичков в новых визуалах.

Несколько слов

Возможно кто то создавал подобную статью, я не видел даже похожего, если что сильно не ругайте. Таким образом возможно задавать несколько визуалов не только группе, но и одному НПС, факт в том что распределение визуалов рандомно и при начале новой игры НПС скорее всего поменяют визуал. Это может пригодиться для сюжетных модов которые имеют разветвлённый сюжет и рассчитаны не на одно прохождение, проходя такой мод второй раз с начала, игрок не только узнаёт альтернативную ветку развития сюжета но и встречает знакомых НПС в других визуалах, что усиливает ощущения альтернативности - фактически играет в новый мод. Такое явление я проверял в ТЧ в других аддонах не гарантирую работу. В будущем возможно проверю такой эффект на именах предметов, оружия и тд.

Другие места
LANGUAGE