<?xml version="1.0"?>
<?xml-stylesheet type="text/css" href="http://stalkerin.gameru.net/wiki/skins/common/feed.css?303"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
		<id>http://stalkerin.gameru.net/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=176.112.154.205&amp;*</id>
		<title>S.T.A.L.K.E.R. Inside Wiki - Вклад участника [ru]</title>
		<link rel="self" type="application/atom+xml" href="http://stalkerin.gameru.net/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=176.112.154.205&amp;*"/>
		<link rel="alternate" type="text/html" href="http://stalkerin.gameru.net/wiki/index.php?title=%D0%A1%D0%BB%D1%83%D0%B6%D0%B5%D0%B1%D0%BD%D0%B0%D1%8F:%D0%92%D0%BA%D0%BB%D0%B0%D0%B4/176.112.154.205"/>
		<updated>2026-06-14T02:54:56Z</updated>
		<subtitle>Вклад участника</subtitle>
		<generator>MediaWiki 1.22.6</generator>

	<entry>
		<id>http://stalkerin.gameru.net/wiki/index.php?title=%D0%A1%D0%BE%D0%B7%D0%B4%D0%B0%D0%BD%D0%B8%D0%B5_%D1%81%D0%BA%D1%80%D0%B8%D0%BF%D1%82%D0%BE%D0%B2%D0%BE%D0%B9_%D1%81%D1%86%D0%B5%D0%BD%D1%8B</id>
		<title>Создание скриптовой сцены</title>
		<link rel="alternate" type="text/html" href="http://stalkerin.gameru.net/wiki/index.php?title=%D0%A1%D0%BE%D0%B7%D0%B4%D0%B0%D0%BD%D0%B8%D0%B5_%D1%81%D0%BA%D1%80%D0%B8%D0%BF%D1%82%D0%BE%D0%B2%D0%BE%D0%B9_%D1%81%D1%86%D0%B5%D0%BD%D1%8B"/>
				<updated>2016-10-10T09:24:10Z</updated>
		
		<summary type="html">&lt;p&gt;176.112.154.205: /* Шаг 1. Рисуем схему и расставляем объекты на карте */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Создание скриптовой сцены==&lt;br /&gt;
Если Вы хотите создать интересную скриптовую сцену в своём моде (сцены вообще хорошо влияют на сюжет и на динамику игры, так что использование сцен — обязательно), но ещё не знаете как — то милости прошу, что смогу объяснить — объясню в своём уроке. Урок, собственно, предназначен для внутренного пользования команды Oblivion Lost, но мы не жадные, учитесь на здоровье.&lt;br /&gt;
;Нам потребуется: Нормальный текстовый редактор (я использую Notepad++), SDK 0.7, ясный ум и прямые руки. Файлов потребуется много, так что их описывать буду уже на месте.&lt;br /&gt;
p.s. присутствуют орфографические ошибки, т.к. автор в процессе написания статьи немного устал.&lt;br /&gt;
;N.B.! Предполагается, что Вы уже имеете минимальные знания в модострое.&lt;br /&gt;
Начнём.&lt;br /&gt;
==Предисловие. Описание схемы==&lt;br /&gt;
Игрок входит в ворота фабрики и на него тут же наставляют стволы. - Стоять! Оружие на землю! Медленно подошёл ко мне (командир)! Игрок подходит (если  попытается бежать — убьют), разговаривает с командиром. Тот объясняет, что в Зоне сталкеры находятся нелегально, поэтоум он может нас расстрелять... если только не игрок не поделится хабаром. Хабара у игрока не так много, но командир забирает всё. - Расстреляйте его — говорит командир и уходит. Конвоиры ведут игрока к стенке... По пути — неприметно лежит ПМ.&lt;br /&gt;
Если подобрать его — есть шанс на спасение...&lt;br /&gt;
[[Файл:Scene_rasstrel_kim.jpg|200px|thumb|left|Схема(нажмите на картинку, чтобы увеличить).]] &lt;br /&gt;
==Шаг 1. Рисуем схему и расставляем объекты на карте==&lt;br /&gt;
Собственно без схемы — никуда. У меня уже есть готовая сцена, можете взять её за основу. Называется она «Расстрел» и придумана Григорием Белым (Dezertir1w2), после некоторых раздумий воплощена мной (Ким). Некоторые скрипты написаны прямо на схеме, т. к. я ещё и думал в этой же схеме. Нарисовать можно проще, а можно сложнее — кто как привык работать. &lt;br /&gt;
Итак, что мы видим на схеме? Непонятные овалы, звёздочки, параллепипиды и линии. Овал — это space_restrictor, звёздочка — animpoint(smart_cover), линия — путь (way). Всё это нужно будет расставить в sdk (ну и присвоить нужные имена). Думаю с этим у Вас проблем не возникнет, ну на крайний случай можете заглянуть в соседние уроки. Важно не перепутать названия, иначе сцена просто не будет работать. И ещё. Необходимо поставить smart_terrain, чтобы нпс спавнились в нужном нам месте и получали нужную логику (об этом позднее).&lt;br /&gt;
&lt;br /&gt;
==Шаг 2. Подготавливаем логику==&lt;br /&gt;
Gamedata\configs\scripts\ - создаём файлы для кажого нпс (killer_1.ltx и т.д.)&lt;br /&gt;
;Вот тут начинается самое интересное. Начнём с Командира.&lt;br /&gt;
&amp;lt;code&amp;gt;[logic@killer_commander_1] — обязательная секция.&lt;br /&gt;
active = animpoint@stay — активная секция логики, т. е. То, что нпс делает сразу, по умолчанию.&lt;br /&gt;
&lt;br /&gt;
[animpoint@stay]&lt;br /&gt;
cover_name = killer_commander_1 — название анимпоинта, в котором будет находится нпс.&lt;br /&gt;
avail_animations = animpoint_stay_table — активная анимация, в данном случае — просто стоять&lt;br /&gt;
(анимация неправильная, т. к. табл — это за столом, надо сменить на другую, стоящую).&lt;br /&gt;
use_camp = false — запрет на использование фонарика (чтобы не выдать нпс в темноте).&lt;br /&gt;
on_info = {+poshel_ti} nil %=actor_enemy%&lt;br /&gt;
 - при получении инфопоршня « poshel_ti» активирует схему, при которой игрок становится врагом, т. е. Это тот самый отрицательный диалоги (о нём позднее).&lt;br /&gt;
