Автор:RaDJa 
 Уроков по созданию npc много, но многие из них не понятны, поэтому я сделал свою статью по этой теме. 
 Урок прменим и к ТЧ, и к ЧН, и к ЗП. 
 Для работы нужна программа Active Perl (её нужно просто скачать и установить) и ACDC (в ней мы и будем работать) Замечу, что для каждого Сталкера нужен свой ACDC. 
 После того как скачали эти программы в папке с ACDC создаём .bat файлы: decompile и compile. Первый батник будет распаковывать all.spawn, второй запаковывать обратно изменённый all.spawn. В батнике decompile прописываем вот это: 
 perl acdc.pl -d all.spawn 
 pause - для ТЧ 
 или 
 perl acdccop.pl -d all.spawn 
 pause - для ЗП 
 perl acdc_cs.pl -d all.spawn 
 pause - для ЧН 
 в батнике compile прописываем: 
 acdc.pl -c all.ltx 
 pause - для ТЧ 
 acdccop.pl -c all.ltx 
 pause - для ЗП и т.д. 
 далее закидываем all.spawn( путь gamedata\ spawns) в папку с acdc и запускаем decompile. Появилось много файлов ltx. Нам нужны файлы типа alife... и выбираем файл с нужной локацией. 
 Теперь приступаем к работе. Я буду показывать пример на базе ЗП. 
 -открываем alife_zaton 
 -в самый конец добавляем нашего сталкера 
 [1865] -номер объекта должен быть выше последнего объекта в файле 
 ; cse_abstract properties 
 section_name = stalker 
 name = mudak -имя объекта 
 position = 62.0999984741211,-3.55999994277954,37.5999984741211 - место где он появится(рассмотрим позже) 
 direction = -0.0120869996026158,2.81339907646179,-0.0158249996602535 - угол поворота сталкера 
 ; cse_alife_trader_abstract properties 
 money = 416 
 character_profile = mudak -имя в character desc... 
 ; cse_alife_object properties 
 game_vertex_id = 292 - для каждого уровня это значение своё 
 distance = 0 
 level_vertex_id = 76655 - не трогаем 
 object_flags = 0xffffffbf 
 custom_data = <<END 
 
 [logic] 
 cfg = scripts\mudak_logic.ltx - ссылка на файл логики нашего сталкера 
 
 ; cse 
 [smart_terrains] 
 none = true 
 END 
 story_id = 10000 - будем считать его порядковым номером (для новых npc лучше ставить больше 10000) 
 ; cse_visual properties 
 visual_name = actors\stalker_merc\stalker_merc_4 
 ; cse_alife_creature_abstract properties 
 g_team = 0 
 g_squad = 1 
 g_group = 2 
 health = 1 -поставим 0 будет лежать труп 
 dynamic_out_restrictions = 
 dynamic_in_restrictions = 
 upd:health = 1 
 upd:timestamp = 0 
 upd:creature_flags = 0 
 upd:position = 62.0999984741211,-3.55999994277954,37.5999984741211 - место где он появится(рассмотрим позже) Важно! Нужно писать то же самое что и в строке position 
 upd:o_model = 0 
 upd:o_torso = 2.81339907646179,-0.0120869996026158,0 
 upd:g_team = 0 
 upd:g_squad = 1 
 upd:g_group = 2 
 ; cse_alife_monster_abstract properties 
 upd:next_game_vertex_id = 65535 
 upd:prev_game_vertex_id = 65535 
 upd:distance_from_point = 0 
 upd:distance_to_point = 0 
 ; cse_alife_human_abstract properties 
 predicate5 = 1,2,2,1,2 
 predicate4 = 0,1,1,1 
 ; cse_ph_skeleton properties 
 upd:start_dialog = 
 ; se_stalker properties 
 ПРИМЕР БЕЗ КОМЕНТОВ: 
 [1865] 
 ; cse_abstract properties 
 section_name = stalker 
 name = mudak 
 position = 62.0999984741211,-3.55999994277954,37.5999984741211 
 direction = -0.0120869996026158,2.81339907646179,-0.0158249996602535 
 ; cse_alife_trader_abstract properties 
 money = 416 
 character_profile = mudak 
 ; cse_alife_object properties 
 game_vertex_id = 292 
 distance = 0 
 level_vertex_id = 76655 
 object_flags = 0xffffffbf 
 custom_data = <<END 
 
 [logic] 
 cfg = scripts\mudak_logic.ltx 
 
 ; cse 
 [smart_terrains] 
 none = true 
 END 
 story_id = 10000 
 ; cse_visual properties 
 visual_name = actors\stalker_merc\stalker_merc_4 
 ; cse_alife_creature_abstract properties 
 g_team = 0 
 g_squad = 1 
 g_group = 2 
 health = 1 
 dynamic_out_restrictions = 
 dynamic_in_restrictions = 
 upd:health = 1 
 upd:timestamp = 0 
 upd:creature_flags = 0 
 upd:position = 62.0999984741211,-3.55999994277954,37.5999984741211 
 upd:o_model = 0 
 upd:o_torso = 2.81339907646179,-0.0120869996026158,0 
 upd:g_team = 0 
 upd:g_squad = 1 
 upd:g_group = 2 
 ; cse_alife_monster_abstract properties 
 upd:next_game_vertex_id = 65535 
 upd:prev_game_vertex_id = 65535 
 upd:distance_from_point = 0 
 upd:distance_to_point = 0 
 ; cse_alife_human_abstract properties 
 predicate5 = 1,2,2,1,2 
 predicate4 = 0,1,1,1 
 ; cse_ph_skeleton properties 
 upd:start_dialog = 
 ; se_stalker properties 
 ТЕПЕРЬ ЗАПАКОВЫВАЕМ ОБРАТНО в all.spawn (внимание!если что-то сделано не правильно, то запаковки не будет) Если же всё правильно, то должен появится файл all.spawn.new Закидываем его в вашу gamedata\spawns и переименовываем файл в all.spawn 
 Осталась работа в скриптах и конфигах 
 -В папку gamedata\config(s) вкладываем файл game_story_ids, открываем его и конце пишем: 10000 = "mudak" 
 -В папку gamedata\config(s)\creatures вставляем файл spawn_sections_zaton, открываем его и в самом конце вписываем: 
 [mudak]:stalker 
 $spawn = "respawn\mudak" 
 character_profile = mudak 
 spec_rank = novice 
 community = stalker 
 -Теперь по пути gamedata\config(s)\gameplay вставляем файл npc_profile и в нём пишем: 
 <character id="mudak"> 
 <class>mudak</class> 
 <specific_character>mudak</specific_character> 
 </character> 
 -По этому же пути gamedata\config(s)\gameplay вставляем character_desc_zaton и вставляем в конце: 
 <!---------------------------------------mudak-----------------------------------------------------> 
 <specific_character id="mudak" team_default = "1"> 
 <name>Мудак</name> 
 <icon>ui_inGame2_merc_4</icon> 
 <bio>mudak</bio> 
 
 <class>mudak</class> 
 <community>stalker</community> <terrain_sect>stalker_terrain</terrain_sect> 
 
 <rank>434</rank> 
 <reputation>5</reputation> 
 <money min="10000" max="10000" infinitive="0"/> 
 
 <snd_config>characters_voice\human_01\stalker\</snd_config> 
 <crouch_type>-1</crouch_type> 
 
 <visual>actors\stalker_merc\stalker_merc_4</visual> 
 <supplies> 
 [spawn] \n 
 wpn_pm \n 
 ammo_9x18_fmj = 1 \n 
 wpn_ak74 \n 
 ammo_5.45x39_fmj \n 
 </supplies> 
 
 #include "gameplay\character_criticals_4.xml" 
 <!--<start_dialog>zat_b5_stalker_commander_dialog</start_dialog>--> 
 
 </specific_character> 
 -Осталось только дать логику нашему сталкеру, чтобы он тупо не бродил по Затону 
 В папке gamedata\config(s)\script создаём пустой файл mudak_logic.ltx и в нём пишем: 
 [logic] 
 active = remark1 
 danger = danger_ignore 
 
 [danger_ignore] 
 ignore_distance = 5 
 
 [remark1] 
 no_move = true 
 Теперь можно поглазеть на нашего сталкера в игре (Он должен появится на Шевченко) 
 Но хочу обратить внимание, что для упрощения снятия координат месторасположения npc в ТЧ можно воспользоваться во время игры консольной командой rs_stats on, а в ЗП rs_camera on