Здесь вы научитесь создавать нового НПС через скрипт, создавать новые секции для НПС и создавать характеры, или редактировать старые.
Автор: Vova Miller [IP Team]
1. Для начала создадим секцию нашего нового НПС.
В файле config\creatures\spawn_sections.ltx создаем секцию. Вот пример:
Code
[test_stalker_1]:stalker
character_profile = test_stalker_1_xapaktep
test_stalker_1 - имя секции (не должно повторяться)
stalker - сравнивается с уже существующей секцией stalker, чтобы не писать лишнего.
character_profile - направление к классу характера.
test_stalker_1_xapaktep - ID класса характера.
2. Создадим секцию класса в config\gameplay\npc_profile.xml. Пример:
Code
<character id="test_stalker_1_xapaktep">
<class>test_stalker_1_xapaktep</class>
</character>
test_stalker_1_xapaktep - сверху ID, а снизу название самого класса.
Для чайников: Код нужно вводить между <xml> и </xml>
Иногда ниже <class></class> прописывается:
Code
<specific_character>ID_профиля</specific_character>
Но в таком случае нельзя будет создать несколько "характеров" для одного класса. Я честно говоря не знаю зачем эта штука, но когда происходил вылет я приписывал это и всё решалось.
3. Теперь создадим сам характер. Пропишем его, скажем, в config\gameplay\character_desc_escape.xml
Вот пример:
Code
<specific_character id="test_stalker_1_xapaktep_1" team_default = "1">
<name>esc_wolf_name</name>
<icon>ui_npc_u_stalker_neytral_balon_1</icon>
<bio>esc_wolf_bio</bio>
<class>test_stalker_1_xapaktep</class>
<community>stalker</community> <terrain_sect>stalker_terrain</terrain_sect>
<rank>434</rank>
<reputation>5</reputation>
<money min="600" max="2000" infinitive="0"/>
<snd_config>characters_voice\human_01\stalker\</snd_config>
<crouch_type>-1</crouch_type>
<visual>actors\neytral\stalker_neytral_balon_1</visual>
<supplies>
[spawn] \n
wpn_pm \n
ammo_9x18_fmj = 1 \n
wpn_ak74u \n
ammo_5.45x39_fmj \n
</supplies>
#include "gameplay\character_criticals_4.xml"
#include "gameplay\character_dialogs.xml"
</specific_character>
Для чайников: Профиль нужно ставить между <xml> и </xml>.
<name>esc_wolf_name</name> - Имя НПС (прописать можно сразу на русском языке)
<icon>ui_npc_u_stalker_neytral_balon_1</icon> - Иконка НПС. Берётся из config\ui\ui_npc_unique.xml
<bio>esc_wolf_bio</bio> - История НПС. (В игре не используется)
<class>test_stalker_1_xapaktep</class> - наш класс.
<community>stalker</community> - группировка НПС.
<terrain_sect>stalker_terrain</terrain_sect> - terrain НПС. Берётся из config\creatures\m_stalker.ltx
<rank>434</rank> - Ранг НПС.
<reputation>5</reputation> - репутация НПС.
<money min="600" max="2000" infinitive="0"/> - Минимальное (600) и максимальное (2000) кол-во денег. (Если вместо 0 поставить 1, то у НПС будет неограниченное кол-во денег.)
<snd_config>characters_voice\human_01\stalker\</snd_config> - звуки НПС.
<visual>actors\neytral\stalker_neytral_balon_1</visual> - форма НПС.
Между <supplies> и </supplies> - Инвентарь НПС, а конкретно: патроны, оружие и другие предметы, типа рации.
4. Теперь наконец "заспавним" нашего НПС через скрипт.
Создайте свой скрипт в папке gamedata\scripts\ и пропишите в него:
Code
function my_func_1 ()
alife():create("test_stalker_1",vector():set( -49.19, -10.03, -61.49 ),230520,77)
end
my_func_1 - название функции (пригодится для выполнения)
test_stalker_1 - спавним нашего нового Сталкера с данной секцией.
49.19, -10.03, -61.49 - координаты X Y Z
230520 - level_vetrex_id
77 - game_vetrex_id
Данные координаты, это Кордон, в туннеле под дорогой, рядом с раненным Толиком.
Напоминаю, что свои координаты можно снять через Position Informer.
5. Всё сделано, помимо одной вещи: Не выполняется функция спанва. Её выполнение можно прописать в диалог, или в инфопоршень.
Пропишем, для примера, в инфопоршень, который выполняется с самого начала игры, то есть наш НПС тоже будет появляться с самого начала игры.
Откройте config\gameplay\info_portions.xml и ниже: <task>storyline_eliminate_gunslinger</task> добавьте это: <action>имя_вашего_скрипта.my_func_1</action>.
То есть весь инфопоршень storyline_actor_start будет выглядеть так:
Code
<info_portion id="storyline_actor_start">
<task>storyline_eliminate_gunslinger</task>
<action>имя_вашего_скрипта.my_func_1</action>
</info_portion>
6. Запускаем игру, и если вы всё сделали правильно, то ваш НПС обязательно появится.
Примечание: Начальный инфопоршень storyline_actor_start выполняется тогда, когда ГГ находится на Кордоне. Так что не пугайтесь, если вы таким образом заспавните НПС на Свалке и сами начнёте игру со неё и НПС не появится.
Можно без проблем сделать отдельный инфопоршень, который выдаётся где бы ни был ГГ, и туда прописывать функции спавна.