on_info2 = {=npc_in_zone(sr_poimali_1)} %=play_sound(jup_a12_stalker_assaulter_1_argue)%&lt;br /&gt;
 - при входи игрока в зону(рестриктор) включает звук (Стоять! Оружие на землю! Медленно подошёл ко мне!).&lt;br /&gt;
on_info3 = {+na_rasstrel} %=play_sound(jup_a12_stalker_assaulter_1_argue) =disable_ui% | animpoint@bye&lt;br /&gt;
 — отобрав хабар отыгрывает звук (Расстрелять его. (ну, пока что я поставил звук из ЗП, т. к. не записали нужные реплики)),&lt;br /&gt;
выключает ui (полностью выключает, нет возможности двигаться) и переключает на следующую схему.&lt;br /&gt;
invulnerable = true — нпс бессмертен, чтобы игрок случайно его не убил (ну или монстр какой).&lt;br /&gt;
out_restr = sr_poimali_1 — при боевой схеме держится за этим рестриктором.&lt;br /&gt;
gather_items_enabled = false — не подбирает валяющиеся предметы.&lt;br /&gt;
help_wounded_enabled = false — не просит помощи, если ранен.&lt;br /&gt;
corpse_detection_enabled = false — не обыскивает трупы.&lt;br /&gt;
&lt;br /&gt;
[animpoint@bye] &lt;br /&gt;
cover_name = killer_commander_1 — название анимпоинта.&lt;br /&gt;
avail_animations = salut_free — активная анимация (вроде как козыряет)&lt;br /&gt;
on_signal = anim_end | %=play_sound(jup_b207_freedom_leader_about_depot)% - получив сигнал «конец анимации» отыгрывает звук (ну, я пока пройдусь тут).&lt;br /&gt;
on_signal2 = sound_end |  walker@za_povorot %=enable_ui% - получив сигнал «конец звука» включает следующую схему и включает ui, игрок может двигаться.&lt;br /&gt;
use_camp = false&lt;br /&gt;
invulnerable = true&lt;br /&gt;
gather_items_enabled = false&lt;br /&gt;
help_wounded_enabled = false&lt;br /&gt;
corpse_detection_enabled = false&lt;br /&gt;
combat_ignore_cond = true — игнорирует ранение.&lt;br /&gt;
combat_ignore_keep_when_attacked = true — игнорирует атаку на него.&lt;br /&gt;
&lt;br /&gt;
[walker@za_povorot] — схема walker&lt;br /&gt;
path_walk = way_za_povorot_walk — наш путь, установленный в сдк.&lt;br /&gt;
path_look  = way_za_povorot_look — точки, куда нпс будет смотреть.&lt;br /&gt;
on_info = {=path_end} nil %=remove_squad(killer_commander_1)% - при получении сигнала «путь окончен» удаляет сквад  killer_commander_1,&lt;br /&gt;
состоящий из одного нпс — командира (больше он не нужен, а потом можно будет заспавнить снова).&lt;br /&gt;
gather_items_enabled = false&lt;br /&gt;
help_wounded_enabled = false&lt;br /&gt;
corpse_detection_enabled = false&lt;br /&gt;
combat_ignore_cond = true&lt;br /&gt;
combat_ignore_keep_when_attacked = true — всё то же, но без бессмертия.&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;Логика первого конвоира «киллера»:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
[logic@killer_1]&lt;br /&gt;
active = animpoint@stay&lt;br /&gt;
&lt;br /&gt;
[animpoint@stay]&lt;br /&gt;
cover_name = killer_1 — имя анимпоинта.&lt;br /&gt;
avail_animations = animpoint_stay_table — отыгрываемая анимация.&lt;br /&gt;
use_camp = false — не использует фонарик.&lt;br /&gt;
on_info = {+na_rasstrel} %=play_sound(jup_a12_stalker_assaulter_1_argue)% | walker@na_rasstrel_1 — при получении инфопоршня « na_rasstrel» отыгрывает звук&lt;br /&gt;
«ну, сталкер, пошли» и включает следующую схему.&lt;br /&gt;
invulnerable = true&lt;br /&gt;
out_restr = sr_poimali_1&lt;br /&gt;
gather_items_enabled = false&lt;br /&gt;
help_wounded_enabled = false&lt;br /&gt;
corpse_detection_enabled = false&lt;br /&gt;
&lt;br /&gt;
[walker@na_rasstrel_1]&lt;br /&gt;
path_walk = way_na_rasstrel_1_walk — путь.&lt;br /&gt;
path_look  = way_na_rasstrel_1_look&lt;br /&gt;
on_info = {=dist_to_actor_ge(5)} nil %+rasstrelyat =actor_enemy% - если расстояние до игрока больше 5 метров, то выдаётся инфопоршень «rasstrelyat»&lt;br /&gt;
(зачем? Ответ ниже) и делает игрока врагом.&lt;br /&gt;
on_info2 = {=actor_has_weapon} nil %=actor_enemy% - если игрок будет с оружием — то он станет врагом (нпс будет атаковать).&lt;br /&gt;
on_info3 = {=npc_in_zone(sr_rasstrel_1)} animpoint@rasstrel — как только нпс приходит в зону расстрела — включается следующая схема.&lt;br /&gt;
on_info4 = {=dist_to_actor_ge(50)} nil %=kill_actor% - если игрок вдруг смог убежать от конвоиров — через 50 метров он просто умрёт (игра окончена). &lt;br /&gt;
gather_items_enabled = false&lt;br /&gt;
help_wounded_enabled = false&lt;br /&gt;
corpse_detection_enabled = false&lt;br /&gt;
&lt;br /&gt;
[animpoint@rasstrel]&lt;br /&gt;
cover_name = killer_1_1 — название анимпоинта.&lt;br /&gt;
avail_animations = animpoint_stay_table — анимация.&lt;br /&gt;
use_camp = false&lt;br /&gt;
on_info = {=actor_in_zone(sr_rasstrel_1)}  %=play_sound(jup_a12_stalker_assaulter_1_argue) =actor_enemy% - как только игрок войдёт в зону, нпс отыгрывает звук&lt;br /&gt;
«прощайся с жизнью!» и атакует его.&lt;br /&gt;
on_info2 = {=actor_has_weapon} nil %=actor_enemy% - если игрок достанет оружие — атаковать его (не забывайте про ПМ).&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
;Логика второго конвоира «киллера»:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
[logic@killer_1]&lt;br /&gt;
active = animpoint@stay&lt;br /&gt;
&lt;br /&gt;
[animpoint@stay]&lt;br /&gt;
cover_name = killer_2&lt;br /&gt;
avail_animations = animpoint_stay_table&lt;br /&gt;
use_camp = false&lt;br /&gt;
on_info = {+na_rasstrel} %=play_sound(jup_a12_stalker_assaulter_1_argue)% | remark@poshel — тут начинается отличие от первого киллера — &lt;br /&gt;
схема walker включается не сразу, чтобы нпс шёл немного позади игрока (иллюзия конвоя, к сожалению в сталкере нет скрипта, чтобы нпс шёл позади игрока просто так).&lt;br /&gt;
invulnerable = true&lt;br /&gt;
out_restr = sr_poimali_1&lt;br /&gt;
gather_items_enabled = false&lt;br /&gt;
help_wounded_enabled = false&lt;br /&gt;
corpse_detection_enabled = false&lt;br /&gt;
&lt;br /&gt;
[remark@poshel]&lt;br /&gt;
anim = guard - анимация&lt;br /&gt;
target = story | actor — на кого нпс смотрит&lt;br /&gt;
on_timer = 500 | walker@na_rasstrel_1 — отсчитываем 500 игровых секунд (меньше минуты настоящего времени) и включаем схему walker.&lt;br /&gt;
&lt;br /&gt;
[walker@na_rasstrel_1]&lt;br /&gt;
path_walk = way_na_rasstrel_2_walk&lt;br /&gt;
path_look  = way_na_rasstrel_2_look&lt;br /&gt;
on_info = {+rasstrelyat} %=actor_enemy% — а вот и ответ. т. к. нпс не может точно знать, где игрок будет через 500 игровых секунд, то нельзя включать такую схему,&lt;br /&gt;
при которой игрок отойдя от нпс на 5 метров — становится врагом. Игрок привязан к первому нпс и для него же и становится врагом. А чтобы второй нпс тоже считал игрока&lt;br /&gt;
 врагом — и нужен инфопоршень «rasstrelyat».&lt;br /&gt;
