Итак, начнем. Во-первых нужно создать самого НПС. Для этого:
1) Создаем профиль в файле character_desc_escape.xml (для Кордона)
Код
<specific_character id="wurdalak" team_default = "1"> //id - уникальный идентификатор. без цифр и пробелов. Не может повторяться
<name>WurDalaK</name> //имя НПС
<icon>ui_npc_u_green_stalker_2</icon> //название иконки НПС в диалогах/торговле
<bio>esc_wolf_bio</bio>
<class>stalker</class> //класс. можно написать любой
<community>stalker</community> //группировка
<terrain_sect>stalker_terrain</terrain_sect> //места где может ходить (правится в all.spawn)
<rank>50</rank> //ранг НПС
<reputation>60</reputation> //репутация
<money min="1000" max="5000" infinitive="0"/> //кол-во денег. если infinitive="1" то бесконечные, но в пределах выставленной суммы
<snd_config>characters_voice\human_02\newbie\</snd_config> //голос НПС
<crouch_type>-1</crouch_type> //вид приседания (не править!)
<visual>actors\novice\green_stalker_1</visual> //модель НПС
<supplies> [spawn] \n //то что спавнится в инвентаре у НПС
wpn_desert_eagle \n
ammo_11.43x23_hydro = 1 \n
wpn_knife \n
#include "gameplay\character_items.xml" \n
#include "gameplay\character_food.xml"
</supplies>
<actor_dialog>название_диалога_если_есть</actor_dialog> //диалоги
</specific_character>
2. Прописываем НПС в спавн, дабы скрипт знал откуда брать НПС. Для этого в файле spawn_sections.ltx (gamedata\config\creatures) пишем такую вещь:
Код
[agr_stalker_regular]:stalker //в скобках пишем то, что запишем далее. будет в скрипте спавна
$spawn = "respawn\agr2_respawn_factory" //можно пропустить. заполнять если нпс спавнится в группе смарт терраина
character_profile = agr_stalker_general //id нпс-а
spec_rank = regular //ранг
community = stalker //группировка
3) В папке gamedata\scripts создаем пустой txt файл и переименовываем в.. например, test_npc.script. Внимание! .script - расширение! не надо test_npc.script.txt
Открываем файл блокнотом и пишем в него:
Код
function spawn_npc(
local npc = alife():create("то, что в скобках",vector():set(координаты),левел_вертекс,гейм вертекс)
end
Как узнать координаты смотрим
тут 4) Вызываем функцию. Самый распространенный способ - через диалог.
а) Открываем файлы: dialogs_escape.xml (gamedata\config\gameplay) и stable_dialogs_escape.xml (gamedata\config\gameplay). Это для Кордона.
В первом - "скелеты" диалогов - ветки ответов, вызовы функций, проверки и т.д. Во втором - тексты. Ищем нужный нам диалог и вставляем вот это:
Код
<action>test_npc.spawn_npc</action>
То что ДО точки - название файла-скрипта, ПОСЛЕ - название функции. Пример фразы с вставленным вызовом:
Код
<phrase id="11">
<text>esc_provodnik_start_11</text>
<action>test_npc.spawn_npc</action>
<next>12</next>
</phrase>
Ну а как создать свой диалог, смотрим
сюда.