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

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

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

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

Важная информация

Не знаю, как в ЧН и ЗП, но пробовал этот способ на ТЧ, и убедился, что он не работает. При попытке использовать рандомную привязку визуалов, вылет: не может найти указанную модель.

Теория

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

Для примера возьмём деревню новичков из ТЧ. Находим в файле gamedata/config/gameplay/character_desc_escape.xml профили новичков обитающих в деревне возле бункера Сидоровича:
<!-- - - - - - - -         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.xml, (их профили были вынесены, в этом уроке выше). И мы, например, скачали 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