on_info2 = {=actor_has_weapon} nil %=actor_enemy% &lt;br /&gt;
on_info3 = {=npc_in_zone(sr_rasstrel_1)} animpoint@rasstrel&lt;br /&gt;
on_info4 = {=dist_to_actor_ge(50)} nil %=kill_actor%&lt;br /&gt;
gather_items_enabled = false&lt;br /&gt;
help_wounded_enabled = false&lt;br /&gt;
corpse_detection_enabled = false — всё остальное так же.&lt;br /&gt;
&lt;br /&gt;
[animpoint@rasstrel]&lt;br /&gt;
cover_name = killer_2_1&lt;br /&gt;
avail_animations = animpoint_stay_table&lt;br /&gt;
use_camp = false&lt;br /&gt;
on_info = {=actor_in_zone(sr_rasstrel_1)} %=play_sound(jup_a12_stalker_assaulter_1_argue) =actor_enemy%&lt;br /&gt;
on_info2 = {=actor_has_weapon} nil %=actor_enemy% - и тут аналогично, разве что реплику можно записать другую.&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
Вообще можно было и подробнее объяснить, но не буду разжёвывать то, что Вы можете прочитать в других уроках, я лишь учу использовать эти знания в нужном направлении.&lt;br /&gt;
&lt;br /&gt;
==Шаг 3. Диалоги==&lt;br /&gt;
Диалог тут всего один — с командиром. Вообще хорошо бы использовать цифры в id диалогов, но лично мне удобнее называть их именами нпс (кому принадлежит диалоги) и местом действия. Если диалогов несколько — в одном задании, то я ставлю цифры _1, _2 и т.д.&lt;br /&gt;
;Внимание! Диалог прописан стартовым для нпс (вернее мы ещё пропишем), поэтому 0 фраза — принадлежит НПС! (диалоги так себе, сделаны для заглушки).&lt;br /&gt;
Gamedata\configs\gameplay\dialogs.xml (название конечного файла может быть любым, можете создать свой файл для диалогов).&lt;br /&gt;
&amp;lt;code&amp;gt;	&amp;lt;dialog id=&amp;quot;gr_fabrika_commander&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;dont_has_info&amp;gt;rasstrelyat&amp;lt;/dont_has_info&amp;gt; &lt;br /&gt;
			&amp;lt;dont_has_info&amp;gt;na_rasstrel&amp;lt;/dont_has_info&amp;gt; - делаем диалоги одноразовым.&lt;br /&gt;
	&amp;lt;phrase_list&amp;gt;&lt;br /&gt;
		&amp;lt;phrase id=&amp;quot;0&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;text&amp;gt;Сталкер, ты вне закона на этой територии! Я тебя спокойно могу расстрелять. Гони хабар, если хочешь жить!&amp;lt;/text&amp;gt;&lt;br /&gt;
			&amp;lt;next&amp;gt;10&amp;lt;/next&amp;gt;&lt;br /&gt;
			&amp;lt;next&amp;gt;20&amp;lt;/next&amp;gt;&lt;br /&gt;
		&amp;lt;/phrase&amp;gt;&lt;br /&gt;
		&amp;lt;phrase id=&amp;quot;10&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;text&amp;gt;Да пошёл ты, вояки мне не указ.&amp;lt;/text&amp;gt;&lt;br /&gt;
			&amp;lt;next&amp;gt;11&amp;lt;/next&amp;gt;&lt;br /&gt;
		&amp;lt;/phrase&amp;gt;&lt;br /&gt;
		&amp;lt;phrase id=&amp;quot;20&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;text&amp;gt;Вот, держи.&amp;lt;/text&amp;gt;&lt;br /&gt;
			&amp;lt;action&amp;gt;dialogs_gr.drop_npc_items &amp;lt;/action&amp;gt;&lt;br /&gt;
			&amp;lt;next&amp;gt;21&amp;lt;/next&amp;gt;&lt;br /&gt;
		&amp;lt;/phrase&amp;gt;&lt;br /&gt;
		&amp;lt;phrase id=&amp;quot;11&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;text&amp;gt;Конец тебе, бойцы, огонь!&amp;lt;/text&amp;gt;&lt;br /&gt;
			&amp;lt;give_info&amp;gt;rasstrelyat&amp;lt;/give_info&amp;gt;&lt;br /&gt;
			&amp;lt;action&amp;gt;dialogs.break_dialog&amp;lt;/action&amp;gt;&lt;br /&gt;
		&amp;lt;/phrase&amp;gt;&lt;br /&gt;
		&amp;lt;phrase id=&amp;quot;21&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;text&amp;gt;Молодец. Но ты всё равно вне закона. Бойцы, отведите его к стенке, да расстреляйте.&amp;lt;/text&amp;gt;&lt;br /&gt;
			&amp;lt;action&amp;gt;dialogs_gr.spawn_pm&amp;lt;/action&amp;gt;&lt;br /&gt;
			&amp;lt;give_info&amp;gt;na_rasstrel&amp;lt;/give_info&amp;gt;&lt;br /&gt;
			&amp;lt;action&amp;gt;dialogs.break_dialog&amp;lt;/action&amp;gt;&lt;br /&gt;
		&amp;lt;/phrase&amp;gt;&lt;br /&gt;
	&amp;lt;/phrase_list&amp;gt;&lt;br /&gt;
	&amp;lt;/dialog&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
