Сповіщення
Очистити все

Цікавий спосіб рандомної прив'язки візуалів до профілів НПС


Ранг:
Майстер
Роль:
Гість
Записи:
752
Приєднався:
2 роки тому
 
Важлива інформація
 
Не знаю, як у ЧН та ЗП, але пробував цей спосіб на ТЧ, і переконався, що він не працює. При спробі використовувати рандомну прив'язку візуалів виліт: не може знайти вказану модель.
 
Ну, в такому разі дякую тобі за урок, який викликає виліт! Це приголомшливо! Навіщо все це тут написано тобою? Фагот.
 
Теорія
 
У цій статті я розповім про те, як призначити кільком профілям неписів різні візуали, які рандомно розподілятимуться для кожного профілю.
 
Наприклад візьмемо село новачків із ТЧ. Знаходимо у файлі 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> зберігаємо, починаємо нову гру, приходимо в село, бачимо наших новачків у нових візуалах.
 
Кілька слів
 
Можливо хтось створював подібну статтю, я не бачив навіть схожого, якщо що сильно не лайте. Таким чином можна задавати кілька візуалів не тільки групі, а й одному НПС, факт у тому що розподіл візуалів рандомно і на початку нової гри НПС швидше за все поміняють візуал. Це може стати в нагоді для сюжетних модів, які мають розгалужений сюжет і розраховані не на одне проходження, проходячи такий мод другий раз з початку, гравець не тільки дізнається альтернативну гілка розвитку сюжету, але й зустрічає знайомих НПС в інших візуалах, що посилює відчуття альтернативності - фактично грає в новий мод. Таке явище я перевіряв у ТЧ в інших аддонах, не гарантую роботу. У майбутньому можливо перевірю такий ефект на іменах предметів, зброї та ін.

   
Цитата