Вообще весь материал можно найти в ВИКИ или ещё где, но то там недописано, то тут недосказано... 
 Посему для ленивых :) пример создания НПЦ и его спавна в игру.  Итак, для создания своего НПЦ (я буду говорить о уникальных) нам потребуется: 
 1. Готовим описание НПЦ- В папке gamedata\config\gameplay Создать xml файл, содержащий описание. Назовем его к примеру 
 Character_unique_by_pereiro.xml (вообще называть как угодно). 
 В нем пишем: 
 <xml> 
 <specific_character id="ingvi_stalker" team_default = "1"> 
 <name>Ингви-Сталкер</name> 
 <icon>ui_npc_u_stalker_neytral_nauchniy</icon> 
 <map_icon x="1" y="0"></map_icon> 
 <bio>Ингви – учится делать персонажей.</bio> 
 <class>ing_stal_1</class> 
 <community>stalker</community> <terrain_sect>stalker__terrain</terrain_sect> 
 <rank>476</rank> 
 <reputation>9</reputation> 
 <snd_config>characters_voice\human_02\stalker\</snd_config> 
 <crouch_type>0</crouch_type> 
 <visual>actors\neytral\stalker_neytral_nauchniy</visual> 
 <supplies> 
 [spawn] \n 
 wpn_pm \n 
 ammo_9x18_fmj = 1 \n 
 wpn_ak74u \n 
 ammo_5.45x39_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_5.xml" 
 #include "gameplay\character_dialogs.xml" 
 <start_dialog>hello_dialog</start_dialog> 
 </specific_character> 
 </xml> 
 Тут вроде всё ясно. Для примера можно глянуть описания персонажей из файлов 
 character_desc_*****, где ***** - имя уровня или группировки. 
 Да, важно: класс НПЦ (а соответственно его иммунитеты, сопротивления и шансы на попадание) будет зависеть от значения <rank></rank>. 
 Секция диалогов может содержать и другие (не только старт_дайлог, но и актор_дайлог – если вдруг квест прикрутить надо будет). 
 Секция #include может содержать не все инклюды, а только часть. Или вообще ничего. 
 не забываем заглянуть в файл gamedata\config\gameplay\npc_profile.xml (или создать свой - только не забыть его записать в system.ltx в секцию [profiles] - кому как удобней). 
 там перед первым описанием вставляем 
 <character id="ingvi_stalker"> 
 <class>ing_stal_1</class> 
 <specific_character>ingvi_stalker</specific_character> 
 </character> 
 Добавлено (12.11.2007, 17:12) 
 --------------------------------------------- 
 2. Откуда спавним. 
 В папке gamedata\config\creatures есть замечательный файл (в ресурсах естессно) spawn_sections.ltx 
 Будем править его. 
 Дабы не путаться потом, в самое его начало пишем: 
 [ingvi_stalker_spawn]:stalker 
 $spawn				= "respawn\ ingvi_stalker _spawn" 
 character_profile	= ingvi_stalker 
 spec_rank = veteran 
 community = stalker 
 В общем последние 2 строчки можно и не писать, т.к. ранг и группировка определяются в описании перса в главе 1. 
 Добавлено (12.11.2007, 17:13) 
 --------------------------------------------- 
 3. Как спавним.Собственно как спавнить – дело вкуса и обстоятельств. 
 3.1. Если мы хотим использовать перса в каком-то квесте, то логичнее спавнить его вызовом из диалога, дабы не болтался он по карте и приключений на жопу не искал. 
 То есть: 
 Создаем в gamedata\scripts файл ну скажем ingvi_spawn.script 
 И в нем пишем: 
 function ingvi_sp() 
 alife():create("ingvi_stalker_spawn",vector():set(44.87,0.92,241.6),218598,359) 
 end 
 после чего добавляем вызов функции <action> ingvi_spawn. ingvi_sp</action> в нужную фразу нужного диалога (заспавним Ингви в вагончике Долга на Свалке). 
 3.2. Можно расставить всех НПЦ сразу в начале игры: 
 - поместить в bind_stalker.script ф-я net_spawn(data) примерно такую конструкцию: 
 if xr_logic.pstor_retrieve(db.actor, "first_run", 0)==0 then 
 alife():create("ingvi_stalker_spawn ",vector():set(44.87,0.92,241.6),218598,359) 
 xr_logic.pstor_store(db.actor, "first_run", 1) 
 end 
 3.3. Или расставлять НПЦ на нужных уровнях по мере захода на них: 
 поместить в bind_stalker.script в конце ф-ии actor_update(delta). 
 if not has_alife_info("is_ingvi") and (level.name() == "l02_garbage") 
 then 
 self.object:give_info_portion("is_ingvi") 
 alife():create("ingvi_satlker_spawn",vector():set(44.87,0.92,241.6),2185 98,359) 
 end 
 В этом случае не забываем объявить инфопоршен “is_ingvi”. Такой способ мне нравится ещё и тем, что для добавления персонажей не надо начинать игру заново. 
 Добавлено (12.11.2007, 17:25) 
 --------------------------------------------- 
 4. Итоги.Итак, в результате вышеперечисленных манипуляций с файлами мы создаём персонажа по имени Ингви-Стралкер, класс ing_stal_1 на Свалке в вагончике Долга. 
 Если надо добавить в игру уже существующих НПЦ , то читайте сразу главу 3. 
 Да, чуть не забыл… В файл gamedata\config\system.ltx в секцию [profiles] дописать в конец после запятой Character_unique_by_pereiro.