;Теперь надо подготовить скрипты.&lt;br /&gt;
Gamedata\scripts\dialogs.script&lt;br /&gt;
У нас всего две функции — убрать хабар и заспавнить ПМ.&lt;br /&gt;
&amp;lt;code&amp;gt; function spawn_pm()&lt;br /&gt;
 	alife():create(&amp;quot;wpn_pm&amp;quot;, vector():set(103.57, 9.15, -44.95), 0.0,0.0)&lt;br /&gt;
 end&amp;lt;/code&amp;gt;&lt;br /&gt;
Позицию вычисляйте сами в нужном Вам месте.&lt;br /&gt;
&amp;lt;code&amp;gt;function drop_npc_items(actor, npc, p)&lt;br /&gt;
	local item = 0&lt;br /&gt;
	for i, v in pairs(p) do&lt;br /&gt;
	item = npc:object(v)&lt;br /&gt;
	if item then&lt;br /&gt;
	npc:drop_item(item)&lt;br /&gt;
	end&lt;br /&gt;
	end&lt;br /&gt;
end&amp;lt;/code&amp;gt;&lt;br /&gt;
Функция должна убить все вещи (не проверялось).&lt;br /&gt;
Всё, скрипты готовы.&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
==Шаг 4. Соединяем все части воедино==&lt;br /&gt;
Итак, почти всё готово, но в игре схему посмотреть не удастся. Нужно подключить всё, создать нужные сквады, прописать логику, подключить диалоги. Начнём.&lt;br /&gt;
Подключаем диалог командиру(профиль Вы уже должны были сделать, не буду объяснять как):&lt;br /&gt;
&amp;lt;start_dialog&amp;gt;gr_fabrika_commander&amp;lt;/start_dialog&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;Создаём сквады:&lt;br /&gt;
gamedata\configs\misc\squad_descr.ltx&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;[killer_commander_1]:online_offline_group ; Командир&lt;br /&gt;
faction = army&lt;br /&gt;
npc =  killer_commander_1&lt;br /&gt;
target_smart = killers_smart&lt;br /&gt;
&lt;br /&gt;
[killers_squad]:online_offline_group ; бойцы&lt;br /&gt;
faction = army&lt;br /&gt;
npc = killer_1, killer_2&lt;br /&gt;
target_smart = killers_smart&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
;Включаем сквады в симуляцию (спавн при начале игры)&lt;br /&gt;
gamedata\configs\misc\simulation.ltx&lt;br /&gt;
В simulation.ltx создаете поле [start_position_&amp;lt;имя уровня&amp;gt;]&lt;br /&gt;
В нем пишите строку &amp;lt;ид сквада&amp;gt; = &amp;lt;имя смарта&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;[start_position_jupiter]&lt;br /&gt;
killer_commander_1 = killers_smart&lt;br /&gt;
killers_squad = killers_smart&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;Там же, но в simulation_objects_props.ltx прописываем смарт:&lt;br /&gt;
под ;---------smarts--------------&lt;br /&gt;
&amp;lt;code&amp;gt;[killers_smart]:default_base&lt;br /&gt;
territory = 1&lt;br /&gt;
sim_avail = true&lt;br /&gt;
;----------squad----------&lt;br /&gt;
[killer_commander_1]:default_squad&lt;br /&gt;
sim_avail = false&lt;br /&gt;
[killers_squad]:default_squad&lt;br /&gt;
sim_avail = false&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;Прописываем звуки, если таковые имеются (внимание, звуки для речи сталкеров кидать только в «gamedata\sounds\characters_voice\scenario»)&lt;br /&gt;
gamedata\configs\misc\script_sound.ltx&lt;br /&gt;
&lt;br /&gt;
для примера приведу монолог торговца:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
trader_monolog1&lt;br /&gt;
&lt;br /&gt;
[trader_monolog1]&lt;br /&gt;
type = npc&lt;br /&gt;
npc_prefix = false&lt;br /&gt;
path = scenario\trader\trader_monolog1&lt;br /&gt;
shuffle = seq&lt;br /&gt;
idle = 0,0,100&amp;lt;/code&amp;gt;&lt;br /&gt;
;Будьте внимательны при создании персонажа — проверьте, включили ли Вы его в npc_profile.xml и spawn_section.ltx!&lt;br /&gt;
Прописываем логику для смарт_террейна и включаем логику нпс:&lt;br /&gt;
gamedata\configs\scripts\gr(название Вашей локации)\smart\killers_smart.ltx&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
[smart_terrain];killers_smart&lt;br /&gt;
squad_id = 11(id сквада в игре)&lt;br /&gt;
max_population = 3 — количество допустимых сквадов в смарте&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[exclusive] — эксклюзивная логика для нпс&lt;br /&gt;
killer_commander_1 = gr\killer_commander_1.ltx&lt;br /&gt;
killer_1 = gr\killer_1.ltx&lt;br /&gt;
killer_2 = gr\killer_2.ltx&amp;lt;/code&amp;gt;&lt;br /&gt;
полный путь писать не нужно, достаточно указать папку, в которой лежит логика (в моём случае — gr, для локации Кордон).&lt;br /&gt;
==Credits==&lt;br /&gt;
Вот и всё. Если всё сделано правильно — при входе в ворота фабрики запускается сцена. Если в логике допущена ошибка — то игра вообще не запустится. На создание сцены с нуля уходит несколько часов, на отладку — ещё больше. Сцену можно усложнять, делать длинные переходы, разветвлнные диалоги, дополнительные задания... В общем — в пределах Вашей фантазии (и возможностей двжика).&amp;lt;br&amp;gt;&lt;br /&gt;
Всем спасибо, до новых встреч.&amp;lt;br&amp;gt;&lt;br /&gt;
Автор статьи - Ким Азимов ([[Участник:Kim|Kim]]) 2012 год&amp;lt;br&amp;gt;&lt;br /&gt;
Идея - Григорий Белый (Dezertir1w2) 2011 год.&amp;lt;br&amp;gt;&lt;br /&gt;
Свои вопросы и пожелания отправляйте на почту.&lt;/div&gt;</summary>
		<author><name>176.112.154.205</name></author>	</entry>

	</feed>