<?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=91.218.192.254&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=91.218.192.254&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/91.218.192.254"/>
		<updated>2026-06-15T08:40:49Z</updated>
		<subtitle>Вклад участника</subtitle>
		<generator>MediaWiki 1.22.6</generator>

	<entry>
		<id>http://stalkerin.gameru.net/wiki/index.php?title=%D0%A4%D0%BE%D1%80%D0%BC%D0%B0%D1%82%D1%8B_%D1%84%D0%B0%D0%B9%D0%BB%D0%BE%D0%B2</id>
		<title>Форматы файлов</title>
		<link rel="alternate" type="text/html" href="http://stalkerin.gameru.net/wiki/index.php?title=%D0%A4%D0%BE%D1%80%D0%BC%D0%B0%D1%82%D1%8B_%D1%84%D0%B0%D0%B9%D0%BB%D0%BE%D0%B2"/>
				<updated>2014-07-03T11:10:47Z</updated>
		
		<summary type="html">&lt;p&gt;91.218.192.254: /* .anm, .anms */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Основные форматы==&lt;br /&gt;
Игра использует различные форматы файлов для своих ресурсов. Разберем их редактирование.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Текстовые форматы===&lt;br /&gt;
&lt;br /&gt;
====.ltx====&lt;br /&gt;
[[Конфиг|Конфигурационный файл]].&lt;br /&gt;
&lt;br /&gt;
Открывается '''Блокнотом''', прост в редактировании. Синтаксис аналогичен [http://ru.wikipedia.org/wiki/.ini .ini] файлам.&lt;br /&gt;
&lt;br /&gt;
====[http://ru.wikipedia.org/wiki/.xml .xml]====&lt;br /&gt;
Обычно используется для хранения текстовых массивов и прочих структурированных данных.&lt;br /&gt;
&lt;br /&gt;
Открывается '''Блокнотом''', но для удобного редактирования с подсветкой разметки лучше использовать [http://stalkerin.gameru.net/modules.php?name=Downloads&amp;amp;d_op=viewtheoned&amp;amp;lid=451 SciTE] или же [http://notepad-plus.sourceforge.net/ru/site.htm Notepad++].&lt;br /&gt;
&lt;br /&gt;
====.script====&lt;br /&gt;
[[Скрипт|Скриптовый файл]].&lt;br /&gt;
&lt;br /&gt;
Открывается '''Блокнотом''', но для удобного редактирования с подсветкой разметки лучше использовать [http://stalkerin.gameru.net/modules.php?name=Downloads&amp;amp;d_op=viewtheoned&amp;amp;lid=451 SciTE] или [http://notepad-plus.sourceforge.net/ru/site.htm Notepad++]. Синтаксис аналогичен .lua файлам.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Текстуры===&lt;br /&gt;
&lt;br /&gt;
====[http://ru.wikipedia.org/wiki/DirectDraw_Surface .dds]====&lt;br /&gt;
DirectDraw Surface - формат изображения в DirectX, используется для хранения текстур.&lt;br /&gt;
&lt;br /&gt;
Редактируется в '''Photoshop''' с установленным [http://developer.nvidia.com/object/photoshop_dds_plugins.html dds-плагином от nVidia]&lt;br /&gt;
либо в свободном и бесплатном [http://gimp.org/ GIMP-е] с [http://nifelheim.dyndns.org/~cocidius/dds/ плагином].&lt;br /&gt;
&lt;br /&gt;
====[http://ru.wikipedia.org/wiki/Truevision_TGA .tga]====&lt;br /&gt;
Truevision TGA (TGA) — растровый графический формат с поддержкой глубины цвета 1—32 бита на пиксель, альфа-каналов, сжатия RLE.&lt;br /&gt;
&lt;br /&gt;
Используется как исходный формат (&amp;quot;сырые&amp;quot; текстуры), в т.ч. и в альтернативном дереве при работе в Maya.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Звуки/видео===&lt;br /&gt;
&lt;br /&gt;
====[http://ru.wikipedia.org/wiki/Theora .ogm]====&lt;br /&gt;
Формат видео, используемый игровым движком. Звуковая дорожка должна идти отдельно, в виде звукового файла формата .ogg (см.ниже).&lt;br /&gt;
&lt;br /&gt;
Редактируется через любой видеоредактор при наличии экспорта в OGV. При отсутствии расширений конвертируется либо [http://stalkerin.gameru.net/modules.php?name=Downloads&amp;amp;d_op=viewtheoned&amp;amp;lid=393 специальным конвертером], либо [[Создание и конвертирование видеофайлов в игровой формат| при помощи программы VirtualDub]].&lt;br /&gt;
&lt;br /&gt;
====[http://ru.wikipedia.org/wiki/Vorbis .ogg]====&lt;br /&gt;
Формат звука, используемый игровым движком.&lt;br /&gt;
&lt;br /&gt;
Редактируется через любой звуковой редактор с поддержкой OGG Vorbis.&lt;br /&gt;
&lt;br /&gt;
====.wav====&lt;br /&gt;
Исходный формат звука для последующей настройки и конвертации в .ogg с помощью редакторов SDK.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Анимация===&lt;br /&gt;
&lt;br /&gt;
====.skl, .skls, .omf, .mots (старый формат из 1xxx)====&lt;br /&gt;
Скелетная анимация, в массивах и поодиночке.&lt;br /&gt;
&lt;br /&gt;
====.anm, .anms====&lt;br /&gt;
Набор координат, который работает в виде анимации движения камеры актера. Используется также для аномалий, которым необходимо задать путь. Редактируется встроенным в LevelEditor [[Создание камеры (катсцены)|редактором]].&lt;br /&gt;
&lt;br /&gt;
====.xrdemo====&lt;br /&gt;
Запись облета камеры (демка). Создается в игре (консольная команда [[demo_record]]).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Объекты===&lt;br /&gt;
&lt;br /&gt;
====.object====&lt;br /&gt;
Формат объектов SDK.&lt;br /&gt;
&lt;br /&gt;
====.ogf====&lt;br /&gt;
Формат игровых объектов.&lt;br /&gt;
&lt;br /&gt;
Для работы с данными форматами существуют:&lt;br /&gt;
* [http://stalkerin.gameru.net/modules.php?name=Downloads&amp;amp;d_op=viewtheoned&amp;amp;lid=393 X-Ray Maya tools]&lt;br /&gt;
* [http://stalkerin.gameru.net/modules.php?name=Downloads&amp;amp;d_op=viewtheoned&amp;amp;lid=404 OGF Viewer]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Спавны и графы==&lt;br /&gt;
&lt;br /&gt;
====.graph====&lt;br /&gt;
Игровой/уровневый граф.&lt;br /&gt;
&lt;br /&gt;
[http://stalkerin.gameru.net/modules.php?name=Downloads&amp;amp;d_op=viewtheoned&amp;amp;lid=458 Компилятор/декомпилятор формата]&lt;br /&gt;
[http://stalkerin.gameru.net/modules.php?name=Downloads&amp;amp;d_op=viewtheoned&amp;amp;lid=457 ggTool]&lt;br /&gt;
&lt;br /&gt;
====.spawn====&lt;br /&gt;
Файл, хранящий данные о [[Спавн|спавне]].&lt;br /&gt;
&lt;br /&gt;
[http://stalkerin.gameru.net/modules.php?name=Downloads&amp;amp;d_op=viewtheoned&amp;amp;lid=455 Компилятор/декомпилятор формата]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Дополнительно==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====.thm====&lt;br /&gt;
Файл содержит описание текстуры/звука.&lt;br /&gt;
&lt;br /&gt;
====.efd====&lt;br /&gt;
Формат файлов неизвестного пока назначения. Имеет прямое отношение к ИИ.&lt;br /&gt;
&lt;br /&gt;
====.ppe====&lt;br /&gt;
Формат файлов постпроцесса.&lt;br /&gt;
&lt;br /&gt;
Создаются/редактируются с помощью утилиты PostprocessEditor, входящей в состав [[SP_SDK| SDK 0.7]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Форматы игровых уровней==&lt;br /&gt;
&lt;br /&gt;
Основа: [http://ru.wikipedia.org/wiki/Interchange_File_Format Interchange File Format].&lt;br /&gt;
Практически все файлы X-Ray используют такую структуру.&lt;br /&gt;
&lt;br /&gt;
Во-вторых, смотрите исходники X-Ray game asset tools. Ни разу не аутентичный источник, но более-менее проверен практикой.&lt;br /&gt;
&lt;br /&gt;
В-третьих, несколько фраз по каждому файлу (по состоянию ЧН).&lt;br /&gt;
&lt;br /&gt;
====level.====&lt;br /&gt;
IFF-секции верхнего уровня:&lt;br /&gt;
&lt;br /&gt;
* заголовок с версией xrLC и качеством сборки (high/draft/custom);&lt;br /&gt;
* таблица пар текстура/engine shader;&lt;br /&gt;
* побитая на кусочки и структурированная в виде дерева (-ьев, если есть разбиение на секторы) геометрия. вершин, индексов нет! Только ссылки на level.geom/geomx;&lt;br /&gt;
* порталы;&lt;br /&gt;
* источники света (преимущественно для R1);&lt;br /&gt;
* отблески (glow);&lt;br /&gt;
* секторы.&lt;br /&gt;
&lt;br /&gt;
[http://stalkerin.gameru.net/modules.php?name=Downloads&amp;amp;d_op=viewtheoned&amp;amp;lid=470 Компилятор/декомпилятор формата]&lt;br /&gt;
&lt;br /&gt;
====level.cform====&lt;br /&gt;
Геометрия для просчёта коллизий. Немного упрощая: в зависимости от параметров compiler shader берётся подмножество исходной геометрии карты, автоматически огрубляется и сохраняется как набор треугольников с идентификатором материала из gamemtl.xr.&lt;br /&gt;
&lt;br /&gt;
====level.details====&lt;br /&gt;
Трава. Собственно модели травы/гаек и таблица ячеек. В каждой -- что растёт, как освещено.&lt;br /&gt;
&lt;br /&gt;
====level.env_mod====&lt;br /&gt;
Локальные модификаторы погоды.&lt;br /&gt;
&lt;br /&gt;
[http://stalkerin.gameru.net/modules.php?name=Downloads&amp;amp;d_op=viewtheoned&amp;amp;lid=471 Компилятор/декомпилятор формата]&lt;br /&gt;
&lt;br /&gt;
====level.fog_vol====&lt;br /&gt;
Объёмный туман. смотрите на DX10 подземку Агропрома или пиар-ролики GSC.&lt;br /&gt;
&lt;br /&gt;
====level.game====&lt;br /&gt;
Пути и места появления игроков в MP. Но в действительности пути берутся из all.spawn. Избыточный файл.&lt;br /&gt;
&lt;br /&gt;
[http://stalkerin.gameru.net/modules.php?name=Downloads&amp;amp;d_op=viewtheoned&amp;amp;lid=456 Компилятор/декомпилятор формата]&lt;br /&gt;
&lt;br /&gt;
====level.geom====&lt;br /&gt;
В файле три корневые секции:&lt;br /&gt;
&lt;br /&gt;
1) вершины (позиция, нормали, текстурные координаты и т.п.) в совершенно обычном для D3D9 формате. То есть про SyncData забудьте, но смотрите D3DVERTEXELEMENT9, Vertex Declarations;&amp;lt;br /&amp;gt;&lt;br /&gt;
2) индексы. Опять же, D3D9;&amp;lt;br /&amp;gt;&lt;br /&gt;
3) информация для плавной детализации геометрии (MU-модели). Канонический для используемого алгоритма (SWPM) формат.&lt;br /&gt;
&lt;br /&gt;
====level.geomx====&lt;br /&gt;
Какая-то избыточная информация для R2/R3.&lt;br /&gt;
&lt;br /&gt;
====level.hom====&lt;br /&gt;
[[Создаём_HOM,_порталы_и_сектора|Hierarchical Occlusion Mapping]], или маппинг иерархических отсечений.&lt;br /&gt;
&lt;br /&gt;
====level.ps_static====&lt;br /&gt;
Системы частиц. Мухи, пар из труб и т.д.&lt;br /&gt;
&lt;br /&gt;
[http://stalkerin.gameru.net/modules.php?name=Downloads&amp;amp;d_op=viewtheoned&amp;amp;lid=472 Компилятор/декомпилятор формата]&lt;br /&gt;
&lt;br /&gt;
====level.snd_static====&lt;br /&gt;
Статические точечные источники звука. Озвучка мух и т.п.&lt;br /&gt;
&lt;br /&gt;
[http://stalkerin.gameru.net/modules.php?name=Downloads&amp;amp;d_op=viewtheoned&amp;amp;lid=473 Компилятор/декомпилятор формата]&lt;br /&gt;
&lt;br /&gt;
====level.snd_env====&lt;br /&gt;
Объёмные источники звука. Смотрите Янтарь в ТЧ, например.&lt;br /&gt;
&lt;br /&gt;
====level.spawn====&lt;br /&gt;
Тут всё понятно. Игрой не учитывается -- ей важно содержимое соответствующей секции all.spawn. '''Поправочка:''' Отсюда игра в MP режиме загружает координаты аномалий, артефактов, респаумных предметов, rpoints&lt;br /&gt;
&lt;br /&gt;
====level.wallmarks====&lt;br /&gt;
Декали. Кровавые пятна, эмблемы группировок на стенах и т.п. И снова не учитывается, так как декали вшиты в основную геометрию.&lt;br /&gt;
&lt;br /&gt;
====build.lights====&lt;br /&gt;
Изначально источники света для xrLC. ЧН и ЗП загружают оттуда секцию с hemi-освещением на r2/r3.&lt;br /&gt;
&lt;br /&gt;
====level.ai====&lt;br /&gt;
Сетка навигации ИИ.&lt;br /&gt;
&lt;br /&gt;
====level.som====&lt;br /&gt;
Геометрия для просчёта распространения звука. Скажем, просмотр SOM-объектов в LE сразу выявит причину широко известных странностей с музыкой на l05_bar из ТЧ.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==*.xr файлы==&lt;br /&gt;
&lt;br /&gt;
====gamemtl.xr====&lt;br /&gt;
Библиотека игровых материалов. Редактируется в ShaderEditor.&lt;br /&gt;
&lt;br /&gt;
[http://stalkerin.gameru.net/modules.php?name=Downloads&amp;amp;d_op=viewtheoned&amp;amp;lid=463 Компилятор/декомпилятор]&lt;br /&gt;
&lt;br /&gt;
====lanims.xr====&lt;br /&gt;
Библиотека световых анимаций. Редактируется встроенным в LevelEditor редактором LightAnimEditor.&lt;br /&gt;
&lt;br /&gt;
[http://stalkerin.gameru.net/modules.php?name=Downloads&amp;amp;d_op=viewtheoned&amp;amp;lid=461 Компилятор/декомпилятор]&lt;br /&gt;
&lt;br /&gt;
====particles.xr====&lt;br /&gt;
Системы частиц. Редактируются в ParticleEditor из состава X-Ray SDK.&lt;br /&gt;
&lt;br /&gt;
====senvironment.xr====&lt;br /&gt;
Звуковое окружение.&lt;br /&gt;
&lt;br /&gt;
[http://stalkerin.gameru.net/modules.php?name=Downloads&amp;amp;d_op=viewtheoned&amp;amp;lid=464 Компилятор/декомпилятор]&lt;br /&gt;
&lt;br /&gt;
====shaders.xr====&lt;br /&gt;
БД шейдеров, используемых графическим движком. Редактируется в ShaderEditor.&lt;br /&gt;
&lt;br /&gt;
====shaders_xrlc.xr====&lt;br /&gt;
БД шейдеров, используемых компилятором уровней (xrLC). Редактируется в ShaderEditor.&lt;br /&gt;
&lt;br /&gt;
[http://stalkerin.gameru.net/modules.php?name=Downloads&amp;amp;d_op=viewtheoned&amp;amp;lid=459 Компилятор/декомпилятор]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Авторы==&lt;br /&gt;
&lt;br /&gt;
Статья создана:&lt;br /&gt;
[[Участник:BAC9-FLCL|BAC9-FLCL]]&lt;br /&gt;
&lt;br /&gt;
Описание игровых форматов:&lt;br /&gt;
'''bardak'''&lt;br /&gt;
&lt;br /&gt;
Редактирование:&lt;br /&gt;
[[Участник:Pihan13|Pihan13]]&lt;/div&gt;</summary>
		<author><name>91.218.192.254</name></author>	</entry>

	<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>2013-08-15T19:37:55Z</updated>
		
		<summary type="html">&lt;p&gt;91.218.192.254: оформление&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(space_cover), линия — путь (way). Всё это нужно будет расставить в sdk (ну и присвоить нужные имена). Думаю с этим у Вас проблем не возникнет, ну на крайний случай можете заглянуть в соседние уроки. Важно не перепутать названия, иначе сцена просто не будет работать. И ещё. Необходимо поставить smart_terrain, чтобы нпс спавнились в нужном нам месте и получали нужную логику (об этом позднее).&lt;br /&gt;
==Шаг 2. Подготавливаем логику==&lt;br /&gt;
Gamedata\configs\scripts\ - создаём файлы для кажого нпс (killer_1.ltx и т.д.)&lt;br /&gt;
;Вот тут начинается самое интересное. Начнём с Командира.&lt;br /&gt;
&amp;lt;ini&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;/ini&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;Логика первого конвоира «киллера»:&lt;br /&gt;
&amp;lt;ini&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;/ini&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;xml&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;/xml&amp;gt;&lt;br /&gt;
;Теперь надо подготовить скрипты.&lt;br /&gt;
'''Gamedata\scripts\dialogs.script'''&lt;br /&gt;
У нас всего две функции — убрать хабар и заспавнить ПМ.&lt;br /&gt;
&amp;lt;lua&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;/lua&amp;gt;&lt;br /&gt;
Позицию вычисляйте сами в нужном Вам месте.&lt;br /&gt;
&amp;lt;lua&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;/lua&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;code&amp;gt;&amp;lt;start_dialog&amp;gt;gr_fabrika_commander&amp;lt;/start_dialog&amp;gt;&amp;lt;/code&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;ini&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;/ini&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;ini&amp;gt;[start_position_jupiter]&lt;br /&gt;
killer_commander_1 = killers_smart&lt;br /&gt;
killers_squad = killers_smart&amp;lt;/ini&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;Там же, но в '''simulation_objects_props.ltx''' прописываем смарт:&lt;br /&gt;
под ;---------smarts--------------&lt;br /&gt;
&amp;lt;ini&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;/ini&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;ini&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;/ini&amp;gt;&lt;br /&gt;
;Будьте внимательны при создании персонажа — проверьте, включили ли Вы его в '''npc_profile.xm'''l и '''spawn_section.ltx'''!&lt;br /&gt;
Прописываем логику для смарт_террейна и включаем логику нпс:&lt;br /&gt;
'''gamedata\configs\scripts\gr(название Вашей локации)\smart\killers_smart.ltx'''&lt;br /&gt;
&amp;lt;ini&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>91.218.192.254</name></author>	</entry>

	<entry>
		<id>http://stalkerin.gameru.net/wiki/index.php?title=%D0%9D%D0%B0%D1%81%D1%82%D1%80%D0%BE%D0%B9%D0%BA%D0%B0_%D0%BB%D0%BE%D0%B3%D0%B8%D0%BA%D0%B8._%D0%A7%D0%B0%D1%81%D1%82%D1%8C_1</id>
		<title>Настройка логики. Часть 1</title>
		<link rel="alternate" type="text/html" href="http://stalkerin.gameru.net/wiki/index.php?title=%D0%9D%D0%B0%D1%81%D1%82%D1%80%D0%BE%D0%B9%D0%BA%D0%B0_%D0%BB%D0%BE%D0%B3%D0%B8%D0%BA%D0%B8._%D0%A7%D0%B0%D1%81%D1%82%D1%8C_1"/>
				<updated>2013-08-11T10:17:12Z</updated>
		
		<summary type="html">&lt;p&gt;91.218.192.254: /* Схема remark */ обновление данных по параметру &amp;quot;target&amp;quot; (FantomICW)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Шаблон:Настройка логики}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;font size=6&amp;gt;Настройки логики&amp;lt;/font&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Система флагов (path_walk, path_look)=&lt;br /&gt;
В точках путей можно задавать флаги, изменяющие поведение персонажа. Флаги задаются прямо в имени '''''waypoint'''''-а, например, для точки с именем &amp;quot;'''''wp00'''''&amp;quot;:&amp;lt;br&amp;gt;&lt;br /&gt;
'''''wp00|flag1|flag2'''''&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Флаги точек пути '''''path_walk''''':&amp;lt;br&amp;gt;&lt;br /&gt;
*'''a=state'''&amp;lt;br&amp;gt;&lt;br /&gt;
:Выбирает состояние тела при перемещении (Только из раздела &amp;quot;Ходячие состояния&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
:Список состояний можно взять в ''gamedata\scripts\state_lib.script''&amp;lt;br&amp;gt;&lt;br /&gt;
*'''p=percent'''&amp;lt;br&amp;gt;&lt;br /&gt;
:Вероятность остановиться в точке в процентах (0 – 100). По умолчанию 100, т.е. сталкер никогда не проходит мимо точек остановки.&amp;lt;br&amp;gt;&lt;br /&gt;
*'''sig=name'''&amp;lt;br&amp;gt;&lt;br /&gt;
:Установить сигнал с именем '''''name''''' сразу по прибытию в точку (до поворота) для последующей его проверки с помощью поля '''''on_signal''''' логической схемы. Если нужно установить сигнал после поворота – используйте соответствующий флажок пути *'''''path_look'''''.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Флаги точек пути '''''path_look''''':&amp;lt;br&amp;gt;&lt;br /&gt;
*'''a =state'''&amp;lt;br&amp;gt;&lt;br /&gt;
:Выбирает состояние тела при стоянии (или сидении) на месте. (Из разделов &amp;quot;Стоячие&amp;quot; и &amp;quot;Сидячие&amp;quot; состояния)&amp;lt;br&amp;gt;&lt;br /&gt;
:Список состояний можно взять в ''gamedata\scripts\state_lib.script''&amp;lt;br&amp;gt;&lt;br /&gt;
*'''t=msec''' - время в миллисекундах, которое персонаж должен смотреть в заданную точку.&amp;lt;br&amp;gt;&lt;br /&gt;
:'''*''' – бесконечное время. Допустимы значения в диапазоне [1000, 30000], по умолчанию – 5000.&amp;lt;br&amp;gt;&lt;br /&gt;
:Для конечных (терминальных) вершин пути '''''path_walk''''', у которых не более 1-й соответствующей точки '''path_look''', значение '''''t''''' всегда считается бесконечным и его явно задавать не нужно.&amp;lt;br&amp;gt;&lt;br /&gt;
*'''sig=name'''&amp;lt;br&amp;gt;&lt;br /&gt;
:После поворота в точку '''''path_look''''', установить сигнал с именем '''''name'''''.&amp;lt;br&amp;gt;&lt;br /&gt;
*'''syn'''&amp;lt;br&amp;gt;&lt;br /&gt;
:Наличие флажка задержит установку сигнала до тех пор, пока в точку с флажком '''''syn''''' не прибудут все персонажи с данным '''''team'''''-ом ('''''team''''' задается в виде текстовой строки в '''''customdata'''''). До тех пор, пока остальные персонажи не прибудут, ожидающей персонаж будет отыгрывать свою '''''idle''''' анимацию.&amp;lt;br&amp;gt;&lt;br /&gt;
*'''sigtm=signal'''&amp;lt;br&amp;gt;&lt;br /&gt;
:Устанавливает сигнал при вызове '''''time_callback'''''-а '''''state manager'''''-ом. Соответственно, если '''''t=0''''', то сигнал будет установлен после отыгрывания '''''init''''' анимации. Это используется, например, с анимацией '''''press''''', которая состоит из двух частей: 1 - нажимаем на кнопку, 2 - опускаем руку.&amp;lt;br&amp;gt;&lt;br /&gt;
:В пути '''''path_look''''' можно сделать:&amp;lt;br&amp;gt;&lt;br /&gt;
:&amp;lt;ini&amp;gt;wp00|a=press|t=0|sigtm=pressed&amp;lt;/ini&amp;gt;&lt;br /&gt;
:А затем переключить схему:&amp;lt;br&amp;gt;&lt;br /&gt;
:&amp;lt;ini&amp;gt;on_signal = pressed | другая_схема&amp;lt;/ini&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Более подробное описание путей.==&lt;br /&gt;
&lt;br /&gt;
Настройка:&amp;lt;br&amp;gt;&lt;br /&gt;
[[Изображение:Logic_1.JPG]]&lt;br /&gt;
&lt;br /&gt;
На карту для каждого walker-а нужно поставить:&amp;lt;br&amp;gt;&lt;br /&gt;
#Путь '''''path_walk''''', по которому '''''walker''''' ходит.&amp;lt;br&amp;gt;&lt;br /&gt;
#Путь '''''path_look''''', состоящий из точек, в которые '''''walker''''' смотрит.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''''Walker'''''-ов может быть 1 или больше. Они могут действовать независимо, или взаимодействовать друг с другом.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Если персонаж должен стоять на месте, то ему задается одна точка пути '''''path_walk''''' и как минимум одна точка пути '''''path_look''''', хотя и можно не задавать точку взгляда вовсе (игра автоматически определит точку по умолчанию ту, в которую НПС смотрел изначально), делать этого не следует.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Правила расстановки флажков в путях рассмотрим на нескольких примерах:&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Пример 1:===&lt;br /&gt;
&lt;br /&gt;
Персонаж патрулирует территорию вокруг двух домиков. Маршрут строится следующим образом: &amp;lt;br&amp;gt;&lt;br /&gt;
[[Изображение:Logic_2.JPG]]&lt;br /&gt;
&lt;br /&gt;
Как сделать, чтобы персонаж между определенными точками бежал или крался? Для этого в пути '''''path_walk''''' существуют флажки.&amp;lt;br&amp;gt;&lt;br /&gt;
У каждого вейпоинта есть имя: '''''wp00''''', '''''wp01''''' и т.д.&amp;lt;br&amp;gt;&lt;br /&gt;
Флажки задаются в имени. Их нужно отделять от самого имени с помощью символа ‘'''|'''’. Пишеться '''''a=anim''''', где '''''anim''''' – название анимации. Если мы напишем '''''a=threat''''' то персонаж пойдет в состоянии данжер, если '''''a=raid''''' то побежит с оружием наизготовку и т.д. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''''Примечание''''': В точках пути '''''path_walk''''' используются анимации '''ТОЛЬКО''' из раздела «Ходячие состояния»!&lt;br /&gt;
&lt;br /&gt;
===Пример 2:===&lt;br /&gt;
[[Изображение:Logic_3.JPG]]&lt;br /&gt;
&lt;br /&gt;
Разговор персонажа.&lt;br /&gt;
&lt;br /&gt;
Чтобы персонаж говорил, перемещаясь по маршруту, нужно определить в каждой точке список тем, на которые он может говорить. Для этого существуют следующие поля:&amp;lt;br&amp;gt;&lt;br /&gt;
'''''s = имя_звуковой_схемы''''' - (по умолчанию звук отключен). Несколько тем можно перечислять через запятую.&lt;br /&gt;
&lt;br /&gt;
===Пример 3:===&lt;br /&gt;
[[Изображение:Logic_4.JPG]]&lt;br /&gt;
&lt;br /&gt;
В примере 3 используется только поле '''''s''''', чтобы задать тему разговора, и флажок '''''sc''''', чтобы показать, что звук проигрывается не разово, а периодически.&amp;lt;br&amp;gt;&lt;br /&gt;
Остальные параметры ('''''sp''''', '''''sf''''', '''''st''''') задавать НЕ РЕКОМЕНДУЕТСЯ, значения по умолчанию приемлемы для большинства скриптов.&amp;lt;br&amp;gt;&lt;br /&gt;
Параметр '''''sa''''' также использовать НЕ РЕКОМЕНДУЕТСЯ. Если нужно стартовать звук одновременно с анимацией, лучше воспользоваться полями пути '''''path_look''''', о котором будет написано ниже.&amp;lt;br&amp;gt;&lt;br /&gt;
Если персонаж не только ходит по маршруту, но должен также останавливаться и играть анимации, нужно задать ему путь '''''path_look'''''.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Пример 4:=== &lt;br /&gt;
усовершенствуем пример 1, чтобы персонаж, проходя мимо проема между домами, останавливался и заглядывал в него:&lt;br /&gt;
&lt;br /&gt;
[[Изображение:Logic_5.JPG]]&lt;br /&gt;
&lt;br /&gt;
Что добавилось в этом примере? Путь '''''path_look''''' с двумя точками. Связь между точками этого пути рекомендуется сразу же удалить в редакторе, поскольку она все равно не используется.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Далее, в точках путей '''''path_walk''''' и '''''path_look''''', которые обведены на рисунке пунктирной линией, в редакторе ставим общие флажки (в ''ACDC'' поле '''''flags'''''). Например, в верхней паре точек ставим флажок 0, а в нижней паре точек – флажок 1.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Теперь персонаж будет останавливаться в точках '''''path_walk''''', помеченных флажком, и смотреть в точку '''''path_look''''', помеченную тем же самым флажком.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Если точка '''''path_walk'''''  не помечена флажком, персонаж проходит ее не останавливаясь.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Одной точке '''''path_walk''''' может соответствовать несколько точек '''''path_look'''''. Тогда персонаж выберем случайно одну из подходящих точек.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
По аналогии с '''''path_walk''''', в точках пути '''''path_look''''' можно использовать различные флажки, меняющие поведение:&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''''p = 100''''' – вероятность, с которой персонаж посмотрит именно в эту точку. Значения '''''p''''' всех подходящих точек суммируются, т.е. если у одной точки '''''p = 100''''', а у другой '''''p = 300''''', то персонаж посмотрит в первую с вероятностью 25%! (т.е. 100 из 400).&lt;br /&gt;
Во избежание путаницы, рекомендуется задавать '''''p''''' так, чтобы их сумма составляла '''100'''.&lt;br /&gt;
По умолчанию у всех точек '''''p = 100'''''.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''''t = 5000''''' - время, на которое персонаж задержится в этой точке (по умолчанию 5000 мсек)&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Пример 5:===&lt;br /&gt;
&lt;br /&gt;
[[Изображение:Logic_6.JPG]]&lt;br /&gt;
&lt;br /&gt;
В этом примере проходя через точку '''''wp00''''', персонаж с вероятностью 30% посмотрит в точку '''''wp00''''' в течение 5 секунд, но с вероятностью 70% посмотрит в точку '''''wp01''''' в течении 10 секунд.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
По умолчанию при остановках персонаж играет анимацию '''''idle''''', если он не в состоянии '''''crouch''''', либо анимацию '''''hide''''', если он в состоянии '''''crouch'''''.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Если требуется другая анимация, можно ее указать с помощью флажка:&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''''a = имя_анимации''''' - (по умолчанию '''''idle'''''). &amp;lt;br&amp;gt;&lt;br /&gt;
Пишеться '''''a=anim''''', где '''''anim''''' – название анимации. Если мы напишем '''''a=hide''''', то персонаж сядет в состоянии данжер, если '''''a=guard''''', то встанет  с оружием наизготовку и т.д. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''''Примечание''''': В точках пути '''''path_look''''' используются анимации '''ТОЛЬКО''' из раздела «Стоячие и сидячие состояния»!&lt;br /&gt;
&lt;br /&gt;
==Система флагов для монстров==&lt;br /&gt;
Флаги пути движения:&amp;lt;br&amp;gt;&lt;br /&gt;
'''''s=имя_звуковой_темы'''''&amp;lt;br&amp;gt;&lt;br /&gt;
:Устанавливает звуковую тему на пути в данную точку ('''''idle''''', '''''eat''''', '''''attack''''', '''''attack_hit''''', '''''take_damage''''', '''''die''''', '''''threaten''''', '''''steal''''', '''''panic''''', '''''growling''''').&amp;lt;br&amp;gt;&lt;br /&gt;
'''''с'''''&amp;lt;br&amp;gt;&lt;br /&gt;
:Устанавливает положение ходьбы вприсядку.&amp;lt;br&amp;gt;&lt;br /&gt;
'''''r'''''&amp;lt;br&amp;gt;&lt;br /&gt;
:Устанавливает положение ходьбы бег.&amp;lt;br&amp;gt;&lt;br /&gt;
'''''sig=name'''''&amp;lt;br&amp;gt;&lt;br /&gt;
:Установить сигнал с именем '''''name''''' сразу по прибытию в точку (до поворота) для последующей его проверки с помощью поля '''''on_signal''''' логической схемы.&amp;lt;br&amp;gt;&lt;br /&gt;
'''''b=vis/invis'''''&amp;lt;br&amp;gt;&lt;br /&gt;
:Флаг, исключительно для кровососа. Управляет невидимостью ('''''vis''''' - отключена, '''''invis''''' - включена).&lt;br /&gt;
&lt;br /&gt;
Флаги пути обзора:&amp;lt;br&amp;gt;&lt;br /&gt;
'''''t=msec'''''&amp;lt;br&amp;gt;&lt;br /&gt;
:Время в миллисекундах, которое нужно ждать, смотря в точку.&amp;lt;br&amp;gt;&lt;br /&gt;
'''''a=state'''''&amp;lt;br&amp;gt;&lt;br /&gt;
:Анимация ('''''stand_idle''''', '''''sit_idle''''', '''''lie_idle''''', '''''eat''''', '''''sleep''''', '''''rest''''', '''''attack''''', '''''look_around''''', '''''turn''''').&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Случайный выбор пути==&lt;br /&gt;
По поводу точек пути '''''path_walk'''''.&amp;lt;br&amp;gt;&lt;br /&gt;
Есть ещё один интересный факт: следующую точку пути '''''path_walk''''' можно задавать рандомно.&amp;lt;br&amp;gt;&lt;br /&gt;
Например:[[Файл:Random_path.jpg]]&lt;br /&gt;
&lt;br /&gt;
Нам требуется, чтобы НПС стоящий в точке '''''p0''''' патрулировал территорию по двум цикличным маршрутам:&amp;lt;br&amp;gt;&lt;br /&gt;
'''''p0 -&amp;gt; p1 -&amp;gt; p2 -&amp;gt; p0'''''&amp;lt;br&amp;gt;&lt;br /&gt;
'''''p0 -&amp;gt; p3 -&amp;gt; p4 -&amp;gt; p0'''''&amp;lt;br&amp;gt;&lt;br /&gt;
Чтобы задать вариацию выбора маршрута относительно точки '''''p0''''', нужно в ссылке на следующую точку пути указать не одну, а две точки:&amp;lt;br&amp;gt;&amp;lt;ini&amp;gt;p0:links = p1(1), p3(1)&amp;lt;/ini&amp;gt;Таким не хитрым образом, НПС для продолжения пути рандомно выберет одну из предложенных точек '''''p1''''' или '''''p3'''''. После возврата в точку '''''p0''''' выбор проследует вновь. Варьировать выбор можно в любой точки, например, можно сделать так:&amp;lt;br&amp;gt;&amp;lt;ini&amp;gt;p0:links = p1(1), p3(1)&amp;lt;/ini&amp;gt;а в точке '''''p1''''', также задать выбор:&amp;lt;br&amp;gt;&amp;lt;ini&amp;gt;p1:links = p2(1), p3(1)&amp;lt;/ini&amp;gt;&lt;br /&gt;
'''НО!'''&lt;br /&gt;
Не следует делать выбор между двумя путями, если в пути одна точка! Вот такая схема '''НЕ ПРИЕМЛЕМА''' и, лично у меня, вызывает вылет:[[Файл:Error_random_path.jpg]]&lt;br /&gt;
Цифры в скобках, означают ту самую вероятность с которой НПС пойдёт в точку. Если цифры задать одинаковые, то и вероятность выбора для каждой точки будет равная, если же, например, в одной из точек указать значение 0.75, а в другой 0.25:&amp;lt;br&amp;gt;&amp;lt;ini&amp;gt;p1:links = p2(0.75), p3(0.25)&amp;lt;/ini&amp;gt;то соответственно в точку '''''p2''''' НПС будет ходить в три раза чаще.&lt;br /&gt;
&lt;br /&gt;
=Схемы поведения сталкеров.=&lt;br /&gt;
Есть определенный набор схем, которые описывают поведение персонажа. Они прописываются у него в custom_data или, в случае гулага, в соответствующих файлах, описывающих работы данного гулага. Ниже приведен перечень этих схем.&amp;lt;br&amp;gt;&lt;br /&gt;
В файле ''gamedata\scripts\modules.script'' указаны все загружаемые схемы.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Схема walker==&lt;br /&gt;
Это базовая схема, по которой персонаж, перемещается по патрульному пути ('''''path_walk''''') и останавливается в определенных точках и выполняет соответствующие действия. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''[walker]'''&amp;lt;br&amp;gt;&lt;br /&gt;
'''''path_walk = &amp;lt;имя_пути&amp;gt;'''''    - основной путь, по которому ходит NPC&amp;lt;br&amp;gt;&lt;br /&gt;
'''''path_look = &amp;lt;имя_пути&amp;gt;'''''    - путь, куда смотрит NPC&amp;lt;br&amp;gt;&lt;br /&gt;
'''''team      = &amp;lt;имя_команды&amp;gt;''''' - команда для синхронизации&amp;lt;br&amp;gt;&lt;br /&gt;
'''''def_state_moving1 = &amp;lt;название_анимации&amp;gt;'''''  - состояние, в котором NPC движется к первой точке пути, если она близко ('''''patrol''''' по умолчанию)&amp;lt;br&amp;gt;&lt;br /&gt;
'''''def_state_moving2 = &amp;lt;название_анимации&amp;gt;'''''  - состояние, в котором NPC движется к первой точке пути, если она не слишком далеко ('''''rush''''' по умолчанию)&amp;lt;br&amp;gt;&lt;br /&gt;
'''''def_state_moving3 = &amp;lt;название_анимации&amp;gt;'''''  - состояние, в котором NPC движется к первой точке пути, если она далеко ('''''sprint''''' по умолчанию)&amp;lt;br&amp;gt;&lt;br /&gt;
'''''def_state_standing = &amp;lt;название_анимации&amp;gt;''''' - дефолтное состояние в котором он стоит и смотрит на точку, если в этой точке не задана другое состояние.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В точках '''''path_walk''''', которым соответствуют точки пути '''''path_look''''' (стоят одинаковые флажки) персонаж останавливается и смотрит в определенную точку, при этом отыгрывая (или не отыгрывая) определенную анимацию.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''''Пример использования схемы''''':&amp;lt;br&amp;gt;&amp;lt;ini&amp;gt;[walker@pri_followers_leader_wave1_wait]&lt;br /&gt;
path_walk = wave1_leader_walk2&lt;br /&gt;
path_look = wave1_leader_look2&lt;br /&gt;
def_state_moving1 = assault&lt;br /&gt;
def_state_moving2 = assault&lt;br /&gt;
team = followers&amp;lt;/ini&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Файл: ''gamedata\scripts\xr_walker.script''&lt;br /&gt;
&lt;br /&gt;
==Схема remark==&lt;br /&gt;
Схема используется для синхронизации\связки других схем.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Примечание''': не используйте эту схему в качестве активной - это вызовет неправильное поведение NPC.&lt;br /&gt;
&lt;br /&gt;
'''[remark]'''&amp;lt;br&amp;gt;&lt;br /&gt;
'''''snd_anim_synс = true/false''''' - по умолчанию '''''false'''''. Указывает на то необходимо ли синхронизировать звук с анимацией.&amp;lt;br&amp;gt;&lt;br /&gt;
'''''snd = &amp;lt;название_звуковой_темы&amp;gt;''''' - звук ремарка, берётся из файла ''sound_theme.script''. По умолчанию  '''''nil'''''.&amp;lt;br&amp;gt;&lt;br /&gt;
'''''anim = &amp;lt;название_анимации&amp;gt;''''' - анимация ремарка, по умолчанию '''''wait'''''.&amp;lt;br&amp;gt;&lt;br /&gt;
'''''target = &amp;lt;параметр&amp;gt;''''' - куда смотрит сталкер. Есть следующие варианты:&amp;lt;br&amp;gt;&lt;br /&gt;
:*'''''story_id''''' – числовое значение в ТЧ и ЧН или строковое, с указанием дополнительного параметра и самого SID, в ЗП, в примере ниже указана часть логики монолитовца-проповедника в Припяти, когда тот стреляет в Айса&amp;lt;nowiki&amp;gt;;&amp;lt;/nowiki&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
:Пример (ЗП):&amp;lt;br&amp;gt;&lt;br /&gt;
:&amp;lt;ini&amp;gt;target =  story | pri_a17_military_sergeant_morozov&amp;lt;/ini&amp;gt;&lt;br /&gt;
:*'''''actor''''' – без комментариев&amp;lt;nowiki&amp;gt;;&amp;lt;/nowiki&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
:*'''''nil''''' – позиция вычисленная АИ автоматически&amp;lt;nowiki&amp;gt;;&amp;lt;/nowiki&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
:*'''''&amp;lt;имя работы&amp;gt;,&amp;lt;имя гулага&amp;gt;''''' - смотреть на сталкера который находится на определенной работе под гулагом (второй параметр необязателен. В этом случае берется гулаг NPC, для которого задана данная секция ремарка).&amp;lt;br&amp;gt;&lt;br /&gt;
:Пример:&amp;lt;br&amp;gt;&lt;br /&gt;
:&amp;lt;ini&amp;gt;target = logic@cit_killers_base_guard, cit_killers&amp;lt;/ini&amp;gt;&lt;br /&gt;
:*'''''&amp;lt;path_name&amp;gt;,&amp;lt;point_number&amp;gt;''''' - можно указывать смотреть в вершину патрульного пути (&amp;lt;имя пути&amp;gt;,&amp;lt;имя точки&amp;gt;).&amp;lt;br&amp;gt;&lt;br /&gt;
:Пример:&amp;lt;br&amp;gt;&lt;br /&gt;
:&amp;lt;ini&amp;gt;target = cit_killers_kamp5,0&amp;lt;/ini&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''''Примечание''''': теперь если значение не задано, то оно равно '''''nil''''' а не '''''actor''''', как было раньше.&amp;lt;br&amp;gt;&lt;br /&gt;
:То есть если вы хотите чтобы персонаж в ремарке смотрел на актера - необходимо явно прописывать это. Если задано значение '''''nil''''', то персонаж развернется в позицию, которую посчитает АИ.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Стандартные сигналы '''''remark'''''а для параметра переключения схемы '''''on_signal''''': &amp;lt;br&amp;gt;&lt;br /&gt;
:*'''''sound_end''''' – по окончании проигрывания звуковой схемы&amp;lt;br&amp;gt;&lt;br /&gt;
:*'''''anim_end''''' – по окончании проигрывания анимации&amp;lt;br&amp;gt;&lt;br /&gt;
:*'''''action_end''''' – по окончании проигрывания и того и другого, если они синхронизированы&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''''Пример использования схемы''''':&amp;lt;br&amp;gt;&amp;lt;ini&amp;gt;[remark@esc_lager_volk2]&lt;br /&gt;
anim = guard_rac&lt;br /&gt;
snd = esc_wolf_radio&lt;br /&gt;
target = actor&lt;br /&gt;
on_signal = sound_end| remark@esc_lager_volk3&amp;lt;/ini&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Файл: ''gamedata\scripts\xr_remark.script''&lt;br /&gt;
&lt;br /&gt;
==Схема sleeper==&lt;br /&gt;
Схема сидящего и спящего NPC. Необходимо поставить патрульный путь, минимум из 1-го поинта. Спящий будет садиться спать в первой точке пути, и разворачиваться при этом в сторону нулевой точки.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''[sleeper]'''&amp;lt;br&amp;gt;&lt;br /&gt;
'''''path_main = &amp;lt;имя_пути&amp;gt;''''' - точка в которой NPC будет спать - второй поинт, развернувшись в нулевой поинт.&amp;lt;br&amp;gt;&lt;br /&gt;
'''''wakeable = true/false''''' – может ли проснуться быстро (если '''''true''''', то спит на корточках и во сне бормочет).&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''''Примечание''''': Если путь состоит из двух точек, то связь нужно делать от первой точки к нулевой (либо двунаправленную).&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''''Пример использования схемы''''':&amp;lt;br&amp;gt;&amp;lt;ini&amp;gt;[sleeper@esc_blockpost_sleep1]&lt;br /&gt;
path_main = sleep1&lt;br /&gt;
wakeable = false&amp;lt;/ini&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Файл: ''gamedata\scripts\xr_sleeper.script''&lt;br /&gt;
&lt;br /&gt;
==Схема kamp==&lt;br /&gt;
Схема сталкера, сидящего в определенном радиусе вокруг указанной точки (у костра), и располагающегося лицом к этой точке.&amp;lt;br&amp;gt;&lt;br /&gt;
	&lt;br /&gt;
'''[kamp]'''&amp;lt;br&amp;gt;&lt;br /&gt;
'''''center_point = &amp;lt;имя_пути&amp;gt;''''' – имя точки вокруг которой NPC будет устраиваться.&amp;lt;br&amp;gt;&lt;br /&gt;
'''''radius = &amp;lt;number&amp;gt;''''' - насколько далеко сталкер будет сидеть от центра лагеря. По умолчанию - 2 метра.&amp;lt;br&amp;gt;&lt;br /&gt;
'''''def_state_moving = &amp;lt;название_анимации&amp;gt;''''' - дефолтное состояние, в котором NPC будет идети к точке кампа. По умолчанию - '''''walk'''''&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''''Примечание''''': Если точка кампа находится в костре, то в оффлайне сталкера прийдут на нее, а когда они перейдут в онлайн, то окажуться внутри костра, где и получат хит.&amp;lt;br&amp;gt;&lt;br /&gt;
:Чтобы этого не случалось в секции кемпа указывать '''''path_walk''''' из одной точке, название которой '''''&amp;lt;path_kamp_name&amp;gt;_task''''':&amp;lt;ini&amp;gt;path_walk = &amp;lt;имя_пути&amp;gt;_task&amp;lt;/ini&amp;gt;Если точка кемпа расположена в чистом поле то, '''''path_walk''''' прописывать необязательно.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''''Пример использования схемы''''':&amp;lt;br&amp;gt;&amp;lt;ini&amp;gt;[kamp@esc_blockpost_kamp1]&lt;br /&gt;
center_point = kamp_center&lt;br /&gt;
path_walk = kamp_center_task&lt;br /&gt;
def_state_moving = raid&amp;lt;/ini&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Файл: ''gamedata\scripts\xr_kamp.script''&lt;br /&gt;
&lt;br /&gt;
==Схема camper==&lt;br /&gt;
Свойства камперов:&lt;br /&gt;
* кампер стоит на точке и смотрит в направлении, куда Вы его поставили в редакторе или передвигается по патрульным путям;&amp;lt;br&amp;gt;&lt;br /&gt;
* камперы переключаются на универсальный комбат, только если видят врага ближе чем в 30 метрах. Если он выжил, он возвращается в состояние кампера;&amp;lt;br&amp;gt;&lt;br /&gt;
* В любых других случаях действуют по собственной скриптовой схеме. Если видим врага - стреляем. Если слышим дэнжер - то смотрим в направление в данжере. Если видим гранату - убегаем от гранаты. Если видели врага, а враг исчез, то смотрим в точку, где видели последний раз врага;&amp;lt;br&amp;gt;&lt;br /&gt;
* камперы не сражаются в движении. Если они видят врага - они останавливаются, стреляют, а потом продолжают движение.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''[camper]'''&amp;lt;br&amp;gt;&lt;br /&gt;
'''''path_walk = &amp;lt;имя_пути&amp;gt;''''' - путь по которому ходит NPC.&amp;lt;br&amp;gt;&lt;br /&gt;
'''''path_look = &amp;lt;имя_пути&amp;gt;''''' - точки в которые смотрит NPC.&amp;lt;br&amp;gt;&lt;br /&gt;
'''''radius = &amp;lt;number&amp;gt;''''' – если расстояние между NPC и противником меньше указанного, то он уходит в универсальный комбат. По умолчанию - 20 метров.&amp;lt;br&amp;gt;&lt;br /&gt;
'''''no_retreat = true/false''''' - NPC при виде врага не будет ломиться на ближайшую точку '''''path_walk''''', а сразу перейдет в режим убивания.&lt;br /&gt;
:Нужно это в том случае, если вы хотите сделать сценку, когда одни ребята наезжают на других. Ставите камперов с вышеуказанным флажком. Они идут по своим патрульным путям и выносят врагов.&amp;lt;br&amp;gt;&lt;br /&gt;
'''''def_state_moving = &amp;lt;название_анимации&amp;gt;''''' - состояние, в котором NPC движется на ближайшую точку пути при враге. По умолчанию - '''''assault'''''.&amp;lt;br&amp;gt;&lt;br /&gt;
'''''def_state_moving_fire = &amp;lt;название_анимации&amp;gt;''''' - состояние, в котором NPC отстреливается от врага, во время движения на ближайшую точку пути.&lt;br /&gt;
:По умолчанию - '''''sneak_fire'''''.&amp;lt;br&amp;gt;&lt;br /&gt;
'''''def_state_campering = &amp;lt;название_анимации&amp;gt;''''' - состояние, в котором NPC ожидает врага, находясь на пути. По умолчанию - '''''hide'''''.&amp;lt;br&amp;gt;&lt;br /&gt;
'''''def_state_campering_fire = &amp;lt;название_анимации&amp;gt;''''' - состояние, в котором NPC отстреливается от врага, находясь на пути. По умолчанию '''''hide_fire'''''.&amp;lt;br&amp;gt;&lt;br /&gt;
'''''attack_sound = &amp;lt;имя_звуковой_темы&amp;gt;''''' - возможность переопределять снайперам/камперам звук атаки. По дефолту он равен звуковой теме '''''fight_attack'''''.&lt;br /&gt;
:Можно изменить на любое другое (для сценических потребностей) либо вообще отключить, прописав значение '''''false'''''.&amp;lt;br&amp;gt;&lt;br /&gt;
'''''shoot = &amp;lt;тип_стрельбы&amp;gt;''''' - возможны следующие значения:&lt;br /&gt;
:*'''''always''''' - значение по умолчанию, стреляет всегда, когда можно;&amp;lt;br&amp;gt;&lt;br /&gt;
:*'''''none''''' - не стреляет вообще;&amp;lt;br&amp;gt;&lt;br /&gt;
:*'''''terminal''''' - стреляет только когда находится на последней точки патрульного пути. Это сделано для облегчения построение атакующих сцен.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''''Примечание''''': У кампера есть один большой минус – когда ему наносится хит и он не знает откуда хит наносится (не видит противника, не слышит выстрела),&amp;lt;br&amp;gt;&lt;br /&gt;
:то он тупо продолжает стоять на старом месте и ждать следующей пули.&amp;lt;br&amp;gt;&lt;br /&gt;
:Ввиду этого не стоит расставлять кемперов в случае, когда сталкеры должны защищаться и держать позицию в том случае, если есть несколько направлений, откуда игрок или сталкеры смогут атаковать поставленного кампера. Используйте '''''walker''''' в таких случаях, а камперов стоить ставить для атак по путям и как снайперов.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''''Пример использования схемы''''':&amp;lt;br&amp;gt;&amp;lt;ini&amp;gt;[camper@dar_military_scout_hide]&lt;br /&gt;
path_walk = walk_hide&lt;br /&gt;
path_look = look_hide&lt;br /&gt;
radius = 10&lt;br /&gt;
no_retreat = true&lt;br /&gt;
def_state_moving = assault&lt;br /&gt;
def_state_campering = hide_na&lt;br /&gt;
shoot = always&amp;lt;/ini&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Файл: ''gamedata\scripts\xr_camper.script''&lt;br /&gt;
&lt;br /&gt;
==Схема sniper==&lt;br /&gt;
Разновидность кампера. Отличаются тем, что стреляют только одиночными выстрелами и не смотрят по точкам патрульного пути, а сканируют пространство между ними. Скорость сканирования от точки к точке фиксирована и равна 20 секунд.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В кастом дате кемпера прописать:&amp;lt;br&amp;gt;&amp;lt;ini&amp;gt;sniper = true&amp;lt;/ini&amp;gt;&lt;br /&gt;
Пример:&amp;lt;br&amp;gt;&amp;lt;ini&amp;gt;[camper@esc_blockpost_camper_day]&lt;br /&gt;
path_walk = camper_day_walk&lt;br /&gt;
path_look = camper_day_look&lt;br /&gt;
sniper = true&lt;br /&gt;
def_state_campering = threat&amp;lt;/ini&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''''Примечание''''': Ставить снайперу только 2 точки '''''look'''''.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Файл: ''gamedata\scripts\xr_camper.script''&lt;br /&gt;
&lt;br /&gt;
==Схема follower== &lt;br /&gt;
NPC идет за NPC-лидером. Если до лидера расстояние менее 5 метров, то он идет, если от 5 до 20 – бежит в режиме '''''run''''', если свыше 20 – догоняет в режиме '''''sprint'''''.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;u&amp;gt;Пути не задаются&amp;lt;/u&amp;gt;.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''[follower]'''&amp;lt;br&amp;gt;&lt;br /&gt;
'''''leader = &amp;lt;number&amp;gt;''''' - '''''story_id''''' лидера из ''game.ltx'' (число!).&amp;lt;br&amp;gt;&lt;br /&gt;
'''''formation_line = true/false''''' - постарается идти сбоку от лидера, в противном случае будет идти сзади.&amp;lt;br&amp;gt;&lt;br /&gt;
'''''distance = &amp;lt;number&amp;gt;''''' - расстояние в метрах, на котором будет идти от лидера '''''attendant'''''. По умолчанию – 1,5 метра, если идет цепью, то 5 метров.&amp;lt;br&amp;gt;&lt;br /&gt;
'''''state_if_leader_in_meet = &amp;lt;название_анимации&amp;gt;''''' - это есть строка с именем  состояния из '''''state_manager''''', которое будет назначено '''''follower'''''-ам, если командир пребывает в состоянии '''''meet'''''.&amp;lt;br&amp;gt;&lt;br /&gt;
'''''anim_walk = &amp;lt;название_анимации&amp;gt;''''' - состояние, в котором фолловер идет за лидером.&amp;lt;br&amp;gt;&lt;br /&gt;
'''''anim_run = &amp;lt;название_анимации&amp;gt;''''' - состояние, в котором фолловер бежит за лидером.&amp;lt;br&amp;gt;&lt;br /&gt;
'''''anim_sprint = &amp;lt;название_анимации&amp;gt;''''' - состояние, в котором фолловер спринтует за лидером.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''''Примечание''''': Не забыть прописать:&lt;br /&gt;
&amp;lt;ini&amp;gt;[smart_terrains]&lt;br /&gt;
none = true&amp;lt;/ini&amp;gt;&lt;br /&gt;
:Иначе NPC засосёт в гулаг и никуда он не пойдёт.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Если все это происходит под гулагом, то вместо '''''story_id''''' лидера, мы прописываем его секцию логики в файле скрипта.&amp;lt;br&amp;gt;&lt;br /&gt;
Пример:&amp;lt;lua&amp;gt;t = { section = &amp;quot;logic@bar_arena_follower_2&amp;quot;, &lt;br /&gt;
      idle    = 0,&lt;br /&gt;
      prior   = 7,&lt;br /&gt;
      state   = {0},&lt;br /&gt;
      squad   = squad,&lt;br /&gt;
      group   = groups[0],&lt;br /&gt;
      ...&lt;br /&gt;
    }&amp;lt;/lua&amp;gt;В данном случае для параметра '''''leader''''' необоходимо указать строку '''''bar_arena_follower_2'''''.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''''Примечание''''': в релизе игры данная схема не используется.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Файл: ''gamedata\scripts\xr_attendant.script''&lt;br /&gt;
&lt;br /&gt;
==Схема zoneguard==&lt;br /&gt;
У NPC есть две зоны (может быть одна). Он ходит по путям, но когда игрок заходит в зону, отрывает от дел, подбегает к игроку, наставляет на игрока оружие (может кричать, может говорить), если игрок заходит во вторую зону – атакует игрока.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''[zoneguard]'''&amp;lt;br&amp;gt;&lt;br /&gt;
'''''path_walk = &amp;lt;имя_пути&amp;gt;''''' - путь перемещения.&amp;lt;br&amp;gt;&lt;br /&gt;
'''''path_look = &amp;lt;имя_пути&amp;gt;''''' - путь обзора.&amp;lt;br&amp;gt;&lt;br /&gt;
'''''team = &amp;lt;имя_команды&amp;gt;''''' - имя команды синхронизированных '''''zoneguard'''''-ов (из всей команды только 1 будет реагировать на игрока).&amp;lt;br&amp;gt;&lt;br /&gt;
'''''zone_guard = &amp;lt;имя_зоны&amp;gt;''''' - зона в пределах которой игрок будет атакован.&amp;lt;br&amp;gt;&lt;br /&gt;
'''''zone_warn = &amp;lt;имя_зоны&amp;gt;''''' - зона в пределах которой NPC будет начинать разговор с игроком.&amp;lt;br&amp;gt;&lt;br /&gt;
'''''walker_team = &amp;lt;имя_команды&amp;gt;''''' -  для схемы перемещения его в состоянии '''''walker''''' (если не задан, используется значение из поля '''''team''''').&amp;lt;br&amp;gt;&lt;br /&gt;
'''''no_move = true/false''''' - персонаж окликнет игрока с места и не будет подбегать к нему.&amp;lt;br&amp;gt;&lt;br /&gt;
'''''snd_greet = &amp;lt;название_звуковой_темы&amp;gt;''''' - звук которой будет проигран при обнаружении игрока.&amp;lt;br&amp;gt;&lt;br /&gt;
'''''ignore_friends = true/false''''' - будет игнорировать дружественных ему персонажей.&amp;lt;br&amp;gt;&lt;br /&gt;
'''''ignore_cond = {+info -info =func !func ~number}''''' - условия, при которых NPC игнорирует игрока.&amp;lt;br&amp;gt;&lt;br /&gt;
'''''no_danger = true/false''''' - отыгрывать или нет угрожающую анимацию будучи нейтралом.&amp;lt;br&amp;gt;&lt;br /&gt;
'''''anim = &amp;lt;название_анимации&amp;gt;''''' - какую отыгрывает анимацию, если игрок ему не враждебен.&amp;lt;br&amp;gt;&lt;br /&gt;
'''''snd_anim_sync = true/false''''' - будет ли синхронизирован звук с анимацией.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''''Пример использования схемы''''':&amp;lt;ini&amp;gt;[zoneguard]&lt;br /&gt;
path_walk = mil_freedom_zoneguard_walk_kill2&lt;br /&gt;
path_look = mil_freedom_zoneguard_look_kill2&lt;br /&gt;
zone_warn = mil_freedom_leader_warn_zone&lt;br /&gt;
zone_guard = mil_freedom_leader_kill_zone&lt;br /&gt;
no_move = true&lt;br /&gt;
team = freedom_bodyguards3&amp;lt;/ini&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Файл: ''gamedata\scripts\xr_zoneguard.script''&lt;br /&gt;
&lt;br /&gt;
==Схема wounded==&lt;br /&gt;
Схема раненного. Определяет поведение NPC в состоянии &amp;quot;раненный&amp;quot;.&amp;lt;br&amp;gt;&lt;br /&gt;
'''''Примечание''''': не рекомендуется задавать схему в качестве активной.&lt;br /&gt;
&lt;br /&gt;
'''[wounded]'''&amp;lt;br&amp;gt;&lt;br /&gt;
'''''hp_state = &amp;lt;HP&amp;gt;|&amp;lt;название_анимации&amp;gt;@&amp;lt;название_звуковой_темы&amp;gt;''''' - поведение NPC при значении уровня его здоровья равному '''''HP''''', когда он не видит игрока.&amp;lt;br&amp;gt;&lt;br /&gt;
'''''hp_state_see = &amp;lt;HP&amp;gt;|&amp;lt;название_анимации&amp;gt;@&amp;lt;название_звуковой_темы&amp;gt;''''' - поведение NPC при значении уровня его здоровья равному '''''HP''''', когда он видит игрока.&amp;lt;br&amp;gt;&lt;br /&gt;
'''''psy_state = &amp;lt;PSY&amp;gt;|&amp;lt;название_анимации&amp;gt;@&amp;lt;название_звуковой_темы&amp;gt;''''' - поведение NPC при псиатаках, в зависимости от уровня пси-здоровья равному '''''PSY'''''.&amp;lt;br&amp;gt;&lt;br /&gt;
'''''hp_victim = &amp;lt;HP&amp;gt;|&amp;lt;параметр&amp;gt;''''' - куда будет смотреть NPC при значении уровня его здоровья равному '''''HP''''', возможные параметры:&amp;lt;br&amp;gt;&lt;br /&gt;
:*'''''story_id''''' - числовое значение;&lt;br /&gt;
:*'''''actor''''' - без комментариев;&lt;br /&gt;
:*'''''nil''''' - позиция вычисленная АИ автоматически.&lt;br /&gt;
'''''hp_cover = &amp;lt;HP&amp;gt;|true/false''''' - идти в укрытие или нет, в зависимости от значения уровня здоровья равному '''''HP'''''.&amp;lt;br&amp;gt;&lt;br /&gt;
'''''hp_fight = &amp;lt;HP&amp;gt;|true/false''''' - разрешено воевать или нет, в зависимости от значения уровня здоровья равному '''''HP'''''.&amp;lt;br&amp;gt;&lt;br /&gt;
'''''syndata = &amp;lt;название_анимации&amp;gt;@&amp;lt;название_звуковой_темы&amp;gt;''''' - синхропары для красоты.&amp;lt;br&amp;gt;&lt;br /&gt;
'''''help_dialog = &amp;lt;название_диалога&amp;gt;''''' - возможность установить диалог, вместо стандартного '''''actor_help_wounded'''''.&amp;lt;br&amp;gt;&lt;br /&gt;
'''''help_start_dialog = &amp;lt;название_диалога&amp;gt;''''' - возможность установить стартовый диалог.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''''Примечание''''': желательно, чтобы все установленные актёрские диалоги для раненых имели условие их появления следующего вида:&amp;lt;br&amp;gt;&lt;br /&gt;
:&amp;lt;xml&amp;gt;&amp;lt;precondition&amp;gt;dialogs.allow_wounded_dialog&amp;lt;/precondition&amp;gt;&amp;lt;/xml&amp;gt;&lt;br /&gt;
'''''Примечание''''': если необходимо поставить несколько состояний, в зависимости от разного значения уровня здоровья, то сами состояния нужно разделять символом ‘|’:&amp;lt;br&amp;gt;&lt;br /&gt;
:&amp;lt;ini&amp;gt;hp_state= 30|help_me@help|10|wounded_heavy@help_heavy&amp;lt;/ini&amp;gt;&lt;br /&gt;
:Здесь определятся два состояния при уровне здоровья 30 и 10 соответственно.&lt;br /&gt;
:Для параметров '''''hp_state_see''''', '''''psy_state''''', '''''hp_victim''''', '''''hp_cover''''', '''''hp_fight''''' способ такой же.&lt;br /&gt;
&lt;br /&gt;
'''''Пример использования схемы &amp;lt;small&amp;gt;(в качестве примера взята дефолтная настройка)'''''&amp;lt;/small&amp;gt;:&amp;lt;br&amp;gt;&amp;lt;ini&amp;gt;hp_state= 30|help_me@help|10|wounded_heavy@help_heavy&lt;br /&gt;
hp_state_see = 30|wounded@help_see|10|wounded_heavy@help_heavy&lt;br /&gt;
psy_state = 50|{=best_pistol}psy_armed,psy_pain@wounded_psy|20|psy_shoot,psy_pain@wounded_psy_shoot,wounded_psy&lt;br /&gt;
hp_victim = 30|actor|10|nil&lt;br /&gt;
hp_cover = 30|true|10|false&lt;br /&gt;
hp_fight = 30|true|10|false&lt;br /&gt;
syndata = wounded@help&lt;br /&gt;
;best_pistol – проверка на то, что лучшее оружие NPC является пистолетом.&amp;lt;/ini&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Файл: ''gamedata\scripts\xr_wounded.script''&lt;br /&gt;
&lt;br /&gt;
==Схема rest==&lt;br /&gt;
Чувак гуляет, хавает, спит.&amp;lt;br&amp;gt;&lt;br /&gt;
Нормально не работает, посему в релизе не используется.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Файл: ''gamedata\scripts\xr_rest.script''&lt;br /&gt;
&lt;br /&gt;
==Схема heli_hunter==&lt;br /&gt;
Хелихантер может стрелять либо не стрелять по вертолету в зависимости от условий. Делается это так:&amp;lt;br&amp;gt;&lt;br /&gt;
В активную схему вставляется параметр:&amp;lt;ini&amp;gt;heli_hunter = {+info -info =func !func ~number}true/false&amp;lt;/ini&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Пример:&amp;lt;ini&amp;gt;[camper@bar_freedom_attack_sniper_1]&lt;br /&gt;
path_walk = camper_1_walk&lt;br /&gt;
path_look = camper_1_look&lt;br /&gt;
on_info = {+bar_freedom_attack_ecolog} camper1@bar_freedom_attack_sniper_1 &amp;lt;br&amp;gt;%=bar_freedom_angry_actor%&lt;br /&gt;
meet_talk_enabled = true&lt;br /&gt;
meet_dialog = bar_svoboda_dialog&lt;br /&gt;
heli_hunter = {-bar_ecolog_crush_heli_down} true&amp;lt;/ini&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Если раньше оверрайд понимал только значения '''''true''''' либо '''''false''''', то сейчас он понимает кондлист, который если возвращает '''''true''''' - то стрельба по вертолету в данной схеме разрешена.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Схема patrol==&lt;br /&gt;
Итак, есть предварительная система патруля. Представляет собой вариацию '''''kamp''''' только в состоянии ходьбы. Для ее работы прописываем в '''''custom_data''''' следующее:&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''[patrol]'''&amp;lt;br&amp;gt;&lt;br /&gt;
'''''path_walk = &amp;lt;имя_пути&amp;gt;''''' - путь по которому ходит NPC.&amp;lt;br&amp;gt; &lt;br /&gt;
'''''path_look = &amp;lt;имя_пути&amp;gt;''''' - точки в которые смотрит NPC.&amp;lt;br&amp;gt;&lt;br /&gt;
'''''formation = &amp;lt;параметр&amp;gt;''''' - описывет способ построения и не является обязательным. Возможны следующие варианты:&amp;lt;br&amp;gt;&lt;br /&gt;
:*'''''back''''' - мужики идут чуть позади командира в два ряда (по умолчанию);&amp;lt;br&amp;gt;&lt;br /&gt;
:*'''''line''''' - шеренга;&amp;lt;br&amp;gt;&lt;br /&gt;
:*'''''around''''' - вокруг командира.&amp;lt;br&amp;gt;&lt;br /&gt;
'''''commander = true/false''''' - будет ли NPC назначен командиром, желательно, чтобы такой красивый он был один. '''''false''''' - по умолчанию.&amp;lt;br&amp;gt;&lt;br /&gt;
'''''move_type = &amp;lt;название_анимации&amp;gt;''''' - задает изначальный режим перемещения, по умолчанию '''''patrol'''''.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
При остановке командора в '''''meet''''' мужики останавливаются.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Если командор помирает, то автоматически будет выбран другой. Командиром становится тот, кто первый попал под схему. Способы построения задаются в вейпоинтах следующим образом:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;ini&amp;gt;ret=0...2&amp;lt;/ini&amp;gt;&lt;br /&gt;
:*0 - линия;&lt;br /&gt;
:*1 – вокруг старшего;&lt;br /&gt;
:*2 – по бокам.&lt;br /&gt;
&lt;br /&gt;
При движении командор работает как обычный '''''walker''''' и сопровождающие его кадры повторяют его действия. То есть, если в параметрах вейпоинта прописано '''''a=assault''''', то командор помчится с орудием убийства на перевес, а остальные его откопируют.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''''Примечание''''': что еще не сделано или глючит:&amp;lt;br&amp;gt;&lt;br /&gt;
:*нет возможности автоматически перестроить команду;&lt;br /&gt;
:*все идут молча;&lt;br /&gt;
:*командор пока не отдает команд;&lt;br /&gt;
:*не рекомендуется включать спринт.&lt;br /&gt;
&lt;br /&gt;
'''''Пример использования схемы''''':&amp;lt;ini&amp;gt;[patrol@val_escort_captive_wait]&lt;br /&gt;
path_walk           = captive_wait_walk&lt;br /&gt;
path_look           = captive_wait_look&lt;br /&gt;
commander           = true&lt;br /&gt;
formation           = back&amp;lt;/ini&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Файл: ''gamedata\scripts\xr_patrol.script''&lt;br /&gt;
&lt;br /&gt;
==Схема meet==&lt;br /&gt;
Схема позволяющая настроить ситуацию, когда НПС встречает актора.&lt;br /&gt;
&lt;br /&gt;
'''[meet]'''&amp;lt;br&amp;gt;&lt;br /&gt;
'''''meet_state/meet_state_wpn = &amp;lt;number&amp;gt;|&amp;lt;название_анимации&amp;gt;@&amp;lt;название_звуковой_темы&amp;gt;''''' – задает анимацию и озвучку персонажа,&lt;br /&gt;
:в зависимости от расстояния до актера равному '''''number'''''. Для ситуации, когда актор безоружен и вооружён соответственно.&amp;lt;br&amp;gt;&lt;br /&gt;
'''''victim/victim_wpn = &amp;lt;number&amp;gt;|&amp;lt;параметр&amp;gt;''''' - задает объект, на который должен будет смотреть персонаж, в зависимости от расстояния равное '''''number'''''.&lt;br /&gt;
:Для ситуации, когда актор безоружен и вооружён соответственно. Возможны следующие значения:&amp;lt;br&amp;gt;&lt;br /&gt;
::*'''''actor''''' - смотреть на игрока;&amp;lt;br&amp;gt;&lt;br /&gt;
::*'''''story_id''''' - смотреть на персонажа со указанным '''''story_id''''';&amp;lt;br&amp;gt;&lt;br /&gt;
::*'''''nil''''' - никуда.&amp;lt;br&amp;gt;&lt;br /&gt;
'''''use/use_wpn = true/false/self''''' - настройки юзабельности персонажа.&lt;br /&gt;
:При установки значения '''''self''''' NPC сам юзнет игрока, как только сможет дотянуться.&amp;lt;br&amp;gt;&lt;br /&gt;
'''''zone = &amp;lt;имя_зоны&amp;gt;|&amp;lt;название_анимации&amp;gt;@&amp;lt;название_звуковой_темы&amp;gt;''''' - если актор будет замечен в указанном рестрикторе,&lt;br /&gt;
:то NPC будет отыгрывать заданную анимацию и произносить заданный звук.&amp;lt;br&amp;gt;&lt;br /&gt;
'''''meet_dialog = &amp;lt;название_диалога&amp;gt;''''' - возможность установить стартовый диалог NPC.&amp;lt;br&amp;gt;&lt;br /&gt;
'''''synpairs = &amp;lt;название_анимации&amp;gt;@&amp;lt;название_звуковой_темы&amp;gt;''''' - Если при каком-то наборе условий&lt;br /&gt;
:встреча будет отыгрывать именно это состояние и эту звуковую тему – то они будут синхронизироваться по рандомным анимациям состояния тела.&amp;lt;br&amp;gt;&lt;br /&gt;
'''''abuse = true/false''''' - по умолчанию '''''true''''', если '''''false''''', то неюзающийся противник не будет обижаться.&amp;lt;br&amp;gt;&lt;br /&gt;
'''''precond = usability/visibility'''''.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Любую строку можно задавать кондлистом ('''''{+info -info =func !func ~number}''''').&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Для облегчения настройки встречи сделана возможность упрощенного  задания дефолта:&amp;lt;br&amp;gt;&amp;lt;ini&amp;gt;[walker]&lt;br /&gt;
meet = default_meet&amp;lt;/ini&amp;gt;Саму секцию '''''default_meet''''' задавать не надо. Все настройки и так возьмутся из дефолта. По дефолту встреча настроена со следующими параметрами:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;ini&amp;gt;[default_meet]&lt;br /&gt;
meet_state = 30|hello@hail|20|wait@wait&lt;br /&gt;
meet_state_wpn = 30|backoff@threat_weap&lt;br /&gt;
victim = 30|actor&lt;br /&gt;
victim_wpn = 30|actor&lt;br /&gt;
use = true&lt;br /&gt;
use_wpn = false&lt;br /&gt;
syndata = hello@hail|backoff@threat_weap&amp;lt;/ini&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''''Примечание''''': если нужно, чтобы сталкер не разговаривал с игроком в данной секции, необходимо прописать ему '''''meet = no_meet'''''.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Теперь о том, как с помощью этого конструктора собрать ту реакцию на актера, которая вам нужна.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*'''Ситуация 1'''.&amp;lt;br&amp;gt;&lt;br /&gt;
Игрок вдалеке подзывает нас рукой, при приближении просит убрать оружие, потом согласен говорить.&amp;lt;br&amp;gt;&amp;lt;ini&amp;gt;[meet]&lt;br /&gt;
meet_state = 50| hello@talk_hello| 20| wait@wait| 10| ward@wait&lt;br /&gt;
meet_state_wpn = 50| hello@talk_hello| 20| threat@threat_weap&lt;br /&gt;
victim = 50| actor&lt;br /&gt;
victim_wpn = 50| actor&lt;br /&gt;
use = true&amp;lt;&lt;br /&gt;
use_wpn = false&amp;lt;/ini&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*'''Ситуация 2'''.&amp;lt;br&amp;gt;&lt;br /&gt;
Сталкер завидя нас просит убрать оружие. После этого подходит и заговаривает с нами. Если мы начинаем уходить от него или достаем оружие – начинает нас стрелять.&amp;lt;br&amp;gt;&amp;lt;ini&amp;gt;[meet]&lt;br /&gt;
meet_state = 50|{+info} threat_fire %=killactor% ,walk@ {+info} talk_abuse, wait|10|walk %+info%&lt;br /&gt;
meet_state_wpn = 50|{+info} threat_fire %=killactor%, threat@ {+info} talk_abuse, wait&lt;br /&gt;
victim = 50|actor&lt;br /&gt;
victim_wpn = 50|actor&lt;br /&gt;
use = {-info2} self, false&lt;br /&gt;
use_wpn = false&amp;lt;/ini&amp;gt;Здесь:&amp;lt;br&amp;gt;&lt;br /&gt;
'''''info''''' – инфопорция, которая указывает что мы уже опустили оружие и были достаточно близко к NPC;&amp;lt;br&amp;gt;&lt;br /&gt;
'''''info2''''' – инфопорция, которая устанавливается в диалоге и говорит что персонаж уже сказал нам все, что хотел;&amp;lt;br&amp;gt;&lt;br /&gt;
'''''killactor''''' – функция в ''xr_effects.script'' которая обижает NPC на игрока.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*'''Ситуация 3'''.&amp;lt;br&amp;gt;&lt;br /&gt;
Персонаж ходит по патрульному пути на заставе лагеря. Если игрок имеет допуск в лагерь – пропускает его и здоровается, иначе сперва отпугивает, а если игрок пробрался в лагерь – то обижается на него. При этом диалог зависит от того, имеет игрок допуск в лагерь или нет.&amp;lt;br&amp;gt;&amp;lt;ini&amp;gt;[camper]&lt;br /&gt;
path_walk = path_walk&lt;br /&gt;
path_look = path_look&lt;br /&gt;
meet = meet&lt;br /&gt;
&lt;br /&gt;
[meet]&lt;br /&gt;
meet_state = 30|{+info} wait, threat@ {+info} talk_hello, threat_back&lt;br /&gt;
meet_state_wpn = 30|{+info} wait, threat@ {+info} talk_hello, threat_back&lt;br /&gt;
victim = 30|actor&lt;br /&gt;
victim_wpn = 30|actor&lt;br /&gt;
use = true&lt;br /&gt;
use_wpn = true&lt;br /&gt;
zone = warnzone|{-info} threat@ {-info} threat_back|kampzone| {-info} true@ {-info} talk_abuse&lt;br /&gt;
meet_dialog = {+info} dialog1, dialog2&amp;lt;/ini&amp;gt;Здесь:&amp;lt;br&amp;gt;&lt;br /&gt;
'''''true''''' – вместо анимации, атаковать игрока;&amp;lt;br&amp;gt;&lt;br /&gt;
'''''info''''' – инфопорция, которая говорит, что мы имеем допуск к лагерю;&amp;lt;br&amp;gt;&lt;br /&gt;
'''''warnzone''''' – рестриктор, в котором нас предупреждают;&amp;lt;br&amp;gt;&lt;br /&gt;
'''''kampzone''''' – рестриктор, в котором нас убивают;&amp;lt;br&amp;gt;&lt;br /&gt;
'''''dialog1''''' – стартовый диалог NPC, если мы имеем допуск в лагерь;&amp;lt;br&amp;gt;&lt;br /&gt;
'''''dialog2''''' – стартовый диалог NPC, если мы не имеем допуск в лагерь.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Файл: ''gamedata\scripts\xr_meet.script''&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;font size = 5&amp;gt;[[Часть 2]]&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Категория:A-Life]][[Категория:Скрипты]]&lt;/div&gt;</summary>
		<author><name>91.218.192.254</name></author>	</entry>

	<entry>
		<id>http://stalkerin.gameru.net/wiki/index.php?title=%D0%9A%D0%B0%D0%BA_%D0%B7%D0%B0%D1%81%D0%BF%D0%B0%D0%B2%D0%BD%D0%B8%D1%82%D1%8C_%D1%84%D0%B8%D0%B7%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%B8%D0%B9_%D0%BE%D0%B1%D1%8A%D0%B5%D0%BA%D1%82</id>
		<title>Как заспавнить физический объект</title>
		<link rel="alternate" type="text/html" href="http://stalkerin.gameru.net/wiki/index.php?title=%D0%9A%D0%B0%D0%BA_%D0%B7%D0%B0%D1%81%D0%BF%D0%B0%D0%B2%D0%BD%D0%B8%D1%82%D1%8C_%D1%84%D0%B8%D0%B7%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%B8%D0%B9_%D0%BE%D0%B1%D1%8A%D0%B5%D0%BA%D1%82"/>
				<updated>2013-08-11T09:26:13Z</updated>
		
		<summary type="html">&lt;p&gt;91.218.192.254: оформление&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;В этой статье вы узнаете как создать спавнящийся физический объект.&lt;br /&gt;
&amp;lt;br&amp;gt;Выбираем нужную модель из папки '''gamedata\meshe'''s.&lt;br /&gt;
&amp;lt;br&amp;gt;Создаем в файле '''configs\misc\items.ltx''' (или своем конфиге) новую секцию, которая будет выглядеть так:&lt;br /&gt;
&amp;lt;ini&amp;gt;&lt;br /&gt;
[vedro]:identity_immunities ;vedro — название спавн-секции предмета (Потом мы будем через него спавнить). Пишется латиницей.&lt;br /&gt;
$spawn = &amp;quot;dynamic_objects\el_tehnika\komp_klava&amp;quot; ;путь спавн-секции в дереве спавн-объектов в СДК (если не пользуетесь СДК, то особой важности не имеет).&lt;br /&gt;
visual = objects\dynamics\decor\vedro_01.ogf ;Путь до модели физического объекта из папки meshes.&lt;br /&gt;
cform  = skeleton ; Движковые классы (донт тач)&lt;br /&gt;
class  = P_SKELET&lt;br /&gt;
remove_time = 4 ;Время через которое объект исчезнет. Число до от 0 до 9999, если поставить 9999 то он просуществует очень долго&amp;lt;/ini&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Второй вариант:&lt;br /&gt;
&amp;lt;ini&amp;gt;[vedro]:identity_immunities ;vedro — название спавн-секции предмета (Потом мы будем через него спавнить). Пишется латиницей.&lt;br /&gt;
$spawn = &amp;quot;physics\object&amp;quot; ;путь спавн-секции в дереве спавн-объектов в СДК (если не пользуетесь СДК, то особой важности не имеет).&lt;br /&gt;
visual = objects\dynamics\decor\vedro_01.ogf ;Путь до модели физического объекта из папки meshes.&lt;br /&gt;
class  = O_PHYS_S&lt;br /&gt;
remove_time = 60000 ;Время через которое объект исчезнет. Число до от 0 до 9999, если поставить 9999 то он просуществует очень долго.&lt;br /&gt;
&amp;lt;/ini&amp;gt;&lt;br /&gt;
Так вроде лучше )&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;Сохраняем файл.&lt;br /&gt;
&lt;br /&gt;
Далее уже стандартно — создаем в скриптовом файле функцию типа&lt;br /&gt;
&amp;lt;lua&amp;gt;function spawn () &lt;br /&gt;
alife():create(&amp;quot;vedro&amp;quot;,vector():set(координаты X,Y,Z),level_vertex_id,game_vertex_id)&lt;br /&gt;
end&amp;lt;/lua&amp;gt;&lt;br /&gt;
И вызываем эту функцию через диалог или другой скрипт.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Автор — [[Участник:KitkaT.Net|KitkaT.Net]] 12:45, 27 сентября 2010 (UTC)&amp;lt;br /&amp;gt;&lt;br /&gt;
Редактирование — [[Участник:Pihan13|Pihan13]] 16:04, 27 сентября 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
[[Категория:Конфигурационные файлы]][[Категория:Скрипты]]&lt;/div&gt;</summary>
		<author><name>91.218.192.254</name></author>	</entry>

	<entry>
		<id>http://stalkerin.gameru.net/wiki/index.php?title=%D0%A0%D0%B5%D0%B3%D0%B8%D1%81%D1%82%D1%80%D0%B0%D1%86%D0%B8%D1%8F_%D0%BD%D0%BE%D0%B2%D1%8B%D1%85_%D1%82%D0%B5%D0%BA%D1%81%D1%82%D0%BE%D0%B2%D1%8B%D1%85_%D1%84%D0%B0%D0%B9%D0%BB%D0%BE%D0%B2</id>
		<title>Регистрация новых текстовых файлов</title>
		<link rel="alternate" type="text/html" href="http://stalkerin.gameru.net/wiki/index.php?title=%D0%A0%D0%B5%D0%B3%D0%B8%D1%81%D1%82%D1%80%D0%B0%D1%86%D0%B8%D1%8F_%D0%BD%D0%BE%D0%B2%D1%8B%D1%85_%D1%82%D0%B5%D0%BA%D1%81%D1%82%D0%BE%D0%B2%D1%8B%D1%85_%D1%84%D0%B0%D0%B9%D0%BB%D0%BE%D0%B2"/>
				<updated>2013-08-09T17:44:22Z</updated>
		
		<summary type="html">&lt;p&gt;91.218.192.254: Новая страница: «==Вступление== Наверное, большинство людей, вскрывавших архивы игры, знают, что 90% текстов &amp;quot;С...»&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Вступление==&lt;br /&gt;
Наверное, большинство людей, вскрывавших архивы игры, знают, что 90% текстов &amp;quot;Сталкера&amp;quot; находятся в XML-файлах из папки '''configs/text/rus'''. Бывает, нет желания впихивать свои тексты в оригинальные файлы. Тогда создаются новые XML-документы, и там уже прописывается все, что нужно. Создать документ и прописать - это одно. А вот регистрация этих документов - уже другое. Сложного в регистрации новых файлов ничего нет, но не всем начинающим модмейкерам этот процесс известен. Будем исправлять. &lt;br /&gt;
==Способ первый==&lt;br /&gt;
Предположим, мы создали файл '''my_dialogs.xml''' в папке '''configs/text/rus'''. Чтобы его зарегистрировать мы задействуем любой оригинальный файл из этой же папки. Например, '''st_dialogs.xml'''. Откроем его и где-нибудь между ''&amp;lt;string_table&amp;gt;'' и ''&amp;lt;/string_table&amp;gt;'' пропишем наш файл через известную форму ''include''. Прописать можно в любом месте, не прерывая секции другого текста. Я пропишу прямо под ''&amp;lt;string_table&amp;gt;'':&lt;br /&gt;
&amp;lt;xml&amp;gt;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;windows-1251&amp;quot; ?&amp;gt;&lt;br /&gt;
&amp;lt;string_table&amp;gt;&lt;br /&gt;
#include &amp;quot;text\rus\my_dialogs.xml&amp;quot;&lt;br /&gt;
	&amp;lt;string id=&amp;quot;about_quests_dialog_bandit_0&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;text&amp;gt;Подскажи мне насчёт одного дела...&amp;lt;/text&amp;gt;&lt;br /&gt;
	&amp;lt;/string&amp;gt;&lt;br /&gt;
	&amp;lt;string id=&amp;quot;about_quests_dialog_bandit_1&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;text&amp;gt;А чё за дело?&amp;lt;/text&amp;gt;&lt;br /&gt;
	&amp;lt;/string&amp;gt;&lt;br /&gt;
	&amp;lt;string id=&amp;quot;about_quests_dialog_bandit_10&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;text&amp;gt;Что ты думаешь про Шустрого?&amp;lt;/text&amp;gt;&lt;br /&gt;
	&amp;lt;/string&amp;gt;&lt;br /&gt;
	&amp;lt;string id=&amp;quot;about_quests_dialog_bandit_101&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;text&amp;gt;Про Шустрого? Я, короче, так думаю, как-нибудь мы его таки встретим в тихом месте и чутка эту суку потрясём.&amp;lt;/text&amp;gt;&lt;br /&gt;
	&amp;lt;/string&amp;gt;&lt;br /&gt;
	&amp;lt;string id=&amp;quot;about_quests_dialog_bandit_11&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;text&amp;gt;Что ты слышал про Оазис?&amp;lt;/text&amp;gt;&lt;br /&gt;
	&amp;lt;/string&amp;gt;&lt;br /&gt;
	&amp;lt;string id=&amp;quot;about_quests_dialog_bandit_111&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;text&amp;gt;Х-хы-ы! Я, короче, такую хохму сышал - ваще, умереть не встать! Короче, как-то, на Свалке ещё, пацаны беса погнали: толкнули адресок Оазиса с темой, типа это полный верняк. Ну и приныкались там на нычке кодлой. Ну и чё те сказать... там, короче, с бакланов стока поснимали, шо пацаны на завтра тупо из Зоны свалили! На всю оставшуюся жизнь каждому хватит. Один тока пацанчик тут остался - ему Йога погоняло было.&amp;lt;/text&amp;gt;&lt;br /&gt;
	&amp;lt;/string&amp;gt;&lt;br /&gt;
	&amp;lt;string id=&amp;quot;about_quests_dialog_bandit_112&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;text&amp;gt;Чё, короче, слышал, так это типа там любые болезни проходят. Я так секу, полезная, мля, штука: и гемора по жизни никакого, от бодуна или передоза там башка не трещит... Короче, ставишь туда гостиничку - и бабло греби лопатой!&amp;lt;/text&amp;gt;&lt;br /&gt;
	&amp;lt;/string&amp;gt;&lt;br /&gt;
...&amp;lt;/xml&amp;gt;&lt;br /&gt;
Надеюсь, понятно, что мы зарегистрировали свой файл строкой:&lt;br /&gt;
&amp;lt;code&amp;gt;#include &amp;quot;text\rus\my_dialogs.xml&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
==Способ 2а и 2б==&lt;br /&gt;
===Способ 2а===&lt;br /&gt;
Сейчас мы уже задействуем другой оригинальный файл - '''configs/localization.ltx'''. В нем можно дать ссылку на все наши текстовые файлы. Наполнен файл в чистом ЗП вот-так:&lt;br /&gt;
&amp;lt;ini&amp;gt;[string_table]&lt;br /&gt;
language        = rus&lt;br /&gt;
font_prefix     = ;_west ;_cent&amp;lt;/ini&amp;gt;&lt;br /&gt;
Мы возьмем и допишем под всем этим новый параметр ''files'', а в значении укажем названия новых файлов (пускай, '''my_dialogs''', '''my_items''' и '''my_artefacts'''):&lt;br /&gt;
&amp;lt;code&amp;gt;files           = my_dialogs, my_items, my_artefacts&amp;lt;/code&amp;gt;&lt;br /&gt;
В целом будет выглядеть так:&lt;br /&gt;
&amp;lt;ini&amp;gt;[string_table]&lt;br /&gt;
language        = rus&lt;br /&gt;
font_prefix     = ;_west ;_cent&lt;br /&gt;
files           = my_dialogs, my_items, my_artefacts&amp;lt;/ini&amp;gt;&lt;br /&gt;
===Способ 2б===&lt;br /&gt;
Фактически, микс между способом 1 и 2а. В папке '''configs/text/rus''' создаем XML-файл с любым названием. Я предпочту назвать по назначению - '''my_text_files.xml'''. Из него, собственно, и будут идти все отсылки к другим текстовкам.&lt;br /&gt;
Далее, регистрируем этот файл по принципу из способа 2а. Открываем '''localization.ltx''', и прописываем там наш файл:&lt;br /&gt;
&amp;lt;ini&amp;gt;[string_table]&lt;br /&gt;
language        = rus&lt;br /&gt;
font_prefix     = ;_west ;_cent&lt;br /&gt;
files           = my_text_files&amp;lt;/ini&amp;gt;&lt;br /&gt;
Возвращаемся к файлу '''my_text_files.xml''', и заполняем его следующим образом:&lt;br /&gt;
&amp;lt;xml&amp;gt;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;windows-1251&amp;quot; standalone=&amp;quot;yes&amp;quot; ?&amp;gt;&lt;br /&gt;
&amp;lt;string_table&amp;gt;&lt;br /&gt;
#include &amp;quot;text\rus\my_dialogs.xml&amp;quot;&lt;br /&gt;
#include &amp;quot;text\rus\my_items.xml&amp;quot;&lt;br /&gt;
#include &amp;quot;text\rus\my_character_names.xml&amp;quot;&lt;br /&gt;
#include &amp;quot;text\rus\my_artefacts.xml&amp;quot;&lt;br /&gt;
#include &amp;quot;text\rus\my_weapons.xml&amp;quot;&lt;br /&gt;
&amp;lt;/string_table&amp;gt;&amp;lt;/xml&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;windows-1251&amp;quot; standalone=&amp;quot;yes&amp;quot; ?&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
 - стандартная кодировка файла&lt;br /&gt;
''&amp;lt;string_table&amp;gt;'' и ''&amp;lt;/string_table&amp;gt;'' - теги файла&lt;br /&gt;
Через ''#include'' прописаны все наши текстовые файлы. &lt;br /&gt;
Этот способ я сам предпочитаю использовать. Все четко, понятно, нету больших рисков и непоняток с оригинальными файлами.&lt;br /&gt;
Всем спасибо, на этом мини-урок закончен! =)&lt;br /&gt;
==Авторы==&lt;br /&gt;
'''Автор статьи:''' FantomICW&lt;br /&gt;
&lt;br /&gt;
[[Категория: Конфигурационные файлы]]&lt;/div&gt;</summary>
		<author><name>91.218.192.254</name></author>	</entry>

	<entry>
		<id>http://stalkerin.gameru.net/wiki/index.php?title=CoP_%D1%81%D0%BE%D0%B7%D0%B4%D0%B0%D0%BD%D0%B8%D0%B5_%D0%B3%D0%BB%D0%B0%D0%B2%D0%BD%D0%BE%D0%B3%D0%BE_%D0%BC%D0%B5%D0%BD%D1%8E_%D1%81_%D0%B0%D0%BD%D0%B8%D0%BC%D0%B0%D1%86%D0%B8%D0%B5%D0%B9.</id>
		<title>CoP создание главного меню с анимацией.</title>
		<link rel="alternate" type="text/html" href="http://stalkerin.gameru.net/wiki/index.php?title=CoP_%D1%81%D0%BE%D0%B7%D0%B4%D0%B0%D0%BD%D0%B8%D0%B5_%D0%B3%D0%BB%D0%B0%D0%B2%D0%BD%D0%BE%D0%B3%D0%BE_%D0%BC%D0%B5%D0%BD%D1%8E_%D1%81_%D0%B0%D0%BD%D0%B8%D0%BC%D0%B0%D1%86%D0%B8%D0%B5%D0%B9."/>
				<updated>2013-08-03T20:37:37Z</updated>
		
		<summary type="html">&lt;p&gt;91.218.192.254: оформление&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Доброго времени суток, сегодня мы научимся создавать собственное меню с анимацией.&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Что нам понадобится. ==&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
Распакованная игра S.T.A.L.K.E.R.: Call of Pripyat;&amp;lt;br /&amp;gt;&lt;br /&gt;
Adobe Photoshop с DDS-плагином от nVidia или любой другой графический редактор способный править альфа-каналы и открывать .dds файлы;(в статье я использую Photoshop)&amp;lt;br /&amp;gt;&lt;br /&gt;
Любой видео конвертер способный переконвертировать в .ogm формат;([http://stalkerin.gameru.net/modules.php?name=Downloads&amp;amp;d_op=getit&amp;amp;lid=393 скачать])&amp;lt;br /&amp;gt;&lt;br /&gt;
Блокнот для правки конфигов.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Рассмотрение оригинального меню. ==&lt;br /&gt;
Начнём с создания основного статического изображения меню.&amp;lt;br /&amp;gt;&lt;br /&gt;
Открываем файл '''ui_actor_main_menu.dds''' который расположен в папке '''gamedata\textures\ui'''.&lt;br /&gt;
И видим обычное статическое изображение, хотя в главном меню вода пускает волны и птички летают.&amp;lt;br /&amp;gt;&lt;br /&gt;
[[Файл:Tut01.JPG|200px|thumb|right|Вот, что мы видим]]&lt;br /&gt;
Переходим в управление каналами и нажимаем на Alpha 1 и видим, что на местах где должны летать птички и вода шевелится черные пятна. Которые говорят о том, что изображение в этих местах прозрачное.&lt;br /&gt;
[[Файл:Tut02.JPG|200px|thumb|right|Альфа 1]]&lt;br /&gt;
Файлы которые должны проигрываться в этих черных дырах лежат по адресу '''gamedata\textures\ui''' и называются '''video_voroni_crop.ogm''' и '''video_water_crop.ogm''', координаты их расположения на экране прописаны в файле '''ui_mm_main.xml''' по адресу '''gamedata\configs\ui'''.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Подготовка статического меню. ==&lt;br /&gt;
Предполагается, что у вас уже есть готовая текстурка и видеофайлы. И осталось только подредактировать альфа-канал и прописать расположение видео, дабы они правильно отображались.&amp;lt;br /&amp;gt;&lt;br /&gt;
Я взял файл с изображением трактора, в качестве видео взял ui_mm_rug02.ogm на нем изображена ленточка, которая висит в области заднего колеса трактора. А на задний план я взял видео ui_mm_main_back_crop.ogm оно конечно не так хорошо вписывается, ну да ладно.&lt;br /&gt;
[[Файл:Tut03.JPG|200px|thumb|right|обвел места где будет анимация]]&lt;br /&gt;
И так, выделяем на нашем меню места где будет проходить анимация('''внимательно посмотрите свое видео и приметьте сколько нужно выделять, а то получится, что часть анимации не видна, а это уже не качественно исполненная работа''').&lt;br /&gt;
После того как выделили переходим на альфа-канал и закрашиваем выделенное в черный(если до этого вы не закрасили прежние черные места на альфа-канале в белый то не беда, просто инвертируйте выделение и закрасьте.&lt;br /&gt;
[[Файл:Tut04.JPG|200px|thumb|right|вот, что у меня получилось после редактирования альфа-канала]]&lt;br /&gt;
Теперь замеряем координаты. У меня получились: для бинта (277,475), для фона (326,0).&lt;br /&gt;
После снятия координат, сохраняем нашу текстуру.&lt;br /&gt;
[[Файл:Tut05.JPG|200px|thumb|right|настройки сохранения]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Редактирование ui_mm_main.xml ==&lt;br /&gt;
Откроем файл '''ui_mm_main.xml''' блокнотом (я использую Notepad++).&lt;br /&gt;
Нас интересует только эта строка:&lt;br /&gt;
&amp;lt;xml&amp;gt;		&amp;lt;auto_static x=&amp;quot;500&amp;quot; y=&amp;quot;130&amp;quot; width=&amp;quot;432&amp;quot; height=&amp;quot;160&amp;quot; stretch=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;texture width=&amp;quot;432&amp;quot; height=&amp;quot;160&amp;quot;&amp;gt;ui\video_voroni_crop&amp;lt;/texture&amp;gt;&lt;br /&gt;
		&amp;lt;/auto_static&amp;gt;&amp;lt;/xml&amp;gt;&lt;br /&gt;
Рассмотрим подробнее:&lt;br /&gt;
&amp;lt;xml&amp;gt;&amp;lt;auto_static x=&amp;quot;500&amp;quot; y=&amp;quot;130&amp;quot; width=&amp;quot;432&amp;quot; height=&amp;quot;160&amp;quot; stretch=&amp;quot;1&amp;quot;&amp;gt;&amp;lt;/xml&amp;gt;&lt;br /&gt;
Первые две координаты отвечают за расположение видео на экране, вторые две размер дырки на альфа-канале.&lt;br /&gt;
&amp;lt;xml&amp;gt;&amp;lt;texture width=&amp;quot;432&amp;quot; height=&amp;quot;160&amp;quot;&amp;gt;ui\video_voroni_crop&amp;lt;/texture&amp;gt;&amp;lt;/xml&amp;gt;&lt;br /&gt;
Первая часть разрешение видеоролика, вторая часть расположение ролика включающее папку и название без расширения(.ogm)&lt;br /&gt;
Подставляем свои координаты, у меня получилось вот что:&lt;br /&gt;
&amp;lt;xml&amp;gt;	&amp;lt;background width=&amp;quot;1024&amp;quot; height=&amp;quot;768&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;auto_static x=&amp;quot;277&amp;quot; y=&amp;quot;475&amp;quot; width=&amp;quot;128&amp;quot; height=&amp;quot;256&amp;quot; stretch=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;texture width=&amp;quot;128&amp;quot; height=&amp;quot;256&amp;quot;&amp;gt;ui\ui_mm_rug02&amp;lt;/texture&amp;gt;&lt;br /&gt;
		&amp;lt;/auto_static&amp;gt;&lt;br /&gt;
		&amp;lt;auto_static x=&amp;quot;326&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;876&amp;quot; height=&amp;quot;400&amp;quot; stretch=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;texture width=&amp;quot;876&amp;quot; height=&amp;quot;400&amp;quot;&amp;gt;ui\ui_mm_main_back_crop&amp;lt;/texture&amp;gt;&lt;br /&gt;
		&amp;lt;/auto_static&amp;gt;&lt;br /&gt;
	    &amp;lt;auto_static width=&amp;quot;1024&amp;quot; height=&amp;quot;768&amp;quot;&amp;gt;&lt;br /&gt;
	      &amp;lt;texture&amp;gt;ui_inGame2_background&amp;lt;/texture&amp;gt;&lt;br /&gt;
	    &amp;lt;/auto_static&amp;gt;&lt;br /&gt;
	&amp;lt;/background&amp;gt;&amp;lt;/xml&amp;gt;&lt;br /&gt;
Сохраняем.&amp;lt;br /&amp;gt;&lt;br /&gt;
Заходим в игру и любуемся.&amp;lt;br /&amp;gt;&lt;br /&gt;
Вот, что у меня вышло (коряво, так как я особо не парился делая тутор):&lt;br /&gt;
[http://www.youtube.com/watch?v=GH6oTnudO10 YouTube]&lt;br /&gt;
[[Категория:Texturing]]&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Автор:''' ''WillsherT''&amp;lt;br /&amp;gt;&lt;br /&gt;
Спасибо '''''X_CASPER_X''''' за напоминание о том, что я когда то хотел написать этот тутор.&lt;/div&gt;</summary>
		<author><name>91.218.192.254</name></author>	</entry>

	<entry>
		<id>http://stalkerin.gameru.net/wiki/index.php?title=SoC._%D0%A1%D0%BE%D0%B7%D0%B4%D0%B0%D0%B5%D0%BC_%D1%85%D1%83%D0%B4_%D0%BC%D0%B0%D1%81%D0%BA%D0%B8</id>
		<title>SoC. Создаем худ маски</title>
		<link rel="alternate" type="text/html" href="http://stalkerin.gameru.net/wiki/index.php?title=SoC._%D0%A1%D0%BE%D0%B7%D0%B4%D0%B0%D0%B5%D0%BC_%D1%85%D1%83%D0%B4_%D0%BC%D0%B0%D1%81%D0%BA%D0%B8"/>
				<updated>2013-08-03T20:33:52Z</updated>
		
		<summary type="html">&lt;p&gt;91.218.192.254: /* Работа с XML - описателем */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;===Теория===&lt;br /&gt;
Мне кажется многие задавались вопросом &amp;quot;Как же создать худ маски&amp;quot;?&lt;br /&gt;
Немного пораздумав, я создал функцию, которая крепит текстуру к определенному костюму.&lt;br /&gt;
&lt;br /&gt;
Опытным '''модмейкерам''' может показаться моя функция усложненной, но главное, что все '''работает и не вылетает'''!&lt;br /&gt;
===Практика===&lt;br /&gt;
&lt;br /&gt;
===Работа со скриптами===&lt;br /&gt;
&lt;br /&gt;
Первым делом в директории '''gamedata\scripts''' создайте файл с названием '''xr_mask.script'''&lt;br /&gt;
&lt;br /&gt;
Открываем его пишем:&lt;br /&gt;
&amp;lt;lua&amp;gt;function hud_gas()&lt;br /&gt;
   local slot_stalker = db.actor:item_in_slot(6)&lt;br /&gt;
   local object_1 = db.actor:object(&amp;quot;stalker_outfit&amp;quot;)&lt;br /&gt;
   local slot_killer = db.actor:item_in_slot(6)&lt;br /&gt;
   local object_2 = db.actor:object(&amp;quot;killer_outfit&amp;quot;)&lt;br /&gt;
    if slot_stalker and slot_stalker:section() == &amp;quot;stalker_outfit&amp;quot; and object_1 ~= nil or&lt;br /&gt;
    slot_killer and slot_killer:section() == &amp;quot;killer_outfit&amp;quot; and object_2 ~= nil then&lt;br /&gt;
            local hud = get_hud()&lt;br /&gt;
            local custom_static = hud:GetCustomStatic(&amp;quot;hud_gas&amp;quot;)&lt;br /&gt;
            if custom_static == nil then&lt;br /&gt;
                        hud:AddCustomStatic(&amp;quot;hud_gas&amp;quot;, true)&lt;br /&gt;
            end&lt;br /&gt;
     else&lt;br /&gt;
            local hud = get_hud()&lt;br /&gt;
            local custom_static = hud:GetCustomStatic(&amp;quot;hud_gas&amp;quot;)&lt;br /&gt;
            if custom_static ~= nil then&lt;br /&gt;
                        hud:RemoveCustomStatic(&amp;quot;hud_gas&amp;quot;, false)&lt;br /&gt;
            end&lt;br /&gt;
      end&lt;br /&gt;
end&amp;lt;/lua&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Теперь поясню:&lt;br /&gt;
&amp;lt;lua&amp;gt;function hud_gas() -- функция&lt;br /&gt;
   local slot_stalker = db.actor:item_in_slot(6) -- переменная костюма&lt;br /&gt;
   local object_1 = db.actor:object(&amp;quot;stalker_outfit&amp;quot;) -- переменная объекта&lt;br /&gt;
   local slot_killer = db.actor:item_in_slot(6) -- переменная костюма&lt;br /&gt;
   local object_2 = db.actor:object(&amp;quot;killer_outfit&amp;quot;) -- переменная объекта&lt;br /&gt;
    if slot_stalker and slot_stalker:section() == &amp;quot;stalker_outfit&amp;quot; and object_1 ~= nil or&lt;br /&gt;
    slot_killer and slot_killer:section() == &amp;quot;killer_outfit&amp;quot; and object_2 ~= nil then -- проверяем надет ли костюм сталкера\наемника&lt;br /&gt;
            local hud = get_hud() -- худ&lt;br /&gt;
            local custom_static = hud:GetCustomStatic(&amp;quot;hud_gas&amp;quot;)&lt;br /&gt;
            if custom_static == nil then -- если худа нет, выдаем, если одет костюм&lt;br /&gt;
                        hud:AddCustomStatic(&amp;quot;hud_gas&amp;quot;, true)&lt;br /&gt;
            end&lt;br /&gt;
     else&lt;br /&gt;
            local hud = get_hud()&lt;br /&gt;
            local custom_static = hud:GetCustomStatic(&amp;quot;hud_gas&amp;quot;)&lt;br /&gt;
            if custom_static ~= nil then -- если худ есть, убираем при смене костюма&lt;br /&gt;
                        hud:RemoveCustomStatic(&amp;quot;hud_gas&amp;quot;, false)&lt;br /&gt;
            end&lt;br /&gt;
      end&lt;br /&gt;
end&amp;lt;/lua&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Теперь зайдем в '''bind_stalker.script''', который находится в '''gamedata\scripts''',&lt;br /&gt;
найдем функцию:&lt;br /&gt;
function actor_binder:update(delta) &lt;br /&gt;
и после пишем: xr_mask.hud_gas() &lt;br /&gt;
в итоге:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lua&amp;gt;function actor_binder:update(delta)&lt;br /&gt;
        xr_mask.hud_gas()&lt;br /&gt;
	object_binder.update(self, delta)&lt;br /&gt;
        local time = time_global()&lt;br /&gt;
        game_stats.update (delta, self.object)&amp;lt;/lua&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Работа с XML - описателем===&lt;br /&gt;
&lt;br /&gt;
Итак, заходим в директорию '''gamedata\config\ui''', находим файл с названием '''ui_custom_msgs''', открываем его &lt;br /&gt;
и в самом конце перед строкой: &amp;lt;/header&amp;gt; пишем:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;xml&amp;gt;&amp;lt;hud_gas x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;1024&amp;quot; height=&amp;quot;768&amp;quot; stretch=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;texture&amp;gt;hud\hud_gas&amp;lt;/texture&amp;gt;&lt;br /&gt;
  &amp;lt;/hud_gas&amp;gt;&amp;lt;/xml&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Теперь поясню:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;xml&amp;gt;&amp;lt;hud_gas x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;1024&amp;quot; height=&amp;quot;768&amp;quot; stretch=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;texture&amp;gt;hud\hud_gas&amp;lt;/texture&amp;gt; -- текстура маски. Посмотрите внимательно в скрипте мы указывали '''hud_gas'''&lt;br /&gt;
  &amp;lt;/hud_gas&amp;gt;&amp;lt;/xml&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Текстура===&lt;br /&gt;
&lt;br /&gt;
Теперь заходим в '''gamedata\textures\ui''', находим файл с названием '''ui_mainmenu.dds'''.&lt;br /&gt;
Копируем его, заходим в '''gamedata\textures\hud''' вставляем его и переминуем в '''hud_gas.dds'''&lt;br /&gt;
Открываем программой '''Adobe Photoshop''' и рисуем подходящую для вас маску.&lt;br /&gt;
Как работать с текстурами описано в этой статье:&lt;br /&gt;
&lt;br /&gt;
http://www.stalkerin.gameru.net/wiki/index.php/Изменение%20текстур&lt;br /&gt;
&lt;br /&gt;
Вот и все! Начинаем новую игру, ищем костюм сталкера или наемника, надеваем и видим вашу текстуру.&lt;br /&gt;
&lt;br /&gt;
===Автор: Weanchester===&lt;br /&gt;
[[Категория:Скрипты]] [[Категория:Texturing]]&lt;/div&gt;</summary>
		<author><name>91.218.192.254</name></author>	</entry>

	<entry>
		<id>http://stalkerin.gameru.net/wiki/index.php?title=SoC._%D0%A1%D0%BE%D0%B7%D0%B4%D0%B0%D0%B5%D0%BC_%D1%85%D1%83%D0%B4_%D0%BC%D0%B0%D1%81%D0%BA%D0%B8</id>
		<title>SoC. Создаем худ маски</title>
		<link rel="alternate" type="text/html" href="http://stalkerin.gameru.net/wiki/index.php?title=SoC._%D0%A1%D0%BE%D0%B7%D0%B4%D0%B0%D0%B5%D0%BC_%D1%85%D1%83%D0%B4_%D0%BC%D0%B0%D1%81%D0%BA%D0%B8"/>
				<updated>2013-08-03T20:33:17Z</updated>
		
		<summary type="html">&lt;p&gt;91.218.192.254: оформление&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;===Теория===&lt;br /&gt;
Мне кажется многие задавались вопросом &amp;quot;Как же создать худ маски&amp;quot;?&lt;br /&gt;
Немного пораздумав, я создал функцию, которая крепит текстуру к определенному костюму.&lt;br /&gt;
&lt;br /&gt;
Опытным '''модмейкерам''' может показаться моя функция усложненной, но главное, что все '''работает и не вылетает'''!&lt;br /&gt;
===Практика===&lt;br /&gt;
&lt;br /&gt;
===Работа со скриптами===&lt;br /&gt;
&lt;br /&gt;
Первым делом в директории '''gamedata\scripts''' создайте файл с названием '''xr_mask.script'''&lt;br /&gt;
&lt;br /&gt;
Открываем его пишем:&lt;br /&gt;
&amp;lt;lua&amp;gt;function hud_gas()&lt;br /&gt;
   local slot_stalker = db.actor:item_in_slot(6)&lt;br /&gt;
   local object_1 = db.actor:object(&amp;quot;stalker_outfit&amp;quot;)&lt;br /&gt;
   local slot_killer = db.actor:item_in_slot(6)&lt;br /&gt;
   local object_2 = db.actor:object(&amp;quot;killer_outfit&amp;quot;)&lt;br /&gt;
    if slot_stalker and slot_stalker:section() == &amp;quot;stalker_outfit&amp;quot; and object_1 ~= nil or&lt;br /&gt;
    slot_killer and slot_killer:section() == &amp;quot;killer_outfit&amp;quot; and object_2 ~= nil then&lt;br /&gt;
            local hud = get_hud()&lt;br /&gt;
            local custom_static = hud:GetCustomStatic(&amp;quot;hud_gas&amp;quot;)&lt;br /&gt;
            if custom_static == nil then&lt;br /&gt;
                        hud:AddCustomStatic(&amp;quot;hud_gas&amp;quot;, true)&lt;br /&gt;
            end&lt;br /&gt;
     else&lt;br /&gt;
            local hud = get_hud()&lt;br /&gt;
            local custom_static = hud:GetCustomStatic(&amp;quot;hud_gas&amp;quot;)&lt;br /&gt;
            if custom_static ~= nil then&lt;br /&gt;
                        hud:RemoveCustomStatic(&amp;quot;hud_gas&amp;quot;, false)&lt;br /&gt;
            end&lt;br /&gt;
      end&lt;br /&gt;
end&amp;lt;/lua&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Теперь поясню:&lt;br /&gt;
&amp;lt;lua&amp;gt;function hud_gas() -- функция&lt;br /&gt;
   local slot_stalker = db.actor:item_in_slot(6) -- переменная костюма&lt;br /&gt;
   local object_1 = db.actor:object(&amp;quot;stalker_outfit&amp;quot;) -- переменная объекта&lt;br /&gt;
   local slot_killer = db.actor:item_in_slot(6) -- переменная костюма&lt;br /&gt;
   local object_2 = db.actor:object(&amp;quot;killer_outfit&amp;quot;) -- переменная объекта&lt;br /&gt;
    if slot_stalker and slot_stalker:section() == &amp;quot;stalker_outfit&amp;quot; and object_1 ~= nil or&lt;br /&gt;
    slot_killer and slot_killer:section() == &amp;quot;killer_outfit&amp;quot; and object_2 ~= nil then -- проверяем надет ли костюм сталкера\наемника&lt;br /&gt;
            local hud = get_hud() -- худ&lt;br /&gt;
            local custom_static = hud:GetCustomStatic(&amp;quot;hud_gas&amp;quot;)&lt;br /&gt;
            if custom_static == nil then -- если худа нет, выдаем, если одет костюм&lt;br /&gt;
                        hud:AddCustomStatic(&amp;quot;hud_gas&amp;quot;, true)&lt;br /&gt;
            end&lt;br /&gt;
     else&lt;br /&gt;
            local hud = get_hud()&lt;br /&gt;
            local custom_static = hud:GetCustomStatic(&amp;quot;hud_gas&amp;quot;)&lt;br /&gt;
            if custom_static ~= nil then -- если худ есть, убираем при смене костюма&lt;br /&gt;
                        hud:RemoveCustomStatic(&amp;quot;hud_gas&amp;quot;, false)&lt;br /&gt;
            end&lt;br /&gt;
      end&lt;br /&gt;
end&amp;lt;/lua&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Теперь зайдем в '''bind_stalker.script''', который находится в '''gamedata\scripts''',&lt;br /&gt;
найдем функцию:&lt;br /&gt;
function actor_binder:update(delta) &lt;br /&gt;
и после пишем: xr_mask.hud_gas() &lt;br /&gt;
в итоге:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lua&amp;gt;function actor_binder:update(delta)&lt;br /&gt;
        xr_mask.hud_gas()&lt;br /&gt;
	object_binder.update(self, delta)&lt;br /&gt;
        local time = time_global()&lt;br /&gt;
        game_stats.update (delta, self.object)&amp;lt;/lua&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Работа с XML - описателем===&lt;br /&gt;
&lt;br /&gt;
Итак, заходим в директорию '''gamedata\config\ui''', находим файл с названием '''ui_custom_msgs''', открываем его &lt;br /&gt;
и в самом конце перед строкой: &amp;lt;/header&amp;gt; пишем:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;xml&amp;gt;&amp;lt;hud_gas x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;1024&amp;quot; height=&amp;quot;768&amp;quot; stretch=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;texture&amp;gt;hud\hud_gas&amp;lt;/texture&amp;gt;&lt;br /&gt;
  &amp;lt;/hud_gas&amp;gt;&amp;lt;/prexml&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Теперь поясню:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;xml&amp;gt;&amp;lt;hud_gas x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;1024&amp;quot; height=&amp;quot;768&amp;quot; stretch=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;texture&amp;gt;hud\hud_gas&amp;lt;/texture&amp;gt; -- текстура маски. Посмотрите внимательно в скрипте мы указывали '''hud_gas'''&lt;br /&gt;
  &amp;lt;/hud_gas&amp;gt;&amp;lt;/xml&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Текстура===&lt;br /&gt;
&lt;br /&gt;
Теперь заходим в '''gamedata\textures\ui''', находим файл с названием '''ui_mainmenu.dds'''.&lt;br /&gt;
Копируем его, заходим в '''gamedata\textures\hud''' вставляем его и переминуем в '''hud_gas.dds'''&lt;br /&gt;
Открываем программой '''Adobe Photoshop''' и рисуем подходящую для вас маску.&lt;br /&gt;
Как работать с текстурами описано в этой статье:&lt;br /&gt;
&lt;br /&gt;
http://www.stalkerin.gameru.net/wiki/index.php/Изменение%20текстур&lt;br /&gt;
&lt;br /&gt;
Вот и все! Начинаем новую игру, ищем костюм сталкера или наемника, надеваем и видим вашу текстуру.&lt;br /&gt;
&lt;br /&gt;
===Автор: Weanchester===&lt;br /&gt;
[[Категория:Скрипты]] [[Категория:Texturing]]&lt;/div&gt;</summary>
		<author><name>91.218.192.254</name></author>	</entry>

	<entry>
		<id>http://stalkerin.gameru.net/wiki/index.php?title=%D0%A1%D0%BA%D1%80%D0%B8%D0%BF%D1%82%D0%BE%D0%B2%D1%8B%D0%B5_%D1%88%D0%B5%D0%B9%D0%B4%D0%B5%D1%80%D1%8B</id>
		<title>Скриптовые шейдеры</title>
		<link rel="alternate" type="text/html" href="http://stalkerin.gameru.net/wiki/index.php?title=%D0%A1%D0%BA%D1%80%D0%B8%D0%BF%D1%82%D0%BE%D0%B2%D1%8B%D0%B5_%D1%88%D0%B5%D0%B9%D0%B4%D0%B5%D1%80%D1%8B"/>
				<updated>2013-08-03T20:29:34Z</updated>
		
		<summary type="html">&lt;p&gt;91.218.192.254: оформление&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Редактируя любую модель, многие в свойствах поверхностей замечали графу shader, в которой указывается нечто вроде models/model или подобные.&lt;br /&gt;
Как правило, эти шейдеры упакованы в '''shaders.xr''' и '''shaders_xrlc.x'''r, которые представляют собой своеобразную базу данных шейдеров, собранных по определенным шаблонам.&lt;br /&gt;
&lt;br /&gt;
Но кроме этих баз данных есть еще и скриптовые шейдеры, которые имеют приоритет перед теми шейдерами, что упакованы в *.xr. Это файлы, имеющие расширение .s и лежащие в папках соответствующих рендеров. Вычислить правильное название шейдера в БД и шейдерного скрипта '''.s''' можно очень просто - для примера, если у нас в БД шейдер находится в '''model/selflight''', то имя шейдера должно быть '''model_selflight.s''', если details/blend, то скрипт шейдера будет, соответственно, '''details_blend.s'''. Не так уж сложно.&lt;br /&gt;
&lt;br /&gt;
Вообще база данных с шейдерами была выдумана не потому что авторам сталкера очень нравилось плодить экземпляры труднораспарсиваемых форматов, а причина более банальна - чтобы увеличить скорость загрузки игры, сэкономив за счет активности жесткого диска при открытии файлов скриптовых шейдеров в папке соответствующего рендера. Плюс к тому в этом случае уменьшается количество шейдерных файлов, что как минимум вдвое уменьшает вероятность ошибки - при условии двух рендеров эта экономия получается за счет тех шейдеров, которые являются общими для обоих рендеров. Плюс к тому вероятность ошибки еще более уменьшается тем, что базы данных редактируются в сдк, а сдк эти базы данных представляет в виде всевозможных галочек и полей ввода, поэтому ошибка может быть только во вводимых данных, но не в скриптовом коде шейдеров, который, вероятнее всего, генерируется во время загрузки игры.&lt;br /&gt;
&lt;br /&gt;
Скриптовые шейдеры используются же в основном только в тех случаях, когда их код отличается для разных рендеров.&lt;br /&gt;
&lt;br /&gt;
По некоторым причинам я считаю что для модостроителей шейдерные скрипты являются более предпочтительными, чем распространение своих шейдерных модов в виде модифицированной .xr-БД. Причины в основном две: Во-первых скриптовые шейдеры предоставляют бОльшие возможности для полета фантазии, а во-вторых распространение шейдерных модов в виде скриптовых шейдеров все же делает меньше вероятность конфликта модов, так как разные шейдеры будут в разных файлах, а не все вместе в одном хитром и трудноредактируемом, и, что самое плохое, - труднообъединяемом файле. Поэтому далее мы рассмотрим скриптовые шейдеры.&lt;br /&gt;
&lt;br /&gt;
Что собой представляют шейдерные скрипты? Это обычные скрипты на lua, которые являются своеобразным языком для того чтобы объяснить движку, какие загружать текстуры и какие подключать шейдеры из наличествующих .ps и .vs файлов. &lt;br /&gt;
&lt;br /&gt;
: ''Для тех кто воспрял духом сразу скажу, что несмотря на то, что шейдерные скрипты написаны на языке, который используется в игровых скриптах, это все-таки не одно и то же. Во-первых шейдерные скрипты выполняются при загрузке уровня всего один раз (в фазу загрузки &amp;quot;загрузка шейдеров&amp;quot;), поэтому на отрисовку в реальном времени влиять неспособны, и кроме того, к игровым скриптам скриптовые шейдеры доступа не имеют.''&lt;br /&gt;
&lt;br /&gt;
Вот, для примера, содержимое простейшего скриптового шейдера:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;lua&amp;gt;function normal( shader, t_base, t_second, t_detail )&lt;br /&gt;
     shader:begin( &amp;quot;effects_gradient&amp;quot;, &amp;quot;effects_gradient_p&amp;quot; )&lt;br /&gt;
 end&amp;lt;/lua&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Разберем его по косточкам:&lt;br /&gt;
&lt;br /&gt;
* '''function normal''' - объявление стандартной функции шейдерного скрипта. В некоторых шейдерах есть еще функции '''l_spot''', '''l_point''', '''l_special''' и '''normal_hq''' аналогичного содержания, но явно просчитывающие поведение этого шейдера в условиях освещения&lt;br /&gt;
&lt;br /&gt;
* '''shader''' - вероятнее всего идентификатор шейдера в игре, содержимое этой переменной обычно представляет собой текстовую строку вроде &amp;quot;models_selflight&amp;quot; или &amp;quot;models/selflight&amp;quot;.&lt;br /&gt;
* '''t_base''' - путь к текстуре, которую следует выводить с помощью этого шейдера&lt;br /&gt;
* '''t_second''', '''t_detail''' - пути к другим текстурам, пока назначение их неизвестно.&lt;br /&gt;
&lt;br /&gt;
* '''shader:begin( &amp;quot;effects_gradient&amp;quot;, &amp;quot;effects_gradient_p&amp;quot; )''' - святая святых шейдера. Если точнее - создание объекта шейдера как такового. &lt;br /&gt;
:: '''effects_gradient''' - имя .vs файла используемого в этом шейдере&lt;br /&gt;
:: '''effects_gradient_p''' - имя .ps файла соответственно.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
После этой строки могут быть такие строки (они необязательны)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* ''': blend		( true, blend.srcalpha, blend.one )''' - настройка блендинга для текстур с альфой, например, полупрозрачные текстуры без применения этой строки будут выглядеть непрозрачными черными в прозрачных местах. Эти методы блендинга соответствуют переключателю в сдк, где варианты ALPHA-ADD, BLEND, SET и так далее. На примере выше блендинг соответствует положению ALPHA-ADD.&lt;br /&gt;
&lt;br /&gt;
:: '''true''' - может быть '''false''' - включение обработки текстур, то есть true - обработка включена, false, соответственно, выключена.&lt;br /&gt;
&lt;br /&gt;
:: '''blend.srcalpha''', '''blend.one''' - соответственно, методы блендинга, могут быть:&lt;br /&gt;
&lt;br /&gt;
 blend.one&lt;br /&gt;
 blend.zero&lt;br /&gt;
 null&lt;br /&gt;
&lt;br /&gt;
Также вот таблица, по которой можно выбрать остальные параметры блендинга, выбирая в таблице по порядку слева направо:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table style=&amp;quot;border: 1px solid #666;&amp;quot; width=&amp;quot;470px&amp;quot; height=&amp;quot;60px&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;amp;nbsp;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td bgcolor=&amp;quot;#666&amp;quot; width=&amp;quot;2px&amp;quot;&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;src&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td bgcolor=&amp;quot;#666&amp;quot; width=&amp;quot;2px&amp;quot;&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;color&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td height=&amp;quot;2px&amp;quot; bgcolor=&amp;quot;#666&amp;quot; colspan=&amp;quot;5&amp;quot;&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;inv&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td bgcolor=&amp;quot;#666&amp;quot; width=&amp;quot;2px&amp;quot;&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;dest&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td bgcolor=&amp;quot;#666&amp;quot; width=&amp;quot;2px&amp;quot;&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;alpha&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
то есть:&lt;br /&gt;
&lt;br /&gt;
 blend.srccolor&lt;br /&gt;
 blend.invsrccolor&lt;br /&gt;
 blend.destcolor&lt;br /&gt;
 blend.invdestcolor&lt;br /&gt;
 blend.srcalpha&lt;br /&gt;
 blend.invsrcalpha&lt;br /&gt;
 blend.destalpha&lt;br /&gt;
 blend.invdestalpha&lt;br /&gt;
&lt;br /&gt;
: где '''inv''' - инверсия, '''color''' - цвет, '''alpha''' - альфа (коэффициент прозрачности), '''src''' - параметр берется до шейдера, '''dest''' - параметр берется после шейдера.&lt;br /&gt;
&lt;br /&gt;
* ''': sorting ( 3, false )''' - порядок отрисовки поверхности по отношению к самому объекту, частью которого является поверхность.&lt;br /&gt;
&lt;br /&gt;
:: '''3''' - цифра порядка отрисовки, где 1 - за объектом, 2 - на уровне с объектом, 3 - спереди объекта (ближе к актору). Как правило, при тройке шейдируемая поверхность будет отрисовываться поверх всего, в том числе и оружия.&lt;br /&gt;
&lt;br /&gt;
:: '''false''' - соответствует галочке &amp;quot;srict sorting&amp;quot; в сдк. Пока назначение неизвестно.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* ''': aref ( false, 2 )''' - функция переключает режим тестирования пикселей по альфе. Первый аргумент - вкл/выкл, второй аргумент - значение альфы, используемое в сравнении альфы пикселей. Если пиксель проверку не прошел, он не будет отрисовываться. Как именно происходит проверка альфы, пока непонятно, функция проверки устанавливается где-то в движке.&lt;br /&gt;
&lt;br /&gt;
* ''': zb ( false, false )''' - устанавливает функцию сравнения пикселей при z-тесте и включает режим записи в z-буфер для текстуры. Первый аргумент - функция сравнения (false - D3DCMP_LESSEQUAL - пиксель проходит тест только, если его z меньше или равно текущему пикселю, true - D3DCMP_ALWAYS - пиксель всегда проходит тест). Второй аргумент - включение записи в z-буфер, тут вкл/выкл.&lt;br /&gt;
&lt;br /&gt;
* ''': fog ( false )''' - отключает освещение текстуры и включает для нее FOG DirectX.&lt;br /&gt;
&lt;br /&gt;
* ''': emissive ( true )''' - применяется в источниках освещения.&lt;br /&gt;
&lt;br /&gt;
* ''': distort ( true )''' - представляет из себя механизм искажений, аналогичный эффекту искажающегося воздуха в некоторых аномалиях, а также &amp;quot;линза&amp;quot; в главном меню над кнопками.&lt;br /&gt;
&lt;br /&gt;
* ''': wmark (true)''' - используется в валлмарках&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''shader : sampler( &amp;quot;s_base&amp;quot; )''' - создание буфера для помещения туда текстуры. Аргумент представляет собой идентификатор, получаемый ps и vs шейдерами, где будет фигурировать как predefined-переменная s_base.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Перечисленные ниже параметры могут быть только ниже сэмплерной строки!''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* ''': texture  ( t_base ) ''' - помещение в вышеобъявленный буфер текстуры. Аргумент этой ф-ции представляет собой путь к текстуре, так что вполне можно указать нечто вроде&lt;br /&gt;
&lt;br /&gt;
 : texture  ( &amp;quot;fx\\fx_sun&amp;quot; )&lt;br /&gt;
&lt;br /&gt;
чтобы в буфер воткнуть текстуру '''gamedata/textures/fx/fx_sun.dds'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Следующие функции устанавливают один из режимов адресации текстуры. Режим адресации определяет способ обработки текстурных координат при выходе их за пределы диапазона [0.0,1.0]&lt;br /&gt;
* ''': clamp()''' - режим адресации D3DTADDRESS_CLAMP. Значения текстурных координат, выходящие за рамки [0.0,1.0] обрезаются до 0.0 и 1.0 соответственно. Соответствует галке Texture Clamp в сдк. &lt;br /&gt;
&lt;br /&gt;
* ''': wrap ()''' - режим адресации D3DTADDRESS_WRAP. При выходе значений текстурных координат за пределы [0.0,1.0] от значений отнимается их целая часть. Другими словами, если у вас u,v получились [1.3, 2.5], в этом режиме семплирование текстуры будет происходит по координатам [0.3, 0.5].&lt;br /&gt;
&lt;br /&gt;
* ''': mirror ()''' - режим адресации D3DTADDRESS_MIRROR. При выходе значений текстурных координат за пределы [0.0,1.0] от значений отнимается их целая часть и остаток вычитается из 1.0. Если u,v получились [1.3, 2.6], в этом режиме семплирование текстуры будет происходит по координатам [0.7, 0.4].&lt;br /&gt;
&lt;br /&gt;
Функции установки фильтрации текстур:&lt;br /&gt;
&lt;br /&gt;
* ''': f_none ()''' - точечная фильтрация (то есть по сути, нет фильтрации)&lt;br /&gt;
&lt;br /&gt;
* ''': f_linear ()''' - линейная фильтрация&lt;br /&gt;
&lt;br /&gt;
* ''': f_bilinear ()''' - билинейная фильтрация&lt;br /&gt;
&lt;br /&gt;
* ''': f_trilinear ()''' - трилинейная фильтрация. На редкость бесполезная функция, потому что семплер по умолчанию создается с трилинейной фильтрацией&lt;br /&gt;
&lt;br /&gt;
* ''': f_anisotropic ()''' - анизотропная фильтрация.&lt;br /&gt;
&lt;br /&gt;
Помимо этих функций также присутствуют функции для &amp;quot;тонкой&amp;quot; настройки фильтрации:&lt;br /&gt;
Настройка magnification filter&lt;br /&gt;
&lt;br /&gt;
* ''': fmag_none ()''' - без фильтрации&lt;br /&gt;
&lt;br /&gt;
* ''': fmag_point ()''' - точечная фильтрация&lt;br /&gt;
&lt;br /&gt;
* ''': fmag_linear ()''' - линейная фильтрация&lt;br /&gt;
&lt;br /&gt;
Настройка minification filter&lt;br /&gt;
&lt;br /&gt;
* ''': fmin_none ()''' - без фильтрации&lt;br /&gt;
&lt;br /&gt;
* ''': fmin_point ()''' - точечная фильтрация&lt;br /&gt;
&lt;br /&gt;
* ''': fmin_linear ()''' - линейная фильтрация&lt;br /&gt;
&lt;br /&gt;
* ''': fmin_aniso ()''' - анизотропная фильтрация.&lt;br /&gt;
&lt;br /&gt;
Настройка mip filter&lt;br /&gt;
&lt;br /&gt;
* ''': fmip_none ()''' - без фильтрации&lt;br /&gt;
&lt;br /&gt;
* ''': fmip_point ()''' - точечная фильтрация&lt;br /&gt;
&lt;br /&gt;
* ''': fmip_linear ()''' - линейная фильтрация&lt;br /&gt;
&lt;br /&gt;
Разные функции:&lt;br /&gt;
&lt;br /&gt;
* ''': project()''' - функция выставляет флаг D3DTTFF_PROJECTED для преобразования текстурных координат перед растеризатором. При выставленном флаге все компоненты текстурных координат делятся на w-компоненту. Актуально только для ffp (R1, ps_1_x).&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Также в папке с шейдерами лежат еще файлы .s (именно такого имени - точка и эс), которые являются для всех *.s-файлов своеобразными заголовочными файлами, функции из файла .s доступны из файлов *.s . На данный момент там имеются функции printf, и закомментированные во втором рендере ф-ции l_point и l_spot, которые отвечают за создание точечного и неточечного источников света соответственно.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Статья создана участником cjayho'''&lt;br /&gt;
&lt;br /&gt;
[[Категория:Скрипты]]&lt;/div&gt;</summary>
		<author><name>91.218.192.254</name></author>	</entry>

	<entry>
		<id>http://stalkerin.gameru.net/wiki/index.php?title=%D0%A3%D0%B4%D0%B0%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5_%D0%B4%D0%BE%D0%B6%D0%B4%D1%8F</id>
		<title>Удаление дождя</title>
		<link rel="alternate" type="text/html" href="http://stalkerin.gameru.net/wiki/index.php?title=%D0%A3%D0%B4%D0%B0%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5_%D0%B4%D0%BE%D0%B6%D0%B4%D1%8F"/>
				<updated>2013-08-03T19:49:35Z</updated>
		
		<summary type="html">&lt;p&gt;91.218.192.254: оформление, дополнение&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Всем, у кого дождь и гроза вызывают раздражение или тупо жрут драгоценные fps. Методом проб и ошибок с применением нескольких итераций метода инженерного тыка выяснено, что баги и тормоза вызываются исключительно дождем, а другие погодные эффекты ни на что не влияют. Найден способ его (дождь) вырубить. Для этого необходимо: &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
1. Скачать Stalker Data Unpacker. (можно здесь http://stalkerin.gameru.net/downloads/stutils/unpacker.rar)&lt;br /&gt;
&lt;br /&gt;
2. Распаковать куда-нибудь (не в корневой каталог игры) архив '''gamedata.db0'''. &lt;br /&gt;
&lt;br /&gt;
3. Из полученных файлов сохранить только папку '''&amp;lt;Папка, куда распаковался архив&amp;gt; / config / weathers'''. Остальные можно убить. &lt;br /&gt;
&lt;br /&gt;
4. В каждом файле этой папки, название которого начинается с ''weather'', изменить значение параметра ''rain_density'' (плотность дождя) на 0.0. (Файлы открываются блокнотом.)&lt;br /&gt;
&lt;br /&gt;
[[Категория:Конфигурационные_файлы]]&lt;/div&gt;</summary>
		<author><name>91.218.192.254</name></author>	</entry>

	<entry>
		<id>http://stalkerin.gameru.net/wiki/index.php?title=%D0%94%D0%B5%D1%82%D0%B5%D0%BA%D1%82%D0%BE%D1%80,_%D0%BF%D0%BE%D0%BA%D0%B0%D0%B7%D1%8B%D0%B2%D0%B0%D1%8E%D1%89%D0%B8%D0%B9_%D1%80%D0%B0%D1%81%D0%BF%D0%BE%D0%BB%D0%BE%D0%B6%D0%B5%D0%BD%D0%B8%D0%B5_%D0%B0%D0%BD%D0%BE%D0%BC%D0%B0%D0%BB%D0%B8%D0%B9</id>
		<title>Детектор, показывающий расположение аномалий</title>
		<link rel="alternate" type="text/html" href="http://stalkerin.gameru.net/wiki/index.php?title=%D0%94%D0%B5%D1%82%D0%B5%D0%BA%D1%82%D0%BE%D1%80,_%D0%BF%D0%BE%D0%BA%D0%B0%D0%B7%D1%8B%D0%B2%D0%B0%D1%8E%D1%89%D0%B8%D0%B9_%D1%80%D0%B0%D1%81%D0%BF%D0%BE%D0%BB%D0%BE%D0%B6%D0%B5%D0%BD%D0%B8%D0%B5_%D0%B0%D0%BD%D0%BE%D0%BC%D0%B0%D0%BB%D0%B8%D0%B9"/>
				<updated>2013-08-03T19:47:21Z</updated>
		
		<summary type="html">&lt;p&gt;91.218.192.254: оформление&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;SoC&lt;br /&gt;
== Детектор, показывающий расположение аномалий ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Для создание детектора, который будет показывать расположение аномалий на радаре нам нужен всего два файла - '''items.ltx''' ('''gamedata\config\misc''') и '''string_table_enc_equipment.xml''' ('''gamedata\config\text\rus''')&lt;br /&gt;
Откройте '''items.ltx''' любым текстовым редактором и найдите такую строчку:&lt;br /&gt;
 &amp;lt;code&amp;gt;[detector_advances]:identity_immunities&amp;lt;/code&amp;gt; &lt;br /&gt;
Это сам детектор, его мы и будем подправлять.&lt;br /&gt;
Дефолтный вид детектора:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ini&amp;gt;&lt;br /&gt;
[detector_advances]:identity_immunities&lt;br /&gt;
GroupControlSection	= spawn_group&lt;br /&gt;
discovery_dependency =&lt;br /&gt;
$spawn 				= &amp;quot;devices\detector_advanced&amp;quot;&lt;br /&gt;
$prefetch 			= 32&lt;br /&gt;
class				= D_SIMDET&lt;br /&gt;
cform				= skeleton&lt;br /&gt;
visual				= equipments\item_datchik2.ogf&lt;br /&gt;
radius				= 10	;15&lt;br /&gt;
buzzer_radius		= 1.5&lt;br /&gt;
noise				= zone_mosquito_bald       ;detectors\geiger_noise_loop&lt;br /&gt;
buzzer				= zone_mosquito_bald       ;detectors\DA-2_alarm_loop&lt;br /&gt;
&lt;br /&gt;
ef_detector_type	= 1&lt;br /&gt;
&lt;br /&gt;
night_vision_particle		= damage_fx\heli_burn&lt;br /&gt;
&lt;br /&gt;
;описание распознаваемых детектором зон&lt;br /&gt;
zone_class_1		= zone_mosquito_bald&lt;br /&gt;
zone_sound_1_		= detectors\DA-2_beep1&lt;br /&gt;
zone_min_freq_1		= 0.1	;0.5&lt;br /&gt;
zone_max_freq_1		= 40&lt;br /&gt;
zone_map_location_1 = anomaly_zone_location&lt;br /&gt;
&lt;br /&gt;
zone_class_2		= zone_mincer&lt;br /&gt;
zone_sound_2_		= detectors\DA-2_beep1&lt;br /&gt;
zone_min_freq_2		= 0.1&lt;br /&gt;
zone_max_freq_2		= 20&lt;br /&gt;
zone_map_location_2 = anomaly_zone_location&lt;br /&gt;
&lt;br /&gt;
zone_class_3		= zone_radioactive&lt;br /&gt;
zone_sound_3_		= detectors\DA-2_beep1&lt;br /&gt;
zone_min_freq_3		= 1&lt;br /&gt;
zone_max_freq_3		= 20&lt;br /&gt;
zone_map_location_3 = anomaly_zone_location&lt;br /&gt;
&lt;br /&gt;
zone_class_4		= zone_gravi_zone&lt;br /&gt;
zone_sound_4_		= detectors\DA-2_beep1&lt;br /&gt;
zone_min_freq_4		= 0.5&lt;br /&gt;
zone_max_freq_4		= 30&lt;br /&gt;
zone_map_location_4 = anomaly_zone_location&lt;br /&gt;
&lt;br /&gt;
inv_name			= Detector&lt;br /&gt;
inv_name_short		= Detector&lt;br /&gt;
inv_weight			= 0&lt;br /&gt;
&lt;br /&gt;
inv_grid_width		= 1&lt;br /&gt;
inv_grid_height		= 1&lt;br /&gt;
inv_grid_x			= 15&lt;br /&gt;
inv_grid_y			= 7&lt;br /&gt;
cost				= 1000	;30&lt;br /&gt;
;belt				= true;&lt;br /&gt;
default_to_ruck		= false&lt;br /&gt;
slot				= 8&lt;br /&gt;
&amp;lt;/ini&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Начнем редактирование.&lt;br /&gt;
После строки &lt;br /&gt;
&amp;lt;code&amp;gt;visual = equipments\item_datchik2.ogf&amp;lt;/code&amp;gt; &lt;br /&gt;
добавим строку, которая будет отвечать за описание детектора: &lt;br /&gt;
&amp;lt;code&amp;gt;description = enc_equipment_devic_detect2&amp;lt;/code&amp;gt;&lt;br /&gt;
Теперь меняем строки &lt;br /&gt;
&amp;lt;code&amp;gt;inv_name = Detector&amp;lt;/code&amp;gt; &lt;br /&gt;
и &lt;br /&gt;
&amp;lt;code&amp;gt;inv_name_short = Detector&amp;lt;/code&amp;gt; &lt;br /&gt;
на строки такого вида:&lt;br /&gt;
&amp;lt;code&amp;gt;inv_name = detector_advances&amp;lt;/code&amp;gt;&lt;br /&gt;
 и &lt;br /&gt;
&amp;lt;code&amp;gt;inv_name_short = detector_advances&amp;lt;/code&amp;gt;&lt;br /&gt;
Строку &lt;br /&gt;
&amp;lt;code&amp;gt;slot = 8&amp;lt;/code&amp;gt; &lt;br /&gt;
меняем на &lt;br /&gt;
&amp;lt;code&amp;gt;slot = 1&amp;lt;/code&amp;gt;&lt;br /&gt;
''slot = 1'' означает то, что детектор будет работать, когда будет в слоте пистолета&lt;br /&gt;
&lt;br /&gt;
Что должно получиться в итоге:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ini&amp;gt;&lt;br /&gt;
[detector_advances]:identity_immunities&lt;br /&gt;
GroupControlSection	= spawn_group&lt;br /&gt;
discovery_dependency =&lt;br /&gt;
$spawn 				= &amp;quot;devices\detector_advanced&amp;quot;&lt;br /&gt;
$prefetch 			= 32&lt;br /&gt;
class				= D_SIMDET&lt;br /&gt;
cform				= skeleton&lt;br /&gt;
visual				= equipments\item_datchik2.ogf&lt;br /&gt;
description			= enc_equipment_devic_detect2&lt;br /&gt;
radius				= 10	;15&lt;br /&gt;
buzzer_radius		= 1.5&lt;br /&gt;
noise				= zone_mosquito_bald       ;detectors\geiger_noise_loop&lt;br /&gt;
buzzer				= zone_mosquito_bald       ;detectors\DA-2_alarm_loop&lt;br /&gt;
&lt;br /&gt;
ef_detector_type	= 1&lt;br /&gt;
&lt;br /&gt;
night_vision_particle		= damage_fx\heli_burn&lt;br /&gt;
&lt;br /&gt;
;описание распознаваемых детектором зон&lt;br /&gt;
zone_class_1		= zone_mosquito_bald&lt;br /&gt;
zone_sound_1_		= detectors\DA-2_beep1&lt;br /&gt;
zone_min_freq_1		= 0.1	;0.5&lt;br /&gt;
zone_max_freq_1		= 40&lt;br /&gt;
zone_map_location_1 = anomaly_zone_location&lt;br /&gt;
&lt;br /&gt;
zone_class_2		= zone_mincer&lt;br /&gt;
zone_sound_2_		= detectors\DA-2_beep1&lt;br /&gt;
zone_min_freq_2		= 0.1&lt;br /&gt;
zone_max_freq_2		= 20&lt;br /&gt;
zone_map_location_2 = anomaly_zone_location&lt;br /&gt;
&lt;br /&gt;
zone_class_3		= zone_radioactive&lt;br /&gt;
zone_sound_3_		= detectors\DA-2_beep1&lt;br /&gt;
zone_min_freq_3		= 1&lt;br /&gt;
zone_max_freq_3		= 20&lt;br /&gt;
zone_map_location_3 = anomaly_zone_location&lt;br /&gt;
&lt;br /&gt;
zone_class_4		= zone_gravi_zone&lt;br /&gt;
zone_sound_4_		= detectors\DA-2_beep1&lt;br /&gt;
zone_min_freq_4		= 0.5&lt;br /&gt;
zone_max_freq_4		= 30&lt;br /&gt;
zone_map_location_4 = anomaly_zone_location&lt;br /&gt;
&lt;br /&gt;
inv_name			= detector_advances&lt;br /&gt;
inv_name_short		= detector_advances&lt;br /&gt;
inv_weight			= 0&lt;br /&gt;
&lt;br /&gt;
inv_grid_width		= 1&lt;br /&gt;
inv_grid_height		= 1&lt;br /&gt;
inv_grid_x			= 15&lt;br /&gt;
inv_grid_y			= 7&lt;br /&gt;
cost				= 1000	;30&lt;br /&gt;
;belt				= true;&lt;br /&gt;
default_to_ruck		= false&lt;br /&gt;
slot				= 1&lt;br /&gt;
&amp;lt;/ini&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
С основной частью закончили, теперь нужно написать описание детектору.&lt;br /&gt;
Открываем '''string_table_enc_equipment.xml''' ('''gamedata\config\text\rus''')и в конце но не после последней строки ''&amp;lt;/string_table&amp;gt;''&lt;br /&gt;
вставляем наше описание&lt;br /&gt;
&lt;br /&gt;
&amp;lt;xml&amp;gt;&lt;br /&gt;
&amp;lt;string id=&amp;quot;detector_advances&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;text&amp;gt;Детектор обнаружения аномалий&amp;lt;/text&amp;gt;&lt;br /&gt;
&amp;lt;/string&amp;gt;&lt;br /&gt;
&amp;lt;string id=&amp;quot;enc_equipment_devic_detect2&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;text&amp;gt;Детектор помогает обнаружить аномальную активность.&amp;lt;/text&amp;gt;&lt;br /&gt;
&amp;lt;/string&amp;gt;&lt;br /&gt;
&amp;lt;/xml&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Для того, чтобы детектор был в игре, можно прописать его в продажу торговцам. ID детектора - ''detector_advances''.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
В создании кода детектора крайне помог этот мод (http://stalker-zone.ucoz.ru/load/3-1-0-12/), его автор *AntOFF* ,код из данного мода был дополнен, чтобы аномалии были видны на радаре.&lt;br /&gt;
&lt;br /&gt;
[[Категория:  Конфигурационные файлы]]&lt;/div&gt;</summary>
		<author><name>91.218.192.254</name></author>	</entry>

	<entry>
		<id>http://stalkerin.gameru.net/wiki/index.php?title=SoC._%D0%90%D0%B2%D1%82%D0%BE%D1%80%D0%B0%D0%B7%D0%B1%D0%BE%D1%80</id>
		<title>SoC. Авторазбор</title>
		<link rel="alternate" type="text/html" href="http://stalkerin.gameru.net/wiki/index.php?title=SoC._%D0%90%D0%B2%D1%82%D0%BE%D1%80%D0%B0%D0%B7%D0%B1%D0%BE%D1%80"/>
				<updated>2013-08-03T19:43:41Z</updated>
		
		<summary type="html">&lt;p&gt;91.218.192.254: оформление&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Всем привет.'''&lt;br /&gt;
&lt;br /&gt;
Задался я как-то целью сделать в &amp;quot;СТАЛКЕРе&amp;quot; (версия 1.004) машины, юзабельность которых &lt;br /&gt;
зависит от наличия в инвентаре ГГ конкретного предмета, а именно ключей от данного транспорта.&lt;br /&gt;
Спавн автотехники - пройденный этап,не буду заострять внимание,скажу лишь,что здесь привязал спавн машины к диалогу с коррумпированным майором на Кордоне. Файл '''dialogs_escape.xml''', строки:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;xml&amp;gt;&lt;br /&gt;
  &amp;lt;phrase id=&amp;quot;11&amp;quot;&amp;gt;&lt;br /&gt;
   esc_bridge_soldiers_start_11&lt;br /&gt;
  &amp;lt;action&amp;gt;esc_modify.spawn_niva&amp;lt;/action&amp;gt; - моя добавка&lt;br /&gt;
  &amp;lt;next&amp;gt;12&amp;lt;/next&amp;gt;&lt;br /&gt;
  &amp;lt;/phrase&amp;gt;&lt;br /&gt;
&amp;lt;/xml&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Прописал Ниву, прописал в файлик '''config\misc\item.ltx''' ключи от неё таким образом:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ini&amp;gt;&lt;br /&gt;
;;;;;;;;;;;;--ключи от нивы--;;;;;;;;;;;;&lt;br /&gt;
[niva_keys]:identity_immunities&lt;br /&gt;
GroupControlSection	= spawn_group&lt;br /&gt;
discovery_dependency =&lt;br /&gt;
$spawn                          = &amp;quot;devices\quest_items\niva_keys&amp;quot;&lt;br /&gt;
class                           = II_ATTCH&lt;br /&gt;
cform                           = skeleton&lt;br /&gt;
visual                          = equipments\item_minipda.ogf&lt;br /&gt;
radius                          = 1&lt;br /&gt;
description                     = item_niva_key&lt;br /&gt;
inv_name                        = item_car_key&lt;br /&gt;
inv_name_short                  = item_car_key_s&lt;br /&gt;
inv_weight                      = 0&lt;br /&gt;
inv_grid_width                  = 1&lt;br /&gt;
inv_grid_height                 = 1&lt;br /&gt;
inv_grid_x                      = 11&lt;br /&gt;
inv_grid_y                      = 23&lt;br /&gt;
cost                            = 0&lt;br /&gt;
&amp;lt;/ini&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Прописал в файл '''config\creatures\vehicles.ltx''',в блоке&amp;quot;Нивы&amp;quot; строчку вида:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
custom_data             = scripts\niva_data.ltx.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ясно, после этого - создал сам файл '''config\scripts\niva_data.ltx''', с содержимым:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ini&amp;gt;&lt;br /&gt;
[logic]&lt;br /&gt;
active = ph_car&lt;br /&gt;
[ph_car]&lt;br /&gt;
usable = {+actor_has_niva_key}&lt;br /&gt;
&amp;lt;/ini&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Добавил в '''info_l01escape.xml''' требующуюся инфопорцию:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;xml&amp;gt;&lt;br /&gt;
&amp;lt;info_portion id=&amp;quot;actor_has_niva_key&amp;quot;&amp;gt;&amp;lt;/info_portion&amp;gt;&lt;br /&gt;
&amp;lt;/xml&amp;gt;&lt;br /&gt;
&lt;br /&gt;
А дальше интересно - активировать проверку наличия у ГГ ключей додумался так: внедрил в скрипт '''escape_tasks.script''' с опросом &lt;br /&gt;
инфопорций свои строки:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lua&amp;gt;&lt;br /&gt;
function proceed()&lt;br /&gt;
local actor = db.actor&lt;br /&gt;
if    not has_alife_info(&amp;quot;tutorial_artefact_start&amp;quot;) and&lt;br /&gt;
not has_alife_info(&amp;quot;tutorial_artefact_gain&amp;quot;) and &lt;br /&gt;
actor:object(&amp;quot;af_blood_tutorial&amp;quot;) ~= nil&lt;br /&gt;
then&lt;br /&gt;
actor:give_info_portion(&amp;quot;tutorial_artefact_gain&amp;quot;)&lt;br /&gt;
end &lt;br /&gt;
-----------------------moi_mod--------------------&lt;br /&gt;
if     not has_alife_info(&amp;quot;actor_has_niva_key&amp;quot;) and&lt;br /&gt;
actor:object(&amp;quot;niva_keys&amp;quot;) ~= nil&lt;br /&gt;
then&lt;br /&gt;
actor:give_info_portion(&amp;quot;actor_has_niva_key&amp;quot;)&lt;br /&gt;
    --news_manager.send_tip(db.actor, &amp;quot;find_keys_info&amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
if  actor:object(&amp;quot;niva_keys&amp;quot;)== nil then&lt;br /&gt;
actor:disable_info_portion(&amp;quot;actor_has_niva_key&amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
----------------------------------------------------&lt;br /&gt;
.......и далее по оригиналу.&lt;br /&gt;
&amp;lt;/lua&amp;gt;&lt;br /&gt;
&lt;br /&gt;
(закомментил сообщение о находке ключей, так как оно является нам каждый раз после любой ближайшей загрузки уровня - не доработал:)&lt;br /&gt;
&amp;lt;br&amp;gt;Получилось в итоге вот что: актёр нашёл (купил) ключи, сел в машину и поехал, а потерял или выбросил (продал, пропил и т.д.) - внутрь не попасть, как ни пытайся.&lt;br /&gt;
&lt;br /&gt;
В моём моде:&lt;br /&gt;
На Кордоне у майора Кузнецова(под мостом) спавнится &amp;quot;Нива&amp;quot; и забытые на ящике с выпивкой - ключи от неё. ГГ платит подвыпившим военным за проход, и тут же, подобрав ключи, садится в машину и исчезает, оставив майора со товарищи в большом (сравнительно) убытке.&lt;br /&gt;
Второй вариант:&lt;br /&gt;
Всё то же самое, только военные соображают быстро и открывают огонь на поражение, лишь только актёр садится в &amp;quot;Ниву&amp;quot;. Хотя - если не тормозить - и тут успеваешь свинтить.&lt;br /&gt;
&lt;br /&gt;
Сие реализовано так - cама Нива спавнится мной прямо за мостом:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lua&amp;gt;&lt;br /&gt;
function spawn_niva()&lt;br /&gt;
alife():create(&amp;quot;vehicle_niva&amp;quot;, vector():set(58.205856,-2.393073,189.756988),345171,98)&lt;br /&gt;
-- ключи среди водки и закуски:&lt;br /&gt;
alife():create(&amp;quot;niva_keys&amp;quot;, vector():set(61.393852,-0.143696695,154.954849),349686,97)&lt;br /&gt;
end &lt;br /&gt;
&amp;lt;/lua&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В файле '''info_l01escape.xml''' акция &amp;quot;открыть огонь&amp;quot; привязана к сообщению Торговца об удачном пересечении ж\д насыпи (при условии, естественно, что герой взял чужие ключи):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;xml&amp;gt;&lt;br /&gt;
&amp;lt;info_portion id=&amp;quot;esc_find_railroad_passage_done&amp;quot;&amp;gt; - родная часть&lt;br /&gt;
&amp;lt;action&amp;gt;esc_modify.kill_thief&amp;lt;/action&amp;gt; - добавлено&lt;br /&gt;
&amp;lt;/info_portion&amp;gt;                        - родная часть&lt;br /&gt;
&amp;lt;/xml&amp;gt;&lt;br /&gt;
&lt;br /&gt;
т. е. добавлена ссылка на несуществующий пока скрипт '''esc_modify''' и функцию в нём ''kill_thief''.&lt;br /&gt;
&lt;br /&gt;
Скриптовая часть ('''scripts\esc_modify.script'''):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lua&amp;gt;&lt;br /&gt;
function kill_thief()&lt;br /&gt;
if has_alife_info(&amp;quot;actor_has_niva_key&amp;quot;) then&lt;br /&gt;
db.actor:give_info_portion(&amp;quot;esc_bridge_pass_fire&amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/lua&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Логично вот что: если ГГ не взял ключи (или взял, но спохватился и выбросил), то в спину ему никто не стрельнет, однако и машину уже не угнать.&lt;br /&gt;
&lt;br /&gt;
Времени тестировать особо нет.Прошу прощения за сырость исполнения, учитывая практически отсутствующие навыки программинга. Всё - благодаря статьям именитых моддеров на '''S.T.A.L.K.E.R Inside Wiki'''.&lt;br /&gt;
&lt;br /&gt;
===Автор===&lt;br /&gt;
&lt;br /&gt;
Всем respect, ваш '''J.DLRN''' (''e.delorean@land.ru'').&lt;br /&gt;
&lt;br /&gt;
[[Категория:Конфигурационные_файлы]]&lt;/div&gt;</summary>
		<author><name>91.218.192.254</name></author>	</entry>

	<entry>
		<id>http://stalkerin.gameru.net/wiki/index.php?title=CoP._%D0%A1%D0%BE%D0%B7%D0%B4%D0%B0%D0%BD%D0%B8%D0%B5_%D0%BF%D1%80%D0%BE%D0%B2%D0%BE%D0%B4%D0%BD%D0%B8%D0%BA%D0%BE%D0%B2</id>
		<title>CoP. Создание проводников</title>
		<link rel="alternate" type="text/html" href="http://stalkerin.gameru.net/wiki/index.php?title=CoP._%D0%A1%D0%BE%D0%B7%D0%B4%D0%B0%D0%BD%D0%B8%D0%B5_%D0%BF%D1%80%D0%BE%D0%B2%D0%BE%D0%B4%D0%BD%D0%B8%D0%BA%D0%BE%D0%B2"/>
				<updated>2013-08-03T19:36:22Z</updated>
		
		<summary type="html">&lt;p&gt;91.218.192.254: оформление&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Урок по созданию «проводников» и визуализации перехода на заранее подключенную локацию для STALKER Зов Припяти.&lt;br /&gt;
&lt;br /&gt;
[http://narod.ru/disk/19332547000/%D1%83%D1%80%D0%BE%D0%BA.rar.html Сам тутор и все измененные файлы к нему.]&lt;br /&gt;
&lt;br /&gt;
Цели урока:&lt;br /&gt;
1.	Создание перехода на заранее подключенную локацию&lt;br /&gt;
2.	Визуализация созданного перехода&lt;br /&gt;
3.	Использование вольных сталкеров с целью перемещения по локации&lt;br /&gt;
Описание урока:&lt;br /&gt;
В данном уроке мы создадим переход на заранее подключенную нами локацию,  установим на точку перехода аномалию «Пространственный Пузырь», используем вольных сталкеров для быстрого перемещения к нашей аномалии.&lt;br /&gt;
&lt;br /&gt;
Итак, преступим. &lt;br /&gt;
Свет погас, открывается занавес.&lt;br /&gt;
&lt;br /&gt;
== Акт первый, основной ;-)==&lt;br /&gt;
&lt;br /&gt;
Строго следуя рекомендациям БАТИ-STALKER`a создаем переход на нашу локацию(http://stalkerin.gameru.net/wiki/index.php/Подключение_локаций_к_ЧН_и_ЗП_с_помощью_программы_от_AMK_Team). Дальше идут цитаты (немного подправленные) из многим известного туториала вышеуказанного модмейкера ;-)&lt;br /&gt;
&lt;br /&gt;
Цитата:&lt;br /&gt;
Соединение с остальными уровнями. &lt;br /&gt;
&lt;br /&gt;
Предлагаю вам не терять зря времени, просто бегая по подключенной локации, а замерить координаты для создания перехода. Координаты будем снимать на 2-х локациях: на той с которой будем переходить и на той на которую вы хотите сделать переход соответственно. На каждой локации нам нужно снять по одной координате(координата местоположения самого перехода на первой локации и координата места в которое будет бросать при переходе на подключенную локацию). Как снять координаты, я думаю все знают, поэтому объяснять здесь не буду. (в комплект с данным уроком я поместил архив koord.rar со скриптом для снятия координат, это для тех кому лень искать).&lt;br /&gt;
&lt;br /&gt;
Мы отмерили все необходимые нам координаты. &lt;br /&gt;
&lt;br /&gt;
Затем распаковываем сделанный нами ранее all.spawn. Теперь в нужных нам локациях, в alife_ файлах (для данного примера файл alife_zaton.ltx) добавляем следующую секцию спавна: &lt;br /&gt;
(примечание от Freezer: в приведенном ниже коде имена и стартовые координаты указаны для уровня  Затон, сам переход расположен левой верхней области карты уровня справа от дорожки, а конечные координаты для подключенного уровня Янтарь, ГГ появляется в бункере у Сахарова)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ini&amp;gt;&lt;br /&gt;
[1] &lt;br /&gt;
; cse_abstract properties &lt;br /&gt;
section_name = level_changer &lt;br /&gt;
name = yan_actor_arrive_walk- уникальное имя&lt;br /&gt;
position = -278.19274902344,12.461790084839,621.68505859375 - координаты перехода&lt;br /&gt;
direction = 0,0,0 &lt;br /&gt;
cse_abstract__unk1_h16 = 0x1 &lt;br /&gt;
; cse_alife_object properties &lt;br /&gt;
game_vertex_id = 33  – геймвертексы перехода&lt;br /&gt;
distance = 0&lt;br /&gt;
level_vertex_id = 389502  – левелвертексы перехода&lt;br /&gt;
object_flags = 0xffffff3e&lt;br /&gt;
; cse_shape properties &lt;br /&gt;
shapes = shape0 &lt;br /&gt;
shape0:type = box &lt;br /&gt;
shape0:axis_x = 1.25219917297363,0,0 &lt;br /&gt;
shape0:axis_y = 0,3.09340000152588,0 &lt;br /&gt;
shape0:axis_z = 0,0,1.25219917297363 &lt;br /&gt;
shape0:offset = 0,0,0 &lt;br /&gt;
; cse_alife_space_restrictor properties &lt;br /&gt;
restrictor_type = 3 &lt;br /&gt;
; cse_alife_level_changer properties &lt;br /&gt;
dest_game_vertex_id = 934 – геймвертексы локи на которую ведет переход&lt;br /&gt;
dest_level_vertex_id = 73102 - левелвертексы локи на которую ведет переход&lt;br /&gt;
dest_position = 28.876106262207,-11.706871032715,-277.9711303710 - позиция куда кидает&lt;br /&gt;
dest_direction = 0,0,0 - поворот гг&lt;br /&gt;
dest_level_name = l07_yantar - на какую локу кидает&lt;br /&gt;
dest_graph_point = start_actor_01&lt;br /&gt;
silent_mode = 1 &lt;br /&gt;
; se_level_changer properties&lt;br /&gt;
&amp;lt;/ini&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Изменяем только те места, которые я прокомментировал, комментарии соответственно, удаляем. &lt;br /&gt;
Конец цитаты:&lt;br /&gt;
Итак сам переход мы создали можно собрать '''all.spawn''' и проверить работоспособность перехода.&lt;br /&gt;
Перейдем к следующему этапу.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Акт второй, Гламурный ;-) ==&lt;br /&gt;
&lt;br /&gt;
Переход то мы собрали, вот только он невидимый, поэтому добавим гламура и поставим на место перехода всем известную аномалию «Пространственный Пузырь» aka шарик-телепортатор.&lt;br /&gt;
Снова открываем alife_zaton.ltx (ибо переход мы разместили на нем), и добавляем следующую секцию:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ini&amp;gt;&lt;br /&gt;
[2]&lt;br /&gt;
; cse_abstract properties&lt;br /&gt;
section_name = space_restrictor&lt;br /&gt;
name = zat_teleport_sphere_to_yan – уникальное имя секции&lt;br /&gt;
position = -278.19274902344,12.461790084839,621.68505859375 – координаты шарика (они точно соответствуют координатам созданного нами ранее перехода)&lt;br /&gt;
direction = 0,0,0&lt;br /&gt;
&lt;br /&gt;
; cse_alife_object properties&lt;br /&gt;
game_vertex_id = 33 –геймвертекс шарика (соответствует геймвертексу перехода)&lt;br /&gt;
distance = 0&lt;br /&gt;
level_vertex_id = 389502 –левелвертекс шарика (соответствует левелвертексу перехода)&lt;br /&gt;
object_flags = 0xffffff3e&lt;br /&gt;
custom_data = &amp;lt;&amp;lt;END&lt;br /&gt;
[logic]&lt;br /&gt;
cfg = scripts\zaton\zat_teleport_sphere.ltx – уникальное имя используемого скрипта&lt;br /&gt;
END&lt;br /&gt;
&lt;br /&gt;
; cse_shape properties&lt;br /&gt;
shapes = shape0&lt;br /&gt;
shape0:type = sphere&lt;br /&gt;
shape0:offset = 0,0,0&lt;br /&gt;
shape0:radius = 1.40499997138977&lt;br /&gt;
&lt;br /&gt;
; cse_alife_space_restrictor properties&lt;br /&gt;
restrictor_type = 3&lt;br /&gt;
&amp;lt;/ini&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Сохраняем файл (если юзали контрол+цэ контрол+вэ незабываем удалить комменты).&lt;br /&gt;
&lt;br /&gt;
Открываем '''way_zaton.ltx''' в него добавляем следующую секцию:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ini&amp;gt;&lt;br /&gt;
[zat_teleport_sphere_to_yan]&lt;br /&gt;
points = p0&lt;br /&gt;
p0:name = wp00&lt;br /&gt;
p0:flags = 0x1&lt;br /&gt;
p0:position = -278.19274902344,12.461790084839,621.68505859375&lt;br /&gt;
p0:game_vertex_id = 33&lt;br /&gt;
p0:level_vertex_id = 389502&lt;br /&gt;
&amp;lt;/ini&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Думаю, что комменты по координатам не нужны. Обратите внимание на имя секции, оно соответствует уникальному имени в alife файле.&lt;br /&gt;
Все, пока с alife и way мы закончили, можно собрать '''all.spawn'''&lt;br /&gt;
&lt;br /&gt;
Далее необходимо создать скрипт для шарика, имя скрипта мы указали в '''alife''' файле. Итак, в папке с игрой в '''gamedata\configs\scripts\zaton''' создаем файл '''zat_teleport_sphere.ltx'''.&lt;br /&gt;
В файле пишем:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ini&amp;gt;&lt;br /&gt;
[logic]&lt;br /&gt;
active = sr_particle@ zat_teleport_sphere_to_yan – имя активного партикла&lt;br /&gt;
&lt;br /&gt;
[sr_particle@ zat_teleport_sphere_to_yan] – собственно начало самого партикла&lt;br /&gt;
name = anomaly2\anomaly_spatial_bubble_idle&lt;br /&gt;
path = zat_teleport_sphere_to_yan – имя секции в way файле в которой описан шарик&lt;br /&gt;
mode = 2&lt;br /&gt;
looped = true&lt;br /&gt;
&amp;lt;/ini&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Сохраняем файл по указанному пути, вспоминаем что юзали cntrl+c, cntr+v, снова открываем файл и удаляем мои комменты ;-)&lt;br /&gt;
&lt;br /&gt;
Если все сделано правильно, то можно запустить игру и насладиться красивейшим явлением, аномалией «Пространственный Пузырь», расположенной в точке нашего перехода.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Акт третий, Ленивый ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Итак, переход создан, визуализирован и радует нас своей красотой и функциональностью, но думаю, что за время всех проверок вы уже изрядно стерли кнопки на клаве, бегая по зоне пешком туда-сюда, поэтому, как говорил один известный пендосовский миллионер: «Я так хорошо выгляжу потому, что я никогда на стоял если можно сидеть и никогда не сидел если можно лежать». &lt;br /&gt;
Ну вот, запустили мы новую игру, давайте пробежим немного прямо. Кто это? Опа, нам на встречу идут пара неписей. Из беседы мы узнаем, что за энную сумму бабла они могут нас отвести хоть на край света, да вот досада эти два осла с автоматами ничерта не знают о нашей прекрасной аномалии «Пространственный Пузырь».&lt;br /&gt;
За чем же встало дело? Давайте просветим невежд, и в будущем будем на законных основаниях пользоваться их услугами.&lt;br /&gt;
Преступим.&lt;br /&gt;
Для начала снова замерим координаты на местности куда нас приведут npc (я снял координаты на пару метров левее самой аномалии).&lt;br /&gt;
Далее в файле '''alife_zaton.ltx''' добавим следующую секцию:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ini&amp;gt;&lt;br /&gt;
[3]&lt;br /&gt;
; cse_abstract properties&lt;br /&gt;
section_name = smart_terrain&lt;br /&gt;
name = zat_b1000 – уникальное имя смарт террана на который нас приведут неписи&lt;br /&gt;
position = -317.98794555664,19.28000831604,608.48858642578 –координаты конечной точки на которую нас приведут неписи&lt;br /&gt;
direction = 0,0,0&lt;br /&gt;
&lt;br /&gt;
; cse_alife_object properties&lt;br /&gt;
game_vertex_id = 212&lt;br /&gt;
distance = 0&lt;br /&gt;
level_vertex_id = 314120&lt;br /&gt;
object_flags = 0xffffff3e&lt;br /&gt;
custom_data = &amp;lt;&amp;lt;END&lt;br /&gt;
[smart_terrain]&lt;br /&gt;
cfg = scripts\zaton\smart\zat_b1000.ltx – уникальное имя используемого скрипта&lt;br /&gt;
END&lt;br /&gt;
&lt;br /&gt;
; cse_shape properties&lt;br /&gt;
shapes = shape0&lt;br /&gt;
shape0:type = sphere&lt;br /&gt;
shape0:offset = 0,0,0&lt;br /&gt;
shape0:radius = 2&lt;br /&gt;
&lt;br /&gt;
; cse_alife_space_restrictor properties&lt;br /&gt;
restrictor_type = 3&lt;br /&gt;
&lt;br /&gt;
; se_smart_terrain properties&amp;lt;/ini&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Сохраняем файл.&lt;br /&gt;
&lt;br /&gt;
Открываем '''way_zaton.ltx'''&lt;br /&gt;
Добавляем следующие секции:&lt;br /&gt;
&lt;br /&gt;
В данной секции пишем координаты куда нас должны привести&lt;br /&gt;
&amp;lt;ini&amp;gt;[zat_b1000_traveller_actor] ;Это координаты по которых после телепорта будет спаунится ГГ, пишутся они так [Имя_смарта_traveller_actor]&lt;br /&gt;
points = p0&lt;br /&gt;
p0:name = wp00&lt;br /&gt;
p0:position = -317.98794555664,19.28000831604,608.48858642578&lt;br /&gt;
p0:game_vertex_id = 212&lt;br /&gt;
p0:level_vertex_id = 314120&lt;br /&gt;
&amp;lt;/ini&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Все секции, приведенные ниже это - вейпойнты для сопровождающих неписей, они нужны иначе никто никуда не идет, а все стоят и  тупо гонят друг на друга, примерно так:&lt;br /&gt;
 ГГ: Я ж тебе сволочь денег дал, пошли!!!&lt;br /&gt;
Непись: Да чет лениво мне как-то… &lt;br /&gt;
ГГ: Тогда бабло верни!!!! &lt;br /&gt;
Непись: Какое такое бабло? &lt;br /&gt;
В это время движок уже отключил аи и управление, и как результат, ГГ кипит от злости за то, что его банально кинули на бабки, но даже в рожу неписю дать не может, а тот, скотина, стоит и ухмыляется. Вот такую картину я лицезрел пока не добавил нижеприведенные секции.&lt;br /&gt;
Координаты в них я не менял, а секции банально скопировал из другого места, поэтому я иду к аномалии «Пространственный Пузырь», а сопровождающие неписи &amp;quot;идут лесом&amp;quot;, то есть к аномалии коготь (для желающих лицезреть проводников рядом с собой в конечной точке прибытия, небольшое домашнее задание по доработке координат в нижеприведенных секциях)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ini&amp;gt;&lt;br /&gt;
[zat_b1000_traveller_squad] ; Это координаты по которых после телепорта будут спаунится НПС, пишутся они [имя_смарта_traveller_squad]&lt;br /&gt;
points = p0,p1&lt;br /&gt;
p0:name = wp00&lt;br /&gt;
p0:position = -24.9449501037598,1.29261004924774,-196.022598266602&lt;br /&gt;
p0:game_vertex_id = 56&lt;br /&gt;
p0:level_vertex_id = 895313&lt;br /&gt;
p0:links = p1(1)&lt;br /&gt;
&lt;br /&gt;
p1:name = wp01&lt;br /&gt;
p1:position = -26.4207763671875,1.04062795639038,-194.030059814453&lt;br /&gt;
p1:game_vertex_id = 56&lt;br /&gt;
p1:level_vertex_id = 892596&lt;br /&gt;
&lt;br /&gt;
;;; Ниже Приведени не совсем нужные вейпоинты, это уже работа для НПС на самом смарте. Если у вас на смарте уже есть работа, то эти секции ниже не нужны. &lt;br /&gt;
;;; В принципе если даже работ на смарте нет, то работать будет, НПС в ужасе разбегутся на пару метров и будут тупо по тупому сидеть =).&lt;br /&gt;
&lt;br /&gt;
[zat_b1000_walker_1_look]&lt;br /&gt;
points = p0&lt;br /&gt;
p0:name = wp00|a=sit_ass&lt;br /&gt;
p0:flags = 0x1&lt;br /&gt;
p0:position = -35.1018524169922,0.350845992565155,-193.619186401367&lt;br /&gt;
p0:game_vertex_id = 56&lt;br /&gt;
p0:level_vertex_id = 876236&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[zat_b1000_walker_1_walk]&lt;br /&gt;
points = p0&lt;br /&gt;
p0:name = wp00&lt;br /&gt;
p0:flags = 0x1&lt;br /&gt;
p0:position = -33.450439453125,0.419611006975174,-192.414947509766&lt;br /&gt;
p0:game_vertex_id = 56&lt;br /&gt;
p0:level_vertex_id = 879043&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[zat_b1000_walker_2_look]&lt;br /&gt;
points = p0&lt;br /&gt;
p0:name = wp00|a=sit&lt;br /&gt;
p0:flags = 0x1&lt;br /&gt;
p0:position = -35.8835983276367,0.317862987518311,-193.98469543457&lt;br /&gt;
p0:game_vertex_id = 56&lt;br /&gt;
p0:level_vertex_id = 874818&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[zat_b1000_walker_2_walk]&lt;br /&gt;
points = p0&lt;br /&gt;
p0:name = wp00&lt;br /&gt;
p0:flags = 0x1&lt;br /&gt;
p0:position = -35.9317092895508,0.310889005661011,-191.664642333984&lt;br /&gt;
p0:game_vertex_id = 56&lt;br /&gt;
p0:level_vertex_id = 874821&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[zat_b1000_walker_3_look]&lt;br /&gt;
points = p0&lt;br /&gt;
p0:name = wp00&lt;br /&gt;
p0:flags = 0x1&lt;br /&gt;
p0:position = -35.1221542358398,0.349720001220703,-193.500946044922&lt;br /&gt;
p0:game_vertex_id = 56&lt;br /&gt;
p0:level_vertex_id = 876237&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[zat_b1000_walker_3_walk]&lt;br /&gt;
points = p0&lt;br /&gt;
p0:name = wp00&lt;br /&gt;
p0:flags = 0x1&lt;br /&gt;
p0:position = -33.0930519104004,0.432388007640839,-191.15592956543&lt;br /&gt;
p0:game_vertex_id = 56&lt;br /&gt;
p0:level_vertex_id = 880435&lt;br /&gt;
&amp;lt;/ini&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Сохраняем файл. &lt;br /&gt;
ЗЫ: удалите мои Коментарии при сборке '''all.spawn'''!&lt;br /&gt;
Можно собирать '''all.spawn'''.&lt;br /&gt;
&lt;br /&gt;
Теперь вспомним о том что мы упоминали некий уникальный скрипт, итак создадим его.&lt;br /&gt;
В папке с игрой '''gamedata\configs\scripts\zaton\smart''' создадим файл '''zat_b1000.ltx'''&lt;br /&gt;
В нем пишем:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ini&amp;gt;&lt;br /&gt;
[smart_terrain]&lt;br /&gt;
squad_id = 32&lt;br /&gt;
max_population = 1&lt;br /&gt;
&lt;br /&gt;
[exclusive]&lt;br /&gt;
;;; Секции которые здесь были я удалил потому-что это вообще эксклюзивные работы НПС в смарте, и они здесь не нужны(именно те которые были тут).&lt;br /&gt;
&amp;lt;/ini&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
С содержимым файла разбираться времени не было, работает и ладно, оно тупо скопировано из другого подобного файла, так что вот вам еще одно домашнее задание: разберитесь для чего нужны последние 3 строки в этом файле. (да я лентяй ну и что ;-) прим. автора)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Далее в папке с распакованной геймдатой '''gamedata\configs\text\rus''', находим файл '''st_land_names.xml''' и кладем его в папку с игрой путь '''gamedata\configs\text\rus'''.&lt;br /&gt;
Открываем скопированный файл и добавляем в него следующую секцию:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;xml&amp;gt;&lt;br /&gt;
&amp;lt;string id=&amp;quot;st_zat_b1000_name&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;text&amp;gt;Пространственный Пузырь&amp;lt;/text&amp;gt;&lt;br /&gt;
&amp;lt;/xml&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Сохраняем файл.&lt;br /&gt;
&lt;br /&gt;
Далее чешем  в папку с распакованной геймдатой, там в '''gamedata\configs\misc\'''  находим '''travel_manager.ltx''' и по аналогии с предыдущим файлом копируем его в папку с игрой. &lt;br /&gt;
Открываем '''travel_manager.ltx''' &lt;br /&gt;
Находим секции:  «идентификатор st_&amp;lt;комьюнити&amp;gt;_zaton_smart_name_1»&lt;br /&gt;
Пишем туда:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
zat_b1000 = st_stalker_zat_b1000&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Далее ниже находим:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
[traveler]		; Перечень точек, куда проводники могут отвести за бабосы.&lt;br /&gt;
zat_stalker_base_smart	; name смарта&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
и пишем туда:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
zat_b1000&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ну и в конце:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
[zat_b1000]&lt;br /&gt;
level = zaton&lt;br /&gt;
name = st_zat_b1000_name&lt;br /&gt;
condlist = true&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Все, сохраняем и запускаем игру!!!!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Авторы ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ну вот, мы снова начали новую игру, давайте снова подойдем к известным нам ранее неписям и узнаем куда же они смогут нас отвести.&lt;br /&gt;
О ЧУДО!!!! НЕПИСИ ЗНАЮТ О АНОМАЛИИ «Пространственный Пузырь»!!!!&lt;br /&gt;
&lt;br /&gt;
Прогуляемся? ;-)&lt;br /&gt;
&lt;br /&gt;
Конец третьего акта. Занавес. Бурные аплодисменты. Благодарности и цветы для: '''Freezer и БАТЯ-STALKER''' …&lt;br /&gt;
&lt;br /&gt;
Успехов вам в написании собственных «сказок»!!!!&lt;br /&gt;
&lt;br /&gt;
'''Авторы и ©: Александр Левашов aka Freezer при огромной поддержке БАТЯ-STALKER. Mesnik - подредактировал, прокоментировал некоторые аспекты и поудалял не нужные секции.'''&lt;br /&gt;
&lt;br /&gt;
Зы: для лентяев (таких как я) прилагаю все описанные выше файлы скриптов.&lt;br /&gt;
Зы Зы: все вопросы и предложения на Freezer_s@mail.ru с темой «модострой».&lt;br /&gt;
&lt;br /&gt;
[[Категория:Конфигурационные файлы]]&lt;/div&gt;</summary>
		<author><name>91.218.192.254</name></author>	</entry>

	<entry>
		<id>http://stalkerin.gameru.net/wiki/index.php?title=CoP._%D0%A1%D0%BE%D0%B7%D0%B4%D0%B0%D0%BD%D0%B8%D0%B5_%D1%80%D0%B5%D0%B0%D0%BA%D1%82%D0%B8%D0%B2%D0%BD%D1%8B%D1%85_%D0%B2%D1%8B%D1%81%D1%82%D1%80%D0%B5%D0%BB%D0%BE%D0%B2</id>
		<title>CoP. Создание реактивных выстрелов</title>
		<link rel="alternate" type="text/html" href="http://stalkerin.gameru.net/wiki/index.php?title=CoP._%D0%A1%D0%BE%D0%B7%D0%B4%D0%B0%D0%BD%D0%B8%D0%B5_%D1%80%D0%B5%D0%B0%D0%BA%D1%82%D0%B8%D0%B2%D0%BD%D1%8B%D1%85_%D0%B2%D1%8B%D1%81%D1%82%D1%80%D0%B5%D0%BB%D0%BE%D0%B2"/>
				<updated>2013-08-03T19:31:02Z</updated>
		
		<summary type="html">&lt;p&gt;91.218.192.254: оформление, орфография&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Идея конечно попахивает бредом. Хотя в моде над которым сейчас тружусь я её реализовал.&lt;br /&gt;
&lt;br /&gt;
Суть такого нововведения в том что бы подстволшьник мог стрелять реактивными гранатами-выстрелами (аля ОГ-7В)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Приступим!!!'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
1) Открываем '''configs/weapons/weapons.ltx''' и копируем секцию описания выстрела M-203:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;ini&amp;gt;[ammo_m209]:ammo_base&lt;br /&gt;
 GroupControlSection	= spawn_group&lt;br /&gt;
 discovery_dependency =&lt;br /&gt;
 $spawn			= &amp;quot;weapons\ammo\ammo_m209&amp;quot; ; option for Level Editor&lt;br /&gt;
 class			= S_M209&lt;br /&gt;
 cform           = skeleton&lt;br /&gt;
 visual          = dynamics\weapons\wpn_ammo\ammo_m209.ogf&lt;br /&gt;
 description		= ammo-m209_descr&lt;br /&gt;
 slot = -1&lt;br /&gt;
 $prefetch 		= 64&lt;br /&gt;
 &lt;br /&gt;
 cost			= 3500&lt;br /&gt;
 &lt;br /&gt;
 box_size		= 1&lt;br /&gt;
 &lt;br /&gt;
 inv_name		= ammo-m209&lt;br /&gt;
 inv_name_short	= ammo-m209_s&lt;br /&gt;
 inv_weight		= 0.1&lt;br /&gt;
 &lt;br /&gt;
 inv_grid_width		= 1&lt;br /&gt;
 inv_grid_height		= 1&lt;br /&gt;
 inv_grid_x			= 5&lt;br /&gt;
 inv_grid_y			= 13&lt;br /&gt;
 &lt;br /&gt;
 kill_msg_x			= 61&lt;br /&gt;
 kill_msg_y			= 232&lt;br /&gt;
 kill_msg_width		= 19&lt;br /&gt;
 kill_msg_height		= 22&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 k_dist			= 1&lt;br /&gt;
 k_disp			= 1&lt;br /&gt;
 k_hit			= 1&lt;br /&gt;
 k_impulse		= 1&lt;br /&gt;
 k_pierce		= 0.25&lt;br /&gt;
 k_ap			= 0.25&lt;br /&gt;
 impair			= 1&lt;br /&gt;
 buck_shot		= 0&lt;br /&gt;
 tracer			= off&lt;br /&gt;
 wm_size         = 0.05&lt;br /&gt;
 &lt;br /&gt;
 fake_grenade_name = wpn_fake_missile2&lt;br /&gt;
 &lt;br /&gt;
 ;могут ли боеприпасы быть неограниченными : 1 - могут, 0 - не могут&lt;br /&gt;
 can_be_unlimited = true ;false&amp;lt;/ini&amp;gt;&lt;br /&gt;
&lt;br /&gt;
И перепишем её:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;ini&amp;gt;[ammo_m209rocket]:ammo_base&lt;br /&gt;
 GroupControlSection	= spawn_group&lt;br /&gt;
 discovery_dependency =&lt;br /&gt;
 $spawn			= &amp;quot;weapons\ammo\ammo_m209rocket&amp;quot; ; option for Level Editor&lt;br /&gt;
 class			= S_M209&lt;br /&gt;
 cform           = skeleton&lt;br /&gt;
 visual          = dynamics\weapons\wpn_ammo\ammo_m209.ogf&lt;br /&gt;
 description		= ammo-m209rocket_descr&lt;br /&gt;
 slot = -1&lt;br /&gt;
 $prefetch 		= 64&lt;br /&gt;
 &lt;br /&gt;
 cost			= 7500&lt;br /&gt;
 &lt;br /&gt;
 box_size		= 1&lt;br /&gt;
 &lt;br /&gt;
 inv_name		= ammo-m209rocket&lt;br /&gt;
 inv_name_short	= ammo-m209rocket_s&lt;br /&gt;
 inv_weight		= 0.15&lt;br /&gt;
 &lt;br /&gt;
 inv_grid_width		= 1&lt;br /&gt;
 inv_grid_height		= 1&lt;br /&gt;
 inv_grid_x			= 5&lt;br /&gt;
 inv_grid_y			= 13&lt;br /&gt;
 &lt;br /&gt;
 kill_msg_x			= 61&lt;br /&gt;
 kill_msg_y			= 232&lt;br /&gt;
 kill_msg_width		= 19&lt;br /&gt;
 kill_msg_height		= 22&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 k_dist			= 1&lt;br /&gt;
 k_disp			= 1&lt;br /&gt;
 k_hit			= 1&lt;br /&gt;
 k_impulse		= 1&lt;br /&gt;
 k_pierce		= 0.25&lt;br /&gt;
 k_ap			= 0.25&lt;br /&gt;
 impair			= 1&lt;br /&gt;
 buck_shot		= 0&lt;br /&gt;
 tracer			= off&lt;br /&gt;
 wm_size         = 0.05&lt;br /&gt;
 &lt;br /&gt;
 fake_grenade_name = wpn_fake_missile13&lt;br /&gt;
 &lt;br /&gt;
 ;могут ли боеприпасы быть неограниченными : 1 - могут, 0 - не могут&lt;br /&gt;
 can_be_unlimited = true ;false&amp;lt;/ini&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Как видите, здесь мы поменяли только системное имя, ссылки на описание, вес, стоимость и '''ссылку на fake_missile''' А вот это и есть основа всего =)&lt;br /&gt;
&lt;br /&gt;
Путем долгих разборов выяснилось, что подствольник, как таковой, не стреляет, а лишь запускает функцию ''fake_missile'' c определенными парраметрами.&lt;br /&gt;
&lt;br /&gt;
Следовательно, в этом же файле чуть ниже мы видим описания конкретных fake'ов. Так вот, после всех родных fake'ов мы вставим вот такой вот:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;ini&amp;gt;[wpn_fake_missile13]:identity_immunities,default_weapon_params&lt;br /&gt;
 $prefetch 			= 32&lt;br /&gt;
 visual              = dynamics\weapons\wpn_ammo\ammo_m209.ogf&lt;br /&gt;
 cform               = skeleton&lt;br /&gt;
 class               = G_FAKE&lt;br /&gt;
 &lt;br /&gt;
 inv_weight			= 0&lt;br /&gt;
 &lt;br /&gt;
 cost				= 150&lt;br /&gt;
 &lt;br /&gt;
 blast				= 2.00 ;Взрывная волна(значение влияет на эффект размазанности если ГГ попал в радиус)&lt;br /&gt;
 blast_r				= 15 ;Радиус взрывной волны&lt;br /&gt;
 blast_impulse		= 350 ;Сила с которой волна раскидывает физические объекты&lt;br /&gt;
 ;delete&lt;br /&gt;
 blast_impulse_factor = 1 ;Судя по всему наличие самой волны (типа 1=true 0=false)&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 frags				= 30 ;Осколки(тут прописано количество онных)&lt;br /&gt;
 frags_r				= 20 ;На какое растояние полетят осколки(желательно делать больше blast_r)&lt;br /&gt;
 frag_hit			= 0.50 ;Повреждение наносимое одним осколком&lt;br /&gt;
 frag_hit_impulse	= 50 ;Сила с которой осколок толкнет физический объект&lt;br /&gt;
 &lt;br /&gt;
 hit_type_blast		= explosion ;Тип урона взрывной волны&lt;br /&gt;
 hit_type_frag		= fire_wound ;Тип урона осколков&lt;br /&gt;
 &lt;br /&gt;
 up_throw_factor		= 0.7 ;Х.з.&lt;br /&gt;
 &lt;br /&gt;
 ;trail				= weapons\rpg_trail_01, weapons\rpg_trail_02&lt;br /&gt;
 &lt;br /&gt;
 explode_particles	= explosions\explosion_01 ;Визуал взрыва&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 light_color		    = 1.9,1.4,0.5 ;Цвет вспышки при взрыве&lt;br /&gt;
 light_range		    = 14.0 ;Яркость вспышки&lt;br /&gt;
 light_time 		    = 0.85 ;Время свечения(60.0 = 10сек)&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 ph_mass			 = 5 ;Физическая масса&lt;br /&gt;
 ;engine_f			= 530&lt;br /&gt;
 ;engine_u			= 90&lt;br /&gt;
 &lt;br /&gt;
 jump_height = 1 ;Подпрыгивание гранаты перед взрывом&lt;br /&gt;
 &lt;br /&gt;
 ;трассы от осколков&lt;br /&gt;
 fragment_speed		= 100 ;Скорость полёта осколков&lt;br /&gt;
 &lt;br /&gt;
 wm_size         	= 0.05 ;Размер отверстия от осколка(на стенах и т.д.)&lt;br /&gt;
 ;wallmarks&lt;br /&gt;
 wallmark_section		 = explosion_marks&lt;br /&gt;
 explode_duration		 = 5		;подолжительность взрыва (с)&lt;br /&gt;
 &lt;br /&gt;
 ;звуки&lt;br /&gt;
 snd_explode = weapons\f1_explode ;Звук взрыва&lt;br /&gt;
 snd_fly_sound	= weapons\rocket_fly ;Звук полета(работы двигателя)&lt;br /&gt;
 &lt;br /&gt;
 ;свойства которые читаются, но не используются&lt;br /&gt;
 inv_name		= ammo-vog-25p&lt;br /&gt;
 inv_name_short	= ammo-vog-25p&lt;br /&gt;
 inv_weight		= .2&lt;br /&gt;
 &lt;br /&gt;
 inv_grid_width		= 1&lt;br /&gt;
 inv_grid_height		= 1&lt;br /&gt;
 inv_grid_x			= 19&lt;br /&gt;
 inv_grid_y			= 9&lt;br /&gt;
 &lt;br /&gt;
 kill_msg_x			= 38&lt;br /&gt;
 kill_msg_y			= 233&lt;br /&gt;
 kill_msg_width		= 21&lt;br /&gt;
 kill_msg_height		= 22&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;&lt;br /&gt;
 ;; Свойства CustomRocket&lt;br /&gt;
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;&lt;br /&gt;
 engine_present				= true		;присутствует ли в ракете двигатель&lt;br /&gt;
 engine_work_time			= 3000		;время работы двигателя (в милисекундах)&lt;br /&gt;
 engine_impulse				= 300		;разгонная сила двигателя&lt;br /&gt;
 engine_impulse_up			= 133,906	;подъёмная сила двигателя( установлена сила при которой снаряд немного опускается)&lt;br /&gt;
 engine_particles 			= weapons\rpg_trail_00 ;визуал работы двигателя&lt;br /&gt;
 lights_enabled 		= true			;свет вокруг ракеты, во время полета&lt;br /&gt;
 trail_light_color 	= 0.6,0.5,0.3 ;цвет освещения во время полёта&lt;br /&gt;
 trail_light_range 	= 8.0 ;яркость освещения во время полета&lt;br /&gt;
 force_explode_time  = 10000 ;время в милисекундах через которое снаряд взорвется не достигнув цели(типа если пальнуть вверх)&lt;br /&gt;
&amp;lt;/ini&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Сохраняем '''weapons.ltx'''&lt;br /&gt;
&lt;br /&gt;
2)Добавление к оружию. Откроем для примера '''w_fn2000.ltx''' и найдем строку:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;code&amp;gt;grenade_class			= ammo_m209&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
И поменяем на:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;code&amp;gt;grenade_class			= ammo_m209, ammo_m209rocket&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Сохраняем '''w_fn2000.ltx'''&lt;br /&gt;
&lt;br /&gt;
3)Идем в '''gamedata\configs\text\rus''' и открываем '''st_items_weapons.xml'''&lt;br /&gt;
&lt;br /&gt;
В нем по анологии создаём секции содержащие:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;code&amp;gt;ammo-m209rocket_descr ;Описание&lt;br /&gt;
 ammo-m209rocket ;Имя в инвентаре&lt;br /&gt;
 ammo-m209rocket_s ;Имя в слоте&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Вот и всё. Теперь если дать ГГ ФН-2000 и эти гранаты он сможет с лёгкостью разделаться с любым врагом =)&lt;br /&gt;
&lt;br /&gt;
Автор: [[Участник:WincentDark69|WincentDark69]]&lt;br /&gt;
&lt;br /&gt;
[[Категория:Конфигурационные_файлы]]&lt;/div&gt;</summary>
		<author><name>91.218.192.254</name></author>	</entry>

	<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_%D0%BD%D0%BE%D0%B2%D0%BE%D0%B3%D0%BE_%D0%BE%D1%80%D1%83%D0%B6%D0%B8%D1%8F</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_%D0%BD%D0%BE%D0%B2%D0%BE%D0%B3%D0%BE_%D0%BE%D1%80%D1%83%D0%B6%D0%B8%D1%8F"/>
				<updated>2013-08-03T19:27:10Z</updated>
		
		<summary type="html">&lt;p&gt;91.218.192.254: оформление&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;В этой статье мы научимся создавать новые образцы вооружения. Для начала, мы будем использовать модели из оригинальной игры. Если вы хотите создать оружие, имеющее уникальный внешний вид, ознакомьтесь с [[Создание моделей и их добавление в игру|уроком]] по созданию моделей.&lt;br /&gt;
&lt;br /&gt;
Добавим в игру '''АК101'''.&lt;br /&gt;
&lt;br /&gt;
==Внешний вид==&lt;br /&gt;
&lt;br /&gt;
Позаботимся о том, чтобы наше оружие отличалось внешне от того же '''АК74'''.&lt;br /&gt;
&lt;br /&gt;
===Текстуры===&lt;br /&gt;
&lt;br /&gt;
Нарисуем для оружия новую текстуру. Подробно останавливаться на этом процессе не буду, ознакомьтесь с примером, приведенным [[Изменение текстур#Изменение текстур моделей|здесь]]. Итак, основываясь на текстуре '''АК74''', мы сделали вот такую текстуру:&lt;br /&gt;
&lt;br /&gt;
[[Изображение:500px-AK101 texture.jpg]]&lt;br /&gt;
&lt;br /&gt;
Файлы текстур мы назвали:&lt;br /&gt;
&lt;br /&gt;
* '''wpn_ak10.dds'''&lt;br /&gt;
* '''wpn_ak10_bump#.dds'''&lt;br /&gt;
* '''wpn_ak10_bump.dds'''&lt;br /&gt;
&lt;br /&gt;
===Модели===&lt;br /&gt;
&lt;br /&gt;
Новых моделей мы пока делать не станем, просто воспользуемся дублированными моделями от '''АК74'''. Скопируем папку:&lt;br /&gt;
&lt;br /&gt;
'''gamedata\meshes\weapons\ak74\''' &lt;br /&gt;
&lt;br /&gt;
И назовем её '''ak-101'''. Содержимое, соответственно, переименуем в:&lt;br /&gt;
&lt;br /&gt;
* '''wpn_ak101.ogf'''&lt;br /&gt;
* '''wpn_ak101_hud.ogf'''.&lt;br /&gt;
&lt;br /&gt;
Теперь пропишем в эти модели созданные нами текстуры. Способ описан [[Изменение текстур#Создание новых visual для использования с новыми объектами|здесь]]'''.&lt;br /&gt;
&lt;br /&gt;
P.S. от Кепа: Вобще, если вы создаёте новое оружие на основе старой модели, то удобней будет прописывать его через файл gamedata\config\misc\unique_items.ltx (в Тени чернобыля). В Чистом небе уникальные стволы лежат в файлах оружия.&lt;br /&gt;
Смысл в том, что вам не нужно бутет переписывать все значения оружия в новый файл, а просто надо добавить ссылки на новые текстуры и описания, и перечислить свойства, которые Вы хотите заменить. Кроме того, создавая отдельный файл модели для нового оружия Вы тупо загружаете одну и туже информацию в память по второму кругу (это нехорошо, да). Всё остальное надо делать также как написано далее.&lt;br /&gt;
&lt;br /&gt;
Если создаете оружие с новой моделью то обязательно не оставляйте её без изменений.Почему-то в игре не может быть двух оружий с одинаковыми моделями.И еще-если вы создаете прототипное оружие(меняете часть конфигов) то обязательно кладите конфиг в соответствующий файл(в ЧН и ЗП это файл с оружием-прототипом,а в ТЧ unique_items) иначе при загрузке игра будет вылетать,примерно так:&lt;br /&gt;
argument:can not find section 'название вашего оружия'&lt;br /&gt;
&lt;br /&gt;
===Иконки===&lt;br /&gt;
&lt;br /&gt;
Добавим в игру иконки, которыми оружие будет отображаться в инвентаре. Способ подробно описан [[Изменение текстур#Изменение иконок предметов|здесь]].&lt;br /&gt;
&lt;br /&gt;
Вот, что получилось в конечном итоге:&lt;br /&gt;
&lt;br /&gt;
[[Изображение:500px-AK101 icon.jpg]]&lt;br /&gt;
&lt;br /&gt;
==Конфиги==&lt;br /&gt;
&lt;br /&gt;
Новое оружие мы будем делать на базе оригинальных конфигурационных файлов. Создадим '''АК101''' на базе конфигов '''АК74'''. &lt;br /&gt;
&lt;br /&gt;
===Свойства оружия===&lt;br /&gt;
&lt;br /&gt;
Скопируем файл из папки:&lt;br /&gt;
&lt;br /&gt;
'''gamedata\config\weapons\ak74.ltx'''&lt;br /&gt;
&lt;br /&gt;
Назовем его '''ak101.ltx'''.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Отредактируем свойства по своему усмотрению (но лучше - в соответствии с достоверной информацией о характеристиках оружия, т.к. '''АК101''' - всё-таки оружие реально существующее). Редактирование конфигов оружия подробно описано в отдельном [[Редактирование оружия|уроке]]. В данном случае конфиг был составлен таким образом:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ini&amp;gt;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;&lt;br /&gt;
[wpn_ak101]:identity_immunities&lt;br /&gt;
GroupControlSection		= spawn_group&lt;br /&gt;
discovery_dependency	= &lt;br /&gt;
$spawn              	= &amp;quot;weapons\ak-101&amp;quot;	; name and section in level editor&lt;br /&gt;
$npc					= on				&lt;br /&gt;
$prefetch 				= 8&lt;br /&gt;
scheduled				= off               ;[] option for ALife Simulator&lt;br /&gt;
cform               	= skeleton&lt;br /&gt;
class               	= WP_AK74			; class of the weapon that corresponding to CPP class&lt;br /&gt;
min_radius          	= 30				; [] for AI&lt;br /&gt;
max_radius          	= 100				; [] for AI&lt;br /&gt;
description				= enc_weapons1_wpn-ak101&lt;br /&gt;
	&lt;br /&gt;
ef_main_weapon_type		= 2&lt;br /&gt;
ef_weapon_type			= 6&lt;br /&gt;
&lt;br /&gt;
;-----------------------------------------------------------------------------------&lt;br /&gt;
holder_range_modifier	= 1.0		       ; во сколько раз увеличивается eye_range &lt;br /&gt;
holder_fov_modifier		= 0.7              ; во сколько раз увеличивается eye_fov&lt;br /&gt;
;-----------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
cost					= 2;4000				&lt;br /&gt;
weapon_class			= assault_rifle		&lt;br /&gt;
	&lt;br /&gt;
ammo_limit				= 210				&lt;br /&gt;
ammo_elapsed			= 30				&lt;br /&gt;
	&lt;br /&gt;
ammo_mag_size			= 30				&lt;br /&gt;
fire_modes				= 1, -1&lt;br /&gt;
&lt;br /&gt;
ammo_class				= ammo_5.56x45_ss190, ammo_5.56x45_ap	  &lt;br /&gt;
grenade_class			= ammo_vog-25, ammo_vog-25p			&lt;br /&gt;
launch_speed			= 0&lt;br /&gt;
&lt;br /&gt;
hand_dependence			= 1									&lt;br /&gt;
single_handed			= 0&lt;br /&gt;
	&lt;br /&gt;
slot 					= 2									&lt;br /&gt;
animation_slot			= 2									&lt;br /&gt;
inv_name	        	= wpn-ak101								&lt;br /&gt;
inv_name_short			= wpn-ak101&lt;br /&gt;
inv_weight			= 3.3								&lt;br /&gt;
&lt;br /&gt;
inv_grid_width			= 5	 &lt;br /&gt;
inv_grid_height			= 2	    &lt;br /&gt;
inv_grid_x				= 11  &lt;br /&gt;
inv_grid_y				= 29&lt;br /&gt;
&lt;br /&gt;
kill_msg_x			= 0&lt;br /&gt;
kill_msg_y			= 28&lt;br /&gt;
kill_msg_width		= 84&lt;br /&gt;
kill_msg_height		= 28&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
;-----------------------------------------------------------------------------------&lt;br /&gt;
;params of weapon recoil&lt;br /&gt;
&lt;br /&gt;
fire_dispersion_base			= 0.15;0.2		&lt;br /&gt;
control_inertion_factor			= 1.1f;1.25f&lt;br /&gt;
&lt;br /&gt;
;отдача&lt;br /&gt;
cam_relax_speed         		=6;5;3.5; 0.15		&lt;br /&gt;
cam_dispersion          		= 0.1;0.15		&lt;br /&gt;
cam_dispersion_inc			= 0.2;0.3		&lt;br /&gt;
cam_dispertion_frac			= 0.8;0.9		&lt;br /&gt;
cam_max_angle				= 10.0	    	&lt;br /&gt;
cam_max_angle_horz			= 20.0		&lt;br /&gt;
cam_step_angle_horz			= 1.1;1		&lt;br /&gt;
&lt;br /&gt;
fire_dispersion_condition_factor 	= 5.7;5	    	 &lt;br /&gt;
misfire_probability 		= 0.0055;0.003	 &lt;br /&gt;
misfire_condition_k			= 0.06;0.05&lt;br /&gt;
condition_shot_dec 			= 0.00035;0.0001	&lt;br /&gt;
;-----------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
fire_point             		=  0,0.216,0.638			 &lt;br /&gt;
fire_point2            		=  0,0.216,0.730			&lt;br /&gt;
&lt;br /&gt;
flame_particles				= weapons\generic_weapon05	&lt;br /&gt;
smoke_particles				= weapons\generic_shoot_00&lt;br /&gt;
grenade_flame_particles		= weapons\generic_weapon01&lt;br /&gt;
	&lt;br /&gt;
shell_point		 			= 0,0.216,0.174				&lt;br /&gt;
shell_particles	 			= weapons\generic_shells	&lt;br /&gt;
&lt;br /&gt;
PDM_disp_base 				= 1.0&lt;br /&gt;
PDM_disp_vel_factor 		= 1.3&lt;br /&gt;
PDM_disp_accel_factor 		= 1.3&lt;br /&gt;
PDM_crouch	 				= 1.0&lt;br /&gt;
PDM_crouch_no_acc 			= 1.0&lt;br /&gt;
&lt;br /&gt;
; ttc&lt;br /&gt;
hit_power                	= 0.36, 0.4, 0.43, 0.46		&lt;br /&gt;
hit_impulse		 			= 140			&lt;br /&gt;
hit_type 					= fire_wound 	&lt;br /&gt;
fire_distance            	= 1700		&lt;br /&gt;
bullet_speed				= 1000		&lt;br /&gt;
rpm                      	= 750		&lt;br /&gt;
&lt;br /&gt;
use_aim_bullet				= true		&lt;br /&gt;
time_to_aim					= 1.0	&lt;br /&gt;
&lt;br /&gt;
;params when silencer is attached &lt;br /&gt;
;similar to corresponding params without prefix silencer_&lt;br /&gt;
&lt;br /&gt;
silencer_hit_power       	= 0.38&lt;br /&gt;
silencer_hit_impulse	 	= 120&lt;br /&gt;
silencer_fire_distance   	= 250&lt;br /&gt;
silencer_bullet_speed	 	= 600&lt;br /&gt;
&lt;br /&gt;
hud                      	= wpn_ak101_hud				&lt;br /&gt;
&lt;br /&gt;
position         	        = -0.026,-0.172,0			&lt;br /&gt;
orientation      	        = 0,0,0						&lt;br /&gt;
&lt;br /&gt;
;--STRAP PARAMETERS-----------------------------------------------------------------&lt;br /&gt;
strap_position         		= -0.16,-0.40,0.15			&lt;br /&gt;
strap_orientation      		= -10,-5,10					&lt;br /&gt;
strap_bone0					= bip01_spine2&lt;br /&gt;
strap_bone1					= bip01_spine1&lt;br /&gt;
&lt;br /&gt;
visual         		        = weapons\ak-101\wpn_ak101		&lt;br /&gt;
&lt;br /&gt;
light_color					= 0.6,0.5,0.3				&lt;br /&gt;
light_range					= 5							&lt;br /&gt;
light_var_color				= 0.05						&lt;br /&gt;
light_var_range				= 0.5&lt;br /&gt;
light_time 					= 0.2						&lt;br /&gt;
&lt;br /&gt;
ph_mass						= 5							&lt;br /&gt;
&lt;br /&gt;
;addons&lt;br /&gt;
scope_status				= 2							&lt;br /&gt;
silencer_status				= 2							&lt;br /&gt;
grenade_launcher_status		= 0;2							&lt;br /&gt;
&lt;br /&gt;
zoom_enabled				= true						&lt;br /&gt;
scope_zoom_factor	    	= 50						&lt;br /&gt;
&lt;br /&gt;
scope_name 					= wpn_addon_scope			&lt;br /&gt;
scope_x 					= 42						&lt;br /&gt;
scope_y 					= 3&lt;br /&gt;
silencer_name  				= wpn_addon_silencer		&lt;br /&gt;
silencer_x 					= 218						&lt;br /&gt;
silencer_y 					= 13					&lt;br /&gt;
grenade_launcher_name 		= wpn_addon_grenade_launcher&lt;br /&gt;
grenade_launcher_x 			= 116						&lt;br /&gt;
grenade_launcher_y 			= 23&lt;br /&gt;
&lt;br /&gt;
;sounds (name of the sound, volume (0.0 - 1.0), delay (sec))&lt;br /&gt;
snd_draw					= weapons\ak74_draw&lt;br /&gt;
snd_holster					= weapons\generic_holster&lt;br /&gt;
snd_shoot					= weapons\ak74_shot_0&lt;br /&gt;
snd_shoot1					= weapons\ak74_shot_1&lt;br /&gt;
snd_shoot2					= weapons\ak74_shot_2&lt;br /&gt;
snd_shoot3					= weapons\ak74_shot_3		&lt;br /&gt;
snd_empty					= weapons\gen_empty, 0.5&lt;br /&gt;
snd_reload					= weapons\ak74_reload, 0.7, 0.35&lt;br /&gt;
snd_shoot_grenade			= weapons\gen_grenshoot&lt;br /&gt;
snd_reload_grenade			= weapons\gen_grenload, 1.0, 0.8&lt;br /&gt;
snd_switch					= weapons\groza_switch, 1.0, 0.5&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
;params when silencer is attached &lt;br /&gt;
;similar to corresponding params without prefix silencer_&lt;br /&gt;
&lt;br /&gt;
;silencer_flame_particles 	= weapons\generic_weapon01&lt;br /&gt;
silencer_smoke_particles 	= weapons\generic_shoot_00&lt;br /&gt;
&lt;br /&gt;
snd_silncer_shot			= weapons\w_ak74_shot1 &lt;br /&gt;
&lt;br /&gt;
silencer_light_color		= 0.6,0.5,0.3&lt;br /&gt;
silencer_light_range		= 0.01&lt;br /&gt;
silencer_light_var_color	= 0.05&lt;br /&gt;
silencer_light_var_range	= 0.5&lt;br /&gt;
silencer_light_time 		= 0.2&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
;-----------------------------------------------------------------------------&lt;br /&gt;
;-- HUD DESCRIPTION&lt;br /&gt;
;-----------------------------------------------------------------------------&lt;br /&gt;
 &lt;br /&gt;
[wpn_ak101_hud]&lt;br /&gt;
allow_inertion				= true&lt;br /&gt;
&lt;br /&gt;
;similar to corresponding params in weapon section but for 1st person view&lt;br /&gt;
&lt;br /&gt;
shell_point					= -0.065000,0.000000,-0.045000&lt;br /&gt;
shell_dir			     	= 0.0, 1.0, 0.0&lt;br /&gt;
&lt;br /&gt;
fire_point               	= 0.09,0.020,-0.06&lt;br /&gt;
fire_point2              	= 0.30, 0.00, 0.05&lt;br /&gt;
fire_bone               	= wpn_body&lt;br /&gt;
&lt;br /&gt;
orientation             	= 0, 0, 0		&lt;br /&gt;
position                	= 0, 0, 0.05&lt;br /&gt;
visual                  	= weapons\ak-101\wpn_ak101_hud&lt;br /&gt;
&lt;br /&gt;
grenade_bone            	= wpn_grenade	&lt;br /&gt;
&lt;br /&gt;
; animation names&lt;br /&gt;
&lt;br /&gt;
anim_idle					= idle&lt;br /&gt;
anim_idle_aim				= idle_aim&lt;br /&gt;
anim_reload					= reload&lt;br /&gt;
anim_draw					= draw_wo_gl&lt;br /&gt;
anim_holster				= holster_wo_gl&lt;br /&gt;
anim_shoot					= shoot&lt;br /&gt;
			&lt;br /&gt;
; animation names&lt;br /&gt;
; attached grenade launcher [GRENADE fire mode]&lt;br /&gt;
anim_idle_g					= idle_grenade&lt;br /&gt;
anim_idle_g_aim				= idle_g_aim&lt;br /&gt;
anim_reload_g				= reload_grenade&lt;br /&gt;
anim_shoot_g				= shoot_grenade&lt;br /&gt;
anim_switch_grenade_on		= switch_grenade&lt;br /&gt;
anim_switch_grenade_off		= switch_grenade_off&lt;br /&gt;
anim_draw_g					= draw_grenade_mode&lt;br /&gt;
anim_holster_g				= holster_grenade_mode&lt;br /&gt;
&lt;br /&gt;
; attached grenade launcher [NORMAL fire mode]&lt;br /&gt;
anim_idle_gl				= idle_w_gl&lt;br /&gt;
anim_idle_gl_aim			= idle_w_gl_aim&lt;br /&gt;
anim_reload_gl				= reload_w_gl&lt;br /&gt;
anim_draw_gl				= draw_w_gl&lt;br /&gt;
anim_holster_gl				= holster_w_gl&lt;br /&gt;
anim_shoot_gl				= shoot_w_gl&lt;br /&gt;
anim_idle_sprint			= idle_sprint&lt;br /&gt;
&lt;br /&gt;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;&lt;br /&gt;
;HUD offset in zoom mode (to all)&lt;br /&gt;
;(use CONSOLE: hud_adjust_mode 0,1,2, then keys WSADQE and P to show current value in console)&lt;br /&gt;
&lt;br /&gt;
zoom_offset			= -0.112400,0.016800,-0.115000&lt;br /&gt;
zoom_rotate_x		= 0.000200&lt;br /&gt;
zoom_rotate_y		= 0.017500&lt;br /&gt;
&lt;br /&gt;
zoom_hide_crosshair	= true						&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
; same as above, but for attached grenade launcher for&lt;br /&gt;
; in NORMAL shoot mode&lt;br /&gt;
&lt;br /&gt;
grenade_normal_zoom_offset			= -0.112500,0.014000,0.000000&lt;br /&gt;
grenade_normal_zoom_rotate_x		= -0.000900&lt;br /&gt;
grenade_normal_zoom_rotate_y		= 0.017200&lt;br /&gt;
&lt;br /&gt;
; same as above, but for attached grenade launcher for&lt;br /&gt;
; in GRENADE mode&lt;br /&gt;
&lt;br /&gt;
grenade_zoom_offset			= -0.039600,-0.433100,0.000000&lt;br /&gt;
grenade_zoom_rotate_x		= -0.538700&lt;br /&gt;
grenade_zoom_rotate_y		= -0.033800&amp;lt;/ini&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Регистрация===&lt;br /&gt;
&lt;br /&gt;
Итак, с характеристиками разобрались. Теперь зарегистрируем оружие в файле '''weapons.ltx'''. Для этого пропишем в него строку следующего вида:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;#include &amp;quot;w_ak101.ltx&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Также, необходимо прописать модели, используемые для отображения оружия, в '''prefetch.ltx''':&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ini&amp;gt;[...]&lt;br /&gt;
weapons\abakan\wpn_abakan&lt;br /&gt;
weapons\abakan\wpn_abakan_hud&lt;br /&gt;
weapons\ak-101\wpn_ak101&lt;br /&gt;
weapons\ak-101\wpn_ak101_hud&lt;br /&gt;
weapons\ak74\wpn_ak74&lt;br /&gt;
weapons\ak74\wpn_ak74_hud&lt;br /&gt;
[...]&amp;lt;/ini&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Так же не забудте в файле '''mp_ranks.ltx''' прописать после '''available_items''' (которое внизу)&lt;br /&gt;
прописать название своего оружия. Это предотвратит вылет при убийстве ГГ а также вылет при выкидывании оружия из инвентаря.&lt;br /&gt;
&lt;br /&gt;
==Добавление в игру==&lt;br /&gt;
&lt;br /&gt;
Осталось добавить оружие в игру. &lt;br /&gt;
&lt;br /&gt;
Выдайте его некоторым NPC ([[Редактирование NPC#Практика|как это сделать?]]), расширьте ассортимент торговцев ([[Редактирование торговцев#Расширяем ассортимент|как это сделать?]]).&lt;br /&gt;
&lt;br /&gt;
А вот как оно будет выглядеть в игре:&lt;br /&gt;
&lt;br /&gt;
[[Изображение:Russian_Guns_3.jpeg]]&lt;br /&gt;
&lt;br /&gt;
P.S. При создании нового оружия можно допустить некоторые ошибки в конфиге, что приведёт к вылету игры.&lt;br /&gt;
При таком случае сразу после вылета игры заходим в любой текстовый редактор и нажимаем клавиши Ctrl+V (вставить) и внизу можно увидеть из-за какой ошибки вылетела игра, а там уже дело техники исправить ошибку...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;Expression    : fatal error&lt;br /&gt;
Function      : CModelPool::Instance_Load&lt;br /&gt;
File          : E:\stalker\patch_1_0004\xr_3da\xrRender\ModelPool.cpp&lt;br /&gt;
Line          : 111&lt;br /&gt;
Description   : &amp;lt;no expression&amp;gt;&lt;br /&gt;
Arguments     : Can't find model file 'weapons\gaussmod\wpn_gauss_hud.ogf'.&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В данном примере видно, что либо вы не создали папку с необходимой моделью оружия, либо неправильно прописан путь к нужному файлу...&lt;br /&gt;
&lt;br /&gt;
(Чтобы в игре название и описание оружия были не от АК-74 а от нашей АК-101 делаем как написано в этой [http://stalkerin.gameru.net/wiki/index.php/%D0%A1%D0%BF%D0%B0%D0%B2%D0%BD_%D0%BD%D0%BE%D0%B2%D1%8B%D1%85_%D0%BF%D1%80%D0%B5%D0%B4%D0%BC%D0%B5%D1%82%D0%BE%D0%B2 статье], всё начиная с &amp;quot;''И description = enc_equipment_food_bread1 на description = enc_equipment_food_bread1_test''&amp;quot; вам понадобится.)&lt;br /&gt;
Информацию о оружии можно найти [http://world.guns.ru здесь.]&lt;br /&gt;
&lt;br /&gt;
'''АК-101''' - ''Автомат Калашникова АК-101 является экспортной модификацией штатного автомата Российской армии АК-74М. Главным (и фактически единственным) отличием АК-101 от АК-74М является калибр - автомат &amp;quot;сотой&amp;quot; серии использует патроны калибра 5.56мм (5.56х45 НАТО) и соответствующие магазины, в остальном автоматы идентичны.''&lt;br /&gt;
&lt;br /&gt;
==Авторы==&lt;br /&gt;
&lt;br /&gt;
Статья создана: &lt;br /&gt;
*[[Участник:BAC9-FLCL|BAC9-FLCL]]&lt;br /&gt;
&lt;br /&gt;
Статья подправлена:&lt;br /&gt;
*[[Участник:Хемуль04|Хемуль04]]&lt;br /&gt;
&lt;br /&gt;
По материалам мода [[Mod:Russian Guns|Russian Guns]] за авторством: &lt;br /&gt;
*[[Участник:Tony|Tony]]&lt;br /&gt;
*[[Участник:lez0|lez0]]&lt;br /&gt;
&lt;br /&gt;
[[Категория:Конфигурационные_файлы]]&lt;br /&gt;
&lt;br /&gt;
Когда будете прописыватьв конфиге значения &amp;quot;inv_grid_y&amp;quot; и &amp;quot;inv_grid_x&amp;quot; имейте в виду, что отсчет по сетке идет с верхнего левого угла и указывать нужно верхний левый угол картинки, которая должна отображатся в инвентаре. То есть координаты самого первого угла будут 0;0. Самая первая винтовка в файле ...\S.T.A.L.K.E.R\gamedata\textures\ui\ui_icon_equipment.dds это - СВД. И если вы посмотрите ее конфигурационный файл то увидете, что там указаны значения inv_grid_x = 0   inv_grid_y = 0.  Отсчет по оси X идет по горизонтали с лева на право, а по оси Y - сверху вниз по возрастающей. Но считать с начала сетки - очень не удобно, поэтому вычисляйте координаты вашего обьекта по известным координатам уже существующего и реально правильно отображаемого файла в игре. Например мы имеем inv_grid_x= 5 inv_grid_y= 9 для fn2000(координаты верхнего левого угла) и мы хотим узнать координаты гранатф ф1, которая находится рядом. Для этого удобно использовать фотошоп с сеткой 50 на 50 пикселей. (как ее сделать описано по ссылке в статье к которой написана эта поправка.) И так мы видим что граната находится сразу справа порсле винтовки. То есть на 4-й клетке после квадрата угла винтовки без его учета. Она находится спраа, а значит нужно по оси X к 5 прибавить 4, и получится 9. По оси Y координтаы не изменились так как они находятся на одной линии с винтовкой. Таким образом получает коордитаны гранаты 9 по Х и 9 по Y. Если мы посмотрим конфиг гранаты то увидим там &amp;quot;inv_grid_x= 9&amp;quot; &amp;quot;inv_grid_y= 9&amp;quot;. То что и соответствует тому, что мы высчитали. :) Удачи.&lt;/div&gt;</summary>
		<author><name>91.218.192.254</name></author>	</entry>

	<entry>
		<id>http://stalkerin.gameru.net/wiki/index.php?title=SoC._%D0%A2%D0%B5%D1%85%D0%BD%D0%B8%D0%BA%D0%B0_%D0%B2_%D0%B8%D0%B3%D1%80%D0%B5</id>
		<title>SoC. Техника в игре</title>
		<link rel="alternate" type="text/html" href="http://stalkerin.gameru.net/wiki/index.php?title=SoC._%D0%A2%D0%B5%D1%85%D0%BD%D0%B8%D0%BA%D0%B0_%D0%B2_%D0%B8%D0%B3%D1%80%D0%B5"/>
				<updated>2013-08-03T19:24:30Z</updated>
		
		<summary type="html">&lt;p&gt;91.218.192.254: оформление, орфография&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Техника в игре==&lt;br /&gt;
&lt;br /&gt;
Как известно из множества вырезанного из игры особо запомнился транспорт.&lt;br /&gt;
Сейчас мы вернём один «экземпляр» всем известную «Ниву».&lt;br /&gt;
Для «воскрешения» понадобится 2 файла:&lt;br /&gt;
&amp;lt;br&amp;gt;'''gamedata/config/creatures/vechicles.ltx''' &lt;br /&gt;
&amp;lt;br&amp;gt;''gamedata/spawns all.spawn'''&lt;br /&gt;
А также текстовый редактор и '''ACDC''', входящий в состав '''X-ray Game asset tools'''.&lt;br /&gt;
'''1.''' Распакуем файл '''all.spawn''' при помощи программы от '''bardak''.' Как распаковывать написано в '''readme.txt''', поэтому описывать данный этап не буду.&lt;br /&gt;
&lt;br /&gt;
'''2.''' Находим файл '''alife_l01_escape.ltx''' как видно там структура, что-то вроде этого:&lt;br /&gt;
&amp;lt;ini&amp;gt;[0]&lt;br /&gt;
; cse_abstract properties&lt;br /&gt;
section_name = breakable_object&lt;br /&gt;
name = meshes\brkbl#0.ogf&lt;br /&gt;
position = −79.4930877685547,-3.16186141967773,-76.9341430664063&lt;br /&gt;
direction = 0.581841766834259,-1.45571649074554,-0.267672836780548&lt;br /&gt;
&lt;br /&gt;
; cse_alife_object properties&lt;br /&gt;
game_vertex_id = 0&lt;br /&gt;
distance = 0&lt;br /&gt;
level_vertex_id = 594270&lt;br /&gt;
object_flags = 0xffffffba&lt;br /&gt;
&lt;br /&gt;
; cse_visual properties&lt;br /&gt;
visual_name = meshes\brkbl#0&lt;br /&gt;
&lt;br /&gt;
; cse_alife_object_breakable properties&lt;br /&gt;
health = 1&amp;lt;/ini&amp;gt;&lt;br /&gt;
&lt;br /&gt;
То есть очень простая…&lt;br /&gt;
&lt;br /&gt;
'''3.''' Заменять имеющееся не будем, а просто в самом конце напишем:&lt;br /&gt;
&amp;lt;ini&amp;gt;[870]&lt;br /&gt;
; cse_abstract properties&lt;br /&gt;
section_name = m_car&lt;br /&gt;
name = niva&lt;br /&gt;
position = -239,8912,-19,43,-123,0998&lt;br /&gt;
direction = 0.581841766834259,-1.45571649074554,-0.267672836780548&lt;br /&gt;
&lt;br /&gt;
; cse_alife_object properties&lt;br /&gt;
game_vertex_id = 0&lt;br /&gt;
distance = 0&lt;br /&gt;
level_vertex_id = 594270&lt;br /&gt;
object_flags = 0xffffffba&lt;br /&gt;
&lt;br /&gt;
; cse_visual properties&lt;br /&gt;
visual_name = physics\vehicles\niva\veh_niva_u_01&lt;br /&gt;
&lt;br /&gt;
; cse_alife_object_breakable properties&lt;br /&gt;
health = 1 &amp;lt;/ini&amp;gt;&lt;br /&gt;
Где ''niva'' - это секция в '''ltx'''-файле, которая будет использоваться для параметров объекта,&lt;br /&gt;
а ''visual_name'' - это расположение модели.&lt;br /&gt;
''health = 1'', следовательно, здоровье.&lt;br /&gt;
Разделы ''position'' и ''direction'' взяты с «долгоблуждающего» по сети файла '''all.spawn''', где автомобили находились прямо возле выхода от Сидоровича.&lt;br /&gt;
Для выбора других координат можно использовать команду консоли ''rs_stats = 1''.&lt;br /&gt;
После чего сохраняем изменения, компилируем '''all.spawn''', помещаем его в '''gamedata\spawns'''.&lt;br /&gt;
Теперь нам понадобится файл '''vechicles.ltx''' в '''gamedata/config/creatures'''&lt;br /&gt;
Открываем его и дописываем там:&lt;br /&gt;
&amp;lt;ini&amp;gt;[niva] &lt;br /&gt;
GroupControlSection = spawn_group&lt;br /&gt;
$spawn = &amp;quot;vehicles\niva&amp;quot;&lt;br /&gt;
class = SCRPTCAR&lt;br /&gt;
cform = skeleton&lt;br /&gt;
visual = physics\vehicles\niva\veh_niva_u_01.ogf &lt;br /&gt;
actor_visual = physics\vehicles\niva\veh_niva_u_01.ogf &lt;br /&gt;
ef_equipment_type = 3&lt;br /&gt;
ph_mass = 100000&lt;br /&gt;
script_binding = bind_physic_object.init &amp;lt;/ini&amp;gt;&lt;br /&gt;
Всё, начинаем новую игру, после выхода от Сидоровича вы увидите Ниву, для того чтобы её завести наберите в консоли ''bind turn_engine kb''. По этому принципу можно заспавнить авто на любой локации.&lt;br /&gt;
&lt;br /&gt;
'''Еще один способ воскресить транспорт'''&lt;br /&gt;
&lt;br /&gt;
Все это хорошо, но есть еще один простой способ воскресить вырезанный из игры транспорт.&lt;br /&gt;
Первое.&lt;br /&gt;
Для начала нам нужно файл '''vehicles.ltx''' (находится в creatures) внести в файл '''system.ltx.'''&lt;br /&gt;
Вот так:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
#include &amp;quot;creatures\vehicles.ltx&amp;quot;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
То есть добавить его в число прочих файлов (по крайней мере у меня он не был туда внесен), откуда игра будет брать&lt;br /&gt;
необходимую информацию.&lt;br /&gt;
&lt;br /&gt;
Второе.&lt;br /&gt;
Добавить в файл '''vehicles.ltx''' полный конфиг машины. Например уазика.&lt;br /&gt;
Вот готовый пример:&lt;br /&gt;
&amp;lt;ini&amp;gt;&lt;br /&gt;
[vehicle_uaz]&lt;br /&gt;
GroupControlSection   = spawn_group&lt;br /&gt;
$spawn                = &amp;quot;vehicles\vehicle_uaz&amp;quot;&lt;br /&gt;
class                 = SCRPTCAR&lt;br /&gt;
cform                 = skeleton&lt;br /&gt;
visual                = physics\vehicles\uaz\veh_uaz_u_01.ogf&lt;br /&gt;
actor_visual          = physics\vehicles\uaz\veh_uaz_u_01.ogf&lt;br /&gt;
ef_equipment_type     = 3&lt;br /&gt;
ph_mass               = 99000&lt;br /&gt;
script_binding        = bind_physic_object.init&lt;br /&gt;
&lt;br /&gt;
ph_skeleton_airr_lin_factor    = 2.0&lt;br /&gt;
ph_skeleton_airr_ang_factor    = 0.0&lt;br /&gt;
ph_skeleton_hinger_factor1     = 1.0&lt;br /&gt;
ph_skeleton_ddelay             = 15.0&lt;br /&gt;
ph_skel_fatal_impulse_factor   = 12.0&lt;br /&gt;
ph_skel_shot_up_factor         = 0.25&lt;br /&gt;
ph_after_death_velocity_factor = 0.75&lt;br /&gt;
&amp;lt;/ini&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Характеристики машин можно менять в файлах лежащих в '''models\vehicles'''.&lt;br /&gt;
&lt;br /&gt;
Третье.&lt;br /&gt;
Создать скриптовую функцию по спавну машины.&lt;br /&gt;
Мой пример:&lt;br /&gt;
&amp;lt;lua&amp;gt;&lt;br /&gt;
function buy_uaz (position, total)&lt;br /&gt;
alife():create(&amp;quot;vehicle_uaz&amp;quot;,vector():set(-245.01445007324,-18.792783737183,-107.14138031006),12480,8)&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/lua&amp;gt;&lt;br /&gt;
Название функции — ''buy_uaz'' — может быть любое. Саму функцию надо положить в какой-нибудь скриптовый файл в папке '''scripts'''.&lt;br /&gt;
У меня она лежит в '''escape_dialog.script'''.&lt;br /&gt;
&lt;br /&gt;
Для того, чтобы можно было заводить машину не залезая в консоль открываем файл '''ui_keybinding''' (находится в '''config\ui''')&lt;br /&gt;
и вписываем туда в секцию&lt;br /&gt;
&lt;br /&gt;
&amp;lt;xml&amp;gt; &lt;br /&gt;
&amp;lt;group name=&amp;quot;kb_grp_common&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/xml&amp;gt;&lt;br /&gt;
это:&lt;br /&gt;
&amp;lt;xml&amp;gt;&lt;br /&gt;
&amp;lt;command id=&amp;quot;kb_cam_1&amp;quot;						exe=&amp;quot;cam_1&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;command id=&amp;quot;kb_cam_2&amp;quot;						exe=&amp;quot;cam_2&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;command id=&amp;quot;kb_cam_3&amp;quot;						exe=&amp;quot;cam_3&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;command id=&amp;quot;kb_turn_engine&amp;quot;				        exe=&amp;quot;turn_engine&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/xml&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Теперь у нас в меню управления можно назначить клавиши для «завести двигатель» и переключение камеры на вид от 1, 2, 3 лица.&lt;br /&gt;
&lt;br /&gt;
Уазик появляется неподалеку от бункера Сидоровича после активации action '''escape_dialog.buy_uaz''' вставленного в диалог к NPC.&lt;br /&gt;
У меня уазик «выдает» мой уникальный (то есть новый) торговец после диалога с ним.&lt;br /&gt;
Вот конец моего диалога из файла '''dialogs_escape''':&lt;br /&gt;
&amp;lt;xml&amp;gt; &lt;br /&gt;
&amp;lt;phrase id=&amp;quot;8&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;text&amp;gt;escape_buy_uaz_8&amp;lt;/text&amp;gt;&lt;br /&gt;
&amp;lt;action&amp;gt;escape_dialog.buy_uaz&amp;lt;/action&amp;gt;&lt;br /&gt;
&amp;lt;next&amp;gt;9&amp;lt;/next&amp;gt;&lt;br /&gt;
&amp;lt;/phrase&amp;gt;&lt;br /&gt;
&amp;lt;phrase id=&amp;quot;9&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;text&amp;gt;escape_buy_uaz_9&amp;lt;/text&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; &lt;br /&gt;
&amp;lt;/xml&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Вот собственно и все. И никаких изменений в '''all.spawn'''.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Дополнил '''erlik'''&lt;br /&gt;
&lt;br /&gt;
==Авторы==&lt;br /&gt;
&lt;br /&gt;
Статья создана:&lt;br /&gt;
&lt;br /&gt;
* [[Участник:Jesh|Jesh]]&lt;br /&gt;
&lt;br /&gt;
[[Категория:Конфигурационные_файлы]]&lt;/div&gt;</summary>
		<author><name>91.218.192.254</name></author>	</entry>

	<entry>
		<id>http://stalkerin.gameru.net/wiki/index.php?title=SoC._%D0%A1%D0%BE%D0%B7%D0%B4%D0%B0%D0%BD%D0%B8%D0%B5_%D0%BD%D0%BE%D0%B2%D0%BE%D0%B3%D0%BE_%D0%B0%D1%80%D1%82%D0%B5%D1%84%D0%B0%D0%BA%D1%82%D0%B0</id>
		<title>SoC. Создание нового артефакта</title>
		<link rel="alternate" type="text/html" href="http://stalkerin.gameru.net/wiki/index.php?title=SoC._%D0%A1%D0%BE%D0%B7%D0%B4%D0%B0%D0%BD%D0%B8%D0%B5_%D0%BD%D0%BE%D0%B2%D0%BE%D0%B3%D0%BE_%D0%B0%D1%80%D1%82%D0%B5%D1%84%D0%B0%D0%BA%D1%82%D0%B0"/>
				<updated>2013-08-02T08:38:40Z</updated>
		
		<summary type="html">&lt;p&gt;91.218.192.254: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Сегодня мы на примере научимся созданию новых артефактов. Создадим, например, артефакт под названием &amp;quot;Ромашка&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color: gray&amp;quot;&amp;gt;Статья написана по материалам Hunter Mod.&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Создание конфига==&lt;br /&gt;
&lt;br /&gt;
Заходим в папку '''gamedata\config\misc''' и открываем файл '''artefacts.ltx'''.&amp;lt;br&amp;gt;И находим, например, артефакт &amp;quot;Медуза&amp;quot;:&lt;br /&gt;
&amp;lt;ini&amp;gt;[af_medusa]:af_base&lt;br /&gt;
GroupControlSection	= spawn_group&lt;br /&gt;
$spawn				= &amp;quot;artifacts\moscito medusa&amp;quot;&lt;br /&gt;
&lt;br /&gt;
$prefetch 			= 64&lt;br /&gt;
cform				= skeleton&lt;br /&gt;
class				= ARTEFACT&lt;br /&gt;
&lt;br /&gt;
visual				= physics\anomaly\artefact_blackdrip.ogf  &lt;br /&gt;
description			= enc_zone_artifact_af-medusa&lt;br /&gt;
inv_name			= af-medusa&lt;br /&gt;
inv_name_short		= &lt;br /&gt;
inv_weight			= 0.5&lt;br /&gt;
&lt;br /&gt;
inv_grid_x			= 9&lt;br /&gt;
inv_grid_y			= 4&lt;br /&gt;
&lt;br /&gt;
cost				= 1000&lt;br /&gt;
&lt;br /&gt;
jump_height			= .5&lt;br /&gt;
&lt;br /&gt;
particles			= anomaly2\artefact\artefact_gravi&lt;br /&gt;
&lt;br /&gt;
lights_enabled = false&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
;скорости увеличения (уменьшения) &lt;br /&gt;
health_restore_speed		= 0.0			&lt;br /&gt;
radiation_restore_speed		= 0.0005&lt;br /&gt;
satiety_restore_speed		= 0.0&lt;br /&gt;
power_restore_speed			= 0.0&lt;br /&gt;
bleeding_restore_speed		= 0.0&lt;br /&gt;
hit_absorbation_sect		= af_medusa_absorbation&lt;br /&gt;
&lt;br /&gt;
artefact_activation_seq		= af_activation_bold&lt;br /&gt;
&lt;br /&gt;
[af_medusa_absorbation]&lt;br /&gt;
burn_immunity = 1.0				;коэффициенты иммунитета &lt;br /&gt;
strike_immunity = 1.0&lt;br /&gt;
shock_immunity = 1.0&lt;br /&gt;
wound_immunity = 1.0		&lt;br /&gt;
radiation_immunity = 1.0&lt;br /&gt;
telepatic_immunity = 1.0&lt;br /&gt;
chemical_burn_immunity = 1.0&lt;br /&gt;
explosion_immunity = 1.0&lt;br /&gt;
fire_wound_immunity  = 0.98&amp;lt;/ini&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В этой секции задаются параметры артефакта, начиная от внешнего вида и заканчивая коэффициентами различных эффектов вроде вывода радиации. Сделаем копию секции, принадлежающей &amp;quot;Медузе&amp;quot;, и заменим её название с ''af_medusa'' на ''af_romashka''.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Должно выйти примерно вот так:&lt;br /&gt;
&amp;lt;ini&amp;gt;[af_romashka]:af_base&lt;br /&gt;
GroupControlSection	= spawn_group&lt;br /&gt;
$spawn				= &amp;quot;artifacts\moscito romashka&amp;quot;&lt;br /&gt;
&lt;br /&gt;
$prefetch 			= 64&lt;br /&gt;
cform				= skeleton&lt;br /&gt;
class				= ARTEFACT&lt;br /&gt;
&lt;br /&gt;
visual				= physics\anomaly\artefact_blackdrip.ogf  &lt;br /&gt;
description			= enc_zone_artifact_af-romashka&lt;br /&gt;
inv_name			= af-romashka&lt;br /&gt;
inv_name_short		= &lt;br /&gt;
inv_weight			= 0.5&lt;br /&gt;
&lt;br /&gt;
inv_grid_x			= 9&lt;br /&gt;
inv_grid_y			= 4&lt;br /&gt;
&lt;br /&gt;
cost				= 1000&lt;br /&gt;
&lt;br /&gt;
jump_height			= .5&lt;br /&gt;
&lt;br /&gt;
particles			= anomaly2\artefact\artefact_gravi&lt;br /&gt;
&lt;br /&gt;
lights_enabled = false&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
;скорости увеличения (уменьшения) &lt;br /&gt;
health_restore_speed		= 0.0			&lt;br /&gt;
radiation_restore_speed		= 0.0005&lt;br /&gt;
satiety_restore_speed		= 0.0&lt;br /&gt;
power_restore_speed			= 0.0&lt;br /&gt;
bleeding_restore_speed		= 0.0&lt;br /&gt;
hit_absorbation_sect		= af_romashka_absorbation&lt;br /&gt;
&lt;br /&gt;
artefact_activation_seq		= af_activation_bold&lt;br /&gt;
&lt;br /&gt;
[af_romashka_absorbation]&lt;br /&gt;
burn_immunity = 1.0				;коэффициенты иммунитета &lt;br /&gt;
strike_immunity = 1.0&lt;br /&gt;
shock_immunity = 1.0&lt;br /&gt;
wound_immunity = 1.0		&lt;br /&gt;
radiation_immunity = 1.0&lt;br /&gt;
telepatic_immunity = 1.0&lt;br /&gt;
chemical_burn_immunity = 1.0&lt;br /&gt;
explosion_immunity = 1.0&lt;br /&gt;
fire_wound_immunity  = 0.98&amp;lt;/ini&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Назначение некоторых параметров, влияющих на одевшего артефакт:&lt;br /&gt;
&lt;br /&gt;
* health_restore_speed  - прирост к скорости восстановления здоровья&lt;br /&gt;
* radiation_restore_speed  - прирост скорость вывода радиации&lt;br /&gt;
* satiety_restore_speed  - прирост к голоду&lt;br /&gt;
* power_restore_speed  - прирост к выносливости&lt;br /&gt;
* bleeding_restore_speed - прирост к скорости остановки кровотечений&lt;br /&gt;
&lt;br /&gt;
== Создание описания и имени артефакта ==&lt;br /&gt;
Заходим в ''gamedata\config\text\rus'' и открываем файл '''string_table_enc_zone.xml'''.&lt;br /&gt;
Добавим туда строку с названием артефакта.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;xml&amp;gt; &amp;lt;string id=&amp;quot;af-romashka&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;text&amp;gt;&amp;quot;Ромашка&amp;quot;&amp;lt;/text&amp;gt;&lt;br /&gt;
	&amp;lt;/string&amp;gt;&amp;lt;/xml&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Теперь у артефакта есть имя, но одного его недостаточно. Нужно сделать описание.&amp;lt;br&amp;gt;&lt;br /&gt;
Поэтому добавим и его.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;xml&amp;gt;	&amp;lt;string id=&amp;quot;enc_zone_artifact_af-romaska&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;text&amp;gt;Очень странный артефакт. Впервые появился в Зоне где-то в 2011 году, но толку от него - ноль. Ученые&lt;br /&gt;
                      не обнаружили никакого влияния артефакта на организм носителя.&amp;lt;/text&amp;gt;&lt;br /&gt;
	&amp;lt;/string&amp;gt;&amp;lt;/xml&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Все, поздравляю, вы только что создали свой первый артефакт! :)&lt;br /&gt;
&lt;br /&gt;
==Авторы==&lt;br /&gt;
&lt;br /&gt;
Статья создана: [[Участник:Шустрый|Шустрый]]&amp;lt;br&amp;gt;&lt;br /&gt;
Редакция: [[Участник:BAC9-FLCL|BAC9-FLCL]]&lt;br /&gt;
&lt;br /&gt;
[[Категория:Конфигурационные_файлы]]&lt;/div&gt;</summary>
		<author><name>91.218.192.254</name></author>	</entry>

	<entry>
		<id>http://stalkerin.gameru.net/wiki/index.php?title=SoC._%D0%A1%D0%BE%D0%B7%D0%B4%D0%B0%D0%BD%D0%B8%D0%B5_%D0%BD%D0%BE%D0%B2%D0%BE%D0%B3%D0%BE_%D0%B0%D1%80%D1%82%D0%B5%D1%84%D0%B0%D0%BA%D1%82%D0%B0</id>
		<title>SoC. Создание нового артефакта</title>
		<link rel="alternate" type="text/html" href="http://stalkerin.gameru.net/wiki/index.php?title=SoC._%D0%A1%D0%BE%D0%B7%D0%B4%D0%B0%D0%BD%D0%B8%D0%B5_%D0%BD%D0%BE%D0%B2%D0%BE%D0%B3%D0%BE_%D0%B0%D1%80%D1%82%D0%B5%D1%84%D0%B0%D0%BA%D1%82%D0%B0"/>
				<updated>2013-08-02T08:37:15Z</updated>
		
		<summary type="html">&lt;p&gt;91.218.192.254: оформление&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Сегодня мы на примере научимся созданию новых артефактов. Создадим, например, артефакт под названием &amp;quot;Ромашка&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color: gray&amp;quot;&amp;gt;Статья написана по материалам Hunter Mod.&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Создание конфига==&lt;br /&gt;
&lt;br /&gt;
Заходим в папку '''gamedata\config\misc''' и открываем файл '''artefacts.ltx'''.&amp;lt;br&amp;gt;И находим, например, артефакт &amp;quot;Медуза&amp;quot;:&lt;br /&gt;
&amp;lt;ini&amp;gt;[af_medusa]:af_base&lt;br /&gt;
GroupControlSection	= spawn_group&lt;br /&gt;
$spawn				= &amp;quot;artifacts\moscito medusa&amp;quot;&lt;br /&gt;
&lt;br /&gt;
$prefetch 			= 64&lt;br /&gt;
cform				= skeleton&lt;br /&gt;
class				= ARTEFACT&lt;br /&gt;
&lt;br /&gt;
visual				= physics\anomaly\artefact_blackdrip.ogf  &lt;br /&gt;
description			= enc_zone_artifact_af-medusa&lt;br /&gt;
inv_name			= af-medusa&lt;br /&gt;
inv_name_short		= &lt;br /&gt;
inv_weight			= 0.5&lt;br /&gt;
&lt;br /&gt;
inv_grid_x			= 9&lt;br /&gt;
inv_grid_y			= 4&lt;br /&gt;
&lt;br /&gt;
cost				= 1000&lt;br /&gt;
&lt;br /&gt;
jump_height			= .5&lt;br /&gt;
&lt;br /&gt;
particles			= anomaly2\artefact\artefact_gravi&lt;br /&gt;
&lt;br /&gt;
lights_enabled = false&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
;скорости увеличения (уменьшения) &lt;br /&gt;
health_restore_speed		= 0.0			&lt;br /&gt;
radiation_restore_speed		= 0.0005&lt;br /&gt;
satiety_restore_speed		= 0.0&lt;br /&gt;
power_restore_speed			= 0.0&lt;br /&gt;
bleeding_restore_speed		= 0.0&lt;br /&gt;
hit_absorbation_sect		= af_medusa_absorbation&lt;br /&gt;
&lt;br /&gt;
artefact_activation_seq		= af_activation_bold&lt;br /&gt;
&lt;br /&gt;
[af_medusa_absorbation]&lt;br /&gt;
burn_immunity = 1.0				;коэффициенты иммунитета &lt;br /&gt;
strike_immunity = 1.0&lt;br /&gt;
shock_immunity = 1.0&lt;br /&gt;
wound_immunity = 1.0		&lt;br /&gt;
radiation_immunity = 1.0&lt;br /&gt;
telepatic_immunity = 1.0&lt;br /&gt;
chemical_burn_immunity = 1.0&lt;br /&gt;
explosion_immunity = 1.0&lt;br /&gt;
fire_wound_immunity  = 0.98&amp;lt;/ini&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В этой секции задаются параметры артефакта, начиная от внешнего вида и заканчивая коэффициентами различных эффектов вроде вывода радиации. Сделаем копию секции, принадлежающей &amp;quot;Медузе&amp;quot;, и заменим её название с ''af_medusa'' на ''af_romashka''.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Должно выйти примерно вот так:&lt;br /&gt;
&amp;lt;ini&amp;gt;[af_romashka]:af_base&lt;br /&gt;
GroupControlSection	= spawn_group&lt;br /&gt;
$spawn				= &amp;quot;artifacts\moscito romashka&amp;quot;&lt;br /&gt;
&lt;br /&gt;
$prefetch 			= 64&lt;br /&gt;
cform				= skeleton&lt;br /&gt;
class				= ARTEFACT&lt;br /&gt;
&lt;br /&gt;
visual				= physics\anomaly\artefact_blackdrip.ogf  &lt;br /&gt;
description			= enc_zone_artifact_af-romashka&lt;br /&gt;
inv_name			= af-romashka&lt;br /&gt;
inv_name_short		= &lt;br /&gt;
inv_weight			= 0.5&lt;br /&gt;
&lt;br /&gt;
inv_grid_x			= 9&lt;br /&gt;
inv_grid_y			= 4&lt;br /&gt;
&lt;br /&gt;
cost				= 1000&lt;br /&gt;
&lt;br /&gt;
jump_height			= .5&lt;br /&gt;
&lt;br /&gt;
particles			= anomaly2\artefact\artefact_gravi&lt;br /&gt;
&lt;br /&gt;
lights_enabled = false&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
;скорости увеличения (уменьшения) &lt;br /&gt;
health_restore_speed		= 0.0			&lt;br /&gt;
radiation_restore_speed		= 0.0005&lt;br /&gt;
satiety_restore_speed		= 0.0&lt;br /&gt;
power_restore_speed			= 0.0&lt;br /&gt;
bleeding_restore_speed		= 0.0&lt;br /&gt;
hit_absorbation_sect		= af_romashka_absorbation&lt;br /&gt;
&lt;br /&gt;
artefact_activation_seq		= af_activation_bold&lt;br /&gt;
&lt;br /&gt;
[af_romashka_absorbation]&lt;br /&gt;
burn_immunity = 1.0				;коэффициенты иммунитета &lt;br /&gt;
strike_immunity = 1.0&lt;br /&gt;
shock_immunity = 1.0&lt;br /&gt;
wound_immunity = 1.0		&lt;br /&gt;
radiation_immunity = 1.0&lt;br /&gt;
telepatic_immunity = 1.0&lt;br /&gt;
chemical_burn_immunity = 1.0&lt;br /&gt;
explosion_immunity = 1.0&lt;br /&gt;
fire_wound_immunity  = 0.98&amp;lt;/in&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Назначение некоторых параметров, влияющих на одевшего артефакт:&lt;br /&gt;
&lt;br /&gt;
* health_restore_speed  - прирост к скорости восстановления здоровья&lt;br /&gt;
* radiation_restore_speed  - прирост скорость вывода радиации&lt;br /&gt;
* satiety_restore_speed  - прирост к голоду&lt;br /&gt;
* power_restore_speed  - прирост к выносливости&lt;br /&gt;
* bleeding_restore_speed - прирост к скорости остановки кровотечений&lt;br /&gt;
&lt;br /&gt;
== Создание описания и имени артефакта ==&lt;br /&gt;
Заходим в ''gamedata\config\text\rus'' и открываем файл '''string_table_enc_zone.xml'''.&lt;br /&gt;
Добавим туда строку с названием артефакта.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;xml&amp;gt; &amp;lt;string id=&amp;quot;af-romashka&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;text&amp;gt;&amp;quot;Ромашка&amp;quot;&amp;lt;/text&amp;gt;&lt;br /&gt;
	&amp;lt;/string&amp;gt;&amp;lt;/xml&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Теперь у артефакта есть имя, но одного его недостаточно. Нужно сделать описание.&amp;lt;br&amp;gt;&lt;br /&gt;
Поэтому добавим и его.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;xml&amp;gt;	&amp;lt;string id=&amp;quot;enc_zone_artifact_af-romaska&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;text&amp;gt;Очень странный артефакт. Впервые появился в Зоне где-то в 2011 году, но толку от него - ноль. Ученые&lt;br /&gt;
                      не обнаружили никакого влияния артефакта на организм носителя.&amp;lt;/text&amp;gt;&lt;br /&gt;
	&amp;lt;/string&amp;gt;&amp;lt;/xml&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Все, поздравляю, вы только что создали свой первый артефакт! :)&lt;br /&gt;
&lt;br /&gt;
==Авторы==&lt;br /&gt;
&lt;br /&gt;
Статья создана: [[Участник:Шустрый|Шустрый]]&amp;lt;br&amp;gt;&lt;br /&gt;
Редакция: [[Участник:BAC9-FLCL|BAC9-FLCL]]&lt;br /&gt;
&lt;br /&gt;
[[Категория:Конфигурационные_файлы]]&lt;/div&gt;</summary>
		<author><name>91.218.192.254</name></author>	</entry>

	<entry>
		<id>http://stalkerin.gameru.net/wiki/index.php?title=SoC._%D0%A1%D0%BE%D0%B7%D0%B4%D0%B0%D0%BD%D0%B8%D0%B5_%D0%BD%D0%BE%D0%B2%D1%8B%D1%85_%D0%B2%D0%B5%D1%82%D0%BE%D0%BA_%D0%B4%D0%B8%D0%B0%D0%BB%D0%BE%D0%B3%D0%BE%D0%B2</id>
		<title>SoC. Создание новых веток диалогов</title>
		<link rel="alternate" type="text/html" href="http://stalkerin.gameru.net/wiki/index.php?title=SoC._%D0%A1%D0%BE%D0%B7%D0%B4%D0%B0%D0%BD%D0%B8%D0%B5_%D0%BD%D0%BE%D0%B2%D1%8B%D1%85_%D0%B2%D0%B5%D1%82%D0%BE%D0%BA_%D0%B4%D0%B8%D0%B0%D0%BB%D0%BE%D0%B3%D0%BE%D0%B2"/>
				<updated>2013-08-02T08:35:27Z</updated>
		
		<summary type="html">&lt;p&gt;91.218.192.254: оформление, орфография&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==&amp;lt;center&amp;gt;Создание новых веток диалогов.&amp;lt;/center&amp;gt;==&lt;br /&gt;
===Теория:===&lt;br /&gt;
&lt;br /&gt;
(Если где то чего то напутал исправляйте, многое писал интуитивно)&lt;br /&gt;
&lt;br /&gt;
'''1)''' Списки веток диалогов содержатся в файлах вида '''gamedata/config/gameplay/character_desc_*.xml''' &lt;br /&gt;
&lt;br /&gt;
Это например: &lt;br /&gt;
&amp;lt;br&amp;gt;'''character_desc_zombied.xml'''&lt;br /&gt;
&amp;lt;br&amp;gt;'''character_desc_stalker.xml'''&lt;br /&gt;
&amp;lt;br&amp;gt;'''character_desc_garbage.xml'''&lt;br /&gt;
и т. д.&lt;br /&gt;
&lt;br /&gt;
Файлы '''character_desc_*.xml''' можно сравнить со стволом дерева диалогов.&lt;br /&gt;
В них перечисляется названия прикрепляемых к НПС веток диалогов.&lt;br /&gt;
&lt;br /&gt;
Например, вот список веток диалогов с Сидоровичем, взятый из файла '''character_desc_escape.xml'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;		&amp;lt;start_dialog&amp;gt;escape_trader_start_dialog&amp;lt;/start_dialog&amp;gt;&lt;br /&gt;
		&amp;lt;actor_dialog&amp;gt;escape_trader_talk_info&amp;lt;/actor_dialog&amp;gt;&lt;br /&gt;
		&amp;lt;actor_dialog&amp;gt;escape_trader_jobs&amp;lt;/actor_dialog&amp;gt;&lt;br /&gt;
		&amp;lt;actor_dialog&amp;gt;tm_trader_dialog&amp;lt;/actor_dialog&amp;gt;&lt;br /&gt;
		&amp;lt;actor_dialog&amp;gt;tm_trader_reward&amp;lt;/actor_dialog&amp;gt;&lt;br /&gt;
		&amp;lt;actor_dialog&amp;gt;escape_trader_done_blockpost_box&amp;lt;/actor_dialog&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В свою очередь, каждая ветка диалога также может ветвится.&lt;br /&gt;
&lt;br /&gt;
'''2)''' Ветвление веток прописывается уже в других файлах.&lt;br /&gt;
Например, ветвление веток диалога с Сидоровичем содержится в файле '''gamedata/config/gameplay/dialogs_escape.xml'''&lt;br /&gt;
Возьмем оттуда, к примеру, ветвление ветки ''escape_trader_jobs''&lt;br /&gt;
&lt;br /&gt;
(ветвление веток обычно очень большое, поэтому я приведу только часть):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;xml&amp;gt;&amp;lt;dialog id=&amp;quot;escape_trader_talk_info&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;precondition&amp;gt;escape_dialog.trader_has_talk_info_wr&amp;lt;/precondition&amp;gt;&lt;br /&gt;
        &amp;lt;has_info&amp;gt;tutorial_end&amp;lt;/has_info&amp;gt;&lt;br /&gt;
        &amp;lt;phrase_list&amp;gt;&lt;br /&gt;
            &amp;lt;phrase id=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;text&amp;gt;escape_trader_talk_info_1&amp;lt;/text&amp;gt;&lt;br /&gt;
                &amp;lt;next&amp;gt;100&amp;lt;/next&amp;gt;&lt;br /&gt;
                &amp;lt;next&amp;gt;99&amp;lt;/next&amp;gt;&lt;br /&gt;
	      &amp;lt;next&amp;gt;9995&amp;lt;/next&amp;gt;&lt;br /&gt;
            &amp;lt;/phrase&amp;gt;&lt;br /&gt;
&lt;br /&gt;
              …&lt;br /&gt;
              …&lt;br /&gt;
              …&lt;br /&gt;
            &amp;lt;phrase id=&amp;quot;0&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;text&amp;gt;escape_trader_talk_info_0&amp;lt;/text&amp;gt;&lt;br /&gt;
                &amp;lt;next&amp;gt;1&amp;lt;/next&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;/xml&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Здесь ''&amp;lt;precondition&amp;gt;…&amp;lt;/precondition&amp;gt;'' - это скриптовая проверка выполнения условия. Ветка появится в диалоге, только если условие выполняется.&lt;br /&gt;
Конкретно ''&amp;lt;precondition&amp;gt;escape_dialog.trader_has_talk_info_wr&amp;lt;/precondition&amp;gt;'' из ветки  ''escape_trader_talk_info'' есть обращение к функции ''trader_has_talk_info_wr'', находящейся в файле-скрипте '''gamedata/scripts/escape_dialog.script'''.&lt;br /&gt;
&lt;br /&gt;
Функция выглядит так:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lua&amp;gt;function trader_has_talk_info_wr( trader, actor )&lt;br /&gt;
	return true&lt;br /&gt;
end&amp;lt;/lua&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''&amp;lt;precondition&amp;gt;escape_dialog.trader_has_talk_info_wr&amp;lt;/precondition&amp;gt;'' в принципе выполняется всегда, т. к. функция всегда возвращает истbну и ''&amp;lt;dialog id=&amp;quot;escape_trader_talk_info&amp;quot;&amp;gt;'' пропускается в списке реплик.&lt;br /&gt;
Но для конкретной ветки может быть несколько ''precondition'' и других условий.&lt;br /&gt;
&lt;br /&gt;
Далее.&lt;br /&gt;
&amp;lt;br&amp;gt;''&amp;lt;has_info&amp;gt;tutorial_end&amp;lt;/has_info&amp;gt;'' - это также своего рода проверка условия. В данном случае проверка на то, закончена стадия ''tutorial'а'' или нет. Т. е. ветка будет допущена в список реплик, если стадия ''tutorial'а'' закончена.&lt;br /&gt;
более детально об этом в конце данной статьи. При окончании ''tutorial'а'' выдается инфопорция ''tutorial_end'', которая и является стержнем данной проверки.  &lt;br /&gt;
&lt;br /&gt;
А далее идут конкретные фразы содержащие ссылки на вытекающие фразы&lt;br /&gt;
&lt;br /&gt;
Фраза:        &lt;br /&gt;
&amp;lt;xml&amp;gt;&amp;lt;phrase id=&amp;quot;0&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;text&amp;gt;escape_trader_talk_info_0&amp;lt;/text&amp;gt;&lt;br /&gt;
                &amp;lt;next&amp;gt;1&amp;lt;/next&amp;gt;&lt;br /&gt;
&amp;lt;/phrase&amp;gt;&amp;lt;/xml&amp;gt;&lt;br /&gt;
&lt;br /&gt;
это основа ветки ''escape_trader_talk_inf''o. &lt;br /&gt;
Вообще, в любой основной ветке любого диалога фраза ''&amp;lt;phrase id=&amp;quot;0&amp;quot;&amp;gt;'' будет основой, из которой далее будет все вытекать.&lt;br /&gt;
&lt;br /&gt;
''&amp;lt;next&amp;gt;1&amp;lt;/next&amp;gt;'' - это ссылка на вытекающую фразу ''&amp;lt;phrase id=&amp;quot;1&amp;quot;&amp;gt;'':&lt;br /&gt;
&lt;br /&gt;
&amp;lt;xml&amp;gt;       &amp;lt;phrase id=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;text&amp;gt;escape_trader_talk_info_1&amp;lt;/text&amp;gt;&lt;br /&gt;
                &amp;lt;next&amp;gt;100&amp;lt;/next&amp;gt;&lt;br /&gt;
                &amp;lt;next&amp;gt;99&amp;lt;/next&amp;gt;&lt;br /&gt;
	    &amp;lt;next&amp;gt;9995&amp;lt;/next&amp;gt;&lt;br /&gt;
        &amp;lt;/phrase&amp;gt;&amp;lt;/xml&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В свою очередь   ''&amp;lt;next&amp;gt;100&amp;lt;/next&amp;gt;'', ''&amp;lt;next&amp;gt;99&amp;lt;/next&amp;gt;'', ''&amp;lt;next&amp;gt;9995&amp;lt;/next&amp;gt;'' - это ссылки на фразы веточки растущие из фразы ''&amp;lt;phrase id=&amp;quot;1&amp;quot;&amp;gt;''.  &lt;br /&gt;
&lt;br /&gt;
'''3)''' Текст каждой фразы содержится уже в четвертом файле. Для диалога с Сидоровичем тексты лежат в файле '''gamedata/config/text/rus/stable_dialogs_escape.xml'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;xml&amp;gt;	&amp;lt;string id=&amp;quot;escape_trader_talk_info_0&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;text&amp;gt;Есть несколько вопросов.&amp;lt;/text&amp;gt;&lt;br /&gt;
	&amp;lt;/string&amp;gt;&lt;br /&gt;
	&amp;lt;string id=&amp;quot;escape_trader_talk_info_1&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;text&amp;gt;Спрашивай, только я ведь всего не знаю. Сам понимаешь, сижу тут целыми днями, а жизнь - она вся там, снаружи, в Зоне. Могу рассказать о Зоне вообще, а немного могу о ближайших окрестностях, где сам ходил.&amp;lt;/text&amp;gt;&lt;br /&gt;
	&amp;lt;/string&amp;gt;&amp;lt;/xml&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Эти строки содержат тексты для фраз ''&amp;lt;phrase id=&amp;quot;0&amp;quot;&amp;gt;'' и ''&amp;lt;phrase id=&amp;quot;1&amp;quot;&amp;gt;''&lt;br /&gt;
&lt;br /&gt;
Итого диалоги разложены по 4 а то и более файлам.&lt;br /&gt;
&lt;br /&gt;
Да кстати, путь по веткам может быть зацикленным если того требует диалог. Например так:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;xml&amp;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;1&amp;lt;/next&amp;gt;&lt;br /&gt;
            &amp;lt;next&amp;gt;2&amp;lt;/next&amp;gt;&lt;br /&gt;
 &amp;lt;/phrase&amp;gt;&lt;br /&gt;
&amp;lt;phrase id=&amp;quot;1&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;next&amp;gt;12&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;next&amp;gt;1&amp;lt;/next&amp;gt;  - Это возврат к фразе 1. (зацикливание)  &lt;br /&gt;
            &amp;lt;next&amp;gt;111&amp;lt;/next&amp;gt;&lt;br /&gt;
 &amp;lt;/phrase&amp;gt;&amp;lt;/xml&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Практика:===&lt;br /&gt;
Добавим в диалог с Сидоровичем ветку своего собственного изготовления.Например такую: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Меченый: Сидрыч а почему это у тебя зеленые человечки, что по столу бегают, такие худые? &lt;br /&gt;
Сидорович: Чего?!!&lt;br /&gt;
Меченый: Ты их совсем, совсем не кормишь?&lt;br /&gt;
Сидорович: В следующий раз, как пойдешь в зону, бери-ка  вместо водяры побольше антирада. А то мало что таким перегаром дышишь, уже до зеленых человечков долечился… Шутник.&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Для этого:&lt;br /&gt;
&lt;br /&gt;
'''1)''' В файле gamedata/config/gameplay/character_desc_escape.xml в конце списка веток для  trader_а  суем свою ветку с произвольным названием. (например   &amp;lt;actor_dialog&amp;gt;escape_trader_letat_gusi&amp;lt;/actor_dialog&amp;gt;)&lt;br /&gt;
&lt;br /&gt;
Т.е у нас получится так&lt;br /&gt;
&amp;lt;xml&amp;gt;		…&lt;br /&gt;
	&amp;lt;specific_character id=&amp;quot;escape_trader&amp;quot; no_random = &amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
		…&lt;br /&gt;
		…&lt;br /&gt;
		…&lt;br /&gt;
		&amp;lt;start_dialog&amp;gt;escape_trader_start_dialog&amp;lt;/start_dialog&amp;gt;&lt;br /&gt;
		&amp;lt;actor_dialog&amp;gt;escape_trader_talk_info&amp;lt;/actor_dialog&amp;gt;&lt;br /&gt;
		&amp;lt;actor_dialog&amp;gt;escape_trader_jobs&amp;lt;/actor_dialog&amp;gt;&lt;br /&gt;
		&amp;lt;actor_dialog&amp;gt;tm_trader_dialog&amp;lt;/actor_dialog&amp;gt;&lt;br /&gt;
		&amp;lt;actor_dialog&amp;gt;tm_trader_reward&amp;lt;/actor_dialog&amp;gt;&lt;br /&gt;
		&amp;lt;actor_dialog&amp;gt;escape_trader_done_blockpost_box&amp;lt;/actor_dialog&amp;gt;&lt;br /&gt;
                        &amp;lt;actor_dialog&amp;gt;escape_trader_letat_gusi&amp;lt;/actor_dialog&amp;gt;&lt;br /&gt;
	&amp;lt;/specific_character&amp;gt;&lt;br /&gt;
		…&amp;lt;/xml&amp;gt;&lt;br /&gt;
Записываем изменения, и с файлом '''character_desc_escape.xml''' уже все.&lt;br /&gt;
&lt;br /&gt;
'''2)''' Теперь берем файл '''gamedata/config/gameplay/dialogs_escape.xml'''&lt;br /&gt;
&lt;br /&gt;
Диалогу:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;Меченый: Сидрыч а почему это у тебя зеленые человечки, что по столу бегают, такие худые? &lt;br /&gt;
Сидорович: Чего?!!&lt;br /&gt;
Меченый: Ты их совсем, совсем не кормишь?&lt;br /&gt;
Сидорович: В следующий раз, как пойдешь в зону, бери-ка  вместо водяры побольше антирада. А то мало что таким перегаром дышишь, уже до зеленых человечков долечился… Шутник.&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
который мы хотим реализовать, будет соответствовать такая структура:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;xml&amp;gt;&amp;lt;phrase id=&amp;quot;0&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;text&amp;gt;escape_trader_letat_gusi_0&amp;lt;/text&amp;gt;&lt;br /&gt;
            &amp;lt;next&amp;gt;1&amp;lt;/next&amp;gt;&lt;br /&gt;
&amp;lt;/phrase&amp;gt;&lt;br /&gt;
&amp;lt;phrase id=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;text&amp;gt;escape_trader_letat_gusi_1&amp;lt;/text&amp;gt;&lt;br /&gt;
            &amp;lt;next&amp;gt;2&amp;lt;/next&amp;gt;&lt;br /&gt;
 &amp;lt;/phrase&amp;gt;&lt;br /&gt;
&amp;lt;phrase id=&amp;quot;2&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;text&amp;gt; escape_trader_letat_gusi_2&amp;lt;/text&amp;gt;&lt;br /&gt;
            &amp;lt;next&amp;gt;3&amp;lt;/next&amp;gt;&lt;br /&gt;
&amp;lt;/phrase&amp;gt;&lt;br /&gt;
&amp;lt;phrase id=&amp;quot;3&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;text&amp;gt; escape_trader_letat_gusi_3&amp;lt;/text&amp;gt;&lt;br /&gt;
&amp;lt;/phrase&amp;gt;&amp;lt;/xml&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Условия наличия ветки в диалоге можно взять из ветки  ''&amp;lt;dialog id=&amp;quot;escape_trader_talk_info&amp;quot;&amp;gt;''&lt;br /&gt;
Т. е. берем условия  &lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;precondition&amp;gt;escape_dialog.trader_has_talk_info_wr&amp;lt;/precondition&amp;gt;&amp;lt;/code&amp;gt; &lt;br /&gt;
и  &lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;has_info&amp;gt;tutorial_end&amp;lt;/has_info&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
(Можно было конечно прописать в скрипте еще одно условие для ветки, чтоб она появилась только один раз, &lt;br /&gt;
а потом больше не возникала. Но об этом как-нибудь позже допишу.)&lt;br /&gt;
&lt;br /&gt;
В итоге у нас получилась такая структура:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;xml&amp;gt;&amp;lt;dialog id=&amp;quot;escape_trader_letat_gusi&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;precondition&amp;gt;escape_dialog.trader_has_talk_info_wr&amp;lt;/precondition&amp;gt;&lt;br /&gt;
        &amp;lt;has_info&amp;gt;tutorial_end&amp;lt;/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;escape_trader_letat_gusi_0&amp;lt;/text&amp;gt;&lt;br /&gt;
                              &amp;lt;next&amp;gt;1&amp;lt;/next&amp;gt;&lt;br /&gt;
                    &amp;lt;/phrase&amp;gt;&lt;br /&gt;
                     &amp;lt;phrase id=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
                               &amp;lt;text&amp;gt;escape_trader_letat_gusi_1&amp;lt;/text&amp;gt;&lt;br /&gt;
                                &amp;lt;next&amp;gt;2&amp;lt;/next&amp;gt;&lt;br /&gt;
                     &amp;lt;/phrase&amp;gt;&lt;br /&gt;
                     &amp;lt;phrase id=&amp;quot;2&amp;quot;&amp;gt;&lt;br /&gt;
                                &amp;lt;text&amp;gt; escape_trader_letat_gusi_2&amp;lt;/text&amp;gt;&lt;br /&gt;
                                &amp;lt;next&amp;gt;3&amp;lt;/next&amp;gt;&lt;br /&gt;
                     &amp;lt;/phrase&amp;gt;&lt;br /&gt;
                     &amp;lt;phrase id=&amp;quot;3&amp;quot;&amp;gt;&lt;br /&gt;
                                  &amp;lt;text&amp;gt; escape_trader_letat_gusi_3&amp;lt;/text&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;/xml&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ее нужно вставить в любом месте между dialog id_шниками других веток в файле '''dialogs_escape.xml'''.&lt;br /&gt;
&lt;br /&gt;
Главное не промахнутся и засунуть именно между, а не внутрь одного из dialog id&lt;br /&gt;
&lt;br /&gt;
Все что находится между тегами &amp;lt;dialog id=&amp;quot;***&amp;quot;&amp;gt; и   &amp;lt;/dialog&amp;gt; это внутенности конкретного dialog id&lt;br /&gt;
&lt;br /&gt;
Т.е совать наш&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;dialog id=&amp;quot;escape_trader_letat_gusi&amp;quot;&amp;gt;&lt;br /&gt;
 …  &lt;br /&gt;
&amp;lt;/dialog&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
надо &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;dialog id=&amp;quot;*** &amp;quot;&amp;gt;&lt;br /&gt;
…&lt;br /&gt;
&amp;lt;/dialog&amp;gt;&lt;br /&gt;
здесь&lt;br /&gt;
&amp;lt;dialog id=&amp;quot;*** &amp;quot;&amp;gt;&lt;br /&gt;
…&lt;br /&gt;
&amp;lt;/dialog&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
но&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;dialog id=&amp;quot;*** &amp;quot;&amp;gt;&lt;br /&gt;
не здесь&lt;br /&gt;
&amp;lt;/dialog&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
После сохранения внесенных изменений с файлом '''dialogs_escape.xml''' все.&lt;br /&gt;
&lt;br /&gt;
'''3)''' Теперь вбиваем сами текстовички в файле '''gamedata/config/text/rus/stable_dialogs_escape.xml'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Т.е нам надо в файле '''stable_dialogs_escape.xml''' вставить такую конструкцию:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;xml&amp;gt;	&amp;lt;string id=&amp;quot;escape_trader_letat_gusi_0&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;text&amp;gt;Сидрыч а почему это у тебя зеленые человечки, что по столу бегают, такие худые?&amp;lt;/text&amp;gt;&lt;br /&gt;
	&amp;lt;/string&amp;gt;&lt;br /&gt;
	&amp;lt;string id=&amp;quot;escape_trader_letat_gusi_1&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;text&amp;gt;Чего?!!&amp;lt;/text&amp;gt;&lt;br /&gt;
	&amp;lt;/string&amp;gt;&lt;br /&gt;
	&amp;lt;string id=&amp;quot;escape_trader_letat_gusi_2&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;text&amp;gt;Ты их совсем, совсем не кормишь?&amp;lt;/text&amp;gt;&lt;br /&gt;
	&amp;lt;/string&amp;gt;&lt;br /&gt;
	&amp;lt;string id=&amp;quot;escape_trader_letat_gusi_3&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;text&amp;gt;В следующий раз, как пойдешь в зону, бери-ка  вместо водяры побольше антирада. А то мало что таким перегаром дышишь, уже до зеленых человечков долечился… Шутник.&amp;lt;/text&amp;gt;&lt;br /&gt;
	&amp;lt;/string&amp;gt;&amp;lt;/xml&amp;gt;&lt;br /&gt;
&lt;br /&gt;
в любом месте между уже существующими string id &lt;br /&gt;
	&amp;lt;pre&amp;gt;&lt;br /&gt;
      &amp;lt;string id=&amp;quot;*** &amp;quot;&amp;gt;&lt;br /&gt;
	&amp;lt;/string&amp;gt;&lt;br /&gt;
              сюда&lt;br /&gt;
	&amp;lt;string id=&amp;quot;*** &amp;quot;&amp;gt;&lt;br /&gt;
	&amp;lt;/string&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Но не внутрь одного из существующих string id&lt;br /&gt;
	&amp;lt;pre&amp;gt;&lt;br /&gt;
      &amp;lt;string id=&amp;quot;*** &amp;quot;&amp;gt;&lt;br /&gt;
               не сюда&lt;br /&gt;
	&amp;lt;/string&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
После сохранения изменений, у нас все готово. Можно грузить игру и смотреть что получилось.&lt;br /&gt;
&lt;br /&gt;
===Практический пример не работает со вторым патчем - решение проблемы===&lt;br /&gt;
&lt;br /&gt;
По крайней мере со вторым патчем несовместимо условие &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;precondition&amp;gt;escape_dialog.trader_has_talk_info_wr&amp;lt;/precondition&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Использование этого условия приведет к вылету &lt;br /&gt;
&lt;br /&gt;
так как со вторым патчем из файла '''escape_dialog.script''' была удалена функция: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;lua&amp;gt;function trader_has_talk_info_wr( trader, actor ) &lt;br /&gt;
   return true &lt;br /&gt;
end&amp;lt;/lua&amp;gt;&lt;br /&gt;
&lt;br /&gt;
можно либо воткнуть эту функцию обратно в '''escape_dialog.scrip'''t &lt;br /&gt;
&lt;br /&gt;
либо использовать другие более мение подходящие условия, например:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;precondition&amp;gt;escape_dialog.trader_alredy_give_job&amp;lt;/precondition&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Дополение от XiaNi====&lt;br /&gt;
По поводу &amp;lt;precondition&amp;gt; в данном примере.. он тут реально вообще не нужен тем более что возвращает всегда одно и то же... тут уж или реально надо использовать функцию которая хоть чтото проверяет нужное для диалога... а так... диалог и так будет активным если убрать &amp;lt;precondition&amp;gt; (в данном случае это 100%)&lt;br /&gt;
&lt;br /&gt;
''&amp;lt;has_info&amp;gt;'' и ''&amp;lt;dont_has_info&amp;gt;'' это условия на присутствие и соответственно отсутствие у игрока &amp;quot;информации&amp;quot; которая, на самом деле, всего лишь флажок, что пользователь слышал о чем-то или видел что-то который выдается:&lt;br /&gt;
1. условиями &amp;quot;логики&amp;quot; прописанной объектам или неписям.&lt;br /&gt;
2. скриптами&lt;br /&gt;
3. диалогами через например &amp;quot;&amp;lt;give_info&amp;gt;tutorial_end&amp;lt;/give_info&amp;gt;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
В принципе ''&amp;lt;has_info&amp;gt;'' соответствует скриптовому аналогу функции ''has_alife_info''&lt;br /&gt;
так например ''&amp;lt;has_info&amp;gt;tutorial_end&amp;lt;/has_info&amp;gt;'' можно заменить на ''&amp;lt;precondition&amp;gt;check_tutor_end&amp;lt;/precondition&amp;gt;'' и дописать в '''escape_dialog.script''' строчки :&lt;br /&gt;
&amp;lt;lua&amp;gt;&lt;br /&gt;
function check_tutor_end(actor, npc)&lt;br /&gt;
if	has_alife_info(&amp;quot;tutorial_end&amp;quot;)&lt;br /&gt;
	then&lt;br /&gt;
	 return true&lt;br /&gt;
        else&lt;br /&gt;
         return false&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/lua&amp;gt;&lt;br /&gt;
в которой мы проверяем есть ли информация ''tutorial_end'' у игрока.&lt;br /&gt;
&lt;br /&gt;
==Авторы==&lt;br /&gt;
&lt;br /&gt;
Статья создана:&lt;br /&gt;
&lt;br /&gt;
* [[Участник:BAC9-FLCL|BAC9-FLCL]]&lt;br /&gt;
* [[Участник:Keha|Keha]]&lt;br /&gt;
* [[Участник:XiaNi|XiaNi]]&lt;br /&gt;
[[Категория:Конфигурационные_файлы]]&lt;/div&gt;</summary>
		<author><name>91.218.192.254</name></author>	</entry>

	<entry>
		<id>http://stalkerin.gameru.net/wiki/index.php?title=%D0%9D%D0%B0%D1%87%D0%B0%D0%BB%D1%8C%D0%BD%D1%8B%D0%B5_%D1%81%D0%B2%D0%B5%D0%B4%D0%B5%D0%BD%D0%B8%D1%8F_%D0%BE_%D1%81%D0%BA%D1%80%D0%B8%D0%BF%D1%82%D0%B0%D1%85</id>
		<title>Начальные сведения о скриптах</title>
		<link rel="alternate" type="text/html" href="http://stalkerin.gameru.net/wiki/index.php?title=%D0%9D%D0%B0%D1%87%D0%B0%D0%BB%D1%8C%D0%BD%D1%8B%D0%B5_%D1%81%D0%B2%D0%B5%D0%B4%D0%B5%D0%BD%D0%B8%D1%8F_%D0%BE_%D1%81%D0%BA%D1%80%D0%B8%D0%BF%D1%82%D0%B0%D1%85"/>
				<updated>2013-08-01T11:26:27Z</updated>
		
		<summary type="html">&lt;p&gt;91.218.192.254: Продолжаю приводить статью к нормальному виду. Дополнил инфу, исправил некоторые косяки и ошибки&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;ПРЕДИСЛОВИЕ&lt;br /&gt;
{{Message_box|&lt;br /&gt;
id	=pseudoscience|&lt;br /&gt;
align = left|&lt;br /&gt;
backgroundcolor	= #f9f9f9|&lt;br /&gt;
image	=Lamp.gif|&lt;br /&gt;
heading	= Для чего нужны срипты и сведения и их использовании - Rez@niy aka Oxygenium|&lt;br /&gt;
message = В скриптах содержаться данные для выполнения по условиям.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Итак, начнём. Создадим в папке '''gamedata/scripts''' файл с любым названием и расширением '''.script'''. Пускай, '''my_test.script'''. В нем будем прописывать функции.   &lt;br /&gt;
Рассмотрим простой скрипт спавна предмета в рюкзак ГГ. Пропишем:&lt;br /&gt;
&amp;lt;lua&amp;gt;--*********************************************&lt;br /&gt;
--**TESTING**&lt;br /&gt;
--*********************************************&lt;br /&gt;
--&lt;br /&gt;
-- Создает в рюкзаке ГГ &amp;quot;калаш&amp;quot;&lt;br /&gt;
function ak_create()&lt;br /&gt;
alife():create(&amp;quot;wpn_ak74&amp;quot;,db.actor:position(),db.actor:level_vertex_id(),db.actor:game_vertex_id(),db.actor:id())&lt;br /&gt;
end&amp;lt;/lua&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Давайте разбирать.&lt;br /&gt;
Скрипты считывают всю информацию в файлах. Не удивляйтесь, если игра вылетит при наличии лишнего текста, символов и прочего ненужного в скрипте. Однако, подобных проблем возникать не будет, если мы ''закомментируем'' лишнее. Чтобы система не считывала текст, перед ним мы ставим две черточки:&lt;br /&gt;
&amp;lt;code&amp;gt;--&amp;lt;/code&amp;gt;&lt;br /&gt;
Часто скриптеры комментируют таким образом информацию, которая на данный момент не нужна, но возможно пригодится в дальнейшем. Вообщем, если есть желание ее в определенном виде сохранить, используется комментирование. В данном случае, система не будет считывать следующие строки:&lt;br /&gt;
&amp;lt;code&amp;gt;--*********************************************&lt;br /&gt;
--**TESTING**&lt;br /&gt;
--*********************************************&lt;br /&gt;
--&lt;br /&gt;
-- Создает в рюкзаке ГГ &amp;quot;калаш&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
Идем дальше.  &lt;br /&gt;
''function'' - всегда обязательное начало, это что-то в роде id в языке '''LUA'''. После ''function'' отступаем и пишем текст произвольный. Это название функции. Не забываем в конце названия функции дописать две круглые скобки:&lt;br /&gt;
&amp;lt;code&amp;gt;()&amp;lt;/code&amp;gt; &lt;br /&gt;
Это обязательный элемент. В нем указываются переменные функции, с которыми идет работа. В нашем случае таковых нету, но элемент обязателен.  &lt;br /&gt;
Дальше идёт сам спавн объекта:&lt;br /&gt;
&amp;lt;code&amp;gt;alife():create(&amp;quot;wpn_ak74&amp;quot;,db.actor:position(),db.actor:level_vertex_id(),db.actor:game_vertex_id(),db.actor:id())&amp;lt;/code&amp;gt;&lt;br /&gt;
В конце функции тег ''end''. Он означает конец функции. Логично, правда? :) &lt;br /&gt;
Напоминаю, при таком раскладе АК-74 заспавнится в рюкзак ГГ. &lt;br /&gt;
Если же мы пожелаем заспавнить калаш где-нибудь на локации, вызов спавна приобретет следующий вид:&lt;br /&gt;
&amp;lt;code&amp;gt;alife():create(&amp;quot;wpn_ak74&amp;quot;,vector():set(-81.800,-4.980,-72.739),186578,76)&amp;lt;/code&amp;gt;&lt;br /&gt;
АК заспавнится в вагончике, недалеко от Деревни новичков.&lt;br /&gt;
Но без детального разбора мы дальше, пожалуй,не пойдем. В целом, скелет функции спавна таким методом выглядит так:&lt;br /&gt;
&amp;lt;lua&amp;gt;function название_функции()&lt;br /&gt;
alife():create(&amp;quot;id_предмета&amp;quot;,vector():set(x,y,z),level_vertex_id,game_vertex_id)&lt;br /&gt;
end&amp;lt;/lua&amp;gt; &lt;br /&gt;
Про конкретные значения.&lt;br /&gt;
''alife():create'' - стандартный вызов спавна&lt;br /&gt;
''vector():set'' - инициализация координат &lt;br /&gt;
''x,y,z'' - координаты места по долготе, высоте, ширине&lt;br /&gt;
''level_vertex_id'' и ''game_vertex_id'' - дополнительные координаты относительно локации &lt;br /&gt;
Все это нужно снимать в игре. Есть множество способов.&lt;br /&gt;
Что касается спавна в рюкзак ГГ, тут с координатами действует немного другая схема. Есть инициализация актера, котрая идет через ''db.actor:''&lt;br /&gt;
''db.actor:position()'' - координаты x,y,z актера&lt;br /&gt;
''db.actor:level_vertex_id(),db.actor:game_vertex_id()'' - думаю, понятно &lt;br /&gt;
''db.actor:id()'' - дополнительный параметр, сам id актера, нужен, чтоб предмет заспавнился именно в рюкзак.&lt;br /&gt;
&amp;lt;br&amp;gt;Написали? Отлично!&lt;br /&gt;
&amp;lt;br&amp;gt;Теперь осталось только подключить это к игре, то есть вызвать функцию спавна.  &lt;br /&gt;
&amp;lt;br&amp;gt;Идём в файл '''dialogs_escape.xml''' и выбираем какой-нибудь диалог. &lt;br /&gt;
&amp;lt;br&amp;gt;Там, после поля ''text'',  одной из фраз диалога приписываем: &lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;action&amp;gt;my_test.ak_create&amp;lt;/action&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
Как это понимать:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;action&amp;gt;название_скрипта.название_функции&amp;lt;/action&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;Всё, сохраняем  и тестим. В итоге, когда вы в игре нажмёте на фразу после которой находится ''action'', заспауниться калаш на указанных координатах.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Message_box|&lt;br /&gt;
id	=pseudoscience1|&lt;br /&gt;
align = left|&lt;br /&gt;
backgroundcolor	= #f9f9f9|&lt;br /&gt;
image	=Lamp.gif|&lt;br /&gt;
heading	= Углублённое изучение - Rez@niy|&lt;br /&gt;
message = Далее идём в более углублённое изучение. Изучаем построение}}&lt;br /&gt;
&lt;br /&gt;
Прописываем функцию. Задаём условие:&lt;br /&gt;
&amp;lt;code&amp;gt;if =&amp;lt;/code&amp;gt;&lt;br /&gt;
Для закрытия тэга:&lt;br /&gt;
&amp;lt;code&amp;gt;end&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
ПОКА ВСЁ, МОЖЕТ НАПИШУ ЕЩЁ ЧЁ НИТЬ ПОЛЕЗНОЕ&lt;br /&gt;
&lt;br /&gt;
Ну и я напишу.'''Меченый(Стрелок)'''&lt;br /&gt;
&lt;br /&gt;
Мой монолог построен так: В - Вопрос,О - Ответ&lt;br /&gt;
&lt;br /&gt;
Начнём:&lt;br /&gt;
'''В''' - Что такое ЦИКЛ? И как он выглядит?&lt;br /&gt;
''О'' - Цикл это повторение одного и того же действие n-ое кол-во раз&lt;br /&gt;
выглядит так&lt;br /&gt;
&amp;lt;pre&amp;gt;for i=1,n do&lt;br /&gt;
&lt;br /&gt;
end&amp;lt;/pre&amp;gt;&lt;br /&gt;
За место i может быть любая переменная ,за место n - число которое больше первоначального значения(i)&lt;br /&gt;
'''В''' - А для чего можно использовать цикл?&lt;br /&gt;
''О'' - много для чего можно.см. ниже&lt;br /&gt;
Пример 1.Перебор по id/Узнаем монстор ли объект,если да ,то функция возвращает истину(true)&lt;br /&gt;
&amp;lt;lua&amp;gt;for id=1,65535 do&lt;br /&gt;
local obj = level.object_by_id(id)&lt;br /&gt;
if obj~= nil then&lt;br /&gt;
if IsMonster(obj) then&lt;br /&gt;
return true&lt;br /&gt;
else&lt;br /&gt;
return false&lt;br /&gt;
end&lt;br /&gt;
end&lt;br /&gt;
end&amp;lt;/lua&amp;gt;&lt;br /&gt;
Пример 2.Спавн/&lt;br /&gt;
&amp;lt;lua&amp;gt;for i=1,5 do --функция повторится 5 раз,следовательно будет заспавнено 5 АК &lt;br /&gt;
	local a = vector() &lt;br /&gt;
	a.x = -220.21&lt;br /&gt;
	a.y = -19.93&lt;br /&gt;
	a.z = -158.98&lt;br /&gt;
	alife():create(&amp;quot;wpn_ak47&amp;quot;,a,33447,47,65535)&lt;br /&gt;
end&amp;lt;/lua&amp;gt;&lt;br /&gt;
и т.п.&lt;br /&gt;
существует ещё цикл  с предусловием (while a,n do),но об этом позже&lt;br /&gt;
'''В''' - Какие параметры ГГ можно корректировать  скриптами?&lt;br /&gt;
''О'' - Таких не много, запись будет такой :&lt;br /&gt;
&amp;lt;pre&amp;gt;db.actor.параметр&amp;lt;/pre&amp;gt;&lt;br /&gt;
Параметры:&lt;br /&gt;
&amp;lt;pre&amp;gt;radiation&lt;br /&gt;
health&lt;br /&gt;
psy_health&lt;br /&gt;
power&amp;lt;/pre&amp;gt;&lt;br /&gt;
'''В''' - а можно ли спавнить в рандомной точке предмет,если да,то как?&lt;br /&gt;
''О'' - можно&lt;br /&gt;
Для этого нам понадобится таблица максимальных значений ''level_vertex_id'' и ''game_vertex_id''&lt;br /&gt;
выглядит она так:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ini&amp;gt;local level_vertexes={&lt;br /&gt;
l01_escape = {lvid=595580, gvid=44},&lt;br /&gt;
l02_garbage = {lvid=384039, gvid=265},&lt;br /&gt;
l03_agroprom = {lvid=438379, gvid=693},&lt;br /&gt;
l04_darkvalley = {lvid=392517, gvid=813},&lt;br /&gt;
l06_rostok = {lvid=69283, gvid=1311},&lt;br /&gt;
l07_military = {lvid=915663, gvid=1546},&lt;br /&gt;
l10_radar = {lvid=796328, gvid=1868},&lt;br /&gt;
l11_pripyat = {lvid=295965, gvid=2269}&lt;br /&gt;
}&amp;lt;/ini&amp;gt;&lt;br /&gt;
&lt;br /&gt;
ЗЫ:Извините ,что не для всех уровней,исправлюсь &lt;br /&gt;
Так,таблица у нас есть ,теперь нам нужно написать функцию спавна.Давайте покажу на Монстрах&lt;br /&gt;
создадим таблицу с секциями спавна монстров:&lt;br /&gt;
(Я буду использовать свои наработки ,поэтому таких секции у вас не будет ,эта таблица -пример)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lua&amp;gt;local mutants = {&lt;br /&gt;
&amp;quot;zombie_ghost_hell&amp;quot;,&lt;br /&gt;
&amp;quot;zombie_normal_hell&amp;quot;,&lt;br /&gt;
&amp;quot;zombie_immortal_hell&amp;quot;,&lt;br /&gt;
&amp;quot;bloodsucker_weak_hell&amp;quot;,&lt;br /&gt;
&amp;quot;tushkano_normal_hell&amp;quot;,&lt;br /&gt;
&amp;quot;snork_weak_hell&amp;quot;,&lt;br /&gt;
&amp;quot;burer_weak_hell&amp;quot;,&lt;br /&gt;
&amp;quot;cat_weak_hell&amp;quot;,&lt;br /&gt;
&amp;quot;chimera_weak_hell&amp;quot;,&lt;br /&gt;
&amp;quot;gigant_strong_hell&amp;quot;&lt;br /&gt;
}&amp;lt;/lua&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Таблицу записали ,наконец приступим к оформлению главной функции&lt;br /&gt;
&amp;lt;lua&amp;gt;function random_spawn()&lt;br /&gt;
local count = math.random(5,20) --выбираем кол-во заспавненых мобов&lt;br /&gt;
local section = mutants[math.random(table.getn(mutants))] -- выбираем секцию моба&lt;br /&gt;
local lv = math.random(level_vertexes[level.name()][&amp;quot;lvid&amp;quot;]) --выбираем левел вертекс&lt;br /&gt;
local gv = level_vertexes[level.name()][&amp;quot;gvid&amp;quot;] --выбираем гэйм вертекс&lt;br /&gt;
for ind = 1, count do&lt;br /&gt;
alife():create(section, level.vertex_position(lv), lv, gv)--\\level.vertex_position(lv) - позиция левел вертекса&lt;br /&gt;
end&lt;br /&gt;
end&amp;lt;/lua&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Далее помещаем вызов функции в '''bind_stalker.script''' в ''net_spawn()'' и при каждой загрузке будут спавнится мобы в рандомной точке&lt;br /&gt;
[[Категория:Скрипты]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;big&amp;gt;Вступление ГГ в группировку!&amp;lt;/big&amp;gt;&lt;br /&gt;
1.Создаем файл '''ваше_название_скприпта.script''' в папке '''gamedata/scripts'''&lt;br /&gt;
2. Открываем его и пишем:&lt;br /&gt;
--меняем группировку ГГ&lt;br /&gt;
&amp;lt;lua&amp;gt;function new_group(actor, npc)&lt;br /&gt;
if npc:character_community() ~= &amp;quot;(dolg)&amp;quot; then &lt;br /&gt;
npc:set_character_community(&amp;quot;dolg&amp;quot;, 0, 0) &lt;br /&gt;
end&lt;br /&gt;
end&amp;lt;/lua&amp;gt;&lt;br /&gt;
Выдаём функцию при разговоре с НПС&lt;br /&gt;
&lt;br /&gt;
НПС вступает в группировку&lt;br /&gt;
&amp;lt;pre&amp;gt;function ваше_название_функции(npc, actor)&amp;lt;/pre&amp;gt;&lt;br /&gt;
Вызываем также, из любого диалога&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;big&amp;gt;Нельзя взять оружие без брони&amp;lt;/big&amp;gt;&lt;br /&gt;
Пишем функцию в любом скрипе:&lt;br /&gt;
&amp;lt;lua&amp;gt;function ваше_название_функции()&lt;br /&gt;
local armor = db.actor:item_in_slot(6) --слот брони (НЕ ТРОГАТЬ!)&lt;br /&gt;
local weapon = db.actor:item_in_slot(2) --слот оружия (для пистолетов в оригинале слот 1)&lt;br /&gt;
&lt;br /&gt;
if db.actor:active_slot()==2 and weapon then -- за место 2 пишем слот оружия еще раз&lt;br /&gt;
local tmp&lt;br /&gt;
if armor then&lt;br /&gt;
tmp = armor:section()&lt;br /&gt;
else&lt;br /&gt;
tmp = &amp;quot;none&amp;quot;&lt;br /&gt;
end&amp;lt;/lua&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lua&amp;gt;if (not string.find(tmp, &amp;quot;пишем_название_брони&amp;quot; )) and (weapon:section()==&amp;quot;пишем_название_оружия1&amp;quot; or weapon:section()==&amp;quot;пишем_название_оружия2&amp;quot; or weapon:section()==&amp;quot;пишем_название_оружия3&amp;quot;) then --если необходима проверка одного оружия то надо писать так: if (not string.find(tmp, &amp;quot;exo&amp;quot; )) and weapon:section()==&amp;quot;wpn_pkm&amp;quot; then&lt;br /&gt;
db.actor:drop_item(weapon)&lt;br /&gt;
local tmpw = amk.spawn_item_in_inv(weapon:section())&lt;br /&gt;
db.actor:transfer_item(weapon,db.actor)&lt;br /&gt;
alife():release(tmpw)&lt;br /&gt;
news_manager.send_tip(db.actor,&amp;quot;Невозможно взять пулемёт в руки без экзы&amp;quot;,nil,nil,10000)&lt;br /&gt;
end&lt;br /&gt;
end&amp;lt;/lua&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Далее идем по пути '''gamedata/script/bind_stalker.script'''&lt;br /&gt;
Функция: &lt;br /&gt;
&amp;lt;pre&amp;gt;function actor_binder:update(delta)&amp;lt;/pre&amp;gt;&lt;br /&gt;
Сразу ниже неё пиши вызов в формате :&lt;br /&gt;
&amp;lt;code&amp;gt;название_файла.название_функции&amp;lt;/code&amp;gt;&lt;br /&gt;
Можешь написать эту функцию в любом файле из папки '''scripts''', а можешь создать свой файл и назвать, скажем, '''my_script''', и написать там.&lt;br /&gt;
Должно быть так :&lt;br /&gt;
Код&lt;br /&gt;
&amp;lt;lua&amp;gt;function actor_binder:update(delta)&lt;br /&gt;
my_script.check_armor()&amp;lt;/lua&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;big&amp;gt;Удаление предмета из инвентаря&amp;lt;/big&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lua&amp;gt;function name_function()&lt;br /&gt;
local se_obj = alife():object(&amp;quot;сюда_пишем_что_удалять_будем&amp;quot;)&lt;br /&gt;
if se_obj then&lt;br /&gt;
alife():release(se_obj, true)&lt;br /&gt;
end&lt;br /&gt;
end&amp;lt;/lua&amp;gt;&lt;br /&gt;
&lt;br /&gt;
ПРИМЕР&lt;br /&gt;
--' убираем финального Клыка&lt;br /&gt;
&amp;lt;lua&amp;gt;function dell_kluk_final()&lt;br /&gt;
local se_obj = alife():object(&amp;quot;final_kluk&amp;quot;)&lt;br /&gt;
if se_obj then&lt;br /&gt;
alife():release(se_obj, true)&lt;br /&gt;
end&lt;br /&gt;
end&amp;lt;/lua&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Я добвлю может кому и пригодится.'''Болотный Доктор'''&lt;br /&gt;
&lt;br /&gt;
         ВЫДАЁМ ПРЕДМЕТ АКТОРУ&lt;br /&gt;
&amp;lt;lua&amp;gt;function название функции (first_speaker, second_speaker)&lt;br /&gt;
dialogs.relocate_item_section(second_speaker, &amp;quot;название предмета&amp;quot;, &amp;quot;in&amp;quot;) &lt;br /&gt;
end&amp;lt;/lua&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Размещается в файлах скрипт.&lt;br /&gt;
&lt;br /&gt;
Выдача поршня вставляется под строку действия.&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;action&amp;gt;название скрипта.название функции&amp;lt;/action&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Примечание, что бы выдать два одинаковых предмета пишем&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lua&amp;gt;function название функции (first_speaker, second_speaker)&lt;br /&gt;
dialogs.relocate_item_section(second_speaker, &amp;quot;название предмета&amp;quot;, &amp;quot;in&amp;quot;,2) &lt;br /&gt;
end&amp;lt;/lua&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Если надо больше меняем цифру 2 на нужную нам.&lt;br /&gt;
&lt;br /&gt;
      ОТБИРАЕМ ПРЕДМЕТ У АКТОРА.&lt;br /&gt;
&amp;lt;lua&amp;gt;function название функции(first_speaker, second_speaker)&lt;br /&gt;
    dialogs.relocate_item_section_from_actor(first_speaker, second_speaker, &amp;quot;название предмета&amp;quot;)&lt;br /&gt;
end&amp;lt;/lua&amp;gt;&lt;br /&gt;
&lt;br /&gt;
размещается в файлах скрипт&lt;br /&gt;
&lt;br /&gt;
выдача поршня вставляется под строку действия:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;action&amp;gt;название скрипта.название функции&amp;lt;/action&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Примечание, что бы отобрать два одинаковых предмета пишем&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lua&amp;gt;function название функции(first_speaker, second_speaker)&lt;br /&gt;
    dialogs.relocate_item_section_from_actor(first_speaker, second_speaker, &amp;quot;название предмета&amp;quot;,2)&lt;br /&gt;
end&amp;lt;/lua&amp;gt;&lt;br /&gt;
Если надо больше меняем цифру 2 на нужную нам.&lt;br /&gt;
&lt;br /&gt;
      СПАВНИМ ВЕЩЬ В РЮКЗАК гг&lt;br /&gt;
&amp;lt;lua&amp;gt;function название функции()&lt;br /&gt;
local obj = alife():create(&amp;quot;ВЕЩЬ&amp;quot;, db.actor:position(), db.actor:level_vertex_id(), db.actor:game_vertex_id(), db.actor:id())&lt;br /&gt;
end&amp;lt;/lua&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В диалог:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;action&amp;gt;название скрипта.название функции&amp;lt;/action&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
ПРОВЕРКА НАЛИЧИЯ У АКТОРА ПРЕДМЕТА&lt;br /&gt;
Вариант первый&lt;br /&gt;
&amp;lt;lua&amp;gt;function Название функции()&lt;br /&gt;
    if db.actor:object(&amp;quot;название предмета&amp;quot;) then&lt;br /&gt;
        return true&lt;br /&gt;
    end&lt;br /&gt;
    return false&lt;br /&gt;
end&amp;lt;/lua&amp;gt;&lt;br /&gt;
&lt;br /&gt;
в диалог:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;precondition&amp;gt;имя скрипта.название функции&amp;lt;/precondition&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;---------Вариант второй)------------------&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lua&amp;gt;function название функции(first_speaker, second_speaker)&lt;br /&gt;
    return first_speaker:object(&amp;quot;название предмета&amp;quot;) ~= nil&lt;br /&gt;
end&amp;lt;/lua&amp;gt;&lt;br /&gt;
&lt;br /&gt;
в диалог:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;precondition&amp;gt;имя скрипта.название функции&amp;lt;/precondition&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
ПРОВЕРКА ВЕЩЕЙ У ГГ&lt;br /&gt;
&amp;lt;lua&amp;gt;function Название функции(first_speaker, second_speaker)&lt;br /&gt;
    return first_speaker:object(&amp;quot;название предмета&amp;quot;) ~= nil or&lt;br /&gt;
             first_speaker:object(&amp;quot;название предмета&amp;quot;) ~= nil or&lt;br /&gt;
             first_speaker:object(&amp;quot;название предмета&amp;quot;) ~= nil&lt;br /&gt;
end&amp;lt;/lua&amp;gt;&lt;br /&gt;
&lt;br /&gt;
в диалог:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;precondition&amp;gt;имя скрипта.название функции&amp;lt;/precondition&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
описание... если есть хотя бы одна вещь, то мы получим фразу, если нет всех нет разговора&lt;br /&gt;
&lt;br /&gt;
ПРОВЕРКА ДЕНЕГ У ГГ&lt;br /&gt;
Вариант первый(используют ПЫС)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lua&amp;gt;function название функции(first_speaker, second_speaker)&lt;br /&gt;
    return first_speaker:money() &amp;gt;= 2000&lt;br /&gt;
end&amp;lt;/lua&amp;gt;&lt;br /&gt;
&lt;br /&gt;
в диалог: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;precondition&amp;gt;имя скрипта.название функции&amp;lt;/precondition&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;-----------Вариант два--------------&amp;gt;&lt;br /&gt;
Использовал на ТЧ, но и в ЗП работает&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lua&amp;gt;function название функции()&lt;br /&gt;
return db.actor:money()&amp;gt;=10000&lt;br /&gt;
end&amp;lt;/lua&amp;gt;&lt;br /&gt;
В диалог: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;precondition&amp;gt;имя скрипта.название функции&amp;lt;/precondition&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
СПАВН ПРЕДМЕТА&lt;br /&gt;
&amp;lt;lua&amp;gt;function spawn_vintar()&lt;br /&gt;
alife():create(&amp;quot;Название предмета&amp;quot;,vector():set(24.725412368774,-3.6072344779968,173.83030700684),993926,210)&lt;br /&gt;
end&amp;lt;/lua&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В диалог:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;action&amp;gt;название скрипта.название функции&amp;lt;/action&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
МГНОВЕННАЯ СМЕРТЬ ГГ&lt;br /&gt;
&amp;lt;lua&amp;gt;function название функции(npc, actor)&lt;br /&gt;
    npc:kill(actor)&lt;br /&gt;
end&amp;lt;/lua&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В диалог:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;action&amp;gt;название скрипта.название функции&amp;lt;/action&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
ПРОВЕРКА КОЛ_ВА ОДИНАКОВЫХ ПРЕДМЕТОВ&lt;br /&gt;
&amp;lt;lua&amp;gt;function название функции(first_speaker, second_speaker)&lt;br /&gt;
        local item_sections = {&amp;quot;Предмет&amp;quot;} &lt;br /&gt;
        local needed = количество одинаковых предметов, ставится цифра без знаков &lt;br /&gt;
        local count = 0&lt;br /&gt;
        local item_section&lt;br /&gt;
    local function calc(temp, item)&lt;br /&gt;
        if item:section() == item_section then&lt;br /&gt;
        count = count + 1&lt;br /&gt;
end&lt;br /&gt;
end&lt;br /&gt;
    for k,v in pairs(item_sections) do&lt;br /&gt;
    item_section = v&lt;br /&gt;
    get_story_object(&amp;quot;actor&amp;quot;):iterate_inventory(calc, actor)&lt;br /&gt;
end&lt;br /&gt;
    return count &amp;gt;= needed&lt;br /&gt;
end &lt;br /&gt;
&amp;lt;/lua&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В диалог:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;precondition&amp;gt;имя скрипта.название функции&amp;lt;/precondition&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
ЛЕЧЕНИЕ ГГ &lt;br /&gt;
Вставим этот актион в диалог:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;action&amp;gt;dialogs.medic_magic_potion&amp;lt;/action&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
ВЫДАЧА ДЕНЕГ от НПС ГГ&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lua&amp;gt;function название функции(first_speaker, second_speaker)&lt;br /&gt;
    dialogs.relocate_money_to_actor(first_speaker, second_speaker, 2000)&lt;br /&gt;
end&amp;lt;/lua&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В диалог:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;action&amp;gt;название скрипта.название функции&amp;lt;/action&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
ВЫДАЧА ДЕНЕГ от ГГ  НПС&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lua&amp;gt;function название функции(actor, npc)&lt;br /&gt;
   dialogs.relocate_money(npc,кол-во,&amp;quot;out&amp;quot;)   &lt;br /&gt;
end&amp;lt;/lua&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В диалог:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;action&amp;gt;название скрипта.название функции&amp;lt;/action&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
НПС становится врагом после определенной ветки диалона или другом  -5000 враг  5000 друг&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lua&amp;gt;function название скрипта(actor, npc)                                            &lt;br /&gt;
    npc:force_set_goodwill(-5000, actor)&lt;br /&gt;
end&amp;lt;/lua&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;action&amp;gt;название скрипта.название функции&amp;lt;/action&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
ПРОВЕРКА СМЕРТИ NPC&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lua&amp;gt;function название функции проверки(actor,npc)&lt;br /&gt;
   return has_alife_info(&amp;quot;инфо смерти&amp;quot;)&lt;br /&gt;
end&amp;lt;/lua&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
В диалог: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;precondition&amp;gt;имя скрипта.название функции&amp;lt;/precondition&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Авторы ==&lt;br /&gt;
'''Оригинальный вид статьи:'''&lt;br /&gt;
*Rez@nyi&lt;br /&gt;
*Меченый&lt;br /&gt;
*Болотный Доктор&lt;br /&gt;
'''Переоформление, перестройка, дополнение статьи:''' &lt;br /&gt;
*FantomICW&lt;/div&gt;</summary>
		<author><name>91.218.192.254</name></author>	</entry>

	<entry>
		<id>http://stalkerin.gameru.net/wiki/index.php?title=SoC._%D0%A1%D0%BE%D0%B7%D0%B4%D0%B0%D0%BD%D0%B8%D0%B5_%D0%B4%D0%B8%D0%B0%D0%BB%D0%BE%D0%B3%D0%BE%D0%B2</id>
		<title>SoC. Создание диалогов</title>
		<link rel="alternate" type="text/html" href="http://stalkerin.gameru.net/wiki/index.php?title=SoC._%D0%A1%D0%BE%D0%B7%D0%B4%D0%B0%D0%BD%D0%B8%D0%B5_%D0%B4%D0%B8%D0%B0%D0%BB%D0%BE%D0%B3%D0%BE%D0%B2"/>
				<updated>2013-07-31T15:55:05Z</updated>
		
		<summary type="html">&lt;p&gt;91.218.192.254: оформление, орфография&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Создание новых веток диалогов==&lt;br /&gt;
===Теория===&lt;br /&gt;
&lt;br /&gt;
1) Списки веток диалогов содержатся в файлах вида '''gamedata/config/gameplay/character_desc_*.xml''' &lt;br /&gt;
&lt;br /&gt;
Это, например:&lt;br /&gt;
&lt;br /&gt;
'''character_desc_zombied.xml&lt;br /&gt;
character_desc_stalker.xml&lt;br /&gt;
character_desc_garbage.xml'''&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
Файлы '''character_desc_*.xml''' можно сравнить со стволом дерева диалогов.&lt;br /&gt;
В них перечисляется названия прикрепляемых веток диалогов&lt;br /&gt;
&lt;br /&gt;
Например вот список веток диалога с Сидоровичем взятый из файла '''character_desc_escape.xml'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;xml&amp;gt;		&amp;lt;start_dialog&amp;gt;escape_trader_start_dialog&amp;lt;/start_dialog&amp;gt;&lt;br /&gt;
		&amp;lt;actor_dialog&amp;gt;escape_trader_talk_info&amp;lt;/actor_dialog&amp;gt;&lt;br /&gt;
		&amp;lt;actor_dialog&amp;gt;escape_trader_jobs&amp;lt;/actor_dialog&amp;gt;&lt;br /&gt;
		&amp;lt;actor_dialog&amp;gt;tm_trader_dialog&amp;lt;/actor_dialog&amp;gt;&lt;br /&gt;
		&amp;lt;actor_dialog&amp;gt;tm_trader_reward&amp;lt;/actor_dialog&amp;gt;&lt;br /&gt;
		&amp;lt;actor_dialog&amp;gt;escape_trader_done_blockpost_box&amp;lt;/actor_dialog&amp;gt;&amp;lt;/xml&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В свою очередь каждая ветка диалога также может ветвится.&lt;br /&gt;
&lt;br /&gt;
2) Ветвление диалогов прописывается уже в других файлах.&lt;br /&gt;
&lt;br /&gt;
Например, ветвление диалога с Сидоровичем содержится в файле '''gamedata/config/gameplay/dialogs_escape.xml'''&lt;br /&gt;
Возьмем оттуда, например, ветвление '''escape_trader_jobs'''.&lt;br /&gt;
&lt;br /&gt;
Ветвление имеет довольно большие масштабы, поэтому приведу только часть:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;xml&amp;gt;&amp;lt;dialog id=&amp;quot;escape_trader_talk_info&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;precondition&amp;gt;escape_dialog.trader_has_talk_info_wr&amp;lt;/precondition&amp;gt;&lt;br /&gt;
        &amp;lt;has_info&amp;gt;tutorial_end&amp;lt;/has_info&amp;gt;&lt;br /&gt;
        &amp;lt;phrase_list&amp;gt;&lt;br /&gt;
            &amp;lt;phrase id=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;text&amp;gt;escape_trader_talk_info_1&amp;lt;/text&amp;gt;&lt;br /&gt;
                &amp;lt;next&amp;gt;100&amp;lt;/next&amp;gt;&lt;br /&gt;
                &amp;lt;next&amp;gt;99&amp;lt;/next&amp;gt;&lt;br /&gt;
	      &amp;lt;next&amp;gt;9995&amp;lt;/next&amp;gt;&lt;br /&gt;
            &amp;lt;/phrase&amp;gt;&lt;br /&gt;
            ...&lt;br /&gt;
            &amp;lt;phrase id=&amp;quot;0&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;text&amp;gt;escape_trader_talk_info_0&amp;lt;/text&amp;gt;&lt;br /&gt;
                &amp;lt;next&amp;gt;1&amp;lt;/next&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;/xml&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Здесь ''&amp;lt;precondition&amp;gt;…&amp;lt;/precondition&amp;gt;'' - это проверка выполнения условия. Ветка появится в диалоге, только если условие выполняется.&lt;br /&gt;
Конкретно: &lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;precondition&amp;gt;escape_dialog.trader_has_talk_info_wr&amp;lt;/precondition&amp;gt;&amp;lt;/code&amp;gt; &lt;br /&gt;
из ветки  ''escape_trader_talk_info'' - это обращение к функции ''trader_has_talk_info_wr'', находящейся в файле скрипте '''gamedata/scripts/escape_dialog.script'''.&lt;br /&gt;
&lt;br /&gt;
Функция выглядит так:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lua&amp;gt;function trader_has_talk_info_wr( trader, actor )&lt;br /&gt;
	return true&lt;br /&gt;
end&amp;lt;/lua&amp;gt;&lt;br /&gt;
&lt;br /&gt;
То есть, судя по его структуре, ''&amp;lt;precondition&amp;gt;escape_dialog.trader_has_talk_info_wr&amp;lt;/precondition&amp;gt;'' &lt;br /&gt;
выполняется всегда, т.к. функция всегда возвращает истину и ''&amp;lt;dialog id=&amp;quot;escape_trader_talk_info&amp;quot;&amp;gt;'' пропускается в списк реплик.&lt;br /&gt;
&lt;br /&gt;
Но для конкретной ветки может быть несколько precondition и других условий.&lt;br /&gt;
&lt;br /&gt;
Далее, ''&amp;lt;has_info&amp;gt;tutorial_end&amp;lt;/has_info&amp;gt;'' - это еще одна проверка, на этот раз на наличие у игрока так называемых infoportions, выдаваемы в процессе ключевых диалогов. В данном случае это проверка на то, закончена ли определенная стадия туториала, или нет. Т.е. ветка допустится в список реплик если стадия туториала закончена.&lt;br /&gt;
&lt;br /&gt;
Более детально мы это разберем в конце статьи.&lt;br /&gt;
&lt;br /&gt;
А далее идут конкретные фразы, содержащие ссылки на вытекающие фразы, например:&lt;br /&gt;
       &lt;br /&gt;
&amp;lt;xml&amp;gt;&amp;lt;phrase id=&amp;quot;0&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;text&amp;gt;escape_trader_talk_info_0&amp;lt;/text&amp;gt;&lt;br /&gt;
                &amp;lt;next&amp;gt;1&amp;lt;/next&amp;gt;&lt;br /&gt;
&amp;lt;/phrase&amp;gt;&amp;lt;/xml&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Это основа ветки ''escape_trader_talk_info''. &lt;br /&gt;
&lt;br /&gt;
'''Важно!''' В любой основной ветке любого диалога фраза ''&amp;lt;phrase id=&amp;quot;0&amp;quot;&amp;gt;'' будет основой, из которой далее будет все вытекать. Она должна обязательно присутствовать и в вашем диалоге.&lt;br /&gt;
&lt;br /&gt;
''&amp;lt;next&amp;gt;1&amp;lt;/next&amp;gt;'' - это ссылка на вытекающую фразу ''&amp;lt;phrase id=&amp;quot;1&amp;quot;&amp;gt;'':&lt;br /&gt;
&lt;br /&gt;
&amp;lt;xml&amp;gt;       &amp;lt;phrase id=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;text&amp;gt;escape_trader_talk_info_1&amp;lt;/text&amp;gt;&lt;br /&gt;
                &amp;lt;next&amp;gt;100&amp;lt;/next&amp;gt;&lt;br /&gt;
                &amp;lt;next&amp;gt;99&amp;lt;/next&amp;gt;&lt;br /&gt;
	    &amp;lt;next&amp;gt;9995&amp;lt;/next&amp;gt;&lt;br /&gt;
        &amp;lt;/phrase&amp;gt;&amp;lt;/xml&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В свою очередь   ''&amp;lt;next&amp;gt;100&amp;lt;/next&amp;gt;, &amp;lt;next&amp;gt;99&amp;lt;/next&amp;gt;, &amp;lt;next&amp;gt;9995&amp;lt;/next&amp;gt;'' -  это ссылки на фразы веточки растущие из фразы ''&amp;lt;phrase id=&amp;quot;1&amp;quot;&amp;gt;''.  &lt;br /&gt;
&lt;br /&gt;
3) Текст каждой фразы содержится в третьем файле. Для диалога с Сидоровичем тексты лежат в файле '''gamedata/config/text/rus/stable_dialogs_escape.xml'''. Вот сама текстовая составляющая диалога:  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;xml&amp;gt;	&amp;lt;string id=&amp;quot;escape_trader_talk_info_0&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;text&amp;gt;Есть несколько вопросов.&amp;lt;/text&amp;gt;&lt;br /&gt;
	&amp;lt;/string&amp;gt;&lt;br /&gt;
	&amp;lt;string id=&amp;quot;escape_trader_talk_info_1&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;text&amp;gt;Спрашивай, только я ведь всего не знаю. Сам понимаешь, сижу тут &lt;br /&gt;
целыми днями, а жизнь - она вся там, снаружи, в Зоне. Могу рассказать о Зоне вообще, а немного &lt;br /&gt;
могу о ближайших окрестностях, где сам ходил.&amp;lt;/text&amp;gt;&lt;br /&gt;
	&amp;lt;/string&amp;gt;&lt;br /&gt;
        ...&amp;lt;/xml&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Эти строки содержат тексты для фраз &amp;lt;phrase id=&amp;quot;0&amp;quot;&amp;gt; и &amp;lt;phrase id=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Итого диалоги разложены по трем, а то и более файлам.&lt;br /&gt;
&lt;br /&gt;
Да кстати, путь по веткам может быть зацикленным, если того требует диалог. Например так:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;xml&amp;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;1&amp;lt;/next&amp;gt;&lt;br /&gt;
            &amp;lt;next&amp;gt;2&amp;lt;/next&amp;gt;&lt;br /&gt;
 &amp;lt;/phrase&amp;gt;&lt;br /&gt;
&amp;lt;phrase id=&amp;quot;1&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;next&amp;gt;12&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;next&amp;gt;1&amp;lt;/next&amp;gt;  - Это возврат к фразе №1 (зацикливание)  &lt;br /&gt;
            &amp;lt;next&amp;gt;111&amp;lt;/next&amp;gt;&lt;br /&gt;
 &amp;lt;/phrase&amp;gt;&amp;lt;/xml&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Практика===&lt;br /&gt;
Добавим в диалог с Сидоровичем ветку своего собственного изготовления.Например такую: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Меченый: Сидрыч, а чего это у тебя зеленые человечки, что по столу бегают, такие худые? &lt;br /&gt;
Сидорович: Чего?!&lt;br /&gt;
Меченый: Ты их совсем, совсем не кормишь?&lt;br /&gt;
Сидорович: В следующий раз, как пойдешь в зону, бери-ка  вместо водяры побольше антирада. А то &lt;br /&gt;
мало что таким перегаром дышишь, уже до зеленых человечков долечился... Шутник.&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Для этого:&lt;br /&gt;
&lt;br /&gt;
1) В файле '''gamedata/config/gameplay/character_desc_escape.xml''' в конце списка веток для  ''trader'' припишем свою ветку с произвольным названием. Это будет, например, ''&amp;lt;actor_dialog&amp;gt;escape_trader_letat_gusi&amp;lt;/actor_dialog&amp;gt;''.&lt;br /&gt;
&lt;br /&gt;
Т.е у нас получится так:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;xml&amp;gt;&amp;lt;specific_character id=&amp;quot;escape_trader&amp;quot; no_random = &amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
		...&lt;br /&gt;
		&amp;lt;start_dialog&amp;gt;escape_trader_start_dialog&amp;lt;/start_dialog&amp;gt;&lt;br /&gt;
		&amp;lt;actor_dialog&amp;gt;escape_trader_talk_info&amp;lt;/actor_dialog&amp;gt;&lt;br /&gt;
		&amp;lt;actor_dialog&amp;gt;escape_trader_jobs&amp;lt;/actor_dialog&amp;gt;&lt;br /&gt;
		&amp;lt;actor_dialog&amp;gt;tm_trader_dialog&amp;lt;/actor_dialog&amp;gt;&lt;br /&gt;
		&amp;lt;actor_dialog&amp;gt;tm_trader_reward&amp;lt;/actor_dialog&amp;gt;&lt;br /&gt;
		&amp;lt;actor_dialog&amp;gt;escape_trader_done_blockpost_box&amp;lt;/actor_dialog&amp;gt;&lt;br /&gt;
                        &amp;lt;actor_dialog&amp;gt;escape_trader_letat_gusi&amp;lt;/actor_dialog&amp;gt;&lt;br /&gt;
	&amp;lt;/specific_character&amp;gt;&lt;br /&gt;
		…&amp;lt;/xml&amp;gt;&lt;br /&gt;
Записываем изменения, с этим файлом пока всё.&lt;br /&gt;
&lt;br /&gt;
2) Теперь берем файл '''gamedata/config/gameplay/dialogs_escape.xml'''&lt;br /&gt;
&lt;br /&gt;
Диалогу:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;Меченый: Сидрыч а почему это у тебя зеленые человечки, что по столу бегают, такие худые? &lt;br /&gt;
Сидорович: Чего?!!&lt;br /&gt;
Меченый: Ты их совсем, совсем не кормишь?&lt;br /&gt;
Сидорович: В следующий раз, как пойдешь в зону, бери-ка  вместо водяры побольше антирада. А то &lt;br /&gt;
мало что таким перегаром дышишь, уже до зеленых человечков долечился... Шутник.&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Будет соответствовать такая структура:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;xml&amp;gt;&amp;lt;phrase id=&amp;quot;0&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;text&amp;gt;escape_trader_letat_gusi_0&amp;lt;/text&amp;gt;&lt;br /&gt;
            &amp;lt;next&amp;gt;1&amp;lt;/next&amp;gt;&lt;br /&gt;
&amp;lt;/phrase&amp;gt;&lt;br /&gt;
&amp;lt;phrase id=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;text&amp;gt;escape_trader_letat_gusi_1&amp;lt;/text&amp;gt;&lt;br /&gt;
            &amp;lt;next&amp;gt;2&amp;lt;/next&amp;gt;&lt;br /&gt;
 &amp;lt;/phrase&amp;gt;&lt;br /&gt;
&amp;lt;phrase id=&amp;quot;2&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;text&amp;gt; escape_trader_letat_gusi_2&amp;lt;/text&amp;gt;&lt;br /&gt;
            &amp;lt;next&amp;gt;3&amp;lt;/next&amp;gt;&lt;br /&gt;
&amp;lt;/phrase&amp;gt;&lt;br /&gt;
&amp;lt;phrase id=&amp;quot;3&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;text&amp;gt; escape_trader_letat_gusi_3&amp;lt;/text&amp;gt;&lt;br /&gt;
&amp;lt;/phrase&amp;gt;&amp;lt;/xml&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Условия наличия ветки в диалоге можно взять из ветки &amp;lt;dialog id=&amp;quot;escape_trader_talk_info&amp;quot;&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Т.е берем условия ''&amp;lt;precondition&amp;gt;escape_dialog.trader_has_talk_info_wr&amp;lt;/precondition&amp;gt;'' и ''&amp;lt;has_info&amp;gt;tutorial_end&amp;lt;/has_info&amp;gt;''.&lt;br /&gt;
Можно было, конечно, прописать в скрипте еще одно условие для ветки, чтобы она появилась только один раз, а потом больше не возникала. Но об этом как-нибудь позже.&lt;br /&gt;
&lt;br /&gt;
В итоге у нас получилась такая структура:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;xml&amp;gt;&amp;lt;dialog id=&amp;quot;escape_trader_letat_gusi&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;precondition&amp;gt;escape_dialog.trader_has_talk_info_wr&amp;lt;/precondition&amp;gt;&lt;br /&gt;
        &amp;lt;has_info&amp;gt;tutorial_end&amp;lt;/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;escape_trader_letat_gusi_0&amp;lt;/text&amp;gt;&lt;br /&gt;
                              &amp;lt;next&amp;gt;1&amp;lt;/next&amp;gt;&lt;br /&gt;
                    &amp;lt;/phrase&amp;gt;&lt;br /&gt;
                     &amp;lt;phrase id=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
                               &amp;lt;text&amp;gt;escape_trader_letat_gusi_1&amp;lt;/text&amp;gt;&lt;br /&gt;
                                &amp;lt;next&amp;gt;2&amp;lt;/next&amp;gt;&lt;br /&gt;
                     &amp;lt;/phrase&amp;gt;&lt;br /&gt;
                     &amp;lt;phrase id=&amp;quot;2&amp;quot;&amp;gt;&lt;br /&gt;
                                &amp;lt;text&amp;gt; escape_trader_letat_gusi_2&amp;lt;/text&amp;gt;&lt;br /&gt;
                                &amp;lt;next&amp;gt;3&amp;lt;/next&amp;gt;&lt;br /&gt;
                     &amp;lt;/phrase&amp;gt;&lt;br /&gt;
                     &amp;lt;phrase id=&amp;quot;3&amp;quot;&amp;gt;&lt;br /&gt;
                                  &amp;lt;text&amp;gt; escape_trader_letat_gusi_3&amp;lt;/text&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;/xml&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Её нужно вставить в любом месте между dialog id'ами других веток в файле '''dialogs_escape.xml'''. Главное - не промахнутся и засунуть именно между, а не внутрь одного из dialog id.&lt;br /&gt;
&lt;br /&gt;
После сохранения внесенных изменений с файлом '''dialogs_escape.xml''' все.&lt;br /&gt;
&lt;br /&gt;
3) Теперь вбиваем сами текстовички в файле '''gamedata/config/text/rus/stable_dialogs_escape.xml'''&lt;br /&gt;
&lt;br /&gt;
Т.е нам надо в файле '''stable_dialogs_escape.xml''' вставить такую конструкцию:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;xml&amp;gt;	&amp;lt;string id=&amp;quot;escape_trader_letat_gusi_0&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;text&amp;gt;Сидрыч, а чего это у тебя зеленые человечки, что по столу бегают, такие худые?&amp;lt;/text&amp;gt;&lt;br /&gt;
	&amp;lt;/string&amp;gt;&lt;br /&gt;
	&amp;lt;string id=&amp;quot;escape_trader_letat_gusi_1&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;text&amp;gt;Чего?!&amp;lt;/text&amp;gt;&lt;br /&gt;
	&amp;lt;/string&amp;gt;&lt;br /&gt;
	&amp;lt;string id=&amp;quot;escape_trader_letat_gusi_2&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;text&amp;gt;Ты их совсем, совсем не кормишь?&amp;lt;/text&amp;gt;&lt;br /&gt;
	&amp;lt;/string&amp;gt;&lt;br /&gt;
	&amp;lt;string id=&amp;quot;escape_trader_letat_gusi_3&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;text&amp;gt;В следующий раз, как пойдешь в зону, бери-ка  вместо водяры побольше &lt;br /&gt;
антирада. А то мало что таким перегаром дышишь, уже до зеленых человечков долечился... &lt;br /&gt;
Шутник.&amp;lt;/text&amp;gt;&lt;br /&gt;
	&amp;lt;/string&amp;gt;&amp;lt;/xml&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
В любом месте между уже существующими string id.&lt;br /&gt;
После сохранения изменений, у нас все готово. Можно загружать игру и смотреть что получилось.&lt;br /&gt;
&amp;lt;!!!ВНИМАНИЕ!!!&amp;gt;&lt;br /&gt;
Если вы сделали всё правильно,но при обращении к НПЦ вылетает с таким логом&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;Expression : no_assert&lt;br /&gt;
Function : CXML_IdToIndex&amp;lt;class CInfoPortion&amp;gt;::GetById&lt;br /&gt;
File : e:\stalker\patch_1_0004\xr_3da\xrgame\xml_str_id_loader.h&lt;br /&gt;
Line : 112&lt;br /&gt;
Description : item not found, id&lt;br /&gt;
Arguments : escape_trader_letat_gusi&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Создайте свой файл и назовите его как душе угодно,пример: '''letat_gusi_my_test.xml'''&lt;br /&gt;
Впишите туда: &lt;br /&gt;
&amp;lt;xml&amp;gt;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;windows-1251&amp;quot; standalone=&amp;quot;yes&amp;quot; ?&amp;gt;&lt;br /&gt;
&amp;lt;game_dialogs&amp;gt;&lt;br /&gt;
     &amp;lt;dialog id=&amp;quot;escape_trader_letat_gusi&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;precondition&amp;gt;escape_dialog.trader_has_talk_info_wr&amp;lt;/precondition&amp;gt;&lt;br /&gt;
        &amp;lt;has_info&amp;gt;tutorial_end&amp;lt;/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;escape_trader_letat_gusi_0&amp;lt;/text&amp;gt;&lt;br /&gt;
                              &amp;lt;next&amp;gt;1&amp;lt;/next&amp;gt;&lt;br /&gt;
                    &amp;lt;/phrase&amp;gt;&lt;br /&gt;
                     &amp;lt;phrase id=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
                               &amp;lt;text&amp;gt;escape_trader_letat_gusi_1&amp;lt;/text&amp;gt;&lt;br /&gt;
                                &amp;lt;next&amp;gt;2&amp;lt;/next&amp;gt;&lt;br /&gt;
                     &amp;lt;/phrase&amp;gt;&lt;br /&gt;
                     &amp;lt;phrase id=&amp;quot;2&amp;quot;&amp;gt;&lt;br /&gt;
                                &amp;lt;text&amp;gt; escape_trader_letat_gusi_2&amp;lt;/text&amp;gt;&lt;br /&gt;
                                &amp;lt;next&amp;gt;3&amp;lt;/next&amp;gt;&lt;br /&gt;
                     &amp;lt;/phrase&amp;gt;&lt;br /&gt;
                     &amp;lt;phrase id=&amp;quot;3&amp;quot;&amp;gt;&lt;br /&gt;
                                  &amp;lt;text&amp;gt; escape_trader_letat_gusi_3&amp;lt;/text&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;&lt;br /&gt;
&amp;lt;/game_dialogs&amp;gt;&amp;lt;/xml&amp;gt;&lt;br /&gt;
Сохраните.Далее в '''gamedata\config\system.ltx'''&lt;br /&gt;
добавьть в секцию [dialogs] название файла,который мы создали.Пример:&lt;br /&gt;
&amp;lt;pre&amp;gt;[dialogs]&lt;br /&gt;
files = ..., letat_gusi_my_test ,где ... список других файлов,letat_gusi_my_test - название вашего,нового файла.&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Дополнительно===&lt;br /&gt;
&lt;br /&gt;
'''Внимание!''' После патча 1.002 данный урок перестал работать. Причина - со вторым патчем несовместимо это условие:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;xml&amp;gt;&amp;lt;precondition&amp;gt;escape_dialog.trader_has_talk_info_wr&amp;lt;/precondition&amp;gt;&amp;lt;/xml&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Дело в том, что во втором патче из файла escape_dialog.script была удалена функция: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;lua&amp;gt;function trader_has_talk_info_wr( trader, actor ) &lt;br /&gt;
   return true &lt;br /&gt;
end&amp;lt;/lua&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Можно либо записать эту функцию обратно в escape_dialog.script, либо использовать другие более-менее подходящие условия, например:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;xml&amp;gt;&amp;lt;precondition&amp;gt;escape_dialog.trader_alredy_give_job&amp;lt;/precondition&amp;gt;&amp;lt;/xml&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Всё. Мы научились писать простые диалоги.&lt;br /&gt;
&lt;br /&gt;
==Авторы==&lt;br /&gt;
&lt;br /&gt;
Статья создана:&lt;br /&gt;
&lt;br /&gt;
* [[Участник:BAC9-FLCL|BAC9-FLCL]]&lt;br /&gt;
* [[Участник:Keha|Keha]]&lt;br /&gt;
&lt;br /&gt;
Статью дополнил:&lt;br /&gt;
* джЭдай&lt;br /&gt;
[[Категория:Конфигурационные_файлы]]&lt;/div&gt;</summary>
		<author><name>91.218.192.254</name></author>	</entry>

	<entry>
		<id>http://stalkerin.gameru.net/wiki/index.php?title=SoC._%D0%A0%D0%B5%D0%B4%D0%B0%D0%BA%D1%82%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5_%D1%82%D0%BE%D1%80%D0%B3%D0%BE%D0%B2%D1%86%D0%B5%D0%B2</id>
		<title>SoC. Редактирование торговцев</title>
		<link rel="alternate" type="text/html" href="http://stalkerin.gameru.net/wiki/index.php?title=SoC._%D0%A0%D0%B5%D0%B4%D0%B0%D0%BA%D1%82%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5_%D1%82%D0%BE%D1%80%D0%B3%D0%BE%D0%B2%D1%86%D0%B5%D0%B2"/>
				<updated>2013-07-31T15:15:51Z</updated>
		
		<summary type="html">&lt;p&gt;91.218.192.254: оформление&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Общее==&lt;br /&gt;
Урок посвящен редактированию ассортимента торговцев в игре. Эта, в общем-то несложная процедура у многих вызывает вопросы, поэтому я и решил разъяснить, что да как.&lt;br /&gt;
&lt;br /&gt;
==Файлы==&lt;br /&gt;
Ассортимент товаров у торговцев хранится в файлах вида trade_[...].ltx, где ... - системное имя торговца. Это файлы:&lt;br /&gt;
&lt;br /&gt;
* '''trade_barman.ltx''' - Бармен&lt;br /&gt;
* '''trade_dolg.ltx''' - полковник Петренко на базе группировки &amp;quot;Долг&amp;quot;&lt;br /&gt;
* '''trade_ecolog.ltx''' - Сахаров&lt;br /&gt;
* '''trade_freedom.ltx''' - Скряга на базе группировки &amp;quot;Свобода&amp;quot;&lt;br /&gt;
* '''trade_trader.ltx''' - Сидорович&lt;br /&gt;
&lt;br /&gt;
* '''trade_generic.ltx''' - обычный сталкер&lt;br /&gt;
&lt;br /&gt;
Все они хранятся в папке:&lt;br /&gt;
&amp;lt;pre&amp;gt;...\S.T.A.L.K.E.R\gamedata\config\misc\...&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Структура файла===&lt;br /&gt;
Разберем структуру файла trade_barman.ltx:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ini&amp;gt;[trader]&lt;br /&gt;
buy_condition = barman_generic_buy&lt;br /&gt;
sell_condition = {+yan_labx16_switcher_primary_off} barman_after_brain_sell, {+bar_darklab_document_done} barman_after_darkvalley_sell, barman_start_sell&lt;br /&gt;
buy_supplies = { yan_labx16_switcher_primary_off} supplies_after_brain, { bar_darklab_document_done} &lt;br /&gt;
supplies_after_darkvalley, supplies_start&amp;lt;/ini&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Здесь содержатся условия, от которых зависит диапазон продаваемых/покупаемых торговцем предметов. То есть, например, после выполнения квеста на &amp;quot;Янтаре&amp;quot; соответствующее условие считается выполненным, и ассортимент сменяется на новый, из другого раздела.&lt;br /&gt;
&lt;br /&gt;
--[[Участник:91.124.26.131|91.124.26.131]] 21:31, 23 июля 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
В скобках ''{...}'' задаются условия, а после скобок используемый раздел. Если перед названием раздела не поставить условия, то он будет использоваться изначально, по умолчанию.&lt;br /&gt;
&lt;br /&gt;
Краткое описание предназначения всех разделов:&lt;br /&gt;
*'''buy_condition''' - описаны цены, по которым торговец будет покупать вещи у героя&lt;br /&gt;
*'''sell_condition''' - описание цен, по которым торговец продает вещи из своего ассортимента&lt;br /&gt;
*'''buy_supplies''' - доступный ассортимент торговца, то есть то, что будет у него в продаже&lt;br /&gt;
&lt;br /&gt;
Детальное описание и пример смотрите далее.&lt;br /&gt;
&lt;br /&gt;
--[[Участник:91.124.26.131|91.124.26.131]] 21:31, 23 июля 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
После этого идет раздел [barman_generic_buy], содержащий предметы, которые бармен покупает.&lt;br /&gt;
&lt;br /&gt;
Структура записи в этом разделе:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;wpn_walther				= 0.3,	0.1&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* wpn_walther - имя предмета, в данном случае - пистолет &amp;quot;Вальтер&amp;quot;&lt;br /&gt;
* 0.3 - максимальная цена, по которой торговец купит предмет&lt;br /&gt;
* 0.1 - минимальная цена, по которой торговец купит предмет&lt;br /&gt;
&lt;br /&gt;
Цена зависит от репутации игрока.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Далее идет раздел [supplies_start] - ассортимент, предоставляемый барменом в начале игры. Он поделен на категории:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ini&amp;gt;[supplies_start]&lt;br /&gt;
&lt;br /&gt;
;'''Аммуниция'''&lt;br /&gt;
ammo_9x18_fmj 			= 15,	0.6&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
;'''Оружие'''&lt;br /&gt;
wpn_pb					= 3,	0.6&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
;'''Броники'''&lt;br /&gt;
stalker_outfit			= 3,	0.7&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
;'''Медикаменты'''&lt;br /&gt;
bandage					= 5,	0.6&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
;'''Еда'''&lt;br /&gt;
bread					= 10,	0.5&lt;br /&gt;
...&amp;lt;/ini&amp;gt;&lt;br /&gt;
&lt;br /&gt;
На самом деле можете добавлять новый предмет, куда захотите, все эти &amp;quot;категории&amp;quot; существуют исключительно в целях удобства. Игра их не учитывает.&lt;br /&gt;
&lt;br /&gt;
Теперь о структуре одной записи:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;wpn_walther				= 3,	0.6&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* wpn_walther - имя предмета, в данном случае - пистолет &amp;quot;Вальтер&amp;quot;&lt;br /&gt;
* 3 - количество предметов этого типа у торговца&lt;br /&gt;
* 0.6 - вероятность появления каждого из них&lt;br /&gt;
&lt;br /&gt;
То есть если значения равны 4, 0.5, то это означает, что у торговца в ассортименте появятся два предмета этого типа.&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Далее идет раздел ''[barman_start_sell]''. Рассмотрим структуру записи в нем:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;wpn_walther				= 2,	4&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* wpn_walther - имя предмета, в данном случае - пистолет &amp;quot;Вальтер&amp;quot;&lt;br /&gt;
* Цена высчитываетя по формулае (2+4)/2 * базовую цену предмета*(МР).&lt;br /&gt;
* Модификатор Репутации (МР) - Цена зависит от репутации игрока. (по умолчанию = 1)&lt;br /&gt;
&lt;br /&gt;
===Расширяем ассортимент===&lt;br /&gt;
Чтобы добавить в начальный ассортимент, например, винтовку FN2000, проделаем следующее:&lt;br /&gt;
&lt;br /&gt;
1. Добавим её в раздел [supplies_start]:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;;Оружие&lt;br /&gt;
...&lt;br /&gt;
wpn_fn2000 = 2, 0.5&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2. Добавим её в раздел ''[barman_start_sell]'':&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;;Оружие&lt;br /&gt;
...&lt;br /&gt;
wpn_fn2000				1, 3&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ну а чтобы оно не пропадало после выполнения важных заданий, запишите её и в ассортименты для выполненных условий.&lt;br /&gt;
&lt;br /&gt;
==Авторы==&lt;br /&gt;
&lt;br /&gt;
Статья создана:&lt;br /&gt;
&lt;br /&gt;
* [[Участник:BAC9-FLCL|BAC9-FLCL]]&lt;br /&gt;
&lt;br /&gt;
Редактор:&lt;br /&gt;
&lt;br /&gt;
* [[Участник:Deja Vu|Deja Vu]]&lt;br /&gt;
&lt;br /&gt;
[[Категория:Конфигурационные_файлы]]&lt;/div&gt;</summary>
		<author><name>91.218.192.254</name></author>	</entry>

	<entry>
		<id>http://stalkerin.gameru.net/wiki/index.php?title=SoC._%D0%A0%D0%B5%D0%B4%D0%B0%D0%BA%D1%82%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5_NPC</id>
		<title>SoC. Редактирование NPC</title>
		<link rel="alternate" type="text/html" href="http://stalkerin.gameru.net/wiki/index.php?title=SoC._%D0%A0%D0%B5%D0%B4%D0%B0%D0%BA%D1%82%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5_NPC"/>
				<updated>2013-07-31T15:14:15Z</updated>
		
		<summary type="html">&lt;p&gt;91.218.192.254: оформление&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Вступление==&lt;br /&gt;
&lt;br /&gt;
В этой статье мы научимся редактировать NPC: изменять содержимое их инвентаря, реплики, поведение, имя, и другие параметры.&lt;br /&gt;
&lt;br /&gt;
==Параметры==&lt;br /&gt;
&lt;br /&gt;
За параметры NPC отвечают файлы: &lt;br /&gt;
&amp;lt;pre&amp;gt;gamedata\config\gameplay\character_desc_[название локации].xml&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Каждый из них разбит на секции - по одной на NPC. Используются следующие параметры:&lt;br /&gt;
&lt;br /&gt;
* '''''&amp;lt;name&amp;gt;...&amp;lt;/name&amp;gt;'''''  - Имя (ссылка на строку в текстовом массиве).&lt;br /&gt;
* '''''&amp;lt;icon&amp;gt;ui_npc_...&amp;lt;/icon&amp;gt;''''' - Иконка для диалогов/торговли/PDA.&lt;br /&gt;
* '''''&amp;lt;bio&amp;gt;..._bio&amp;lt;/bio&amp;gt;''''' - Биография (в игре не используется).&lt;br /&gt;
* '''''&amp;lt;class&amp;gt;...&amp;lt;/class&amp;gt;''''' - Класс (лучше не трогать).[[Участник:Imp|Imp]] 12:46, 12 августа 2007 (EEST)Нужно для того что-бы автоматические респавнеры могли спавнить немного разных персонажей. То есть например в игре есть описание восьми (кажеться может и больше) разных новичков и что бы при автоматическом респавне не получалась куча братьев-близнецов, респавнер настраивается на класс персонажей и спавнит случайным образом разных персонажей одного класса.&lt;br /&gt;
* '''''&amp;lt;community&amp;gt;...&amp;lt;/community&amp;gt;''''' - Группировка.&lt;br /&gt;
* '''''&amp;lt;rank&amp;gt;...&amp;lt;/rank&amp;gt;''''' - Ранг.&lt;br /&gt;
* '''''&amp;lt;reputation&amp;gt;...&amp;lt;/reputation&amp;gt;''''' - Репутация.&lt;br /&gt;
* '''''&amp;lt;money min=&amp;quot;...&amp;quot; max=&amp;quot;...&amp;quot; infinitive=&amp;quot;...&amp;quot;/&amp;gt;''''' - Количество денег (infinitive=&amp;quot;1&amp;quot; - бесконечные деньги).&lt;br /&gt;
* '''''&amp;lt;snd_config&amp;gt;...&amp;lt;/snd_config&amp;gt;''''' - Набор звуков.&lt;br /&gt;
* '''''&amp;lt;crouch_type&amp;gt;-1&amp;lt;/crouch_type&amp;gt;''''' - Тип приседания. Лучше не трогать.&lt;br /&gt;
* '''''&amp;lt;visual&amp;gt;actors\...&amp;lt;/visual&amp;gt;''''' - Внешность. Влияет  на внешний вид костюма, но не на его свойства. Укажите здесь экзоскелет - и персонаж действительно в нем окажется по внешности, и по свойствам.&lt;br /&gt;
* '''''&amp;lt;supplies&amp;gt;...&amp;lt;/supplies&amp;gt;''''' - Предметы, находящиеся у него в инвентаре. Некоторые из них в игре не отображаются, поэтому не удивляйтесь присутствию здесь предметов вроде рации или фонарика.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color: gray&amp;quot;&amp;gt;В игре отображаются все предметы, просто при торговле есть ограничения на допустимые к торговле предметы, а при смерти персонажа, &amp;quot;запрещенные&amp;quot; предметы удаляются скриптом. [[Участник:Imp|Imp]] 12:46, 12 августа 2007 (EEST)&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''''&amp;lt;start_dialog&amp;gt;...&amp;lt;start_dialog&amp;gt;''''' - Приветственный диалог. Их может быть несколько, с различными условиями появления.&lt;br /&gt;
* '''''&amp;lt;actor_dialog&amp;gt;...&amp;lt;/actor_dialog&amp;gt;''''' - Диалоги с игроком.&lt;br /&gt;
&lt;br /&gt;
==Практика==&lt;br /&gt;
&lt;br /&gt;
Изменим, например, параметры NPC по имени Волк.&lt;br /&gt;
&lt;br /&gt;
Откроем файл:&lt;br /&gt;
&amp;lt;pre&amp;gt;\config\gameplay\character_desc_escape.xml&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
И найдем в нем раздел, ему соответствующий:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;xml&amp;gt;&amp;lt;!---------------------esc_wolf---------------------&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;specific_character id=&amp;quot;esc_wolf&amp;quot; team_default = &amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;name&amp;gt;esc_wolf_name&amp;lt;/name&amp;gt;&lt;br /&gt;
		&amp;lt;icon&amp;gt;ui_npc_u_stalker_neytral_balon_1&amp;lt;/icon&amp;gt;&lt;br /&gt;
		&amp;lt;bio&amp;gt;esc_wolf_bio&amp;lt;/bio&amp;gt;&lt;br /&gt;
&lt;br /&gt;
		&amp;lt;class&amp;gt;esc_wolf&amp;lt;/class&amp;gt;&lt;br /&gt;
		&amp;lt;community&amp;gt;stalker&amp;lt;/community&amp;gt; &amp;lt;terrain_sect&amp;gt;stalker_terrain&amp;lt;/terrain_sect&amp;gt;&lt;br /&gt;
		&lt;br /&gt;
		&amp;lt;rank&amp;gt;434&amp;lt;/rank&amp;gt;&lt;br /&gt;
		&amp;lt;reputation&amp;gt;5&amp;lt;/reputation&amp;gt;&lt;br /&gt;
		&amp;lt;money min=&amp;quot;600&amp;quot; max=&amp;quot;2000&amp;quot; infinitive=&amp;quot;0&amp;quot;/&amp;gt;&lt;br /&gt;
		&lt;br /&gt;
		&amp;lt;snd_config&amp;gt;characters_voice\human_01\stalker\&amp;lt;/snd_config&amp;gt;&lt;br /&gt;
		&amp;lt;crouch_type&amp;gt;-1&amp;lt;/crouch_type&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
		&amp;lt;visual&amp;gt;actors\neytral\stalker_neytral_balon_1&amp;lt;/visual&amp;gt;&lt;br /&gt;
		&amp;lt;supplies&amp;gt;&lt;br /&gt;
			[spawn] \n&lt;br /&gt;
			wpn_pm \n &lt;br /&gt;
			ammo_9x18_fmj = 1 \n &lt;br /&gt;
			wpn_ak74u \n&lt;br /&gt;
			ammo_5.45x39_fmj \n&lt;br /&gt;
			device_torch \n&lt;br /&gt;
			hand_radio \n&lt;br /&gt;
		&amp;lt;/supplies&amp;gt;&lt;br /&gt;
		&lt;br /&gt;
#include &amp;quot;gameplay\character_criticals_4.xml&amp;quot; //&lt;br /&gt;
&lt;br /&gt;
		&amp;lt;start_dialog&amp;gt;escape_lager_volk_talk&amp;lt;/start_dialog&amp;gt; &lt;br /&gt;
		&amp;lt;start_dialog&amp;gt;dm_hello_dialog&amp;lt;/start_dialog&amp;gt; &lt;br /&gt;
		&amp;lt;actor_dialog&amp;gt;dm_cool_info_dialog&amp;lt;/actor_dialog&amp;gt; &lt;br /&gt;
		&amp;lt;actor_dialog&amp;gt;dm_help_wounded_medkit_dialog&amp;lt;/actor_dialog&amp;gt;  &lt;br /&gt;
		&amp;lt;actor_dialog&amp;gt;tm_wolf_dialog&amp;lt;/actor_dialog&amp;gt;&lt;br /&gt;
		&amp;lt;actor_dialog&amp;gt;tm_wolf_reward&amp;lt;/actor_dialog&amp;gt;&lt;br /&gt;
	&amp;lt;/specific_character&amp;gt;&amp;lt;/xml&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Изменим некоторые параметры. Выдадим ему FN2000 и Desert Eagle, примем в &amp;quot;Долг&amp;quot; и сделаем неограниченное количество денег: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;xml&amp;gt;&amp;lt;!---------------------esc_wolf---------------------&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;specific_character id=&amp;quot;esc_wolf&amp;quot; team_default = &amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;name&amp;gt;esc_wolf_name&amp;lt;/name&amp;gt;&lt;br /&gt;
		&amp;lt;icon&amp;gt;ui_npc_u_stalker_neytral_balon_1&amp;lt;/icon&amp;gt;&lt;br /&gt;
		&amp;lt;bio&amp;gt;esc_wolf_bio&amp;lt;/bio&amp;gt;&lt;br /&gt;
&lt;br /&gt;
		&amp;lt;class&amp;gt;esc_wolf&amp;lt;/class&amp;gt;&lt;br /&gt;
		&amp;lt;community&amp;gt;dolg&amp;lt;/community&amp;gt; &amp;lt;terrain_sect&amp;gt;stalker_terrain&amp;lt;/terrain_sect&amp;gt;&lt;br /&gt;
		&lt;br /&gt;
		&amp;lt;rank&amp;gt;434&amp;lt;/rank&amp;gt;&lt;br /&gt;
		&amp;lt;reputation&amp;gt;5&amp;lt;/reputation&amp;gt;&lt;br /&gt;
		&amp;lt;money min=&amp;quot;600&amp;quot; max=&amp;quot;2000&amp;quot; infinitive=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
		&lt;br /&gt;
		&amp;lt;snd_config&amp;gt;characters_voice\human_01\stalker\&amp;lt;/snd_config&amp;gt;&lt;br /&gt;
		&amp;lt;crouch_type&amp;gt;-1&amp;lt;/crouch_type&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
		&amp;lt;visual&amp;gt;actors\neytral\stalker_neytral_balon_1&amp;lt;/visual&amp;gt;&lt;br /&gt;
		&amp;lt;supplies&amp;gt;&lt;br /&gt;
			[spawn] \n&lt;br /&gt;
			wpn_deagle \n &lt;br /&gt;
			ammo_11.43x23_fmj = 1 \n &lt;br /&gt;
			wpn_fn2000 \n&lt;br /&gt;
			ammo_5.56x45_ap \n&lt;br /&gt;
			ammo_5.45x39_fmj \n&lt;br /&gt;
			device_torch \n&lt;br /&gt;
			hand_radio \n&lt;br /&gt;
		&amp;lt;/supplies&amp;gt;&lt;br /&gt;
		&lt;br /&gt;
#include &amp;quot;gameplay\character_criticals_4.xml&amp;quot; //&lt;br /&gt;
&lt;br /&gt;
		&amp;lt;start_dialog&amp;gt;escape_lager_volk_talk&amp;lt;/start_dialog&amp;gt; &lt;br /&gt;
		&amp;lt;start_dialog&amp;gt;dm_hello_dialog&amp;lt;/start_dialog&amp;gt; &lt;br /&gt;
		&amp;lt;actor_dialog&amp;gt;dm_cool_info_dialog&amp;lt;/actor_dialog&amp;gt; &lt;br /&gt;
		&amp;lt;actor_dialog&amp;gt;dm_help_wounded_medkit_dialog&amp;lt;/actor_dialog&amp;gt;  &lt;br /&gt;
		&amp;lt;actor_dialog&amp;gt;tm_wolf_dialog&amp;lt;/actor_dialog&amp;gt;&lt;br /&gt;
		&amp;lt;actor_dialog&amp;gt;tm_wolf_reward&amp;lt;/actor_dialog&amp;gt;&lt;br /&gt;
	&amp;lt;/specific_character&amp;gt;&amp;lt;/xml&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Для ввода нового NPC в симуляцию достаточно создать новый профиль.&lt;br /&gt;
&lt;br /&gt;
Статья создана:&lt;br /&gt;
[[Участник:BAC9-FLCL|BAC9-FLCL]]&lt;br /&gt;
[[Категория:Конфигурационные_файлы]]&lt;/div&gt;</summary>
		<author><name>91.218.192.254</name></author>	</entry>

	<entry>
		<id>http://stalkerin.gameru.net/wiki/index.php?title=CS._%D0%9F%D0%BE%D0%B4%D0%BA%D0%BB%D1%8E%D1%87%D0%B5%D0%BD%D0%B8%D0%B5_%D0%B4%D0%B2%D1%83%D1%85_%D0%BB%D0%BE%D0%BA%D0%B0%D1%86%D0%B8%D0%B9_%D0%BA_%D1%81%D0%B8%D0%BD%D0%B3%D0%BB%D1%83</id>
		<title>CS. Подключение двух локаций к синглу</title>
		<link rel="alternate" type="text/html" href="http://stalkerin.gameru.net/wiki/index.php?title=CS._%D0%9F%D0%BE%D0%B4%D0%BA%D0%BB%D1%8E%D1%87%D0%B5%D0%BD%D0%B8%D0%B5_%D0%B4%D0%B2%D1%83%D1%85_%D0%BB%D0%BE%D0%BA%D0%B0%D1%86%D0%B8%D0%B9_%D0%BA_%D1%81%D0%B8%D0%BD%D0%B3%D0%BB%D1%83"/>
				<updated>2013-07-31T15:12:23Z</updated>
		
		<summary type="html">&lt;p&gt;91.218.192.254: оформление&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Итак, как же подключить две локации к синглу? А то и 4?Та легко! Подробный разбор в конфигах '''game_maps_single.ltx'''&lt;br /&gt;
&amp;lt;ini&amp;gt;[level_maps_single]&lt;br /&gt;
................&lt;br /&gt;
..............&lt;br /&gt;
.............&lt;br /&gt;
red_forest&lt;br /&gt;
marsh&amp;lt;/ini&amp;gt; &lt;br /&gt;
и секцию в низ &lt;br /&gt;
&lt;br /&gt;
&amp;lt;ini&amp;gt;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;&lt;br /&gt;
[red_forest]&lt;br /&gt;
texture			= map\map_aes_1&lt;br /&gt;
bound_rect		= -256.776, -747.782, 1398.440, 850.523&lt;br /&gt;
global_rect		= 253.0, 74.0,	737.0,541.358704&lt;br /&gt;
weathers		= default&lt;br /&gt;
music_tracks    = l12_stancia_2_musics&lt;br /&gt;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;&lt;br /&gt;
[marsh]&lt;br /&gt;
texture			= map\map_aes_1&lt;br /&gt;
bound_rect		= -256.776, -747.782, 1398.440, 850.523&lt;br /&gt;
global_rect		= 253.0, 74.0,	737.0,541.358704&lt;br /&gt;
weathers		= default&lt;br /&gt;
music_tracks    = l12_stancia_2_musics&lt;br /&gt;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;&amp;lt;/ini&amp;gt;&lt;br /&gt;
Теперь '''game_levels.ltx'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ini&amp;gt;[levels]&lt;br /&gt;
.....&lt;br /&gt;
...&lt;br /&gt;
...&lt;br /&gt;
level190	&lt;br /&gt;
level191&lt;br /&gt;
&amp;lt;/ini&amp;gt;&lt;br /&gt;
&lt;br /&gt;
и секции&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ini&amp;gt;[level190]&lt;br /&gt;
 name   = red_forest&lt;br /&gt;
 caption = &amp;quot;red_forest&amp;quot;&lt;br /&gt;
 offset  = 2000.0,	800.0,	1000.0&lt;br /&gt;
 id   = 190&lt;br /&gt;
&lt;br /&gt;
[level191]&lt;br /&gt;
 name   = marsh&lt;br /&gt;
 caption = &amp;quot;marsh&amp;quot;&lt;br /&gt;
 offset  = 2000.0,	800.0,	1000.0&lt;br /&gt;
 id   = 191&amp;lt;/ini&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Теперь граф поинты&lt;br /&gt;
&lt;br /&gt;
&amp;lt;big&amp;gt;red_forest&amp;lt;/big&amp;gt;&lt;br /&gt;
первый граф;  Name start_actor_01&lt;br /&gt;
второй граф: Name exit_rf&lt;br /&gt;
             На уровень:marsh&lt;br /&gt;
             коннекшн поинт на marsh: exit_marsh&lt;br /&gt;
Левел чангер: Level marsh&lt;br /&gt;
              Левел поинт ту чанг: start_actor_01&lt;br /&gt;
         &lt;br /&gt;
&amp;lt;big&amp;gt;marsh&amp;lt;/big&amp;gt;&lt;br /&gt;
Первый граф: Name start_actor_01&lt;br /&gt;
Второй граф: Name exit_marsh&lt;br /&gt;
              На уровне rd_forest exit_rf&lt;br /&gt;
Левел Чангер: Level red_forest&lt;br /&gt;
              Левел поинт ту чанг start_actor_01&lt;br /&gt;
uгы))))))&lt;br /&gt;
Вроде всё. Способ проверен. &lt;br /&gt;
З,Ы, Коннекшн поинты должны быть на каждом уровне&lt;br /&gt;
&lt;br /&gt;
[[Категория:Конфигурационные файлы]]&lt;/div&gt;</summary>
		<author><name>91.218.192.254</name></author>	</entry>

	<entry>
		<id>http://stalkerin.gameru.net/wiki/index.php?title=%D0%9D%D0%B0%D1%87%D0%B0%D0%BB%D1%8C%D0%BD%D1%8B%D0%B5_%D1%81%D0%B2%D0%B5%D0%B4%D0%B5%D0%BD%D0%B8%D1%8F_%D0%BE_%D1%81%D0%BA%D1%80%D0%B8%D0%BF%D1%82%D0%B0%D1%85</id>
		<title>Начальные сведения о скриптах</title>
		<link rel="alternate" type="text/html" href="http://stalkerin.gameru.net/wiki/index.php?title=%D0%9D%D0%B0%D1%87%D0%B0%D0%BB%D1%8C%D0%BD%D1%8B%D0%B5_%D1%81%D0%B2%D0%B5%D0%B4%D0%B5%D0%BD%D0%B8%D1%8F_%D0%BE_%D1%81%D0%BA%D1%80%D0%B8%D0%BF%D1%82%D0%B0%D1%85"/>
				<updated>2013-07-31T15:07:30Z</updated>
		
		<summary type="html">&lt;p&gt;91.218.192.254: оформление, орфография&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;ПРЕДИСЛОВИЕ&lt;br /&gt;
{{Message_box|&lt;br /&gt;
id	=pseudoscience|&lt;br /&gt;
align = left|&lt;br /&gt;
backgroundcolor	= #f9f9f9|&lt;br /&gt;
image	=Lamp.gif|&lt;br /&gt;
heading	= Для чего нужны срипты и сведения и их использовании - Rez@niy aka Oxygenium|&lt;br /&gt;
message = В скриптах содержаться данные для выполнения по условиям.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Итак начнём. Рассмотрим простой скрипт спавна предмета:&lt;br /&gt;
&amp;lt;lua&amp;gt;--*********************************************&lt;br /&gt;
--**TESTING**&lt;br /&gt;
--*********************************************&lt;br /&gt;
--&lt;br /&gt;
-- Создает в заданном месте калаш&lt;br /&gt;
function ak_create()&lt;br /&gt;
	local a = vector() -- db.actor:position()&lt;br /&gt;
	a.x = -220.21&lt;br /&gt;
	a.y = -19.93&lt;br /&gt;
	a.z = -158.98&lt;br /&gt;
	alife():create(&amp;quot;wpn_ak47&amp;quot;,a,33447,47,65535)&lt;br /&gt;
end&amp;lt;/lua&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;big&amp;gt;ИМЯ ФУНКЦИИ&amp;lt;/big&amp;gt;&lt;br /&gt;
''function'' - всегда обязательное поле, это что то вроде id, в языке LUA. После поля function отступаем и пишем текст произвольный. &lt;br /&gt;
Дальше идёт функциия о позиции, она обязательна для спавна скриптом.&lt;br /&gt;
Ниже кординаты. Для снятия кординат используем в консоли rs_stats on.&lt;br /&gt;
После кординат идёт сама функция спавна. &amp;lt;big&amp;gt;alife():create(&amp;quot;СИСТЕМНОЕ ИМЯ ОБЬЕКТА&amp;quot;,a,33447,47,65535)&amp;lt;/big&amp;gt;&lt;br /&gt;
Цифры пусть остануться такие же. Для обьекта спавна возмём wpn_ak47. Кординаты какие то левые, лучше снимите кординаты сами. И ещё кое что важное. В папке scripts, создаём файл main.script и пишем туда готовый текст, только со своими кординатами.&lt;br /&gt;
&amp;lt;lua&amp;gt;--*********************************************&lt;br /&gt;
--**TESTING**&lt;br /&gt;
--*********************************************&lt;br /&gt;
--&lt;br /&gt;
-- Создает в заданном месте калаш&lt;br /&gt;
function ak_create()&lt;br /&gt;
	local a = vector() -- db.actor:position()&lt;br /&gt;
	a.x = -220.21&lt;br /&gt;
	a.y = -19.93&lt;br /&gt;
	a.z = -158.98&lt;br /&gt;
	alife():create(&amp;quot;wpn_ak47&amp;quot;,a,33447,47,65535)&lt;br /&gt;
end&amp;lt;/lua&amp;gt;&lt;br /&gt;
Написали? Отлично!. Теперь осталось только подключить это к игре.  Идём в файл '''dialogs_escape.xml''' и выбираем какое нить диалог. Там после поля ''text'' в диалоге приписываем: &lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;action&amp;gt;main.ak_create&amp;lt;/action&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
ТОЛЬКО ДИАЛОГ ВЫБИРАЕМ ИСПОЛЬЗУЮЩИЙСЯ. С волком например. Всё сохраняем  и тестим. В итоге, когда вы в игре нажмёте на фразу после которой находится ''action'', заспауниться калаш на указанных кординатах.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Message_box|&lt;br /&gt;
id	=pseudoscience1|&lt;br /&gt;
align = left|&lt;br /&gt;
backgroundcolor	= #f9f9f9|&lt;br /&gt;
image	=Lamp.gif|&lt;br /&gt;
heading	= Углублённое изучение - Rez@niy|&lt;br /&gt;
message = Далее идём в более углублённое изучение. Изучаем построение}}&lt;br /&gt;
&lt;br /&gt;
Прописываем функцию. Задаём условие:&lt;br /&gt;
&amp;lt;code&amp;gt;if =&amp;lt;/code&amp;gt;&lt;br /&gt;
Для закрытия тэга:&lt;br /&gt;
&amp;lt;code&amp;gt;end&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
ПОКА ВСЁ, МОЖЕТ НАПИШУ ЕЩЁ ЧЁ НИТЬ ПОЛЕЗНОЕ&lt;br /&gt;
&lt;br /&gt;
Ну и я напишу.'''Меченый(Стрелок)'''&lt;br /&gt;
&lt;br /&gt;
Мой монолог построен так: В - Вопрос,О - Ответ&lt;br /&gt;
&lt;br /&gt;
Начнём:&lt;br /&gt;
'''В''' - Что такое ЦИКЛ? И как он выглядит?&lt;br /&gt;
''О'' - Цикл это повторение одного и того же действие n-ое кол-во раз&lt;br /&gt;
выглядит так&lt;br /&gt;
&amp;lt;pre&amp;gt;for i=1,n do&lt;br /&gt;
&lt;br /&gt;
end&amp;lt;/pre&amp;gt;&lt;br /&gt;
За место i может быть любая переменная ,за место n - число которое больше первоначального значения(i)&lt;br /&gt;
'''В''' - А для чего можно использовать цикл?&lt;br /&gt;
''О'' - много для чего можно.см. ниже&lt;br /&gt;
Пример 1.Перебор по id/Узнаем монстор ли объект,если да ,то функция возвращает истину(true)&lt;br /&gt;
&amp;lt;lua&amp;gt;for id=1,65535 do&lt;br /&gt;
local obj = level.object_by_id(id)&lt;br /&gt;
if obj~= nil then&lt;br /&gt;
if IsMonster(obj) then&lt;br /&gt;
return true&lt;br /&gt;
else&lt;br /&gt;
return false&lt;br /&gt;
end&lt;br /&gt;
end&lt;br /&gt;
end&amp;lt;/lua&amp;gt;&lt;br /&gt;
Пример 2.Спавн/&lt;br /&gt;
&amp;lt;lua&amp;gt;for i=1,5 do --функция повторится 5 раз,следовательно будет заспавнено 5 АК &lt;br /&gt;
	local a = vector() &lt;br /&gt;
	a.x = -220.21&lt;br /&gt;
	a.y = -19.93&lt;br /&gt;
	a.z = -158.98&lt;br /&gt;
	alife():create(&amp;quot;wpn_ak47&amp;quot;,a,33447,47,65535)&lt;br /&gt;
end&amp;lt;/lua&amp;gt;&lt;br /&gt;
и т.п.&lt;br /&gt;
существует ещё цикл  с предусловием (while a,n do),но об этом позже&lt;br /&gt;
'''В''' - Какие параметры ГГ можно корректировать  скриптами?&lt;br /&gt;
''О'' - Таких не много, запись будет такой :&lt;br /&gt;
&amp;lt;pre&amp;gt;db.actor.параметр&amp;lt;/pre&amp;gt;&lt;br /&gt;
Параметры:&lt;br /&gt;
&amp;lt;pre&amp;gt;radiation&lt;br /&gt;
health&lt;br /&gt;
psy_health&lt;br /&gt;
power&amp;lt;/pre&amp;gt;&lt;br /&gt;
'''В''' - а можно ли спавнить в рандомной точке предмет,если да,то как?&lt;br /&gt;
''О'' - можно&lt;br /&gt;
Для этого нам понадобится таблица максимальных значений ''level_vertex_id'' и ''game_vertex_id''&lt;br /&gt;
выглядит она так:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ini&amp;gt;local level_vertexes={&lt;br /&gt;
l01_escape = {lvid=595580, gvid=44},&lt;br /&gt;
l02_garbage = {lvid=384039, gvid=265},&lt;br /&gt;
l03_agroprom = {lvid=438379, gvid=693},&lt;br /&gt;
l04_darkvalley = {lvid=392517, gvid=813},&lt;br /&gt;
l06_rostok = {lvid=69283, gvid=1311},&lt;br /&gt;
l07_military = {lvid=915663, gvid=1546},&lt;br /&gt;
l10_radar = {lvid=796328, gvid=1868},&lt;br /&gt;
l11_pripyat = {lvid=295965, gvid=2269}&lt;br /&gt;
}&amp;lt;/ini&amp;gt;&lt;br /&gt;
&lt;br /&gt;
ЗЫ:Извините ,что не для всех уровней,исправлюсь &lt;br /&gt;
Так,таблица у нас есть ,теперь нам нужно написать функцию спавна.Давайте покажу на Монстрах&lt;br /&gt;
создадим таблицу с секциями спавна монстров:&lt;br /&gt;
(Я буду использовать свои наработки ,поэтому таких секции у вас не будет ,эта таблица -пример)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lua&amp;gt;local mutants = {&lt;br /&gt;
&amp;quot;zombie_ghost_hell&amp;quot;,&lt;br /&gt;
&amp;quot;zombie_normal_hell&amp;quot;,&lt;br /&gt;
&amp;quot;zombie_immortal_hell&amp;quot;,&lt;br /&gt;
&amp;quot;bloodsucker_weak_hell&amp;quot;,&lt;br /&gt;
&amp;quot;tushkano_normal_hell&amp;quot;,&lt;br /&gt;
&amp;quot;snork_weak_hell&amp;quot;,&lt;br /&gt;
&amp;quot;burer_weak_hell&amp;quot;,&lt;br /&gt;
&amp;quot;cat_weak_hell&amp;quot;,&lt;br /&gt;
&amp;quot;chimera_weak_hell&amp;quot;,&lt;br /&gt;
&amp;quot;gigant_strong_hell&amp;quot;&lt;br /&gt;
}&amp;lt;/lua&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Таблицу записали ,наконец приступим к оформлению главной функции&lt;br /&gt;
&amp;lt;lua&amp;gt;function random_spawn()&lt;br /&gt;
local count = math.random(5,20) --выбираем кол-во заспавненых мобов&lt;br /&gt;
local section = mutants[math.random(table.getn(mutants))] -- выбираем секцию моба&lt;br /&gt;
local lv = math.random(level_vertexes[level.name()][&amp;quot;lvid&amp;quot;]) --выбираем левел вертекс&lt;br /&gt;
local gv = level_vertexes[level.name()][&amp;quot;gvid&amp;quot;] --выбираем гэйм вертекс&lt;br /&gt;
for ind = 1, count do&lt;br /&gt;
alife():create(section, level.vertex_position(lv), lv, gv)--\\level.vertex_position(lv) - позиция левел вертекса&lt;br /&gt;
end&lt;br /&gt;
end&amp;lt;/lua&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Далее помещаем вызов функции в '''bind_stalker.script''' в ''net_spawn()'' и при каждой загрузке будут спавнится мобы в рандомной точке&lt;br /&gt;
[[Категория:Скрипты]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;big&amp;gt;Вступление ГГ в группировку!&amp;lt;/big&amp;gt;&lt;br /&gt;
1.Создаем файл '''ваше_название_скприпта.script''' в папке '''gamedata/scripts'''&lt;br /&gt;
2. Открываем его и пишем:&lt;br /&gt;
--меняем группировку ГГ&lt;br /&gt;
&amp;lt;lua&amp;gt;function new_group(actor, npc)&lt;br /&gt;
if npc:character_community() ~= &amp;quot;(dolg)&amp;quot; then &lt;br /&gt;
npc:set_character_community(&amp;quot;dolg&amp;quot;, 0, 0) &lt;br /&gt;
end&lt;br /&gt;
end&amp;lt;/lua&amp;gt;&lt;br /&gt;
Выдаём функцию при разговоре с НПС&lt;br /&gt;
&lt;br /&gt;
НПС вступает в группировку&lt;br /&gt;
&amp;lt;pre&amp;gt;function ваше_название_функции(npc, actor)&amp;lt;/pre&amp;gt;&lt;br /&gt;
Вызываем также, из любого диалога&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;big&amp;gt;Нельзя взять оружие без брони&amp;lt;/big&amp;gt;&lt;br /&gt;
Пишем функцию в любом скрипе:&lt;br /&gt;
&amp;lt;lua&amp;gt;function ваше_название_функции()&lt;br /&gt;
local armor = db.actor:item_in_slot(6) --слот брони (НЕ ТРОГАТЬ!)&lt;br /&gt;
local weapon = db.actor:item_in_slot(2) --слот оружия (для пистолетов в оригинале слот 1)&lt;br /&gt;
&lt;br /&gt;
if db.actor:active_slot()==2 and weapon then -- за место 2 пишем слот оружия еще раз&lt;br /&gt;
local tmp&lt;br /&gt;
if armor then&lt;br /&gt;
tmp = armor:section()&lt;br /&gt;
else&lt;br /&gt;
tmp = &amp;quot;none&amp;quot;&lt;br /&gt;
end&amp;lt;/lua&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lua&amp;gt;if (not string.find(tmp, &amp;quot;пишем_название_брони&amp;quot; )) and (weapon:section()==&amp;quot;пишем_название_оружия1&amp;quot; or weapon:section()==&amp;quot;пишем_название_оружия2&amp;quot; or weapon:section()==&amp;quot;пишем_название_оружия3&amp;quot;) then --если необходима проверка одного оружия то надо писать так: if (not string.find(tmp, &amp;quot;exo&amp;quot; )) and weapon:section()==&amp;quot;wpn_pkm&amp;quot; then&lt;br /&gt;
db.actor:drop_item(weapon)&lt;br /&gt;
local tmpw = amk.spawn_item_in_inv(weapon:section())&lt;br /&gt;
db.actor:transfer_item(weapon,db.actor)&lt;br /&gt;
alife():release(tmpw)&lt;br /&gt;
news_manager.send_tip(db.actor,&amp;quot;Невозможно взять пулемёт в руки без экзы&amp;quot;,nil,nil,10000)&lt;br /&gt;
end&lt;br /&gt;
end&amp;lt;/lua&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Далее идем по пути '''gamedata/script/bind_stalker.script'''&lt;br /&gt;
Функция: &lt;br /&gt;
&amp;lt;pre&amp;gt;function actor_binder:update(delta)&amp;lt;/pre&amp;gt;&lt;br /&gt;
Сразу ниже неё пиши вызов в формате :&lt;br /&gt;
&amp;lt;code&amp;gt;название_файла.название_функции&amp;lt;/code&amp;gt;&lt;br /&gt;
Можешь написать эту функцию в любом файле из папки '''scripts''', а можешь создать свой файл и назвать, скажем, '''my_script''', и написать там.&lt;br /&gt;
Должно быть так :&lt;br /&gt;
Код&lt;br /&gt;
&amp;lt;lua&amp;gt;function actor_binder:update(delta)&lt;br /&gt;
my_script.check_armor()&amp;lt;/lua&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;big&amp;gt;Удаление предмета из инвентаря&amp;lt;/big&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lua&amp;gt;function name_function()&lt;br /&gt;
local se_obj = alife():object(&amp;quot;сюда_пишем_что_удалять_будем&amp;quot;)&lt;br /&gt;
if se_obj then&lt;br /&gt;
alife():release(se_obj, true)&lt;br /&gt;
end&lt;br /&gt;
end&amp;lt;/lua&amp;gt;&lt;br /&gt;
&lt;br /&gt;
ПРИМЕР&lt;br /&gt;
--' убираем финального Клыка&lt;br /&gt;
&amp;lt;lua&amp;gt;function dell_kluk_final()&lt;br /&gt;
local se_obj = alife():object(&amp;quot;final_kluk&amp;quot;)&lt;br /&gt;
if se_obj then&lt;br /&gt;
alife():release(se_obj, true)&lt;br /&gt;
end&lt;br /&gt;
end&amp;lt;/lua&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Я добвлю может кому и пригодится.'''Болотный Доктор'''&lt;br /&gt;
&lt;br /&gt;
         ВЫДАЁМ ПРЕДМЕТ АКТОРУ&lt;br /&gt;
&amp;lt;lua&amp;gt;function название функции (first_speaker, second_speaker)&lt;br /&gt;
dialogs.relocate_item_section(second_speaker, &amp;quot;название предмета&amp;quot;, &amp;quot;in&amp;quot;) &lt;br /&gt;
end&amp;lt;/lua&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Размещается в файлах скрипт.&lt;br /&gt;
&lt;br /&gt;
Выдача поршня вставляется под строку действия.&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;action&amp;gt;название скрипта.название функции&amp;lt;/action&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Примечание, что бы выдать два одинаковых предмета пишем&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lua&amp;gt;function название функции (first_speaker, second_speaker)&lt;br /&gt;
dialogs.relocate_item_section(second_speaker, &amp;quot;название предмета&amp;quot;, &amp;quot;in&amp;quot;,2) &lt;br /&gt;
end&amp;lt;/lua&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Если надо больше меняем цифру 2 на нужную нам.&lt;br /&gt;
&lt;br /&gt;
      ОТБИРАЕМ ПРЕДМЕТ У АКТОРА.&lt;br /&gt;
&amp;lt;lua&amp;gt;function название функции(first_speaker, second_speaker)&lt;br /&gt;
    dialogs.relocate_item_section_from_actor(first_speaker, second_speaker, &amp;quot;название предмета&amp;quot;)&lt;br /&gt;
end&amp;lt;/lua&amp;gt;&lt;br /&gt;
&lt;br /&gt;
размещается в файлах скрипт&lt;br /&gt;
&lt;br /&gt;
выдача поршня вставляется под строку действия:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;action&amp;gt;название скрипта.название функции&amp;lt;/action&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Примечание, что бы отобрать два одинаковых предмета пишем&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lua&amp;gt;function название функции(first_speaker, second_speaker)&lt;br /&gt;
    dialogs.relocate_item_section_from_actor(first_speaker, second_speaker, &amp;quot;название предмета&amp;quot;,2)&lt;br /&gt;
end&amp;lt;/lua&amp;gt;&lt;br /&gt;
Если надо больше меняем цифру 2 на нужную нам.&lt;br /&gt;
&lt;br /&gt;
      СПАВНИМ ВЕЩЬ В РЮКЗАК гг&lt;br /&gt;
&amp;lt;lua&amp;gt;function название функции()&lt;br /&gt;
local obj = alife():create(&amp;quot;ВЕЩЬ&amp;quot;, db.actor:position(), db.actor:level_vertex_id(), db.actor:game_vertex_id(), db.actor:id())&lt;br /&gt;
end&amp;lt;/lua&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В диалог:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;action&amp;gt;название скрипта.название функции&amp;lt;/action&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
ПРОВЕРКА НАЛИЧИЯ У АКТОРА ПРЕДМЕТА&lt;br /&gt;
Вариант первый&lt;br /&gt;
&amp;lt;lua&amp;gt;function Название функции()&lt;br /&gt;
    if db.actor:object(&amp;quot;название предмета&amp;quot;) then&lt;br /&gt;
        return true&lt;br /&gt;
    end&lt;br /&gt;
    return false&lt;br /&gt;
end&amp;lt;/lua&amp;gt;&lt;br /&gt;
&lt;br /&gt;
в диалог:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;precondition&amp;gt;имя скрипта.название функции&amp;lt;/precondition&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;---------Вариант второй)------------------&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lua&amp;gt;function название функции(first_speaker, second_speaker)&lt;br /&gt;
    return first_speaker:object(&amp;quot;название предмета&amp;quot;) ~= nil&lt;br /&gt;
end&amp;lt;/lua&amp;gt;&lt;br /&gt;
&lt;br /&gt;
в диалог:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;precondition&amp;gt;имя скрипта.название функции&amp;lt;/precondition&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
ПРОВЕРКА ВЕЩЕЙ У ГГ&lt;br /&gt;
&amp;lt;lua&amp;gt;function Название функции(first_speaker, second_speaker)&lt;br /&gt;
    return first_speaker:object(&amp;quot;название предмета&amp;quot;) ~= nil or&lt;br /&gt;
             first_speaker:object(&amp;quot;название предмета&amp;quot;) ~= nil or&lt;br /&gt;
             first_speaker:object(&amp;quot;название предмета&amp;quot;) ~= nil&lt;br /&gt;
end&amp;lt;/lua&amp;gt;&lt;br /&gt;
&lt;br /&gt;
в диалог:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;precondition&amp;gt;имя скрипта.название функции&amp;lt;/precondition&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
описание... если есть хотя бы одна вещь, то мы получим фразу, если нет всех нет разговора&lt;br /&gt;
&lt;br /&gt;
ПРОВЕРКА ДЕНЕГ У ГГ&lt;br /&gt;
Вариант первый(используют ПЫС)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lua&amp;gt;function название функции(first_speaker, second_speaker)&lt;br /&gt;
    return first_speaker:money() &amp;gt;= 2000&lt;br /&gt;
end&amp;lt;/lua&amp;gt;&lt;br /&gt;
&lt;br /&gt;
в диалог: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;precondition&amp;gt;имя скрипта.название функции&amp;lt;/precondition&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;-----------Вариант два--------------&amp;gt;&lt;br /&gt;
Использовал на ТЧ, но и в ЗП работает&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lua&amp;gt;function название функции()&lt;br /&gt;
return db.actor:money()&amp;gt;=10000&lt;br /&gt;
end&amp;lt;/lua&amp;gt;&lt;br /&gt;
в диалог: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;precondition&amp;gt;имя скрипта.название функции&amp;lt;/precondition&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
СПАВН ПРЕДМЕТА&lt;br /&gt;
function spawn_vintar()&lt;br /&gt;
alife():create(&amp;quot;Название предмета&amp;quot;,vector():set(24.725412368774,-3.6072344779968,173.83030700684),993926,210)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
В диалог&lt;br /&gt;
&lt;br /&gt;
&amp;lt;action&amp;gt;название скрипта.название функции&amp;lt;/action&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
МГНОВЕННАЯ СМЕРТЬ ГГ&lt;br /&gt;
function название функции(npc, actor)&lt;br /&gt;
    npc:kill(actor)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
В диалог&lt;br /&gt;
&lt;br /&gt;
&amp;lt;action&amp;gt;название скрипта.название функции&amp;lt;/action&amp;gt;&lt;br /&gt;
&lt;br /&gt;
ПРОВЕРКА КОЛ_ВА ОДИНАКОВЫХ ПРЕДМЕТОВ&lt;br /&gt;
function название функции(first_speaker, second_speaker)&lt;br /&gt;
        local item_sections = {&amp;quot;Предмет&amp;quot;} &lt;br /&gt;
        local needed = количество одинаковых предметов, ставится цифра без знаков &lt;br /&gt;
        local count = 0&lt;br /&gt;
        local item_section&lt;br /&gt;
    local function calc(temp, item)&lt;br /&gt;
        if item:section() == item_section then&lt;br /&gt;
        count = count + 1&lt;br /&gt;
end&lt;br /&gt;
end&lt;br /&gt;
    for k,v in pairs(item_sections) do&lt;br /&gt;
    item_section = v&lt;br /&gt;
    get_story_object(&amp;quot;actor&amp;quot;):iterate_inventory(calc, actor)&lt;br /&gt;
end&lt;br /&gt;
    return count &amp;gt;= needed&lt;br /&gt;
end &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
в диалог&lt;br /&gt;
&amp;lt;precondition&amp;gt;имя скрипта.название функции&amp;lt;/precondition&amp;gt;&lt;br /&gt;
&lt;br /&gt;
ЛЕЧЕНИЕ ГГ &lt;br /&gt;
Вставим этот актион в диалог&lt;br /&gt;
&lt;br /&gt;
&amp;lt;action&amp;gt;dialogs.medic_magic_potion&amp;lt;/action&amp;gt;&lt;br /&gt;
&lt;br /&gt;
ВЫДАЧА ДЕНЕГ от НПС ГГ&lt;br /&gt;
&lt;br /&gt;
function название функции(first_speaker, second_speaker)&lt;br /&gt;
    dialogs.relocate_money_to_actor(first_speaker, second_speaker, 2000)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
В диалог&lt;br /&gt;
&lt;br /&gt;
&amp;lt;action&amp;gt;название скрипта.название функции&amp;lt;/action&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
ВЫДАЧА ДЕНЕГ от ГГ  НПС&lt;br /&gt;
&lt;br /&gt;
function название функции(actor, npc)&lt;br /&gt;
   dialogs.relocate_money(npc,кол-во,&amp;quot;out&amp;quot;)   &lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
В диалог&lt;br /&gt;
&lt;br /&gt;
&amp;lt;action&amp;gt;название скрипта.название функции&amp;lt;/action&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
НПС становится врагом после определенной ветки диалона или другом  -5000 враг  5000 друг&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
function название скрипта(actor, npc)                                            &lt;br /&gt;
    npc:force_set_goodwill(-5000, actor)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;action&amp;gt;название скрипта.название функции&amp;lt;/action&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
ПРОВЕРКА СМЕРТТИ NPS&lt;br /&gt;
&lt;br /&gt;
function название функции проверки(actor,npc)&lt;br /&gt;
   return has_alife_info(&amp;quot;инфо смерти&amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
в диалог &lt;br /&gt;
&lt;br /&gt;
&amp;lt;precondition&amp;gt;имя скрипта.название функции&amp;lt;/precondition&amp;gt;&lt;/div&gt;</summary>
		<author><name>91.218.192.254</name></author>	</entry>

	<entry>
		<id>http://stalkerin.gameru.net/wiki/index.php?title=CoP:_%D0%95%D1%89%D1%91_%D0%BE%D0%B4%D0%B8%D0%BD_%D1%81%D0%BF%D0%B0%D0%BB%D1%8C%D0%BD%D1%8B%D0%B9_%D0%BC%D0%B5%D1%88%D0%BE%D0%BA</id>
		<title>CoP: Ещё один спальный мешок</title>
		<link rel="alternate" type="text/html" href="http://stalkerin.gameru.net/wiki/index.php?title=CoP:_%D0%95%D1%89%D1%91_%D0%BE%D0%B4%D0%B8%D0%BD_%D1%81%D0%BF%D0%B0%D0%BB%D1%8C%D0%BD%D1%8B%D0%B9_%D0%BC%D0%B5%D1%88%D0%BE%D0%BA"/>
				<updated>2013-07-31T14:56:38Z</updated>
		
		<summary type="html">&lt;p&gt;91.218.192.254: оформление&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Всем привет. В статье [[CoP. Создание спального мешка]] описан хороший метод создания спальника.&lt;br /&gt;
К сожалению полученный спальник имеет существенный недостаток - если перетащить его в слот &lt;br /&gt;
быстрого доступа (который F1-F4), то игра вылетает (проверялось на версии 1.6.02).&lt;br /&gt;
Есть два метода борьбы с этим:&lt;br /&gt;
&lt;br /&gt;
'''1. В описании спальника поменять'''&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
inv_grid_width = 2 &lt;br /&gt;
inv_grid_height = 2 &lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
на &lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
inv_grid_width = 1&lt;br /&gt;
inv_grid_height = 1 &lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
и соответственно перерисовать его иконку, но иконка 1х1 для спальника в инвентаре будет выглядеть неприглядно&lt;br /&gt;
&lt;br /&gt;
'''2. Создать спальник работающий на другом принципе'''&lt;br /&gt;
&lt;br /&gt;
О втором методе и пойдйт речь.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
== Общий принцип ==&lt;br /&gt;
&lt;br /&gt;
Мы унаследуем спальник не от ''identity_immunities'', а от бинокля. Что получится: &lt;br /&gt;
#спальник нельзя будет перетащить в слот быстрого доступа - нет краша&lt;br /&gt;
#спальник будет срабатывать не при «использовании» (не будет такого пункта в меню), а при выбрасывании его из инвентаря и после сна его нужно будет подобрать обратно, что IMHO реалистичнее&lt;br /&gt;
&lt;br /&gt;
== Конфиги ==&lt;br /&gt;
В '''configs\misc\items.ltx''' дописываем:&lt;br /&gt;
&amp;lt;ini&amp;gt;&lt;br /&gt;
------------------------------------------------------------------------------------------------&lt;br /&gt;
-- Спальный мешок&lt;br /&gt;
------------------------------------------------------------------------------------------------&lt;br /&gt;
[sleeping_bag]:wpn_binoc&lt;br /&gt;
;identity_immunities&lt;br /&gt;
GroupControlSection	      = spawn_group&lt;br /&gt;
discovery_dependency           = &lt;br /&gt;
$spawn 			        = &amp;quot;devices\sleeping_bag&amp;quot;&lt;br /&gt;
$prefetch 		        = 32&lt;br /&gt;
class				= WP_BINOC&lt;br /&gt;
cform                           = skeleton&lt;br /&gt;
visual			        = dynamics\equipments\item_spalnik&lt;br /&gt;
inv_name		        = st_sleeping_bag_title&lt;br /&gt;
inv_name_short		        = st_sleeping_bag_title&lt;br /&gt;
description		        = st_sleeping_bag_descr&lt;br /&gt;
use_sound			= interface\bag_open&lt;br /&gt;
inv_weight			= 0.5&lt;br /&gt;
inv_grid_width		        = 2&lt;br /&gt;
inv_grid_height		        = 2&lt;br /&gt;
inv_grid_x			= 25&lt;br /&gt;
inv_grid_y			= 0&lt;br /&gt;
cost				= 0&lt;br /&gt;
eat_health                      = 0&lt;br /&gt;
eat_satiety                     = 0&lt;br /&gt;
eat_power                       = 0&lt;br /&gt;
eat_radiation                   = 0&lt;br /&gt;
wounds_heal_perc                = 0&lt;br /&gt;
eat_portions_num                = 1&lt;br /&gt;
slot 					  = -1&lt;br /&gt;
hit_power				= 0&lt;br /&gt;
hit_type				= fire_wound&lt;br /&gt;
ammo_class			= ammo_9x19_fmj&lt;br /&gt;
scope_status			= 0&lt;br /&gt;
silencer_status			= 0&lt;br /&gt;
grenade_launcher_status		= 0&lt;br /&gt;
animation_slot		        = 13&lt;br /&gt;
rpm					= 0&lt;br /&gt;
cam_dispersion		= 0&lt;br /&gt;
fire_dispersion_base	= 0&lt;br /&gt;
hit_power_critical		= 0&lt;br /&gt;
hud                             = wpn_vodka_hud&lt;br /&gt;
can_trade	                = false&lt;br /&gt;
random_sleep_a                  = 2&lt;br /&gt;
random_sleep_b                  = 6&lt;br /&gt;
quest_item      	        = false&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/ini&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Важно''': visual ДОЛЖЕН существовать. OGF модели спальника можно найти в сети.&lt;br /&gt;
== Скрипты ==&lt;br /&gt;
В scripts создаём '''sleeping_bag.script'''&lt;br /&gt;
&amp;lt;lua&amp;gt;&lt;br /&gt;
function use(s_obj)&lt;br /&gt;
	if nil == s_obj then&lt;br /&gt;
		return&lt;br /&gt;
	end&lt;br /&gt;
	if surge_manager.actor_in_cover() then&lt;br /&gt;
		ui_sleep_dialog.sleep()&lt;br /&gt;
		give_info(&amp;quot;sleep_active&amp;quot;)&lt;br /&gt;
	else&lt;br /&gt;
		news_manager.send_tip(db.actor, game.translate_string(&amp;quot;st_sleeping_bag_no_sleep&amp;quot;))&lt;br /&gt;
	end&lt;br /&gt;
	news_manager.send_tip(db.actor, game.translate_string(&amp;quot;st_sleeping_bag_take_reminder&amp;quot;))&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function use_inventory_item(s_obj)&lt;br /&gt;
	if s_obj and s_obj.section_name and s_obj:section_name() == &amp;quot;sleeping_bag&amp;quot; then&lt;br /&gt;
		use(s_obj)&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/lua&amp;gt;&lt;br /&gt;
В '''bind_stalker.script''' в ''actor_binder:on_item_drop'' прописываем&lt;br /&gt;
&amp;lt;lua&amp;gt;&lt;br /&gt;
function actor_binder:on_item_drop (obj)&lt;br /&gt;
	if(obj) then&lt;br /&gt;
		local s_obj = alife():object(obj:id())&lt;br /&gt;
		sleeping_bag.use_inventory_item(s_obj)&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/lua&amp;gt;&lt;br /&gt;
В '''configs\text\rus\st_items_equipment.xml''' добавляем&lt;br /&gt;
&amp;lt;xml&amp;gt;&lt;br /&gt;
      &amp;lt;string id=&amp;quot;st_sleeping_bag_title&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;text&amp;gt;«Спальный мешок»&amp;lt;/text&amp;gt;&lt;br /&gt;
      &amp;lt;/string&amp;gt;&lt;br /&gt;
      &amp;lt;string id=&amp;quot;st_sleeping_bag_descr&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;text&amp;gt;Непромокаемый спальный мешок.  Один из способов переночевать в Зоне. Но от радиации не спасёт, поэтому для ночевки нужно искать места по-укромнее. Например такие, где можно переждать выброс.&amp;lt;/text&amp;gt;&lt;br /&gt;
      &amp;lt;/string&amp;gt;&lt;br /&gt;
&amp;lt;/xml&amp;gt;&lt;br /&gt;
В '''configs\text\rus\ui_st_screen.xml''' добавляем&lt;br /&gt;
&amp;lt;xml&amp;gt;&lt;br /&gt;
	&amp;lt;string id=&amp;quot;st_sleeping_bag_no_sleep&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;text&amp;gt;В этом месте не заснуть. Нужно найти более надежное укрытие, там где можно переждать выброс.&amp;lt;/text&amp;gt;&lt;br /&gt;
	&amp;lt;/string&amp;gt;	&lt;br /&gt;
	&amp;lt;string id=&amp;quot;st_sleeping_bag_take_reminder&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;text&amp;gt;%c[255,255,255,0]Не забудьте забрать спальный мешок.%c[default]&amp;lt;/text&amp;gt;&lt;br /&gt;
	&amp;lt;/string&amp;gt;&lt;br /&gt;
&amp;lt;/xml&amp;gt;&lt;br /&gt;
В '''configs\gamepley\character_desc_general.xml''' ищем в самом начале&lt;br /&gt;
&amp;lt;xml&amp;gt;&lt;br /&gt;
&amp;lt;!-- 											 --&amp;gt;&lt;br /&gt;
&amp;lt;!--				 Actor 						 --&amp;gt;&lt;br /&gt;
&amp;lt;!-- 											 --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;specific_character id=&amp;quot;actor&amp;quot; no_random = &amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;name&amp;gt;st_actor_name&amp;lt;/name&amp;gt;&lt;br /&gt;
		&amp;lt;icon&amp;gt;ui_inGame2_Hero&amp;lt;/icon&amp;gt;&lt;br /&gt;
		&amp;lt;map_icon x=&amp;quot;2&amp;quot; y=&amp;quot;5&amp;quot;&amp;gt;&amp;lt;/map_icon&amp;gt;&lt;br /&gt;
&lt;br /&gt;
		&amp;lt;team&amp;gt;Actor&amp;lt;/team&amp;gt;&lt;br /&gt;
		&amp;lt;supplies&amp;gt;&lt;br /&gt;
			[spawn] \n&lt;br /&gt;
			device_torch \n&lt;br /&gt;
			wpn_binoc \n&lt;br /&gt;
			wpn_knife = 1 \n&lt;br /&gt;
			detector_simple \n&lt;br /&gt;
			helm_respirator \n&lt;br /&gt;
			stalker_outfit \n&lt;br /&gt;
&amp;lt;/xml&amp;gt;&lt;br /&gt;
и добавляем&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
			sleeping_bag \n&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
В '''configs\mp\mp_ranks.ltx''' ищем&lt;br /&gt;
&amp;lt;ini&amp;gt;&lt;br /&gt;
[rank_0]&lt;br /&gt;
rank_name						= st_rank_novice		; звание&lt;br /&gt;
rank_exp						= 0, 0          ; опыт, артефакты&lt;br /&gt;
rank_diff_exp_bonus				= 1, 1.5, 2, 3, 4&lt;br /&gt;
;----------------- new items -------------------------&lt;br /&gt;
available_items					=&lt;br /&gt;
&amp;lt;/ini&amp;gt;&lt;br /&gt;
И в конце длиннющей строки ''available_item''s через запятую добавляем ''sleeping_bag''&lt;br /&gt;
&lt;br /&gt;
Запускаем новую игру и тестируем&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Скрипты]]&lt;/div&gt;</summary>
		<author><name>91.218.192.254</name></author>	</entry>

	<entry>
		<id>http://stalkerin.gameru.net/wiki/index.php?title=CoP._%D0%AD%D1%84%D1%84%D0%B5%D0%BA%D1%82_%D1%80%D0%B0%D0%B7%D0%BD%D0%BE%D0%BE%D0%B1%D1%80%D0%B0%D0%B7%D0%B8%D1%8F_%D0%B0%D1%80%D1%82%D0%B5%D1%84%D0%B0%D0%BA%D1%82%D0%BE%D0%B2</id>
		<title>CoP. Эффект разнообразия артефактов</title>
		<link rel="alternate" type="text/html" href="http://stalkerin.gameru.net/wiki/index.php?title=CoP._%D0%AD%D1%84%D1%84%D0%B5%D0%BA%D1%82_%D1%80%D0%B0%D0%B7%D0%BD%D0%BE%D0%BE%D0%B1%D1%80%D0%B0%D0%B7%D0%B8%D1%8F_%D0%B0%D1%80%D1%82%D0%B5%D1%84%D0%B0%D0%BA%D1%82%D0%BE%D0%B2"/>
				<updated>2013-07-28T13:33:12Z</updated>
		
		<summary type="html">&lt;p&gt;91.218.192.254: оформление, орфография&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Давным давно читал на форуме GSC такое предложение: '''Сделайте так чтобы артефакты были более уникальны. Тоесть каждая Медуза имела отличия от такой же Медузы.'''&lt;br /&gt;
&lt;br /&gt;
Честно говоря идея хорошая, я тоже считаю неправильным то что каждая найденая мной Медуза весит пол килограмма выводит 2 условные единицы радиации и стоит 4000 рублей (тут конечно есть разброс цен у торгашей) дети ведь не рождаются с весом ровно 3200 со светлыми волосами и голубыми глазами. Менять можно впринципе любые параметры, но на практике столкнулся с тем что приходится поднимать общую радиоизлучаемость артефактов до минимума равного 5-6 и максисума равного 12-13.&lt;br /&gt;
&lt;br /&gt;
'''НАЧНЕМ'''&lt;br /&gt;
&lt;br /&gt;
Вот исправленный конфиг медузы:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;ini&amp;gt;[af_medusa]:af_base&lt;br /&gt;
 $spawn				= &amp;quot;artefacts\gravitational_1_medusa&amp;quot;&lt;br /&gt;
 class				= ARTEFACT  	; будет подпрыгивать&lt;br /&gt;
 visual				= dynamics\artefacts\af_medusa.ogf&lt;br /&gt;
 description			= st_af_medusa_descr&lt;br /&gt;
 inv_name			= st_af_medusa_name&lt;br /&gt;
 inv_name_short		= st_af_medusa_name&lt;br /&gt;
 inv_weight			= 0.5&lt;br /&gt;
 &lt;br /&gt;
 inv_grid_x			= 9&lt;br /&gt;
 inv_grid_y			= 4&lt;br /&gt;
 &lt;br /&gt;
 cost				= 4000&lt;br /&gt;
 &lt;br /&gt;
 jump_height			= .5    	; высота прыжка&lt;br /&gt;
 &lt;br /&gt;
 particles				= artefact\af_gravi_idle&lt;br /&gt;
 det_show_particles		= artefact\af_gravi_show&lt;br /&gt;
 det_hide_particles		= artefact\af_gravi_hide&lt;br /&gt;
 &lt;br /&gt;
 af_rank				= 1&lt;br /&gt;
 &lt;br /&gt;
 lights_enabled = true&lt;br /&gt;
 &lt;br /&gt;
 trail_light_color 		= 0.4,0.4,0&lt;br /&gt;
 trail_light_range 		= 2.0&lt;br /&gt;
 &lt;br /&gt;
 ;скорости увеличения (уменьшения)&lt;br /&gt;
 health_restore_speed		= 0&lt;br /&gt;
 radiation_restore_speed		= -0.003&lt;br /&gt;
 satiety_restore_speed		= 0&lt;br /&gt;
 power_restore_speed			= 0&lt;br /&gt;
 bleeding_restore_speed		= 0&lt;br /&gt;
 hit_absorbation_sect		= af_medusa_absorbation&lt;br /&gt;
 &lt;br /&gt;
 additional_inventory_weight		= 0&lt;br /&gt;
 additional_inventory_weight2	= 0&lt;br /&gt;
 &lt;br /&gt;
 artefact_activation_seq		= af_activation_bold&lt;br /&gt;
 &lt;br /&gt;
 [af_medusa_absorbation]&lt;br /&gt;
 burn_immunity 			= 0				;коэффициенты иммунитета&lt;br /&gt;
 strike_immunity 		= 0&lt;br /&gt;
 shock_immunity 			= 0&lt;br /&gt;
 wound_immunity 			= 0&lt;br /&gt;
 radiation_immunity 		= 0&lt;br /&gt;
 telepatic_immunity 		= 0&lt;br /&gt;
 chemical_burn_immunity 	= 0&lt;br /&gt;
 explosion_immunity 		= 0&lt;br /&gt;
 fire_wound_immunity  	= 0&amp;lt;/ini&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Сразу же после него вписываем что то вроде:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ini&amp;gt; [af_medusa_mini]:af_medusa&lt;br /&gt;
 $spawn				= &amp;quot;artefacts\my_addon_af_medusa_mini&amp;quot;&lt;br /&gt;
 inv_weight			= 0.3&lt;br /&gt;
 &lt;br /&gt;
 cost				= 3500&lt;br /&gt;
 &lt;br /&gt;
 radiation_restore_speed		= -0.002&lt;br /&gt;
 &lt;br /&gt;
 ;------------------------------------------------------------------------------------------&lt;br /&gt;
 &lt;br /&gt;
 [af_medusa_maxi]:af_medusa&lt;br /&gt;
 $spawn				= &amp;quot;artefacts\my_addon_af_medusa_maxi&amp;quot;&lt;br /&gt;
 inv_weight			= 0.7&lt;br /&gt;
 &lt;br /&gt;
 cost				= 4500&lt;br /&gt;
 &lt;br /&gt;
 radiation_restore_speed		= -0.004&lt;br /&gt;
 &lt;br /&gt;
 ;------------------------------------------------------------------------------------------&lt;br /&gt;
 &lt;br /&gt;
 [af_medusa_super]:af_medusa&lt;br /&gt;
 $spawn				= &amp;quot;artefacts\my_addon_af_medusa_super&amp;quot;&lt;br /&gt;
 inv_weight			= 0.3&lt;br /&gt;
 &lt;br /&gt;
 cost				= 5500&lt;br /&gt;
 &lt;br /&gt;
 radiation_restore_speed		= -0.004&amp;lt;/ini&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Я в данном случае создал еще три артефакта которые в игре будут полностью похожи на медузу (Название, описание, свойства) С разницей лишь в том что все четыре Медузы будут по разному стоить, имеют разный вес, и по разному выводят радиацию. Далее нам необходимо добавить их в игру.&lt;br /&gt;
&lt;br /&gt;
'''1) gamedata\configs\misc\devices.ltx'''&lt;br /&gt;
&lt;br /&gt;
Дописываем по аналогии секции:&lt;br /&gt;
&lt;br /&gt;
 af_class_40		= af_medusa_mini&lt;br /&gt;
 af_sound_40_		= detectors\art_beep1&lt;br /&gt;
 af_freq_40			= 0.05, 2&lt;br /&gt;
 af_class_41		= af_medusa_maxi&lt;br /&gt;
 af_sound_41_		= detectors\art_beep1&lt;br /&gt;
 af_freq_41			= 0.05, 2&lt;br /&gt;
 af_class_42		= af_medusa_super&lt;br /&gt;
 af_sound_42_		= detectors\art_beep1&lt;br /&gt;
 af_freq_42			= 0.05, 2&lt;br /&gt;
&lt;br /&gt;
К нужному детектору. Не забывая при этом сместить номера последующих секций в следующих детекторах если приписываете на Отклик, Медведь или Велес (detector_simple, detector_advanced, detector_elite)&lt;br /&gt;
&lt;br /&gt;
'''2) gamedata\configs\ui\ui_detector_artefact.xml'''&lt;br /&gt;
&lt;br /&gt;
Дописываем по аналогии:&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;xml&amp;gt;&amp;lt;palette id=&amp;quot;af_medusa_mini&amp;quot; width=&amp;quot;0.0015&amp;quot; height=&amp;quot;0.0015&amp;quot; stretch=&amp;quot;1&amp;quot; alignment=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;texture shader=&amp;quot;hud\p3d&amp;quot;&amp;gt;ui_temp_ad3_artefact&amp;lt;/texture&amp;gt;&lt;br /&gt;
    &amp;lt;/palette&amp;gt;&lt;br /&gt;
    &amp;lt;palette id=&amp;quot;af_medusa_maxi&amp;quot; width=&amp;quot;0.0015&amp;quot; height=&amp;quot;0.0015&amp;quot; stretch=&amp;quot;1&amp;quot; alignment=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;texture shader=&amp;quot;hud\p3d&amp;quot;&amp;gt;ui_temp_ad3_artefact&amp;lt;/texture&amp;gt;&lt;br /&gt;
    &amp;lt;/palette&amp;gt;&lt;br /&gt;
    &amp;lt;palette id=&amp;quot;af_medusa_super&amp;quot; width=&amp;quot;0.0015&amp;quot; height=&amp;quot;0.0015&amp;quot; stretch=&amp;quot;1&amp;quot; alignment=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;texture shader=&amp;quot;hud\p3d&amp;quot;&amp;gt;ui_temp_ad3_artefact&amp;lt;/texture&amp;gt;&lt;br /&gt;
    &amp;lt;/palette&amp;gt;&lt;br /&gt;
&amp;lt;/xml&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''И'''&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;xml&amp;gt;&amp;lt;palette id=&amp;quot;af_medusa_mini&amp;quot; width=&amp;quot;0.0011&amp;quot; height=&amp;quot;0.0011&amp;quot; stretch=&amp;quot;1&amp;quot; alignment=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;texture shader=&amp;quot;hud\p3d&amp;quot;&amp;gt;ui_inGame2_Detector_icon_artefact&amp;lt;/texture&amp;gt;&lt;br /&gt;
    &amp;lt;/palette&amp;gt;&lt;br /&gt;
    &amp;lt;palette id=&amp;quot;af_medusa_maxi&amp;quot; width=&amp;quot;0.0011&amp;quot; height=&amp;quot;0.0011&amp;quot; stretch=&amp;quot;1&amp;quot; alignment=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;texture shader=&amp;quot;hud\p3d&amp;quot;&amp;gt;ui_inGame2_Detector_icon_artefact&amp;lt;/texture&amp;gt;&lt;br /&gt;
    &amp;lt;/palette&amp;gt;&lt;br /&gt;
    &amp;lt;palette id=&amp;quot;af_medusa_super&amp;quot; width=&amp;quot;0.0011&amp;quot; height=&amp;quot;0.0011&amp;quot; stretch=&amp;quot;1&amp;quot; alignment=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;texture shader=&amp;quot;hud\p3d&amp;quot;&amp;gt;ui_inGame2_Detector_icon_artefact&amp;lt;/texture&amp;gt;&lt;br /&gt;
    &amp;lt;/palette&amp;gt;&amp;lt;/xml&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''3) gamedata\configs\scripts\локация\anomaly\аномалия.ltx'''&lt;br /&gt;
&lt;br /&gt;
Делаем из:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;ini&amp;gt;[anomal_zone]&lt;br /&gt;
 layers_count = 1&lt;br /&gt;
 respawn_tries = 2&lt;br /&gt;
 max_artefacts = 3&lt;br /&gt;
 ;applying_force_xz = 200&lt;br /&gt;
 ;applying_force_y = 200 &lt;br /&gt;
 artefacts = af_medusa&lt;br /&gt;
 start_artefact = af_medusa&lt;br /&gt;
 coeff = 3&lt;br /&gt;
 artefact_ways = zaton_zanaveska_af_way&amp;lt;/ini&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Вот это&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ini&amp;gt; [anomal_zone]&lt;br /&gt;
 layers_count = 1&lt;br /&gt;
 respawn_tries = 2&lt;br /&gt;
 max_artefacts = 3&lt;br /&gt;
 ;applying_force_xz = 200&lt;br /&gt;
 ;applying_force_y = 200 &lt;br /&gt;
 artefacts = af_medusa, af_medusa_mini, af_medusa_maxi, af_medusa_super&lt;br /&gt;
 start_artefact = af_medusa_mini&lt;br /&gt;
 coeff = 3, 3, 2, 1&lt;br /&gt;
 artefact_ways = zaton_zanaveska_af_way&amp;lt;/ini&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Вот собственно и всё (осталось только добавить в торговлю)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Да как же всё =)'''&lt;br /&gt;
&lt;br /&gt;
Очень вероятно кто то захочет провернуть такое со всеми артефактами (у меня ушло около 7-8 часов (долго искал БАГ).&lt;br /&gt;
&lt;br /&gt;
Так вот в случае с Медузой мы не использовали секцию иммунитетов которые даёт артефакт: hit_absorbation_sect&lt;br /&gt;
&lt;br /&gt;
К примеру:&lt;br /&gt;
&lt;br /&gt;
 hit_absorbation_sect		= af_cristall_flower_mini_absorbation&lt;br /&gt;
&lt;br /&gt;
Вот тут есть правило что если мы используем иммунитеты то они должны вписываться вот так:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;ini&amp;gt;[af_cristall_flower_mini]:af_cristall_flower&lt;br /&gt;
 $spawn				= &amp;quot;artefacts\my_addon_af_cristall_flower_mini&amp;quot;&lt;br /&gt;
 inv_weight			= 0.4&lt;br /&gt;
 &lt;br /&gt;
 cost				= 2500&lt;br /&gt;
 &lt;br /&gt;
 radiation_restore_speed		= 0.006&lt;br /&gt;
 hit_absorbation_sect		= af_cristall_flower_mini_absorbation&lt;br /&gt;
 &lt;br /&gt;
 [af_cristall_flower_mini_absorbation]&lt;br /&gt;
 burn_immunity 			= 0&lt;br /&gt;
 strike_immunity 		= 0&lt;br /&gt;
 shock_immunity 		= 0&lt;br /&gt;
 wound_immunity 		= 0&lt;br /&gt;
 radiation_immunity 		= 0&lt;br /&gt;
 telepatic_immunity 		= 0.01&lt;br /&gt;
 chemical_burn_immunity 	= 0&lt;br /&gt;
 explosion_immunity 		= 0&lt;br /&gt;
 fire_wound_immunity  		= 0&amp;lt;/ini&amp;gt;&lt;br /&gt;
&lt;br /&gt;
А не вот так:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;ini&amp;gt;[af_cristall_flower_mini]:af_cristall_flower&lt;br /&gt;
 $spawn				= &amp;quot;artefacts\my_addon_af_cristall_flower_mini&amp;quot;&lt;br /&gt;
 inv_weight			= 0.4&lt;br /&gt;
 &lt;br /&gt;
 cost				= 2500&lt;br /&gt;
 &lt;br /&gt;
 radiation_restore_speed		= 0.006&lt;br /&gt;
 hit_absorbation_sect		= af_cristall_flower_mini_absorbation&lt;br /&gt;
 &lt;br /&gt;
 [af_cristall_flower_mini_absorbation]&lt;br /&gt;
 telepatic_immunity 		= 0.01&amp;lt;/ini&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Во втором случае при спавне артефакта игра вылетит с ошибкой типа не найден '''burn_immunity''' в '''af_cristall_flower_mini_absorbation''' тоесть af_cristall_flower_mini_absorbation должен содержать все иммунитеты даже если их значение ноль.&lt;br /&gt;
&lt;br /&gt;
Хотя впринципе можно создать в файле секцию:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;ini&amp;gt;[af_bla_bla_bla_absorbation]&lt;br /&gt;
 burn_immunity 			= 0&lt;br /&gt;
 strike_immunity 		= 0&lt;br /&gt;
 shock_immunity 		= 0&lt;br /&gt;
 wound_immunity 		= 0&lt;br /&gt;
 radiation_immunity 		= 0&lt;br /&gt;
 telepatic_immunity 		= 0&lt;br /&gt;
 chemical_burn_immunity 	= 0&lt;br /&gt;
 explosion_immunity 		= 0&lt;br /&gt;
 fire_wound_immunity  		= 0&amp;lt;/ini&amp;gt;&lt;br /&gt;
&lt;br /&gt;
А все следующие иммунитеты писать вот так:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ini&amp;gt; [af_cristall_flower_mini]:af_cristall_flower&lt;br /&gt;
 $spawn				= &amp;quot;artefacts\my_addon_af_cristall_flower_mini&amp;quot;&lt;br /&gt;
 inv_weight			= 0.4&lt;br /&gt;
 &lt;br /&gt;
 cost				= 2500&lt;br /&gt;
 &lt;br /&gt;
 radiation_restore_speed		= 0.006&lt;br /&gt;
 hit_absorbation_sect		= af_cristall_flower_mini_absorbation&lt;br /&gt;
 &lt;br /&gt;
 [af_cristall_flower_mini_absorbation]:af_bla_bla_bla_absorbation&lt;br /&gt;
 telepatic_immunity 		= 0.01&amp;lt;/ini&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Не пробовал, но должно работать =)&lt;br /&gt;
&lt;br /&gt;
В итоге если создать для каждого артефакта 3 можно и больше дублей и добавить их все в аномалии и торговлю то сложится впечатление что каждый конкретный артефакт может быть разным.&lt;br /&gt;
&lt;br /&gt;
--[[Участник:Rekongstor|Rekongstor]] 11:30, 13 января 2011 (UTC)&lt;br /&gt;
Я смотрю на &lt;br /&gt;
это и предлагаю сделать кое-что. Ведь есть возможность записи в консоль параметров и в итоге можно сделать для каждого артефакта свой разброс параметров. &lt;br /&gt;
&lt;br /&gt;
--[[Участник:WincentDark69|WincentDark69]] Можно сделать и разброс, но. К примеру мы используем: '''Стоимость, Восстановление здоровья, Насышение организма радиацией, Вес.''' Во первых я не вкурсе как сделать расброс веса. Во вторых если даже прописать расброс цен от 5000 до 25000 то, где при этом будем влияние получившегося артефакта на стоимость (может получится что то типа &amp;quot;суперский арт (Медузу) торговец купит за 5361 а за совершенно бесполезный арт (&amp;quot;Медузу&amp;quot;) предложит 23787&amp;quot; к примеру)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Автор: [[Участник:WincentDark69|WincentDark69]]&lt;br /&gt;
&lt;br /&gt;
[[Категория:Конфигурационные_файлы]]&lt;/div&gt;</summary>
		<author><name>91.218.192.254</name></author>	</entry>

	<entry>
		<id>http://stalkerin.gameru.net/wiki/index.php?title=CoP:_%D0%94%D0%B5%D0%BB%D0%B0%D0%B5%D0%BC_%D0%BD%D0%BE%D1%80%D0%BC%D0%B0%D0%BB%D1%8C%D0%BD%D1%8B%D0%B5_%D0%BC%D0%B5%D0%B4%D0%B8%D0%BA%D0%B0%D0%BC%D0%B5%D0%BD%D1%82%D1%8B.</id>
		<title>CoP: Делаем нормальные медикаменты.</title>
		<link rel="alternate" type="text/html" href="http://stalkerin.gameru.net/wiki/index.php?title=CoP:_%D0%94%D0%B5%D0%BB%D0%B0%D0%B5%D0%BC_%D0%BD%D0%BE%D1%80%D0%BC%D0%B0%D0%BB%D1%8C%D0%BD%D1%8B%D0%B5_%D0%BC%D0%B5%D0%B4%D0%B8%D0%BA%D0%B0%D0%BC%D0%B5%D0%BD%D1%82%D1%8B."/>
				<updated>2013-07-27T07:33:45Z</updated>
		
		<summary type="html">&lt;p&gt;91.218.192.254: оформление&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Данная мини-статья расскажет вам о том как внести в игру более правильные в плане воздействия медикаменты.&lt;br /&gt;
&lt;br /&gt;
Я полагаю многие играя в компьютерные игры задумались что аптечка''(к примеру)'' на самом деле не должна лечить мгновенно''(ну или почти мгновенно, как это сделано в '''STALKER''')''. Это то мы и исправим, ну и заодно рассмотрим полный список эффектов.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Итак поехали:'''&lt;br /&gt;
&lt;br /&gt;
Возьмем кусок описания обычной аптечки:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;ini&amp;gt;[medkit]:booster&lt;br /&gt;
 $spawn 		= &amp;quot;food and drugs\medkit&amp;quot;&lt;br /&gt;
 visual			= dynamics\devices\dev_aptechka\dev_aptechka_low.ogf&lt;br /&gt;
 inv_name		= st_medkit&lt;br /&gt;
 inv_name_short		= st_medkit&lt;br /&gt;
 description		= st_medkit_descr&lt;br /&gt;
 inv_weight		= 0.1&lt;br /&gt;
 &lt;br /&gt;
 inv_grid_width		= 1&lt;br /&gt;
 inv_grid_height	= 1&lt;br /&gt;
 inv_grid_x		= 6&lt;br /&gt;
 inv_grid_y		= 14&lt;br /&gt;
 cost			= 250&lt;br /&gt;
 &lt;br /&gt;
 boost_time			= 10.0&lt;br /&gt;
 boost_health_restore		= 0.01&lt;br /&gt;
 boost_radiation_restore	= 0.0&lt;br /&gt;
 boost_bleeding_restore		= 0.005&lt;br /&gt;
 &lt;br /&gt;
 use_sound			= interface\inv_medkit&amp;lt;/ini&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В самом верху мы видим:&lt;br /&gt;
&lt;br /&gt;
 [medkit]:booster = системное имя:системное имя предмета из которого будут браться недостающие строки конфига&lt;br /&gt;
&lt;br /&gt;
Рассмотрим секцию '''&amp;quot;booster&amp;quot;''' она по сути содержит пустые конфиги. Прокоментирую основное(параметры которые могут пригодиться).&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;ini&amp;gt;[booster]:identity_immunities&lt;br /&gt;
 GroupControlSection	= spawn_group&lt;br /&gt;
 discovery_dependency =&lt;br /&gt;
 ;$spawn 				= &amp;quot;food and drugs\booster&amp;quot;&lt;br /&gt;
 $prefetch 			= 8&lt;br /&gt;
 class				= S_FOOD&lt;br /&gt;
 cform				= skeleton&lt;br /&gt;
 visual				= dynamics\devices\dev_aptechka\dev_aptechka_low.ogf ; Ссылка на визуал в &amp;quot;stalker\gamedata\meshes&amp;quot;&lt;br /&gt;
 description			= default ; Ссылка на описание предмета &amp;quot;gamedata\configs\text\rus&amp;quot;&lt;br /&gt;
 inv_name			= default ; Ссылка на имя предмета'''(Аптечка автомобильная)''' &amp;quot;gamedata\configs\text\rus&amp;quot;&lt;br /&gt;
 inv_name_short			= default ; Ссылка на короткое имя предмета'''(Апт.Авт.)''' &amp;quot;gamedata\configs\text\rus&amp;quot;&lt;br /&gt;
 inv_weight			= 0.01 ; Вес предмета&lt;br /&gt;
 &lt;br /&gt;
 inv_grid_width		= 1&lt;br /&gt;
 inv_grid_height		= 1&lt;br /&gt;
 inv_grid_x			= 3&lt;br /&gt;
 inv_grid_y			= 18&lt;br /&gt;
 cost				= 1 ; Стандартная стоимость(конечная зависит от отношения торговца)&lt;br /&gt;
 &lt;br /&gt;
 ; eatable item&lt;br /&gt;
 eat_health			= 0 ; Мгновенно даёт определенное количествово здоровья '''1 = 100%'''&lt;br /&gt;
 eat_satiety			= 0 ; Мгновенное насыщение '''1 = 100%'''&lt;br /&gt;
 eat_power			= 0 ; Мгновенное восстановление силы '''1 = 100%'''&lt;br /&gt;
 eat_max_power		= 0 ; Мгновенное увеличение максимальной силы '''1 = 100%'''(Вроде как...)&lt;br /&gt;
 eat_radiation		= 0 ; Мгновенное увеличение или уменьшение облученности '''(1 увеличение)(-1 уменьшение)'''&lt;br /&gt;
 eat_alcohol			= 0 ; Мгновенное увеличение или уменьшение уровня опьянения '''(1 увеличение)(-1 уменьшение)'''&lt;br /&gt;
 wounds_heal_perc	= 0 ; я так понял что это скорость затягивания ран, но не уверен...&lt;br /&gt;
 eat_portions_num	= 1 ; Интересный параметр... Количество порций в упаковке (проверена работоспособность от 1 до 99999)&lt;br /&gt;
 &lt;br /&gt;
 boost_time			= 0.0 ; Время действия(распостраняется только на параметры '''boost_*'''&lt;br /&gt;
 boost_max_weight		= 0.0 ; Увеличение переносимого веса. Уменьшение не работает, как видимо на всех '''boost_*''' =(&lt;br /&gt;
 boost_health_restore		= 0.0 ; Увеличение скорости восстановления здаровья&lt;br /&gt;
 boost_power_restore		= 0.0 ; Увеличение скорости восстановления силы&lt;br /&gt;
 boost_radiation_restore	= 0.0 ; Увеличение скорости вывода радиации&lt;br /&gt;
 boost_bleeding_restore		= 0.0 ; Увеличение скорости заживления ран&lt;br /&gt;
 &lt;br /&gt;
 ;'''protection''' Снижают количество получаемого ХИТА&lt;br /&gt;
 boost_radiation_protection	= 0.0 ; Увеличение защиты от радиации&lt;br /&gt;
 boost_telepat_protection 	= 0.0 ; Увеличение защиты от телепатического воздействия(от контролеров не спасает)&lt;br /&gt;
 boost_chemburn_protection 	= 0.0 ; Увеличение защиты от химических повреждений&lt;br /&gt;
 &lt;br /&gt;
 ;'''immunity''' Увеличивают минимальный уровень воздействия для получения ХИТА&lt;br /&gt;
 boost_burn_immunity		= 0.0 ; Увеличение имунитета к огню&lt;br /&gt;
 boost_shock_immunity		= 0.0 ; Увеличение имунитета к электрическому току&lt;br /&gt;
 boost_radiation_immunity	= 0.0 ; Увеличение имунитета к радиации&lt;br /&gt;
 boost_telepat_immunity		= 0.0 ; Увеличение имунитета к пси воздействию&lt;br /&gt;
 boost_chemburn_immunity 	= 0.0 ; Увеличение имунитета к химическим воздействиям&lt;br /&gt;
 boost_strike_immunity		= 0.0 ; Увеличение имунитета к выстрелам&lt;br /&gt;
 boost_wound_immunity		= 0.0 ; Увеличение имунитета к ударам&lt;br /&gt;
 boost_explosion_immunity	= 0.0 ; Увеличение имунитета к взрывам&lt;br /&gt;
 boost_fire_wound_immunity	= 0.0 ; Увеличение имунитета к взрывной волне&lt;br /&gt;
 ;use_sound			= characters_voice\multiplayer\team_1\voice_roger_3 ; Звук &amp;quot;gamedata\sounds&amp;quot;&amp;lt;/ini&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Теория пройдена!!!'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Практика'''&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;ini&amp;gt;[medkit]:booster '''; НЕ ТРОГАЕМ!!!'''&lt;br /&gt;
 $spawn 		= &amp;quot;food and drugs\medkit&amp;quot; '''; НЕ ТРОГАЕМ!!!'''&lt;br /&gt;
 visual			= dynamics\devices\dev_aptechka\dev_aptechka_low.ogf '''; НЕ ТРОГАЕМ!!!'''&lt;br /&gt;
 inv_name		= st_medkit '''; НЕ ТРОГАЕМ!!!'''&lt;br /&gt;
 inv_name_short		= st_medkit '''; НЕ ТРОГАЕМ!!!'''&lt;br /&gt;
 description		= st_medkit_descr '''; НЕ ТРОГАЕМ!!!'''&lt;br /&gt;
 inv_weight		= 0.1 '''; По желанию'''&lt;br /&gt;
 &lt;br /&gt;
 inv_grid_width		= 1 '''; НЕ ТРОГАЕМ!!!'''&lt;br /&gt;
 inv_grid_height	= 1 '''; НЕ ТРОГАЕМ!!!'''&lt;br /&gt;
 inv_grid_x		= 6 '''; НЕ ТРОГАЕМ!!!'''&lt;br /&gt;
 inv_grid_y		= 14 '''; НЕ ТРОГАЕМ!!!'''&lt;br /&gt;
 cost			= 250 '''; По желанию'''&lt;br /&gt;
 &lt;br /&gt;
 boost_time			= 60.0 '''; Меняем с 10.0 на 60.0'''&lt;br /&gt;
 boost_health_restore		= 0.002 '''; Меняем с 0.01 на 0.002'''&lt;br /&gt;
 boost_radiation_restore	= 0.0 '''; По желанию'''&lt;br /&gt;
 boost_bleeding_restore		= 0.0 '''; По желанию'''&lt;br /&gt;
 &lt;br /&gt;
 use_sound			= interface\inv_medkit '''; НЕ ТРОГАЕМ!!!'''&amp;lt;/ini&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Итак, мы получили аптечку которая лечит медленно но на протяжение 60 секунд(По сравнению с оригиналом это хоть как то похоже на правду)&lt;br /&gt;
&lt;br /&gt;
Таким же образом можно отредактировать и остальные препараты. Антирад например.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;ini&amp;gt;[antirad]:booster&lt;br /&gt;
 $spawn 				= &amp;quot;food and drugs\antirad&amp;quot;&lt;br /&gt;
 visual				= dynamics\devices\dev_antirad\dev_antirad.ogf&lt;br /&gt;
 inv_name			= st_antirad&lt;br /&gt;
 inv_name_short		= st_antirad&lt;br /&gt;
 description			= st_antirad_descr&lt;br /&gt;
 inv_weight			= 0.01&lt;br /&gt;
 &lt;br /&gt;
 inv_grid_width		= 1&lt;br /&gt;
 inv_grid_height		= 1&lt;br /&gt;
 inv_grid_x			= 18&lt;br /&gt;
 inv_grid_y			= 12&lt;br /&gt;
 cost				= 750&lt;br /&gt;
  &lt;br /&gt;
 boost_time			= 60.0&lt;br /&gt;
 boost_radiation_restore	= 0.01&lt;br /&gt;
 eat_alcohol			= 0.3&lt;br /&gt;
 &lt;br /&gt;
 use_sound			= interface\inv_pills&amp;lt;/ini&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Я полагаю что опьянение здесь в тему так как вещества такого типа считаются наркотическими.&lt;br /&gt;
&lt;br /&gt;
А зная о ранее неиспользуемых эфектах можно создавать новые, тот же к примеру &amp;quot;Анти-похмелин&amp;quot;. В пачке которого будет 10 таблеток:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;ini&amp;gt;[drug_analgin]:booster&lt;br /&gt;
 $spawn 				= &amp;quot;food and drugs\drug_analgin&amp;quot;&lt;br /&gt;
 visual				= dynamics\equipments\medical\drug_coagulant.ogf&lt;br /&gt;
 inv_name			= st_drug_analgin&lt;br /&gt;
 inv_name_short		= st_drug_analgin&lt;br /&gt;
 description			= st_drug_analgin_descr&lt;br /&gt;
 inv_weight			= 0.01&lt;br /&gt;
 &lt;br /&gt;
 inv_grid_width		= 1&lt;br /&gt;
 inv_grid_height		= 1&lt;br /&gt;
 inv_grid_x			= 19&lt;br /&gt;
 inv_grid_y			= 4&lt;br /&gt;
 cost				= 350&lt;br /&gt;
 &lt;br /&gt;
 boost_time				= 5.0&lt;br /&gt;
 eat_alcohol		= -0.1&lt;br /&gt;
 eat_portions_num	= 10&lt;br /&gt;
 &lt;br /&gt;
 use_sound			= interface\inv_pills&amp;lt;/ini&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Каждая таблетка при такой конфигурации будет снимать 10% опьянения.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Автор: [[Участник:WincentDark69|WincentDark69]]&lt;br /&gt;
&lt;br /&gt;
[[Категория:Конфигурационные_файлы]]&lt;/div&gt;</summary>
		<author><name>91.218.192.254</name></author>	</entry>

	<entry>
		<id>http://stalkerin.gameru.net/wiki/index.php?title=SoC._%D0%A0%D0%B0%D0%B1%D0%BE%D1%82%D0%B0_%D0%B2_offline_%D0%B8_online</id>
		<title>SoC. Работа в offline и online</title>
		<link rel="alternate" type="text/html" href="http://stalkerin.gameru.net/wiki/index.php?title=SoC._%D0%A0%D0%B0%D0%B1%D0%BE%D1%82%D0%B0_%D0%B2_offline_%D0%B8_online"/>
				<updated>2013-07-27T07:26:37Z</updated>
		
		<summary type="html">&lt;p&gt;91.218.192.254: оформление&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;В игре наверняка вы встречали такое - при получении какого-то задания или диалога появляются новые НПС или прочие ФПС. Пример в этой статье мы будем рассматривать на Ростке. Итак, нам понадобятся файлы '''info_l07rostok.xml''', '''all.spawn''' и программа '''ACDC'''.&lt;br /&gt;
&lt;br /&gt;
===Начало===&lt;br /&gt;
Начнем! Распакуем '''all.spawn''' и откроем файл '''alife_l06_rostok.ltx'''. В нём найдём такие строчки:&lt;br /&gt;
&amp;lt;ini&amp;gt;&lt;br /&gt;
[3851]&lt;br /&gt;
; cse_abstract properties&lt;br /&gt;
section_name = stalker&lt;br /&gt;
name = bar_freedom_attacker_1&lt;br /&gt;
position = -214.942504882813,-2.09808349609375e-005,164.513900756836&lt;br /&gt;
direction = 0,0,0&lt;br /&gt;
&lt;br /&gt;
; cse_alife_trader_abstract properties&lt;br /&gt;
money = 5000&lt;br /&gt;
character_profile = bar_Killer_regular&lt;br /&gt;
&lt;br /&gt;
; cse_alife_object properties&lt;br /&gt;
game_vertex_id = 1335&lt;br /&gt;
distance = 6.29999971389771&lt;br /&gt;
level_vertex_id = 23441&lt;br /&gt;
object_flags = 0xffffffff&lt;br /&gt;
custom_data = &amp;lt;&amp;lt;END&lt;br /&gt;
[spawner]&lt;br /&gt;
cond = {+bar_heli_scene_stay_online}&lt;br /&gt;
&lt;br /&gt;
[smart_terrains]&lt;br /&gt;
bar_freedom_attack = true&lt;br /&gt;
END&lt;br /&gt;
&lt;br /&gt;
; cse_visual properties&lt;br /&gt;
visual_name = actors\killer\stalker_ki_mask&lt;br /&gt;
&lt;br /&gt;
; cse_alife_creature_abstract properties&lt;br /&gt;
g_team = 0&lt;br /&gt;
g_squad = 5&lt;br /&gt;
g_group = 7&lt;br /&gt;
health = 1&lt;br /&gt;
dynamic_out_restrictions = &lt;br /&gt;
dynamic_in_restrictions = &lt;br /&gt;
&lt;br /&gt;
upd:health = 1&lt;br /&gt;
upd:timestamp = 0&lt;br /&gt;
upd:creature_flags = 0&lt;br /&gt;
upd:position = -214.942504882813,-2.09808349609375e-005,164.513900756836&lt;br /&gt;
upd:o_model = 0&lt;br /&gt;
upd:o_torso = 0,0,0&lt;br /&gt;
upd:g_team = 0&lt;br /&gt;
upd:g_squad = 5&lt;br /&gt;
upd:g_group = 7&lt;br /&gt;
&lt;br /&gt;
; cse_alife_monster_abstract properties&lt;br /&gt;
&lt;br /&gt;
upd:next_game_vertex_id = 65535&lt;br /&gt;
upd:prev_game_vertex_id = 65535&lt;br /&gt;
upd:distance_from_point = 0&lt;br /&gt;
upd:distance_to_point = 0&lt;br /&gt;
&lt;br /&gt;
; cse_alife_human_abstract properties&lt;br /&gt;
predicate5 = 0,1,2,0,2&lt;br /&gt;
predicate4 = 0,1,1,0&lt;br /&gt;
&lt;br /&gt;
; cse_ph_skeleton properties&lt;br /&gt;
&lt;br /&gt;
upd:start_dialog = &lt;br /&gt;
&lt;br /&gt;
; se_stalker properties&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В этой писанине нам нужно только это:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[spawner]&lt;br /&gt;
cond = {+bar_heli_scene_stay_online}&lt;br /&gt;
&amp;lt;/ini&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Это переход НПС в онлайн при выдаче инфопоршня. Чтбы убедится в этом найдём его в '''info_l07rostok.xml'''.&lt;br /&gt;
Убедились? Отлично! Двигаемся дальше. Вместо знака '''+''' вы можете поставить знак '''-'''. Значит при этом инфопоршне НПС уйдет в оффлайн. &lt;br /&gt;
&lt;br /&gt;
Можно менять эти инфопоршны на любые другие, в том числе свои. Теперь поменяем его к примеру на ''bar_kruglov_follow_tunnel''. В итоге:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[spawner]&lt;br /&gt;
cond = {+bar_kruglov_follow_tunnel}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Этот НПС (или несколько неписей) буду рождаться, когда вы пройдете через туннель, где наёмники-снайперы. Все инфопоршны брать из файла, соответствующего локации. Вы можете сделать свой квест и применить инфопоршы к этому делу. &lt;br /&gt;
&lt;br /&gt;
===P.S.===&lt;br /&gt;
Теперь сделаем, чтобы всё до конца работало. Найдём смарт_террейн, в котором прописан ''+bar_heli_scene_stay_online''. И допишем туда свой.&lt;br /&gt;
&amp;lt;ini&amp;gt;&lt;br /&gt;
[3857]&lt;br /&gt;
; cse_abstract properties&lt;br /&gt;
section_name = smart_terrain&lt;br /&gt;
name = bar_ecolog_crush&lt;br /&gt;
position = -294.061706542969,7.43865966796875e-005,140.005218505859&lt;br /&gt;
direction = 1.01860559880151e-005,-7.54995954643789e-010,7.41205367376097e-005&lt;br /&gt;
&lt;br /&gt;
; cse_alife_object properties&lt;br /&gt;
game_vertex_id = 1350&lt;br /&gt;
distance = 2.79999995231628&lt;br /&gt;
level_vertex_id = 100&lt;br /&gt;
object_flags = 0xffffffbe&lt;br /&gt;
custom_data = &amp;lt;&amp;lt;END&lt;br /&gt;
[smart_terrain]&lt;br /&gt;
type = bar_ecolog_crush&lt;br /&gt;
capacity = 5&lt;br /&gt;
squad = 5&lt;br /&gt;
groups = 1,2&lt;br /&gt;
cond = {+bar_heli_scene_stay_online},{+bar_kruglov_follow_tunnel}&lt;br /&gt;
END&lt;br /&gt;
&lt;br /&gt;
; cse_shape properties&lt;br /&gt;
shapes = shape0&lt;br /&gt;
shape0:type = sphere&lt;br /&gt;
shape0:offset = 0,0,0&lt;br /&gt;
shape0:radius = 2.66736793518066&lt;br /&gt;
&lt;br /&gt;
; cse_alife_space_restrictor properties&lt;br /&gt;
restrictor_type = 0&lt;br /&gt;
&lt;br /&gt;
; se_smart_terrain properties&lt;br /&gt;
&amp;lt;/ini&amp;gt;&lt;br /&gt;
Вот он.  Вот и всё!&lt;br /&gt;
&lt;br /&gt;
===См. также===&lt;br /&gt;
Мою статью &amp;quot;[[Работа с ACDC]]&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
[[Категория:Скрипты]]&lt;/div&gt;</summary>
		<author><name>91.218.192.254</name></author>	</entry>

	<entry>
		<id>http://stalkerin.gameru.net/wiki/index.php?title=%D0%92%D1%8B%D0%B2%D0%BE%D0%B4_%D1%81%D0%BE%D0%BE%D0%B1%D1%89%D0%B5%D0%BD%D0%B8%D1%8F_%D0%BE_%D0%BC%D0%B0%D0%BB%D0%B5%D0%BD%D1%8C%D0%BA%D0%BE%D0%BC_%D0%BA%D0%BE%D0%BB-%D0%B2%D0%B5_%D0%BE%D1%81%D1%82%D0%B0%D0%B2%D1%88%D0%B5%D0%B3%D0%BE%D1%81%D1%8F_%D0%A5%D0%9F</id>
		<title>Вывод сообщения о маленьком кол-ве оставшегося ХП</title>
		<link rel="alternate" type="text/html" href="http://stalkerin.gameru.net/wiki/index.php?title=%D0%92%D1%8B%D0%B2%D0%BE%D0%B4_%D1%81%D0%BE%D0%BE%D0%B1%D1%89%D0%B5%D0%BD%D0%B8%D1%8F_%D0%BE_%D0%BC%D0%B0%D0%BB%D0%B5%D0%BD%D1%8C%D0%BA%D0%BE%D0%BC_%D0%BA%D0%BE%D0%BB-%D0%B2%D0%B5_%D0%BE%D1%81%D1%82%D0%B0%D0%B2%D1%88%D0%B5%D0%B3%D0%BE%D1%81%D1%8F_%D0%A5%D0%9F"/>
				<updated>2013-07-27T07:24:32Z</updated>
		
		<summary type="html">&lt;p&gt;91.218.192.254: оформление&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Нужны файлы: &lt;br /&gt;
&lt;br /&gt;
'''gamedata/scripts/bind_stalker.script''' &lt;br /&gt;
'''config/ui/ui_custom_msgs.xml''' &lt;br /&gt;
'''config/text/rus/string_table_ui.xml''' &lt;br /&gt;
&lt;br /&gt;
Как делается? &lt;br /&gt;
&lt;br /&gt;
Для начала давайте сделаем проверку на хп.Добавляем в '''bind_stalker.script''' вот эти строки после вывода о сообщение про радиацию:&lt;br /&gt;
&amp;lt;lua&amp;gt;if self.object.health &amp;lt;= 0.3 then &lt;br /&gt;
local hud = get_hud() &lt;br /&gt;
local custom_static = hud:GetCustomStatic(&amp;quot;cs_health_danger&amp;quot;) &lt;br /&gt;
if custom_static == nil then &lt;br /&gt;
hud:AddCustomStatic(&amp;quot;cs_health_danger&amp;quot;, true) &lt;br /&gt;
hud:GetCustomStatic(&amp;quot;cs_health_danger&amp;quot;):wnd():SetTextST(&amp;quot;st_health_danger&amp;quot;)&lt;br /&gt;
end &lt;br /&gt;
else &lt;br /&gt;
local hud = get_hud() &lt;br /&gt;
local custom_static = hud:GetCustomStatic(&amp;quot;cs_health_danger&amp;quot;) &lt;br /&gt;
if custom_static ~= nil then &lt;br /&gt;
hud:RemoveCustomStatic(&amp;quot;cs_health_danger&amp;quot;) &lt;br /&gt;
end &lt;br /&gt;
end&amp;lt;/lua&amp;gt; &lt;br /&gt;
Где:'''if self.object.health &amp;lt;= 0.3''' then под числовым значением подразумевается кол-во хп.При котором сообщение будет показываться &lt;br /&gt;
Теперь в '''config/ui/ui_custom_msgs.xml''' будем добавлять это сообщение на худ &lt;br /&gt;
Ниже строки ''&amp;lt;/cs_radiation_danger&amp;gt;'': &lt;br /&gt;
&lt;br /&gt;
&amp;lt;xml&amp;gt;&amp;lt;cs_health_danger x=&amp;quot;200&amp;quot; y=&amp;quot;120&amp;quot; width=&amp;quot;600&amp;quot; height=&amp;quot;50&amp;quot; complex_mode=&amp;quot;1&amp;quot;&amp;gt; &lt;br /&gt;
&amp;lt;text font=&amp;quot;graffiti22&amp;quot; r=&amp;quot;240&amp;quot; g=&amp;quot;217&amp;quot; b=&amp;quot;182&amp;quot; a=&amp;quot;255&amp;quot; align=&amp;quot;c&amp;quot;/&amp;gt; &lt;br /&gt;
&amp;lt;/cs_health_danger&amp;gt; &amp;lt;/xml&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Итак.Теперь можно потестировать.Когда у вас будет очень мало хп будет сообщение.Но так как нет текста будет что-то типо '''st_health_danger'''.Так что давайте добавим его &lt;br /&gt;
Лезем в '''config/text/rus/string_table_ui.xml''' и добавляем где угодно вот такую строку: &lt;br /&gt;
&amp;lt;xml&amp;gt;&amp;lt;string id=&amp;quot;st_health_danger&amp;quot;&amp;gt; &lt;br /&gt;
&amp;lt;text&amp;gt;Критический уровень здоровья!Примите аптечку!&amp;lt;/text&amp;gt; &lt;br /&gt;
&amp;lt;/string&amp;gt; &amp;lt;/xml&amp;gt;&lt;br /&gt;
Вот и все!Теперь при маленьком кол-ве здоровья будет выводиться сообщение об том что вам необходимо принять аптечку&lt;br /&gt;
&lt;br /&gt;
Создатель скрипта:Fireman3000&lt;br /&gt;
&lt;br /&gt;
[[Категория:Скрипты]]&lt;/div&gt;</summary>
		<author><name>91.218.192.254</name></author>	</entry>

	<entry>
		<id>http://stalkerin.gameru.net/wiki/index.php?title=SoC._%D0%9E%D1%82%D0%BA%D0%BB%D1%8E%D1%87%D0%B5%D0%BD%D0%B8%D0%B5_%D1%82%D0%B0%D0%B9%D0%BC%D0%B5%D1%80%D0%B0_%D0%B8_%D0%B2%D1%8B%D0%B1%D1%80%D0%BE%D1%81%D0%B0_%D0%BD%D0%B0_%D0%A7%D0%90%D0%AD%D0%A1</id>
		<title>SoC. Отключение таймера и выброса на ЧАЭС</title>
		<link rel="alternate" type="text/html" href="http://stalkerin.gameru.net/wiki/index.php?title=SoC._%D0%9E%D1%82%D0%BA%D0%BB%D1%8E%D1%87%D0%B5%D0%BD%D0%B8%D0%B5_%D1%82%D0%B0%D0%B9%D0%BC%D0%B5%D1%80%D0%B0_%D0%B8_%D0%B2%D1%8B%D0%B1%D1%80%D0%BE%D1%81%D0%B0_%D0%BD%D0%B0_%D0%A7%D0%90%D0%AD%D0%A1"/>
				<updated>2013-07-27T07:22:26Z</updated>
		
		<summary type="html">&lt;p&gt;91.218.192.254: оформление, орфография&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Навестим скрипты и инфопоршни! ==&lt;br /&gt;
В '''sr_timer.script''' и '''sr_aes_deadzone.script''' в начале каждой из функций напишите:&lt;br /&gt;
&amp;lt;code&amp;gt;if has_alife_info(&amp;quot;deadzone&amp;quot;) then&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В '''xr_effects.script''', в функции ''aes_earthshake'', в начале пишем:&lt;br /&gt;
&amp;lt;code&amp;gt;if has_alife_info(&amp;quot;deadzone&amp;quot;) then&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Мы упоминалы некий инфопоршень, о нем игра не знает. Добавим его в игру.&lt;br /&gt;
&lt;br /&gt;
Откроем '''info_l19_stanciya.xml'''('''gamedata/config/gameplay'''). Допишем инфопоршень:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;info_portion id=&amp;quot;deadzone&amp;quot;&amp;gt;&amp;lt;/info_portion&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Активация! ==&lt;br /&gt;
Включить таймер и выброс:&lt;br /&gt;
&amp;lt;lua&amp;gt;&lt;br /&gt;
function start(actor, npc)&lt;br /&gt;
db.actor:give_info_portion(&amp;quot;deadzone&amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/lua&amp;gt;&lt;br /&gt;
Отключить:&lt;br /&gt;
&amp;lt;lua&amp;gt;&lt;br /&gt;
function stop(actor, npc)&lt;br /&gt;
db.actor:disable_info_portion(&amp;quot;deadzone&amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/lua&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Автор ==&lt;br /&gt;
[[Участник:vllzl]]&lt;br /&gt;
&lt;br /&gt;
[[Категория:Скрипты]]&lt;/div&gt;</summary>
		<author><name>91.218.192.254</name></author>	</entry>

	<entry>
		<id>http://stalkerin.gameru.net/wiki/index.php?title=SoC._%D0%97%D0%B2%D1%83%D0%BA%D0%BE%D0%B2%D0%B0%D1%8F_%D0%B4%D0%BE%D1%80%D0%BE%D0%B6%D0%BA%D0%B0</id>
		<title>SoC. Звуковая дорожка</title>
		<link rel="alternate" type="text/html" href="http://stalkerin.gameru.net/wiki/index.php?title=SoC._%D0%97%D0%B2%D1%83%D0%BA%D0%BE%D0%B2%D0%B0%D1%8F_%D0%B4%D0%BE%D1%80%D0%BE%D0%B6%D0%BA%D0%B0"/>
				<updated>2013-07-27T07:20:27Z</updated>
		
		<summary type="html">&lt;p&gt;91.218.192.254: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Привет всем!''' Предлагаю желающим повторить моё нововведение в СТАЛКЕРе.&lt;br /&gt;
&lt;br /&gt;
Возле Волка на Кордоне ('''А''') после согласия отбить Шустрого('''Б''') появляется приёмник «Горизонт» ('''В'''), исполняющий музыку, заранее сконвертированную Вами через СДК в .ogg и положенную в папку ''gamedata\sounds'' ('''Г'''). Наподобие матюгальника блокпоста, наш приёмник глохнет от меткого выстрела ГГ по нему ('''Д''').В других вариациях это может быть и рупор (там, где его сроду не было), да хоть даже поющий холодильник, если прописать предмету «patefon» соответствующий visual.&lt;br /&gt;
&lt;br /&gt;
'''А'''-&amp;gt;: создать '''moi_mod.script''':&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lua&amp;gt;&lt;br /&gt;
function spawn_patefon()&lt;br /&gt;
    local item = &amp;quot;patefon&amp;quot;&lt;br /&gt;
    alife():create(item,vector():set(-203.64045715332,-20.349802017212,-147.30645751953),49119,57)&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/lua&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Б'''-&amp;gt;: изменить '''escape_dialog.script''':&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lua&amp;gt;&lt;br /&gt;
function give_weapon_to_actor (trader, actor)&lt;br /&gt;
    dialogs.relocate_item_section(trader, &amp;quot;ammo_9x18_fmj&amp;quot;, &amp;quot;in&amp;quot;)&lt;br /&gt;
    dialogs.relocate_item_section(trader, &amp;quot;wpn_pm&amp;quot;, &amp;quot;in&amp;quot;)&lt;br /&gt;
    dialogs.relocate_item_section(trader, &amp;quot;wpn_knife&amp;quot;, &amp;quot;in&amp;quot;)&lt;br /&gt;
    moi_mod.spawn_patefon()&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/lua&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''В'''-&amp;gt;: создать новую секцию в ''config\misc\items.ltx'':&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ini&amp;gt;&lt;br /&gt;
[patefon]:identity_immunities&lt;br /&gt;
GroupControlSection     = spawn_group&lt;br /&gt;
discovery_dependency	= &lt;br /&gt;
$spawn			= &amp;quot;food and drugs\patefon&amp;quot;&lt;br /&gt;
cform                   = skeleton&lt;br /&gt;
class			= P_DSTRBL&lt;br /&gt;
visual                  = physics\decor\priemnik_gorizont.ogf&lt;br /&gt;
custom_data             = scripts\esc_patefon_data.ltx&lt;br /&gt;
attach_angle_offset     = -1.651084, -1.341824, 1.200789&lt;br /&gt;
attach_position_offset	= 0.077492, -0.030020, 0.090059&lt;br /&gt;
attach_bone_name	= bip01_l_hand&lt;br /&gt;
auto_attach		= false&lt;br /&gt;
remove_time		= 60&lt;br /&gt;
script_binding          = bind_physic_object.init&lt;br /&gt;
&amp;lt;/ini&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Г'''-&amp;gt;: создать в '''sound_theme.script''' по аналогии с существующими такую конструкцию:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lua&amp;gt;&lt;br /&gt;
ph_snd_themes[&amp;quot;muzon&amp;quot;] = {  &amp;quot;название_вашего_трека&amp;quot;,    -- в папке \sounds&lt;br /&gt;
	                    &amp;quot;название_вашего_трека2&amp;quot;,&lt;br /&gt;
	                    &amp;quot;название_вашего_трека3&amp;quot;    -- и так далее.. (последний - без запятой)&lt;br /&gt;
	                     }&lt;br /&gt;
&amp;lt;/lua&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Д'''-&amp;gt;: создать в ''config\scripts\'' файл '''esc_patefon_data.ltx''':&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ini&amp;gt;&lt;br /&gt;
[logic]&lt;br /&gt;
active = ph_sound@muzik&lt;br /&gt;
on_hit = hit&lt;br /&gt;
&lt;br /&gt;
[ph_sound@muzik]&lt;br /&gt;
snd = muzon&lt;br /&gt;
on_signal = sound_end|ph_idle@wait&lt;br /&gt;
on_info = {+esc_patefon_off} nil&lt;br /&gt;
&lt;br /&gt;
[ph_idle@wait]&lt;br /&gt;
on_timer = 5000| ph_sound@muzik&lt;br /&gt;
on_info = {+esc_patefon_off} nil&lt;br /&gt;
&lt;br /&gt;
[hit]&lt;br /&gt;
on_info = %+esc_patefon_off%&lt;br /&gt;
&amp;lt;/ini&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Не забудьте добавить в ''config\gameplay\info_l01escape.xml'' вот это:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;xml&amp;gt;&lt;br /&gt;
&amp;lt;info_portion id=&amp;quot;esc_patefon_off&amp;quot;&amp;gt;&amp;lt;/info_portion&amp;gt;&lt;br /&gt;
&amp;lt;/xml&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Вроде ничего не забыл, удачи всем, '''J_DLRN'''.&lt;br /&gt;
&lt;br /&gt;
[[Категория:Скрипты]]&lt;/div&gt;</summary>
		<author><name>91.218.192.254</name></author>	</entry>

	<entry>
		<id>http://stalkerin.gameru.net/wiki/index.php?title=SoC._%D0%90%D0%BD%D0%B8%D0%BC%D0%B0%D1%86%D0%B8%D0%B8_NPC</id>
		<title>SoC. Анимации NPC</title>
		<link rel="alternate" type="text/html" href="http://stalkerin.gameru.net/wiki/index.php?title=SoC._%D0%90%D0%BD%D0%B8%D0%BC%D0%B0%D1%86%D0%B8%D0%B8_NPC"/>
				<updated>2013-07-27T07:19:16Z</updated>
		
		<summary type="html">&lt;p&gt;91.218.192.254: оформление&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Недавно решил поэкспериментировать с анимками НПС,  и теперь выкладываю результаты моих опытов над &amp;quot;людьми&amp;quot;. Разумеется, опытные модмейкеры все это давно знают – поэтому материал предназначен для  новичков, которые еще не освоили как прописывать неписям разные прикольные анимки, а заодно и озвучку  через логику.  Все анимки взяты из файла state_lib. script.  Анимки, которые имеются в движке, но не вписаны в указанный файл, не рассматриваются. Это тема для отдельной статьи. Озвучка взята из файла sound_script (папка misc). Конечно, хотелось использовать и звуковые темы не вписанные в этот файл, но имеющиеся в папке sounds - но  с этим  еще надо разобраться.&lt;br /&gt;
&lt;br /&gt;
== Часть первая. ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Вся изложенная ниже схема является единым целым и ее можно ставить в ltx –ный  файл логики любому вашему НПС целиком. Она будет зациклена и  повторяться по кругу  если кое-где поставить другие варианты перехода от одной ремарки к другой.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ini&amp;gt;[logic]&lt;br /&gt;
active = remark@base &lt;br /&gt;
danger = danger_condition &lt;br /&gt;
meet = meet&lt;br /&gt;
&lt;br /&gt;
[remark@base]&lt;br /&gt;
anim = hello_wpn&lt;br /&gt;
no_move = true&lt;br /&gt;
target = actor&lt;br /&gt;
meet = meet&lt;br /&gt;
on_actor_dist_le = 2| remark@sit&lt;br /&gt;
&lt;br /&gt;
[meet] &lt;br /&gt;
meet_state = 10|salut@esc_bridge_soldiers| 5|salut_free@esc_lager_killer&lt;br /&gt;
meet_state_wpn = 10|ward@cit_base_guard_talk_to_actor2| 5|probe_2@gar_bandits_seryi&lt;br /&gt;
victim = 10|actor&lt;br /&gt;
victim_wpn = 10|actor&lt;br /&gt;
use = true&lt;br /&gt;
use_wpn = true&lt;br /&gt;
meet_dialog	= escape_lager_guard_start_dialog &amp;lt;/ini&amp;gt; &lt;br /&gt;
&lt;br /&gt;
В базовой ремарке мой чувак  использует анимку Волка - hello_wpn –  одной рукой машет ГГ, другой держит ствол.&lt;br /&gt;
Это начальная анимка, которая будет отрабатываться НПС, пока ГГ не подойдет на дистанцию встречи.&lt;br /&gt;
В секции meet задается схема реагирования НПС при подходе к нему эктора. &lt;br /&gt;
В строчке meet_state  – реакция при подходе безоружного ГГ. &lt;br /&gt;
На расстоянии 10 метров НПС отдает честь, затем встает в позицию «смирно» - руки по швам. &lt;br /&gt;
Это анимка '''salut'''. Ближе 5 метров – тоже самое, дальше переходит в позицию «вольно». &lt;br /&gt;
Это анимка '''salut_free.''' &lt;br /&gt;
В секции meet можно задавать и то, что НПС будет базарить при виде эктора.&lt;br /&gt;
В моей схеме: «чего стоишь сталкер, подходи, будем разговаривать» (esc_bridge_soldiers) отдавая салют, и на второй дистанции - «разбежались сосунки и т.д». (esc_lager_killer)&lt;br /&gt;
В строчке meet_state_wpn  - реакция НПС если эктор с пушкой в руках. У меня в этой схеме он встает в позу '''ward''' – руки за спиной, голова наклонена вниз. Словом поза тюремщика или надсмотрщика (ward примерно так и переводится).&lt;br /&gt;
В этой позе НПС на дистанции ближе 10 метров орет «повторяю для тупых - отошел к дальней стене камеры…» (cit_base_guard_talk_to_actor2), а если ГГ подойдет еще ближе -  «ты щас сдохнешь падла, понял…» (gar_bandits_seryi) и  еще несколько  рандомных фраз, которые заданы звуковой темой gar_bandits_seryi.&lt;br /&gt;
К начальной  анимке также можно добавлять любую  звуковую тему через строчку snd. В данной ремарке ее нет. &lt;br /&gt;
&lt;br /&gt;
Переходим к следующей схеме.&lt;br /&gt;
Так как все эти схему у меня завязаны вместе, то переход ко второй ремарке произойдет, когда ГГ подойдет к НПС на дистанцию ближе двух метров. Прописано этой в строчке &lt;br /&gt;
on_actor_dist_le = 2| remark@sit&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ini&amp;gt;[remark@sit]&lt;br /&gt;
anim = sit_ass&lt;br /&gt;
snd = mil_guard_to_max&lt;br /&gt;
no_move = true&lt;br /&gt;
target = actor&lt;br /&gt;
meet = no_meet&lt;br /&gt;
;on_actor_dist_le = 2| remark@raciya&lt;br /&gt;
;on_timer = 30000| remark@ raciya&lt;br /&gt;
on_signal = sound_end| remark@raciya&lt;br /&gt;
danger = danger_condition&amp;lt;/ini&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Итак, что делает НПС в этой ремарке. &lt;br /&gt;
Сидит на заднице  - '''sit_ass''', орет - mil_guard_to_max – «макс, у нас тут проблема на хуторе нарисовалась, собирай народ…»&lt;br /&gt;
В секции meet прописано отсутствие встречи, так как задано no_meet . Так что разговаривать с ГГ непись не будет. После отработки  заданной звуковой темы  идет переход к к ремарке remark@ raciya.&lt;br /&gt;
Сделано это через строчку on_signal = sound_end| remark@raciya. &lt;br /&gt;
Переведу: на сигнал «конец звуковой темы» переходим к схеме remark@raciya.&lt;br /&gt;
&lt;br /&gt;
Следующая схема. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;ini&amp;gt;[remark@raciya]&lt;br /&gt;
anim = choose &lt;br /&gt;
snd = bar_arena_public&lt;br /&gt;
no_move = true&lt;br /&gt;
target = actor&lt;br /&gt;
meet = meet@raciya&lt;br /&gt;
on_timer = 120000| remark@work&lt;br /&gt;
;on_actor_dist_ge = 35| remark@work&lt;br /&gt;
danger = danger_condition&lt;br /&gt;
&lt;br /&gt;
[meet@raciya]&lt;br /&gt;
meet_state = 7|binocular@val_escort_guards| 5|guard_rac@mil_pavlik_to_ara&lt;br /&gt;
meet_state_wpn = 7|hide_rac@mil_ara_ambush                                       &lt;br /&gt;
victim = 7|actor &lt;br /&gt;
victim_wpn = 7|actor &lt;br /&gt;
use = true &lt;br /&gt;
use_wpn = true &lt;br /&gt;
meet_dialog	= escape_lager_guard_start_dialog&amp;lt;/ini&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Анимка '''choose''' – ГГ что-то высматривает: оглядывается по сторонам, прикладывает руку ко лбу, так же как это делам мы, когда смотрим вдаль против солнца. &lt;br /&gt;
Звуковая тема – что то там из реплик на арене.&lt;br /&gt;
При встрече – смотрит в бинокль (если он у него есть) и издевательски базарит  - «скоро ты будешь работать обедом для мутантов» (в этой теме реплик несколько).&lt;br /&gt;
На 5 метрах достает рацию (если есть) - анимка '''guard_rac''' и базарит реплики из темы предателя Павлика на милитари  «все чисто можете подходить». &lt;br /&gt;
При  угрозе стволом -  анимка  '''hide_rac''' («сидит с рацией»), базар -  «это засада, уходим»&lt;br /&gt;
Через 120 секунд  - переход к следующей ремарке: on_timer = 120000| remark@work&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ini&amp;gt;[remark@work]&lt;br /&gt;
anim = caution&lt;br /&gt;
no_move = true&lt;br /&gt;
snd = mil_max_before_collect&lt;br /&gt;
target = actor&lt;br /&gt;
on_timer = 30000| remark@work2&lt;br /&gt;
meet = no_meet&lt;br /&gt;
danger = danger_condition&amp;lt;/ini&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Анимка '''caution''' – ГГ слегка согнувшись, что-то внимательно высматривает на земле, руки прикладывает к коленям. А затем радостно сообщает -  «ребята у нас появилась работа». Видимо, что-то высмотрел интересное.&lt;br /&gt;
Через 30 секунд -  снова переход.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ini&amp;gt;[remark@work2]&lt;br /&gt;
anim = search&lt;br /&gt;
no_move = true&lt;br /&gt;
snd = mil_collect_phrase3&lt;br /&gt;
target = actor&lt;br /&gt;
on_timer = 30000| remark@zombied&lt;br /&gt;
meet = no_meet&lt;br /&gt;
danger = danger_condition&amp;lt;/ini&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Анимка '''search'''  -   поиск, только более развернутый. ГГ встает на колени или на корточки и начинает что-то искать. Что он при этом произносит – узнаете, когда послушаете. &lt;br /&gt;
Через 30 секунд переход к схеме зомби.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ini&amp;gt;[remark@zombied]&lt;br /&gt;
anim = trans_zombied&lt;br /&gt;
snd = pri_followers_leader_phrase1_1&lt;br /&gt;
no_move = true&lt;br /&gt;
target = actor&lt;br /&gt;
on_timer = 60000| remark@wounded&lt;br /&gt;
meet = meet@zombied&lt;br /&gt;
danger = danger_condition&lt;br /&gt;
&lt;br /&gt;
[meet@zombied]&lt;br /&gt;
meet_state =  5|trans_0@hail&lt;br /&gt;
meet_state_wpn	= 5|trans_1@hail&lt;br /&gt;
victim		= 5|actor  &lt;br /&gt;
victim_wpn	= 5|actor&lt;br /&gt;
use			= true&lt;br /&gt;
use_wpn		= true&lt;br /&gt;
meet_dialog	= escape_lager_guard_start_dialog&amp;lt;/ini&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Анимка '''trans_zombied'''  -  падает на колени, головой двигает вверх-вниз.&lt;br /&gt;
'''trans_1''' - также стоит  на коленях, только головой вращает по кругу.&lt;br /&gt;
'''trans_0''' – то же самое, только более энергичней. Или наоборот - извиняюсь если перепутал.&lt;br /&gt;
&lt;br /&gt;
Схема &amp;quot;раненый&amp;quot;. Тут все понятно. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;ini&amp;gt;[remark@wounded]&lt;br /&gt;
anim = wounded_heavy_3&lt;br /&gt;
snd = help_heavy&lt;br /&gt;
target = actor&lt;br /&gt;
meet = no_meet&lt;br /&gt;
on_timer = 30000| remark@dinner&lt;br /&gt;
danger = danger_condition&amp;lt;/ini&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''wounded_heavy_3''' – это анимка тяжелораненого. (есть еще и другие анимки раненого).&lt;br /&gt;
Чувак скрючившись, грохнется на землю. Но на ней не остается,  а тут же встает и бежит в сторону в денжере. Что и понятно – здоровье то у него норм. Остальные неписи видевшие как чувак упал, так же срываются в денжере с места.&lt;br /&gt;
Ищут того, кто «стрелял». Не удивляйтесь, но так они запрограммированы. &lt;br /&gt;
&lt;br /&gt;
Схема обед. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;ini&amp;gt;[remark@dinner]&lt;br /&gt;
anim = sit_knee&lt;br /&gt;
no_move = true&lt;br /&gt;
target = actor&lt;br /&gt;
meet = meet@dinner&lt;br /&gt;
danger = danger_condition&lt;br /&gt;
on_actor_dist_ge = 15| remark@dynamite&lt;br /&gt;
&lt;br /&gt;
[meet@dinner]&lt;br /&gt;
meet_state	= 5|eat_bread@wait| 3|eat_energy@wait&lt;br /&gt;
meet_state_wpn	= 5|eat_kolbasa@wait| 3|eat_vodka@val_escort_dead&lt;br /&gt;
victim = 8|actor &lt;br /&gt;
victim_wpn = 8|actor &lt;br /&gt;
use = true &lt;br /&gt;
use_wpn = true &lt;br /&gt;
meet_dialog	= escape_lager_guard_start_dialog&amp;lt;/ini&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''sit_knee'''  - чувак сидит на заднице, опираясь на руку. &lt;br /&gt;
'''eat_bread, eat_kolbasa, eat_energy,  eat_vodka''' - тут я думаю ничего объяснять не надо. Чувак хавает и пьет. Пригубив водки, произносит – «пусть земля тебе будет пухом»&lt;br /&gt;
При отходе эктора на дистанцию больше 15 метров -  переход к схеме динамит.&lt;br /&gt;
Звуковая тема wait – это пауза, в которой непись ничего не говорит.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ini&amp;gt;[remark@dynamite]&lt;br /&gt;
anim = dynamite&lt;br /&gt;
no_move = true&lt;br /&gt;
target = actor&lt;br /&gt;
meet = no_meet&lt;br /&gt;
on_timer = 30000| remark@claim&lt;br /&gt;
danger = danger_condition&amp;lt;/ini&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''dynamite''' – закладка динамита. Как это выглядит – помните долговца на милитари у стены с динамитом? &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ini&amp;gt;[remark@claim]&lt;br /&gt;
anim = claim&lt;br /&gt;
snd = esc_wolf_thanks&lt;br /&gt;
target = actor&lt;br /&gt;
meet = meet@claim&lt;br /&gt;
danger = danger_condition&lt;br /&gt;
on_timer = 60000| remark@story&amp;lt;/ini&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Анимка '''claim''' -  НПС подзывает ГГ рукой.&lt;br /&gt;
snd = esc_wolf_thanks  -  здесь НПС произносит &lt;br /&gt;
фразу волка:  «меченый теперь тебе проход в лагерь открыт, подходи».&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ini&amp;gt;[meet@claim]&lt;br /&gt;
meet_state	= 7|refuse@mil_collect_phrase5| 5|probe_2@mil_collect_phrase6 &lt;br /&gt;
meet_state_wpn	= 7|backoff@gar_dm_bandit_demand          &lt;br /&gt;
victim		= 7|actor   &lt;br /&gt;
victim_wpn	= 7|actor&lt;br /&gt;
use			= true&lt;br /&gt;
use_wpn		= true&lt;br /&gt;
meet_dialog	= escape_lager_guard_start_dialog&amp;lt;/ini&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Анимка '''refuse'''   - непись  пожимает плечами и произносит mil_collect_phrase5  - «не срать». &lt;br /&gt;
'''probe_2''' -  судя по сопровождающим ее звукам (независимо от прописанной мной звуковой темы) – это анимка Круглова (его манипуляции с прибором, а может Сахарова - впрочем, это не важно). Если у вашего НПС будет в руках оружие  - то смотреться она будет куда интереснее, так как выглядит будто непись проверяет свой ствол, совершая массу интересных движений.&lt;br /&gt;
Фраза   mil_collect_phrase6 -  «опа – с нами новое мясо».&lt;br /&gt;
&lt;br /&gt;
'''backoff''' -  обычная анимка. Непись начинает  махать стволом в разные стороны – типа  убери ствол, меченый.  Фраза - gar_dm_bandit_demand -  «бабки артефакты гони», «ты че козел не врубаешься», «гони бабло или бошку отстрелим». Так как тема рандомная  (с окончанием  rnd в имени темы  в файле sound_script – то и фраз несколько)          &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ini&amp;gt;[remark@story]&lt;br /&gt;
anim = mode_shlem&lt;br /&gt;
no_move = true&lt;br /&gt;
target = actor&lt;br /&gt;
meet = meet@story&lt;br /&gt;
danger = danger_condition&lt;br /&gt;
on_actor_dist_ge = 30| %+passage_to_story_end%&lt;br /&gt;
on_info = {+passage_to_story_end} remark@story_end&lt;br /&gt;
&lt;br /&gt;
[meet@story]&lt;br /&gt;
meet_state	= 10|probe@wait| 5|probe_1@hail     &lt;br /&gt;
meet_state_wpn	= 10|probe_2@wait| 5|suicide@mil_crazy&lt;br /&gt;
victim = 10|actor &lt;br /&gt;
victim_wpn = 10|actor &lt;br /&gt;
use = true &lt;br /&gt;
use_wpn = true &lt;br /&gt;
meet_dialog	= escape_lager_guard_start_dialog&amp;lt;/ini&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''mode_shlem''' - анимка то ли Круглова, то ли Сахарова. Непись будет что то вертеть в руках. &lt;br /&gt;
'''probe_1''' – тоже  самое что и probe_2 , только здесь он плечами вроде бы не дергает. &lt;br /&gt;
'''suicide'''  -  самоубийство. Советую посмотреть – тем более с озвучкой mil_crazy.&lt;br /&gt;
'''probe'''   - укороченный вариант probe_2 и probe_1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ini&amp;gt;[remark@story_end]&lt;br /&gt;
anim = probe_3&lt;br /&gt;
no_move = true&lt;br /&gt;
snd = agr_doctor_1        &lt;br /&gt;
target = actor&lt;br /&gt;
on_signal = sound_end| remark@base&lt;br /&gt;
;on_timer = 180000| remark@ base&lt;br /&gt;
meet = no_meet&lt;br /&gt;
danger = danger_condition&lt;br /&gt;
&lt;br /&gt;
[danger_condition]&lt;br /&gt;
ignore_distance = 10&amp;lt;/ini&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''probe_3'''  -  интересная анимка (похоже что кругловская)-  чувак срывается с места в панике, затем сгибается как будто от боли, хватается за голову. &lt;br /&gt;
agr_doctor_1 - базар доктора в тайнике стрелка. &lt;br /&gt;
&lt;br /&gt;
Теперь поясню строчки &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
on_actor_dist_ge = 30| %+passage_to_story_end%&lt;br /&gt;
on_info = {+passage_to_story_end} remark@story_end&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Когда эктор отойдет от НПС дальше чем 30 метров,  ГГ выдается инфопоршень  passage_to_story_end. &lt;br /&gt;
После его получения - on_info -  произойдет переход к базовой ремарке.  &lt;br /&gt;
Сам инфопоршень необходимо регистрировать в соответствующих   файлах. Так как мой НПС находится на кордоне, то поршень я сунул в файл info_l01escape. Сообственно инфопоршень в строчке on_actor_dist_ge писать не обязательно(я его использовал только для примера) - можно просто поставить имя следующей ремарки - и в нужный момент произойдет переход. Но инфопоршень может понадобиться для других случаев.&lt;br /&gt;
&lt;br /&gt;
Как я уже говорил в начале, схему можно сделать полностью зацикленной. Нужно лишь в тех блоках, где идет переход к следующей схеме через on_signal поставить таймер или дистанцию.&lt;br /&gt;
Почему так - не знаю. Но у меня по второму кругу схема стопорилась на тех блоках, где шел переход через on_signal = sound_end|. По таймеру же все прекрасно крутится. Схема из второй части - как раз зацикленная.&lt;br /&gt;
&lt;br /&gt;
P.S. : Кажется понял почему у меня стопорилась схема при использовании перехода on_signal = sound_end|. Дело в том,  что если в имени звука, по завершении которого схема должна перейти к новому блоку стоит флажок seq, то он вроде как отыграется только один раз (если в этой теме нет дополнительных реплик). Следовательно по второму кругу он просто не будет срабатывать, а значит и схема застопорится. Так что для этого нужно ставить звук в имени которого в файле sound_script есть флажок rnd. Тема  mil_guard_to_max как раз с флажком seq (и реплика только одна - без вариантов). Потому здесь (в схеме sit) она и будет стопориться на втором круге, если не заменить тему на другую. &lt;br /&gt;
Но это еще надо проверить.&lt;br /&gt;
Закоментированные строчки - пред которыми стоит ; - может смело выкидывать - это остатки проб разных вариантов.&lt;br /&gt;
&lt;br /&gt;
== Часть вторая. ==&lt;br /&gt;
 &lt;br /&gt;
Еще одна схема. На этот раз в нее добавлены еще постэффекты.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ini&amp;gt;[logic]&lt;br /&gt;
active = remark@base &lt;br /&gt;
danger = danger_condition &lt;br /&gt;
meet = meet&lt;br /&gt;
&lt;br /&gt;
[remark@base]&lt;br /&gt;
anim = hello_wpn&lt;br /&gt;
no_move = true&lt;br /&gt;
target = actor&lt;br /&gt;
meet = meet&lt;br /&gt;
on_actor_dist_le = 2| remark@punch&lt;br /&gt;
danger = danger_condition &amp;lt;/ini&amp;gt;&lt;br /&gt;
&lt;br /&gt;
С первой ремаркой все понятно. Переход ко второй на дистанции ближе 2 метров.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ini&amp;gt;[remark@punch]&lt;br /&gt;
anim = punch&lt;br /&gt;
snd = cit_jail_guard_sneer&lt;br /&gt;
meet = meet@punch&lt;br /&gt;
target = actor&lt;br /&gt;
on_signal = sound_end| %=run_cam_effector(fatigue)% &lt;br /&gt;
on_timer = 60000| remark@doctor_wakeup  %=run_postprocess(deadcity_wake:1777:false)%   &lt;br /&gt;
danger = danger_condition &lt;br /&gt;
&lt;br /&gt;
[meet@punch]&lt;br /&gt;
meet_state	= 5|hide_s_left@wait| 4|hide_s_right@wait&lt;br /&gt;
meet_state_wpn	= 5|backoff2@threat_back&lt;br /&gt;
victim = 10|actor &lt;br /&gt;
victim_wpn = 10|actor &lt;br /&gt;
use = true &lt;br /&gt;
use_wpn = true &lt;br /&gt;
meet_dialog	= escape_lager_guard_start_dialog&amp;lt;/ini&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''punch'''– анимка удара рукой (или прикладом). Так как я не специалист по боксу, то не скажу точно &lt;br /&gt;
как именно называется этот удар с правой в челюсть. Если поставите ее в meet_state_wpn на дистанции 2 метра - ГГ получит реальный удар в морду прикладом ствола. Так как я эксперементировал на своем торговце - то он (будучи безоружным) бил чисто кулаком.	 &lt;br /&gt;
А если вместо запуска  анимации камеры '''%=run_cam_effector(fatigue)%''' поставите запуск функции '''%=killactor%''', то НПС кинется вас убивать.&lt;br /&gt;
&lt;br /&gt;
'''hide_s_left''' и '''hide_s_right''' - непись присядет с разворотом &lt;br /&gt;
ствола вправо или влево. &lt;br /&gt;
'''backoff2'''  -  более веселая анимка backoff.  &lt;br /&gt;
НПС покажет ГГ что-то вроде фака, перед тем как помахать стволом и при этом скажет что-то весьма нелицеприятное.&lt;br /&gt;
'''&lt;br /&gt;
'''%=run_cam_effector(fatigue)%''' - это вызов анимации камеры ''fatigue'' из папки anims.&lt;br /&gt;
Земля уйдет из под ног ГГ. Ненадолго. Сработает сразу же после окончания фразы &lt;br /&gt;
cit_jail_guard_sneer. &lt;br /&gt;
А ровно через минуту от начала работы схемы – запуск постпроцесса&lt;br /&gt;
'''%=run_postprocess(deadcity_wake:1777:false)%'''  и переход к следующей схеме.&lt;br /&gt;
&lt;br /&gt;
'''deadcity_wake''' – это постпроцесс, который должен был использоваться в Мертвом городе, если бы разрабы МГ все таки доделали. &lt;br /&gt;
Если не видели - обязательно посмотрите.Сначала черный экран, затем прояснение с раздвоением картинки и красным фоном.   &lt;br /&gt;
 &lt;br /&gt;
В следующей схеме идет продолжение постпроцесса – первые 15 секунд. Потом его остановка: on_timer = 15000| %=stop_postprocess(1777)%. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;ini&amp;gt;[remark@doctor_wakeup]&lt;br /&gt;
anim = doctor_wakeup&lt;br /&gt;
snd = cit_doctor_start_dlg&lt;br /&gt;
meet = meet@doctor_wakeup&lt;br /&gt;
target = actor&lt;br /&gt;
on_timer = 15000| %=stop_postprocess(1777)%&lt;br /&gt;
on_timer2 = 180000| remark@prisoner &lt;br /&gt;
danger = danger_condition &lt;br /&gt;
&lt;br /&gt;
[meet@doctor_wakeup]&lt;br /&gt;
meet_state	= 3|sleep@cit_jail_guard_sleep| 2|sleep_sit@wait&lt;br /&gt;
meet_state_wpn	= 3|wounded_zombie@wait&lt;br /&gt;
victim = 10|actor &lt;br /&gt;
victim_wpn = 10|actor &lt;br /&gt;
use = true &lt;br /&gt;
use_wpn = true &lt;br /&gt;
meet_dialog	= escape_lager_guard_start_dialog&amp;lt;/ini&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Начальная анимация - '''doctor_wakeup''' – доктор в мертвом городе. НПС склонится вниз – как будто над чьим то телом (по задумке – над меченым) и начнет базарить. Но совсем не то, что стоит у  меня в строчке snd. Видимо, данная анимка завязана со звуком, и иначе не идет.&lt;br /&gt;
Фразу прописанную мною - cit_doctor_start_dlg –  нпс произнесет потом. Обе озвучки длинные – та, что идет с анимкой – монолог доктора в подземелье агропрома в тайнике Стрелка  – типа, «что ж ты меченый в растяжку полез, сам же придумал эту хрень…» Моя озвучка - cit_doctor_start_dlg – неиспользованный монолог доктора в мертвом городе.&lt;br /&gt;
Через 180 секунд – завершение схемы и переход к следующей. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Схема – пленный.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ini&amp;gt;[remark@prisoner]&lt;br /&gt;
anim = prisoner&lt;br /&gt;
snd = agr_krot_fear&lt;br /&gt;
meet = meet@prisoner&lt;br /&gt;
target = actor&lt;br /&gt;
on_timer = 60000| remark@base&lt;br /&gt;
danger = danger_condition&lt;br /&gt;
&lt;br /&gt;
[meet@prisoner]&lt;br /&gt;
meet_state	= 5|help_me@gar_dm_newbie_no_money&lt;br /&gt;
meet_state_wpn	= 5|hands_up@agr_dont_shoot&lt;br /&gt;
victim = 10|actor &lt;br /&gt;
victim_wpn = 10|actor &lt;br /&gt;
use = true &lt;br /&gt;
use_wpn = true &lt;br /&gt;
meet_dialog	= escape_lager_guard_start_dialog&lt;br /&gt;
&lt;br /&gt;
[danger_condition]&lt;br /&gt;
ignore_distance = 10&amp;lt;/ini&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Анимка – '''prisoner''' – пленный. Помните Шустрого у бандитов? Вот это она и есть. &lt;br /&gt;
Фраза - agr_krot_fear – не смотря на то, что в названии звуковой темы имя Крота, орет ее Шустрый: типа братцы я тут, спасите. &lt;br /&gt;
&lt;br /&gt;
'''help_me''' -  машет рукой сидя на одном колене и орет, что у него &amp;quot;нет денег&amp;quot; - gar_dm_newbie_no_money .&lt;br /&gt;
'''hands_up'''  -  руки кверху  и орет &amp;quot;не убивай дяденька&amp;quot; (или типа того) - agr_dont_shoot. &lt;br /&gt;
&lt;br /&gt;
Через 60 секунд возврат к базовой ремарке.&lt;br /&gt;
&lt;br /&gt;
== Часть третья. ==&lt;br /&gt;
&lt;br /&gt;
В файле state_lib – большая библиотека анимок. Я успел попробовать только часть. &lt;br /&gt;
У одного бармена их 12. Правда, из пяти опробованных мной сработала только одна '''bar_sleep'''  - НПС положит голову  на руки сложенные перед лицом и будет  спать стоя. &lt;br /&gt;
&lt;br /&gt;
Анимки - '''barman_talk_freу, barman_shock,  barman_wait_danger,  barman_walk_danger'''  - никакого эффекта не дали. Видимо, они работают только на бармене. Остальные пробуйте сами. &lt;br /&gt;
&lt;br /&gt;
Анимка '''psy_pain''' – пораженный  пси-излучением. Чувак сядет на колени, начнет трясти головой и бить себе руками по голове.&lt;br /&gt;
&lt;br /&gt;
'''psycho_pain''' – вроде бы тоже самое, только чувак обхватывает голову руками  и так сидит.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Анимки '''psy_shoot, psy_armed, psycho_pain, psycho_shoot'''– пока остаются на стадии исследования. Так как с ними либо глючит, либо вылетает.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
'''erlik'''&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
[[Категория:Скрипты]]&lt;/div&gt;</summary>
		<author><name>91.218.192.254</name></author>	</entry>

	<entry>
		<id>http://stalkerin.gameru.net/wiki/index.php?title=%D0%A1%D0%BF%D0%B0%D0%B2%D0%BD_%D0%BE%D0%B1%D1%8C%D0%B5%D0%BA%D1%82%D0%BE%D0%B2_%D1%87%D0%B5%D1%80%D0%B5%D0%B7_db.script</id>
		<title>Спавн обьектов через db.script</title>
		<link rel="alternate" type="text/html" href="http://stalkerin.gameru.net/wiki/index.php?title=%D0%A1%D0%BF%D0%B0%D0%B2%D0%BD_%D0%BE%D0%B1%D1%8C%D0%B5%D0%BA%D1%82%D0%BE%D0%B2_%D1%87%D0%B5%D1%80%D0%B5%D0%B7_db.script"/>
				<updated>2013-07-27T07:13:54Z</updated>
		
		<summary type="html">&lt;p&gt;91.218.192.254: оформление&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Спавн обьектов через db.script==&lt;br /&gt;
&lt;br /&gt;
===Теория===&lt;br /&gt;
Сегодня я расскажу вам как заспавнить, например, AK-74 в самом начале игры, без использования диалогов!&lt;br /&gt;
Но, прежде чем учиться запускать функции без использования диалогов - сначала научитесь их вызывать общепринятым методом.&lt;br /&gt;
* [[http://www.stalkerin.gameru.net/wiki/index.php/Спавн_через_скрипт Спавн через скрипт]] &lt;br /&gt;
&lt;br /&gt;
===Практика===&lt;br /&gt;
Для начала нам надо распаковать '''db.script''' и там находим функцию:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lua&amp;gt;&lt;br /&gt;
function add_actor( obj )&lt;br /&gt;
	actor = obj&lt;br /&gt;
	actor_proxy:net_spawn( obj )&lt;br /&gt;
	add_obj( obj )&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/lua&amp;gt;&lt;br /&gt;
Изменим эту функцию. У нас должно получиться так:&lt;br /&gt;
&amp;lt;lua&amp;gt;&lt;br /&gt;
function add_actor( obj )&lt;br /&gt;
	actor = obj&lt;br /&gt;
	actor_proxy:net_spawn( obj )&lt;br /&gt;
	add_obj( obj )&lt;br /&gt;
        new_spawn.give_ak74() &lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/lua&amp;gt;&lt;br /&gt;
'''new_spawn.script''' - это название скрипта, в котором будет находиться наша функция спавна калаша.&lt;br /&gt;
&lt;br /&gt;
Создаем скрипт '''new_spawn.script''' и пишем там функцию: &lt;br /&gt;
&amp;lt;lua&amp;gt;&lt;br /&gt;
function give_ak74()&lt;br /&gt;
    alife():create(&amp;quot;wpn_ak74&amp;quot;, db.actor:position(), db.actor:level_vertex_id(), db.actor:game_vertex_id(), db.actor:id())&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/lua&amp;gt;&lt;br /&gt;
Все! Теперь после того, как мы появимся у нас в инвентаре будет AK-74 и без использования диалогов!&lt;br /&gt;
Таким способом можно заспавнить не только калаш, но и другое оружие и патроны.&lt;br /&gt;
===Авторы=== &lt;br /&gt;
* Шатров Дмитрий (Fim@n)&lt;br /&gt;
&lt;br /&gt;
[[Категория:Скрипты]]&lt;/div&gt;</summary>
		<author><name>91.218.192.254</name></author>	</entry>

	<entry>
		<id>http://stalkerin.gameru.net/wiki/index.php?title=CoP:_%D0%A1%D0%BE%D0%B7%D0%B4%D0%B0%D0%BD%D0%B8%D0%B5_%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D0%B0%D1%8E%D1%89%D0%B5%D0%B3%D0%BE_%D1%80%D0%B0%D0%B4%D0%B8%D0%BE</id>
		<title>CoP: Создание работающего радио</title>
		<link rel="alternate" type="text/html" href="http://stalkerin.gameru.net/wiki/index.php?title=CoP:_%D0%A1%D0%BE%D0%B7%D0%B4%D0%B0%D0%BD%D0%B8%D0%B5_%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D0%B0%D1%8E%D1%89%D0%B5%D0%B3%D0%BE_%D1%80%D0%B0%D0%B4%D0%B8%D0%BE"/>
				<updated>2013-07-26T21:58:39Z</updated>
		
		<summary type="html">&lt;p&gt;91.218.192.254: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Для того что бы сделать новое РАБОТАЮЩЕЕ радио нам понадобятся файлы: &lt;br /&gt;
All.spawn(распакованный) &lt;br /&gt;
script_sound_zaton.ltx&lt;br /&gt;
&lt;br /&gt;
Итак сначала заходим в файл alife_zaton(он находится в распакованном all.spawn) &lt;br /&gt;
И добавляем в конец вот такие строки&lt;br /&gt;
&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ini&amp;gt; [zaton_1866]&lt;br /&gt;
 ; cse_abstract properties&lt;br /&gt;
 section_name = physic_object&lt;br /&gt;
 name = zaton_radio&lt;br /&gt;
 position = 131.13690185547,-6.1206126213074,177.25036621094 &lt;br /&gt;
 direction = 0,2.40000009536743,0 &lt;br /&gt;
 ; cse_alife_object properties&lt;br /&gt;
 game_vertex_id = 296 &lt;br /&gt;
 distance = 0.400000005960464 &lt;br /&gt;
 level_vertex_id = 1189961 &lt;br /&gt;
 object_flags = 0xffffff3a&lt;br /&gt;
 custom_data = &amp;lt;&amp;lt;END&lt;br /&gt;
 [collide]&lt;br /&gt;
 ignore_static&lt;br /&gt;
 [logic]&lt;br /&gt;
 cfg = scripts\zaton\zaton_radio.ltx &lt;br /&gt;
 END&lt;br /&gt;
 ; cse_visual properties&lt;br /&gt;
 visual_name = dynamics\el_tehnika\priemnik_gorizont &lt;br /&gt;
 ; cse_ph_skeleton properties&lt;br /&gt;
 ; cse_alife_object_physic properties&lt;br /&gt;
 physic_type = 0x3&lt;br /&gt;
 mass = 10&lt;br /&gt;
 fixed_bones = link&lt;br /&gt;
 upd:num_items = 0x3b&lt;br /&gt;
 upd:ph_force = -1026054538,1178713870,1148917712&lt;br /&gt;
 upd:ph_torque = 1176146099,344496243,1224736768&lt;br /&gt;
 upd:ph_position = 131.13690185547,-6.1206126213074,177.25036621094&lt;br /&gt;
 upd:ph_rotation = 1479689794,1558332544,1735607834,5470&lt;br /&gt;
 upd:ph_angular_vel = -16646106,1137172917,1082910749&lt;br /&gt;
 upd:ph_linear_vel = 5475,-1142554624,-1674313728&amp;lt;/ini&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Теперь сохраняем и можно собирать '''all.spawn''' он нам больше не нужен.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Так теперь самое главное… Логика &lt;br /&gt;
Заходим в папку '''gamedata//configs//scripts//zaton''' создаём там файл '''zaton_radio.ltx''' и в нём пишем &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;ini&amp;gt;[logic]&lt;br /&gt;
 active = sr_idle@start&lt;br /&gt;
 [sr_idle@start]&lt;br /&gt;
 on_actor_in_zone = zat_a2_sr_noweap | sr_idle@stop %=play_sound_looped(zat_a2_base_radio)%&lt;br /&gt;
 [sr_idle@stop]&lt;br /&gt;
 on_info = {+kogda_rak_na_gore_svisnet} sr_idle@nil %=stop_sound_looped%&amp;lt;/ini&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Сохраняем… &lt;br /&gt;
Далее идём по адресу '''gamedata\configs\misc''' где находим файл '''script_sound_zaton.ltx'''.&lt;br /&gt;
В самом начале, после [list_script_sound_zaton], пишем zat_base_radio, а в самом конце файла создаём секцию такого вида:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;ini&amp;gt;[zat_base_radio]&lt;br /&gt;
 type = looped&lt;br /&gt;
 path = music\radio\zaton_radio_generic&lt;br /&gt;
 shuffle = rnd&amp;lt;/ini&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В папке '''sounds\music''' создадим папку с названием &amp;quot;radio&amp;quot;, поместив туда (предвориельно откоментированый*) звуковой файл с названием '''zaton_radio_generic.ogg'''&lt;br /&gt;
&lt;br /&gt;
 Рекомендуемые параметры коментария звука&lt;br /&gt;
 [[Файл:Sound comment.png]]&lt;br /&gt;
Удачи!!!&lt;br /&gt;
&lt;br /&gt;
 Статья от Akella-96. Отредактировал и исправил  ошибки Сергей][aka Moonlight.&lt;br /&gt;
&lt;br /&gt;
[[Категория:Скрипты]]&lt;/div&gt;</summary>
		<author><name>91.218.192.254</name></author>	</entry>

	<entry>
		<id>http://stalkerin.gameru.net/wiki/index.php?title=Space_restrictor</id>
		<title>Space restrictor</title>
		<link rel="alternate" type="text/html" href="http://stalkerin.gameru.net/wiki/index.php?title=Space_restrictor"/>
				<updated>2013-07-26T21:55:38Z</updated>
		
		<summary type="html">&lt;p&gt;91.218.192.254: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Начало==&lt;br /&gt;
----------------------------------------------------------&lt;br /&gt;
Значит, распаковываем алл.спавн с помощью ACDC...Распаковали.&lt;br /&gt;
Откроем, например, alife_l02_garbage.ltx.&lt;br /&gt;
В самом конце допишем:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ini&amp;gt;&lt;br /&gt;
[2145]&lt;br /&gt;
; cse_abstract properties&lt;br /&gt;
section_name = space_restrictor&lt;br /&gt;
name = sgm_kvest&lt;br /&gt;
position = 41.297409057617,0.44233170151711,-299.86953735352&lt;br /&gt;
direction = 0,0,0&lt;br /&gt;
&lt;br /&gt;
; cse_alife_object properties&lt;br /&gt;
game_vertex_id = 253&lt;br /&gt;
distance = 0&lt;br /&gt;
level_vertex_id = 214760&lt;br /&gt;
object_flags = 0xffffff3e&lt;br /&gt;
custom_data = &amp;lt;&amp;lt;END&lt;br /&gt;
[logic]&lt;br /&gt;
active = sr_idle&lt;br /&gt;
[sr_idle]&lt;br /&gt;
on_actor_inside = %+story_sgm_kvest2_3%&lt;br /&gt;
END&lt;br /&gt;
&lt;br /&gt;
; cse_shape properties&lt;br /&gt;
shapes = shape0&lt;br /&gt;
shape0:type = box&lt;br /&gt;
shape0:axis_x = 6.5,0,0&lt;br /&gt;
shape0:axis_y = 0,6.5,0&lt;br /&gt;
shape0:axis_z = 0,0,6.5&lt;br /&gt;
shape0:offset = 0,0,0&lt;br /&gt;
; cse_alife_space_restrictor properties&lt;br /&gt;
restrictor_type = 3&lt;br /&gt;
&amp;lt;/ini&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Где&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;[2145] - порядковый номер&lt;br /&gt;
section_name = space_restrictor - имя секции (нам надо space_restrictor)&lt;br /&gt;
name = svalka_prikol - личное имя (задаём любое)&lt;br /&gt;
position = - позиции (место, где будем спавнить его)&lt;br /&gt;
direction = - поворот рестриктра (не трогаем...)&lt;br /&gt;
game_vertex_id = - геймвертекс &lt;br /&gt;
level_vertex_id = - левелвертекс&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Если вы хотите сделать сферический space_restrictor, то вместо &lt;br /&gt;
&amp;lt;code&amp;gt;shape0:axis_x = 6.5,0,0&lt;br /&gt;
shape0:axis_y = 0,6.5,0&lt;br /&gt;
shape0:axis_z = 0,0,6.5&lt;br /&gt;
shape0:offset = 0,0,0&amp;lt;/code&amp;gt;&lt;br /&gt;
пишем:&lt;br /&gt;
&amp;lt;code&amp;gt;shape0:offset = 0,0,0&lt;br /&gt;
shape0:radius = 44.6438484191895&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''Примечание: координаты спавна, game_vertex_id и level_vertex_id можно получить с помощью следующей функции:''&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;lua&amp;gt;&lt;br /&gt;
function main_menu:OnButton_credits_clicked()&lt;br /&gt;
local text&lt;br /&gt;
local vid&lt;br /&gt;
local gvid&lt;br /&gt;
local a = vector()&lt;br /&gt;
local text&lt;br /&gt;
a = db.actor:position()&lt;br /&gt;
vid = db.actor:level_vertex_id()&lt;br /&gt;
gvid = db.actor:game_vertex_id() &lt;br /&gt;
text = &amp;quot;Позиция:\\nX= &amp;quot;..a.x..&amp;quot;\\nY= &amp;quot;..a.y..&amp;quot;\\nZ= &amp;quot;..a.z..&amp;quot;\\nlevel_vertex= &amp;quot;..vid..&amp;quot;\\ngame_vertex_id= &amp;quot;..gvid&lt;br /&gt;
news_manager.send_tip(db.actor, text, nil, nil, 30000)&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/lua&amp;gt;&lt;br /&gt;
&lt;br /&gt;
просто допишите её в ui_main_menu.script, в самом конце.&lt;br /&gt;
&lt;br /&gt;
==Логика==&lt;br /&gt;
&lt;br /&gt;
===Выдача infoportions===&lt;br /&gt;
Теперь логика для рестриктора:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ini&amp;gt;&lt;br /&gt;
[logic]&lt;br /&gt;
active = sr_idle&lt;br /&gt;
&lt;br /&gt;
[sr_idle]&lt;br /&gt;
on_actor_inside = %+имя инфопоршня%&lt;br /&gt;
END&lt;br /&gt;
&amp;lt;/ini&amp;gt;&lt;br /&gt;
&lt;br /&gt;
С такой логикой рестриктор будет выдавать ГГ инфопоршень.&lt;br /&gt;
&lt;br /&gt;
===Эффекты выброса===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ini&amp;gt;&lt;br /&gt;
[logic]&lt;br /&gt;
active = sr_idle&lt;br /&gt;
&lt;br /&gt;
[sr_idle]&lt;br /&gt;
on_timer = 100000| %=start_small_reject% sr_idle2&lt;br /&gt;
&lt;br /&gt;
[sr_idle2]&lt;br /&gt;
on_timer = 100000| %=start_small_reject% sr_idle&lt;br /&gt;
END&lt;br /&gt;
&amp;lt;/ini&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Такая логика будет запускать каждые 100 сек. эффекты выброса.&lt;br /&gt;
&lt;br /&gt;
===Проверка на наличие и выдача infoportion===&lt;br /&gt;
&amp;lt;ini&amp;gt;&lt;br /&gt;
[logic]&lt;br /&gt;
active = sr_idle&lt;br /&gt;
&lt;br /&gt;
[sr_idle]&lt;br /&gt;
on_actor_inside = {=имя_инфопоршня_3 +имя_инфопоршня_2} nil %+имя_инфопоршня_1%&lt;br /&gt;
END&lt;br /&gt;
&amp;lt;/ini&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{=имя_инфопоршня_3 +имя_инфопоршня_2} - это проверка(условие) что у ГГ есть нужный инфопоршень.Если есть,то рестриктор выдаст нужный инфопоршень.&lt;br /&gt;
&lt;br /&gt;
==Shapes==&lt;br /&gt;
Двигаем дальше.&amp;lt;br&amp;gt;&lt;br /&gt;
shapes = тут вписываем названия шейпов&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Пример:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
shapes = shape0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;shape0:type = - это тип шейпа. Ставить или box,или sphere.&lt;br /&gt;
box - коробка&lt;br /&gt;
sphere - сфера&lt;br /&gt;
&lt;br /&gt;
shape0:axis_x = ваша цифра,0,0&lt;br /&gt;
shape0:axis_y = 0,ваша цифра,0&lt;br /&gt;
shape0:axis_z = 0,0,ваша цифра&lt;br /&gt;
- это размеры шейпа.&lt;br /&gt;
&lt;br /&gt;
restrictor_type - тип рестриктра.&amp;lt;/code&amp;gt;&lt;br /&gt;
Я везде ставлю restrictor_type = 3, поэтому сказать не могу на что влияет значение.&amp;lt;br /&amp;gt;&lt;br /&gt;
Ну вот и всё.Думаю всё чётко и ясно.Будут вопросы обращайтесь.&amp;lt;br /&amp;gt;&lt;br /&gt;
ПС: спасибо р-09 за объяснение некоторых моментов с логикой.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Статью написал:&lt;br /&gt;
'''джЭдай, SGMTeam.'''&amp;lt;br&amp;gt;&lt;br /&gt;
Статью преобразовывал в вики (неправильный перенос строк, ошибки с отсутствием некоторых знаков, запись в категорию) - '''Rekongstor'''&lt;br /&gt;
&lt;br /&gt;
[[Категория:Конфигурационные файлы]] [[Категория:Скрипты]]&lt;/div&gt;</summary>
		<author><name>91.218.192.254</name></author>	</entry>

	<entry>
		<id>http://stalkerin.gameru.net/wiki/index.php?title=Spawn_%D1%87%D0%B5%D1%80%D0%B5%D0%B7_%D1%81%D0%BA%D1%80%D0%B8%D0%BF%D1%82-%D0%B4%D0%BE%D0%BF%D0%BE%D0%BB%D0%BD%D0%B5%D0%BD%D0%B8%D0%B5</id>
		<title>Spawn через скрипт-дополнение</title>
		<link rel="alternate" type="text/html" href="http://stalkerin.gameru.net/wiki/index.php?title=Spawn_%D1%87%D0%B5%D1%80%D0%B5%D0%B7_%D1%81%D0%BA%D1%80%D0%B8%D0%BF%D1%82-%D0%B4%D0%BE%D0%BF%D0%BE%D0%BB%D0%BD%D0%B5%D0%BD%D0%B8%D0%B5"/>
				<updated>2013-07-26T21:49:56Z</updated>
		
		<summary type="html">&lt;p&gt;91.218.192.254: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Пишу статью специально для тех, кто только начинает увлекатся модмейкерством и не использует специальные проги для спавна (могу посоветовать ACDC-весчь улетная, спасиба разрабам:-)&amp;lt;br /&amp;gt;&lt;br /&gt;
Если вы хотите заспавнить в игру любой обьект-будь то непись, машина или аномалия без активации через диалог, тогда читайте и запоминайте:)&amp;lt;br /&amp;gt;&lt;br /&gt;
Изучая скрипты, я обнаружил, что можно запустить выдачу инфопоршны через обновление у актера... Не поняли? Объясняю - пишем в '''scripts\bind_stalker.script''' в секции обновления проверку на наличие '''info_portion''':&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lua&amp;gt;&lt;br /&gt;
function actor_binder:update(delta)&lt;br /&gt;
	object_binder.update(self, delta)&lt;br /&gt;
&lt;br /&gt;
	-- DEBUG slowdown&lt;br /&gt;
--	slowdown.update()&lt;br /&gt;
&lt;br /&gt;
	local time = time_global()&lt;br /&gt;
	&lt;br /&gt;
	game_stats.update (delta, self.object)&lt;br /&gt;
&lt;br /&gt;
	-- апдейт погоды&lt;br /&gt;
	self.weather_manager:update()&lt;br /&gt;
	&lt;br /&gt;
	-- апдейт схемы детектора&lt;br /&gt;
	self.actor_detector:update()&lt;br /&gt;
&lt;br /&gt;
	-- апдейт звуковой схемы актера&lt;br /&gt;
	xr_sound.update_actor()&lt;br /&gt;
&lt;br /&gt;
	if not has_alife_info(&amp;quot;spawn&amp;quot;) then				--вот&lt;br /&gt;
&lt;br /&gt;
		self.object:give_info_portion(&amp;quot;spawn&amp;quot;)		--	наше&lt;br /&gt;
&lt;br /&gt;
	end						--		обновление&lt;br /&gt;
&amp;lt;/lua&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Такой функцией мы проверяем наличие инфопоршны '''spawn''', и если её нет, выдаем игроку...&amp;lt;br /&amp;gt;&lt;br /&gt;
Осталось только добавить эти инфопоршну - для этого в '''config\gamelay\''' cоздаем файл с ней, например '''spawn.xml''' с текстом:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;xml&amp;gt;&lt;br /&gt;
&amp;lt;?xml version='1.0' encoding=&amp;quot;windows-1251&amp;quot;?&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;game_information_portions&amp;gt;&lt;br /&gt;
    &amp;lt;info_portion id=&amp;quot;spawn&amp;quot;&amp;gt;						-вот название нашей инфопоршны&lt;br /&gt;
 &amp;lt;! -- action&amp;gt;название_скрипта.название_функции_в_нем&amp;lt;/action -- &amp;gt;&lt;br /&gt;
 &amp;lt;action&amp;gt;escape_dialog.give_weapon_to_actor&amp;lt;/action&amp;gt;			-для примера выдадим стартовую снарягу(ПМм и патроны,что выдает волк)&lt;br /&gt;
    &amp;lt;/info_portion&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/game_information_portions&amp;gt;&lt;br /&gt;
&amp;lt;/xml&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Между &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  &amp;lt;info_portion id=&amp;quot;spawn&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
и&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  &amp;lt;/info_portion&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Можете писать сколько угодно активаций скриптов (в пределах разумного, если не хотите загрузить процессор двумя сотнями операций:)&lt;br /&gt;
Подключим наш файл в секцию инфопоршен в '''system.ltx''':&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ini&amp;gt;&lt;br /&gt;
[info_portions]&lt;br /&gt;
;список xml файлов, содержащих info_portions&lt;br /&gt;
files = spawn, info_portions, info_portions_light, info_portions_test, info_lchanger_ico...&lt;br /&gt;
&amp;lt;/ini&amp;gt;&lt;br /&gt;
&lt;br /&gt;
На этом все...Теперь когда вы зайдете в игру у вас в данном случае появится стартовая снаряга, ну а если вы пропишите активацию на спавн (ну или любое другое действие, например на: сон, телепорт и др.), у вас заспавнятся ваши предметы... Я еще бы не советовал часто пользоваться такой функцией, дабы могут возникнуть лаги при большом их кол-ве. Думаю одной-двух вам вполне хватит...&amp;lt;br /&amp;gt;&lt;br /&gt;
Ссори за жидкую инфу, дабы в моддинге всего три месяца...)&lt;br /&gt;
&lt;br /&gt;
==Авторы==&lt;br /&gt;
&lt;br /&gt;
Статья создана:&lt;br /&gt;
[[Участник:Костя.н.ы.ч|Костя.н.ы.ч]]&lt;br /&gt;
&lt;br /&gt;
[[Категория:Скрипты]]&lt;/div&gt;</summary>
		<author><name>91.218.192.254</name></author>	</entry>

	<entry>
		<id>http://stalkerin.gameru.net/wiki/index.php?title=SoC._%D0%A1%D0%BE%D0%B7%D0%B4%D0%B0%D0%BD%D0%B8%D0%B5_%D1%80%D0%B5%D0%BC%D0%BE%D0%BD%D1%82_%D0%BA%D0%BE%D0%BC%D0%BF%D0%BB%D0%B5%D0%BA%D1%82%D0%BE%D0%B2</id>
		<title>SoC. Создание ремонт комплектов</title>
		<link rel="alternate" type="text/html" href="http://stalkerin.gameru.net/wiki/index.php?title=SoC._%D0%A1%D0%BE%D0%B7%D0%B4%D0%B0%D0%BD%D0%B8%D0%B5_%D1%80%D0%B5%D0%BC%D0%BE%D0%BD%D1%82_%D0%BA%D0%BE%D0%BC%D0%BF%D0%BB%D0%B5%D0%BA%D1%82%D0%BE%D0%B2"/>
				<updated>2013-07-26T21:48:41Z</updated>
		
		<summary type="html">&lt;p&gt;91.218.192.254: оформление, орфография&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;===Создание ремонт комплекта===&lt;br /&gt;
Я опишу пример создания ремонт комплекта для костюмов, а для оружия в конце статьи сделаю пару заметок. Дело в том, что различия в создании ремонт комплектов почти нет.&lt;br /&gt;
 &lt;br /&gt;
1. Для начала нам нужно создать сам ремонт комплект, то есть предмет, а уже потом вешать на него функцию при использование. Для этого в config\misc\items.ltx в конец добавляем конфиг нашего предмета:&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;ini&amp;gt;[repair_kit_outfit]:identity_immunities&lt;br /&gt;
GroupControlSection	= spawn_group&lt;br /&gt;
discovery_dependency    =&lt;br /&gt;
$spawn 			= &amp;quot;food and drugs\repair kit outfit&amp;quot;&lt;br /&gt;
$prefetch 		= 32&lt;br /&gt;
class			= II_ANTIR ;класс не трогаем!&lt;br /&gt;
cform                   = skeleton&lt;br /&gt;
visual                  = equipments\item_merger.ogf ;модель&lt;br /&gt;
description		= enc_equipment_repair_kit_outfit ;ссылка на описание в config\text\rus\....xml&lt;br /&gt;
&lt;br /&gt;
inv_name		= repair_kit_outfit_name ;ссылка на название в config\text\rus\....xml&lt;br /&gt;
inv_name_short		= repair_kit_outfit_name ;тоже самое, что и inv_name&lt;br /&gt;
inv_weight		= 6.0 ;вес&lt;br /&gt;
&lt;br /&gt;
inv_grid_width		= 2 ;ширина иконки&lt;br /&gt;
inv_grid_height		= 1 ;высота иконки&lt;br /&gt;
inv_grid_x		= 8 ;координата x иконки&lt;br /&gt;
inv_grid_y		= 18 ;координата y иконки&lt;br /&gt;
cost			= 10000 ;цена&lt;br /&gt;
;всё ниже написанное не трогаем, оно нам и не нужно&lt;br /&gt;
eat_health = 0&lt;br /&gt;
eat_satiety = 0&lt;br /&gt;
eat_power = 0&lt;br /&gt;
eat_radiation = 0&lt;br /&gt;
wounds_heal_perc = 0&lt;br /&gt;
eat_portions_num = 1&lt;br /&gt;
animation_slot = 4&lt;br /&gt;
hud = wpn_vodka_hud&amp;lt;/ini&amp;gt;&lt;br /&gt;
2. Теперь добавим название и описание. Для этого в файле config\text\rus\string_table_enc_equipment.xml в конец между &amp;lt;/string&amp;gt; и &amp;lt;/string_table&amp;gt; добавляем строки по аналогии с уже написсанными: &lt;br /&gt;
       &amp;lt;xml&amp;gt;&amp;lt;string id=&amp;quot;repair_kit_outfit_name&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;text&amp;gt;Ремонт комплект ДПК&amp;lt;/text&amp;gt;&lt;br /&gt;
    &amp;lt;/string&amp;gt;&lt;br /&gt;
        &amp;lt;string id=&amp;quot;enc_equipment_repair_kit_outfit&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;text&amp;gt;Новинка от Вани Болта - ремонт комплект ДПК для быстрой и эффективной починки костюмов. При его создании были учтены все недочёты и, следовательно, удалены. Благодаря улучшенным инструментам и деталям, а также облегченному весу весьма ценен. С его помощью можно увеличить состояние костюма до 100%, если он повреждён не больше 30%. Незаменимая вещь во время вылазки.&amp;lt;/text&amp;gt;&lt;br /&gt;
    &amp;lt;/string&amp;gt;&amp;lt;/xml&amp;gt;&lt;br /&gt;
Отлично, с предметом закончили. Теперь приступим к самому главному - скриптам. &lt;br /&gt;
===Работа со скриптами===&lt;br /&gt;
1.Вешаем функцию починки при использовании нашего ремонт комплекта. &lt;br /&gt;
Для этого в файле '''scripts\bind_stalker.script''' &lt;br /&gt;
находим функцию:&lt;br /&gt;
&lt;br /&gt;
''function actor_binder:net_destroy()'' и после строки &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;self.object:set_callback(callback.take_item_from_box, nil)&amp;lt;/code&amp;gt; &lt;br /&gt;
&lt;br /&gt;
пишем: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;self.object:set_callback(callback.use_object, nil)&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
И теперь находим функцию&lt;br /&gt;
&lt;br /&gt;
''function actor_binder:reinit()'' и после строки &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;self.object:set_callback(callback.take_item_from_box, self.take_item_from_box, self)&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 пишем: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;self.object:set_callback(callback.use_object, self.repair_outfit_start, self)&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Теперь в папке '''scripts''' создаёте свой скриптовой файл '''ваше_название_скрипта.script'''. Но! Название должно быть написано на английском языке и вместо пробелов должен стоять знак &amp;quot;_&amp;quot;. Опять открываем '''bind_stalker.script''' и в самый конец добавляем эту функцию: &lt;br /&gt;
&amp;lt;lua&amp;gt;function actor_binder:repair_outfit_start(obj, who)&lt;br /&gt;
    if obj then &lt;br /&gt;
        if obj:section() == &amp;quot;repair_kit_outfit&amp;quot; then --здесь указываем предмет, при использование которого будет срабатывать функция ниже&lt;br /&gt;
        ваше_название_скрипта.repair_outfit() --здесь указываем ссылку на функцию. Сначала скрипт, в котором она написана, потом название самой функции&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
end&amp;lt;/lua&amp;gt;&lt;br /&gt;
2. Добавляем саму функцию ремонта. &lt;br /&gt;
Для этого в файле '''ваше_название_скрипта.script''' пишем: &lt;br /&gt;
&amp;lt;lua&amp;gt; -- Ремонт комплект для костюмов&lt;br /&gt;
function repair_outfit()&lt;br /&gt;
local item_s6 = db.actor:item_in_slot(6) --объявляем переменную (item_s6)&lt;br /&gt;
    if item_s6 ~= nil and item_s6:condition() &amp;gt;=0.30 and item_s6:condition() ~=1 then --когда костюм можно чинить (состояние больше или равно 30%)&lt;br /&gt;
        item_s6:set_condition(1)&lt;br /&gt;
        local snd_obj = xr_sound.get_safe_sound_object([[interface\inv_detach_addon]])&lt;br /&gt;
        snd_obj:play_no_feedback(db.actor, sound_object.s2d, 0, vector(), 1.0)&lt;br /&gt;
        local news_text = &amp;quot;%c[255,160,160,160]Ремонт комплект:\\n%c[255,0,255,0]Ремонт костюма завершен.&amp;quot;&lt;br /&gt;
        db.actor:give_game_news(news_text, &amp;quot;ui\\ui_iconsTotal&amp;quot;, Frect():set(83,470,83,47), 1000, 5000)&lt;br /&gt;
    elseif item_s6 == nil then --когда костюма нет &lt;br /&gt;
        local news_text = &amp;quot;%c[255,160,160,160]Ремонт комплект:\\n%c[255,255,0,0]Ремонт невозможен: нужно одеть коcтюм.&amp;quot;&lt;br /&gt;
        db.actor:give_game_news(news_text, &amp;quot;ui\\ui_iconsTotal&amp;quot;, Frect():set(83,470,83,47), 1000, 5000)&lt;br /&gt;
        alife():create(&amp;quot;repair_kit_outfit&amp;quot;, db.actor:position(), 1, db.actor:game_vertex_id(), db.actor:id())&lt;br /&gt;
    elseif item_s6:condition() &amp;lt;0.30 then --когда костюм нельзя чинить (состояние меньше 30%)&lt;br /&gt;
        local news_text = &amp;quot;%c[255,160,160,160]Ремонт комплект:\\n%c[255,255,0,0]Ремонт невозможен: костюм слишком сильно повреждён.&amp;quot;&lt;br /&gt;
        db.actor:give_game_news(news_text, &amp;quot;ui\\ui_iconsTotal&amp;quot;, Frect():set(83,470,83,47), 1000, 5000)&lt;br /&gt;
        alife():create(&amp;quot;repair_kit_outfit&amp;quot;, db.actor:position(), 1, db.actor:game_vertex_id(), db.actor:id())&lt;br /&gt;
    elseif item_s6:condition() ==1 then --когда костюм в отличном состояние&lt;br /&gt;
        local news_text = &amp;quot;%c[255,160,160,160]Ремонт комплект:\\n%c[255,255,0,0]Ремонт невозможен: %c[255,0,255,0]костюм в отличном состояние.&amp;quot;&lt;br /&gt;
        db.actor:give_game_news(news_text, &amp;quot;ui\\ui_iconsTotal&amp;quot;, Frect():set(83,470,83,47), 1000, 5000)&lt;br /&gt;
        alife():create(&amp;quot;repair_kit_outfit&amp;quot;, db.actor:position(), 1, db.actor:game_vertex_id(), db.actor:id())&lt;br /&gt;
    end&lt;br /&gt;
end&amp;lt;/lua&amp;gt;&lt;br /&gt;
Всё! Теперь заходим в игру и наслаждаемся.&lt;br /&gt;
&lt;br /&gt;
===Небольшая заметка===&lt;br /&gt;
1. Чтобы сделать ремонт комплект для оружия проделываем тоже самое, только переименовываем всё вместо outfit на weapon и в функцие починки ставим слот 1 или 2 (оружейные слота) вместо 6 (слот костюмов).&lt;br /&gt;
Ещё нужно заменить переменную item_s6 например на item_s1 или item_s2.&lt;br /&gt;
&lt;br /&gt;
2. Число 0.30 - минимальное состояние костюма, следовательно его можно менять на любое вам угодное.&lt;br /&gt;
Простите за такое оформление, это моя вторая статья. В будущем, если будет больше свободного времени, постораюсь расписать все моменты подробно. Автор статьи: Бага.&lt;br /&gt;
&lt;br /&gt;
Данный метод создания ремонт комплектов не работает! (проверено)&lt;br /&gt;
ЗЫ: StalkerNew2012 этот скрипт подправил теперь всё работает :)&lt;br /&gt;
Ремонтный комплект без лишних сообщений просто съедается!:(&lt;br /&gt;
&lt;br /&gt;
3.Ремонт оружия и брони:&lt;br /&gt;
{| class=&amp;quot;collapsible collapsed&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;code lua&amp;gt;&lt;br /&gt;
&lt;br /&gt;
--     bind_stalker.script&lt;br /&gt;
function actor_binder:repair_outfit_start(obj, who)&lt;br /&gt;
    if obj then &lt;br /&gt;
        if obj:section() == &amp;quot;repair_kit_outfit&amp;quot; then&lt;br /&gt;
                remkomplekt.action_repair() &lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--     remkomplekt.script&lt;br /&gt;
function action_repair()&lt;br /&gt;
&lt;br /&gt;
	-- нет ли рядом врагов и монстров&lt;br /&gt;
	local apos = db.actor:position()&lt;br /&gt;
	for obj_id,_ in pairs (db.storage)do&lt;br /&gt;
		local obj = level.object_by_id(obj_id)&lt;br /&gt;
		if obj and (IsStalker(obj) or IsMonster(obj)) and obj:alive() &lt;br /&gt;
		and obj:relation(db.actor) == game_object.enemy and obj:position():distance_to(apos)&amp;lt;30 then&lt;br /&gt;
			send_tip(&amp;quot;Нельзя чинить костюм, когда враги слишком близко.&amp;quot;)&lt;br /&gt;
			return&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	-- пробуем чинить предмет в &lt;br /&gt;
	repair_item_in_slot(1) -- первом&lt;br /&gt;
	repair_item_in_slot(2) -- втором&lt;br /&gt;
	repair_item_in_slot(6) -- шестом слоте&lt;br /&gt;
	&lt;br /&gt;
	-- эмулируем возврат ремкомплекта в инвентарь&lt;br /&gt;
	alife():create(&amp;quot;repair_kit_outfit&amp;quot;, db.actor:position(), db.actor:level_vertex_id(), db.actor:game_vertex_id(), db.actor:id())&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function repair_item_in_slot(num)&lt;br /&gt;
	local item = db.actor:item_in_slot(num)&lt;br /&gt;
	if item then&lt;br /&gt;
		local cond = item:condition()&lt;br /&gt;
		if cond &amp;lt; 0.3 then&lt;br /&gt;
			send_tip(&amp;quot;%c[255,255,0,0]Ремонт невозможен: предмет в слоте &amp;quot;..num.. &amp;quot; сильно повреждён.&amp;quot;)&lt;br /&gt;
		elseif cond &amp;gt; 0.95 then&lt;br /&gt;
			send_tip(&amp;quot;%c[255,255,0,0]Ремонт невозможен: %c[255,0,255,0]предмет в слоте &amp;quot;..num.. &amp;quot; в отличном состоянии.&amp;quot;)&lt;br /&gt;
		else&lt;br /&gt;
			item:set_condition(1)&lt;br /&gt;
			send_tip(&amp;quot;%c[255,0,255,0]Ремонт предмета в слоте &amp;quot;..num.. &amp;quot; завершен.&amp;quot;)&lt;br /&gt;
		end&lt;br /&gt;
	else&lt;br /&gt;
		send_tip(&amp;quot;%c[255,255,0,0]В слоте &amp;quot;..num..&amp;quot; нет предмета для починки.&amp;quot;)&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function send_tip(news_text)&lt;br /&gt;
	db.actor:give_game_news(news_text, &amp;quot;ui\\ui_iconsTotal&amp;quot;, Frect():set(83,470,83,47), 1000, 5000)&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
4. Для многоразового использования ремкомплекта можно не доспавнивать новый предмет при съедании, а в его конфиге указать для параметра '''eat_portions_num''' большое число.&lt;br /&gt;
&amp;lt;lua&amp;gt;eat_portions_num = 100500&amp;lt;/lua&amp;gt;&lt;br /&gt;
[[Категория:Скрипты]]&lt;/div&gt;</summary>
		<author><name>91.218.192.254</name></author>	</entry>

	<entry>
		<id>http://stalkerin.gameru.net/wiki/index.php?title=SoC._%D0%A1%D0%BE%D0%B7%D0%B4%D0%B0%D0%BD%D0%B8%D0%B5_%D0%BA%D0%B2%D0%B5%D1%81%D1%82%D0%B0_%D0%BD%D0%B0_%D1%83%D0%B1%D0%B8%D0%B9%D1%81%D1%82%D0%B2%D0%BE_NPC</id>
		<title>SoC. Создание квеста на убийство NPC</title>
		<link rel="alternate" type="text/html" href="http://stalkerin.gameru.net/wiki/index.php?title=SoC._%D0%A1%D0%BE%D0%B7%D0%B4%D0%B0%D0%BD%D0%B8%D0%B5_%D0%BA%D0%B2%D0%B5%D1%81%D1%82%D0%B0_%D0%BD%D0%B0_%D1%83%D0%B1%D0%B8%D0%B9%D1%81%D1%82%D0%B2%D0%BE_NPC"/>
				<updated>2013-07-26T21:44:57Z</updated>
		
		<summary type="html">&lt;p&gt;91.218.192.254: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Категория:Скрипты]]Здравствуйте. В этом уроке я напишу о том, как создать несложный квест на убийство сталкера. &amp;lt;b&amp;gt;ВО ВСЕХ СЕКЦИЯХ, КОТОРЫЕ ВЫ ВСТАВЛЯЛИ В ФАЙЛЫ, УДАЛЯЙТЕ ПОЯСНЕНИЯ С ТОЧКОЙ-ЗАПЯТОЙ.&amp;lt;/b&amp;gt; Итак, начнём.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;Потребуются следующие файлы:&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;b&amp;gt;character_desc_escape.xml&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;b&amp;gt;npc_profile.xml&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;b&amp;gt;all.spawn&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;b&amp;gt;tasks_escape.xml&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;b&amp;gt;game_story_ids.ltx&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;b&amp;gt;dialogs_escape.xml&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;b&amp;gt;info_l01escape.xml&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;b&amp;gt;stable_bio_name.xml&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;b&amp;gt;stable_dialogs_escape.xml&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
== Создание персонажа ==&lt;br /&gt;
&amp;lt;br&amp;gt;На примере я решил создать персонажа, которого нам надо убить на локации Кордон. Открываем файл &amp;lt;b&amp;gt;character_desc_escape.xml&amp;lt;/b&amp;gt; из папки &amp;lt;i&amp;gt;config/gameplay&amp;lt;/i&amp;gt;.&lt;br /&gt;
&amp;lt;br&amp;gt;Создаём там секцию нашего персонажа, написав это:&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;xml&amp;gt;&amp;lt;specific_character id=&amp;quot;esc_danila&amp;quot; team_default = &amp;quot;1&amp;quot;&amp;gt; ; имя профиля нашего НПС&lt;br /&gt;
		&amp;lt;name&amp;gt;Данила&amp;lt;/name&amp;gt; ; само имя персонажа&lt;br /&gt;
		&amp;lt;icon&amp;gt;ui_npc_u_green_stalker_2&amp;lt;/icon&amp;gt;&lt;br /&gt;
		&amp;lt;bio&amp;gt;esc_captain_bio&amp;lt;/bio&amp;gt;&lt;br /&gt;
&lt;br /&gt;
		&amp;lt;class&amp;gt;esc_danila&amp;lt;/class&amp;gt; ; класс должен быть всегда тот же, как и имя профиля&lt;br /&gt;
		&amp;lt;community&amp;gt;stalker&amp;lt;/community&amp;gt; &amp;lt;terrain_sect&amp;gt;stalker_terrain&amp;lt;/terrain_sect&amp;gt;&lt;br /&gt;
		&lt;br /&gt;
		&amp;lt;rank&amp;gt;906&amp;lt;/rank&amp;gt;&lt;br /&gt;
		&amp;lt;reputation&amp;gt;20&amp;lt;/reputation&amp;gt;&lt;br /&gt;
		&lt;br /&gt;
		&amp;lt;snd_config&amp;gt;characters_voice\human_01\stalker\&amp;lt;/snd_config&amp;gt;&lt;br /&gt;
		&amp;lt;crouch_type&amp;gt;0&amp;lt;/crouch_type&amp;gt;&lt;br /&gt;
&lt;br /&gt;
		&amp;lt;visual&amp;gt;actors\novice\green_stalker_1&amp;lt;/visual&amp;gt;		&lt;br /&gt;
		&amp;lt;supplies&amp;gt;&lt;br /&gt;
			[spawn] \n&lt;br /&gt;
			wpn_mp5 \n&lt;br /&gt;
			ammo_9x19_fmj = 1 \n&lt;br /&gt;
#include &amp;quot;gameplay\character_food.xml&amp;quot;&lt;br /&gt;
		&amp;lt;/supplies&amp;gt;&lt;br /&gt;
		&lt;br /&gt;
#include &amp;quot;gameplay\character_criticals_5.xml&amp;quot;&lt;br /&gt;
#include &amp;quot;gameplay\character_dialogs.xml&amp;quot;		&lt;br /&gt;
		&amp;lt;start_dialog&amp;gt;hello_dialog&amp;lt;/start_dialog&amp;gt;&lt;br /&gt;
	&amp;lt;/specific_character&amp;gt;&amp;lt;/xml&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;Думаю тут всё ясно.&lt;br /&gt;
&amp;lt;br&amp;gt;Так же после строчки &amp;lt;i&amp;gt;&amp;lt;actor_dialog&amp;gt;tm_wolf_reward&amp;lt;/actor_dialog&amp;gt;&amp;lt;/i&amp;gt; в секции профиля Волка снизу пишем &amp;lt;i&amp;gt;&amp;lt;actor_dialog&amp;gt;esc_kill_danila_dialog&amp;lt;/actor_dialog&amp;gt;&amp;lt;/i&amp;gt;. Этим мы добавили Волку диалог, после которого выдастся квест.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;Открываем &amp;lt;b&amp;gt;npc_profile&amp;lt;/b&amp;gt; из той же папки пишем в конце:&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;xml&amp;gt;&amp;lt;character id=&amp;quot;esc_danila&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;class&amp;gt;esc_danila&amp;lt;/class&amp;gt; ; имя профиля&lt;br /&gt;
      &amp;lt;specific_character&amp;gt;esc_danila&amp;lt;/specific_character&amp;gt; ;имя профиля&lt;br /&gt;
   &amp;lt;/character&amp;gt;&amp;lt;/xml&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Спавним персонажа на локации ==&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;Распаковываем &amp;lt;b&amp;gt;all.spawn&amp;lt;/b&amp;gt; из папки &amp;lt;i&amp;gt;spawns&amp;lt;/i&amp;gt;. Думаю, вы знаете как, если что, качаем ACDC для Тень Чернобыля, кидаем файлы, которые скачали в папку &amp;lt;i&amp;gt;spawns&amp;lt;/i&amp;gt;. Декомпилируем &amp;lt;b&amp;gt;all.spawn&amp;lt;/b&amp;gt;. Надеюсь, вы поймёте. После этого у вас появятся множество файлов. В нашем случае открываем файл &amp;lt;b&amp;gt;alife_l01_escape.ltx&amp;lt;/b&amp;gt; и вставляем следующее:&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;ini&amp;gt;[20000] ; уникальный номер секции&lt;br /&gt;
; cse_abstract properties&lt;br /&gt;
section_name = stalker&lt;br /&gt;
name = esc_danila ; имя нашего персонажа&lt;br /&gt;
position = -81.8000030517578,-4.98000001907349,-72.7399978637695 ; координаты спавна нашего персонажа&lt;br /&gt;
direction = 0.00115116173401475,-5.07207296323031e-005,0.0440320037305355&lt;br /&gt;
&lt;br /&gt;
; cse_alife_trader_abstract properties&lt;br /&gt;
money = 5000&lt;br /&gt;
character_profile = esc_danila ; профиль нашего персонажа, созданного в character_desc_escape&lt;br /&gt;
&lt;br /&gt;
; cse_alife_object properties&lt;br /&gt;
game_vertex_id = 76 &lt;br /&gt;
distance = 9.09999942779541&lt;br /&gt;
level_vertex_id = 186578&lt;br /&gt;
object_flags = 0xffffffbb&lt;br /&gt;
custom_data = &amp;lt;&amp;lt;END&lt;br /&gt;
[spawner]&lt;br /&gt;
cond = {+esc_kill_danila_quest_started} ; условие спавна НПС. Должна выдастся эта инфопорция.&lt;br /&gt;
&lt;br /&gt;
[logic] &lt;br /&gt;
active = walker&lt;br /&gt;
on_death = death ; позволяет установить схему настройки смерти НПС.&lt;br /&gt;
&lt;br /&gt;
[death]&lt;br /&gt;
on_info = %+esc_danila_dead% ; при смерти НПС выдаём инфопорцию.&lt;br /&gt;
[walker]&lt;br /&gt;
path_walk = esc_danila_walk ; имя точки пути нашего персонажа &lt;br /&gt;
path_look = esc_danila_look ; имя точки , куда наш персонаж будет смотреть&lt;br /&gt;
END&lt;br /&gt;
story_id = 20000 ; стори ид, понадобится для квеста&lt;br /&gt;
&lt;br /&gt;
; cse_visual properties&lt;br /&gt;
visual_name = actors\soldier\soldier_beret_1&lt;br /&gt;
&lt;br /&gt;
; cse_alife_creature_abstract properties&lt;br /&gt;
g_team = 0&lt;br /&gt;
g_squad = 1&lt;br /&gt;
g_group = 1&lt;br /&gt;
health = 1&lt;br /&gt;
dynamic_out_restrictions = &lt;br /&gt;
dynamic_in_restrictions = &lt;br /&gt;
&lt;br /&gt;
upd:health = 1&lt;br /&gt;
upd:timestamp = 0x75646f6d&lt;br /&gt;
upd:creature_flags = 0x6c&lt;br /&gt;
upd:position = -81.8000030517578,-4.98000001907349,-72.7399978637695 ; тоже координаты, обязательно писать и тут их&lt;br /&gt;
upd:o_model = 0&lt;br /&gt;
upd:o_torso = -5.07207296323031e-005,0.00115116173401475,0&lt;br /&gt;
upd:g_team = 0&lt;br /&gt;
upd:g_squad = 1&lt;br /&gt;
upd:g_group = 1&lt;br /&gt;
&lt;br /&gt;
; cse_alife_monster_abstract properties&lt;br /&gt;
&lt;br /&gt;
upd:next_game_vertex_id = 65535&lt;br /&gt;
upd:prev_game_vertex_id = 65535&lt;br /&gt;
upd:distance_from_point = 0&lt;br /&gt;
upd:distance_to_point = 0&lt;br /&gt;
&lt;br /&gt;
; cse_alife_human_abstract properties&lt;br /&gt;
predicate5 = 0,1,1,1,2&lt;br /&gt;
predicate4 = 2,0,1,0&lt;br /&gt;
&lt;br /&gt;
; cse_ph_skeleton properties&lt;br /&gt;
&lt;br /&gt;
upd:start_dialog = &lt;br /&gt;
&lt;br /&gt;
; se_stalker properties&amp;lt;/ini&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;Осталось прописать путь нашему персонажу. Дадим ему одну точку, чтобы он не уходил далеко, и вы не искали его на локации. Для этого в этой же папке открываем файл &amp;lt;b&amp;gt;way_l01_escape.ltx&amp;lt;/b&amp;gt;. Пишем туда в конец:&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;ini&amp;gt;[esc_danila_walk]&lt;br /&gt;
points = p0&lt;br /&gt;
p0:name = wp00&lt;br /&gt;
p0:flags = 0x1&lt;br /&gt;
p0:position = -81.8000030517578,-4.98000001907349,-72.7399978637695&lt;br /&gt;
p0:game_vertex_id = 76&lt;br /&gt;
p0:level_vertex_id = 186578&lt;br /&gt;
&lt;br /&gt;
[esc_danila_look]&lt;br /&gt;
points = p0&lt;br /&gt;
p0:name = wp00&lt;br /&gt;
p0:flags = 0x1&lt;br /&gt;
p0:position = -79.6699981689453,-5.05999994277954,-72.8099975585938&lt;br /&gt;
p0:game_vertex_id = 76&lt;br /&gt;
p0:level_vertex_id = 188614&amp;lt;/ini&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;Готово, только обязательно компилируем новый &amp;lt;b&amp;gt;all.spawn&amp;lt;/b&amp;gt;. Теперь наш персонаж будет стоять в вагоне, где лежал раненый Толик.&lt;br /&gt;
&lt;br /&gt;
== Создание квеста ==&lt;br /&gt;
&amp;lt;br&amp;gt;Открываем файл &amp;lt;b&amp;gt;tasks_escape.xml&amp;lt;/b&amp;gt; из &amp;lt;i&amp;gt;config/gameplay&amp;lt;/i&amp;gt; и добавляем секцию нашего квеста:&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;xml&amp;gt;	&amp;lt;game_task id=&amp;quot;esc_kill_danila_quest&amp;quot;&amp;gt; ; имя квеста&lt;br /&gt;
        	&amp;lt;title&amp;gt;Убить предателя&amp;lt;/title&amp;gt;&lt;br /&gt;
        	&amp;lt;objective&amp;gt;&lt;br /&gt;
            		&amp;lt;text&amp;gt;Убить предателя&amp;lt;/text&amp;gt;&lt;br /&gt;
            		&amp;lt;icon&amp;gt;ui_iconsTotal_esc_dinamit_to_volk&amp;lt;/icon&amp;gt;&lt;br /&gt;
            		&amp;lt;infoportion_complete&amp;gt;esc_danila_dead&amp;lt;/infoportion_complete&amp;gt; ; указываем инфопорцию, при которой выполнится квест. 	&lt;br /&gt;
		&amp;lt;/objective&amp;gt;&lt;br /&gt;
                &amp;lt;objective&amp;gt;&lt;br /&gt;
            		&amp;lt;text&amp;gt;Убить Данилу&amp;lt;/text&amp;gt; &lt;br /&gt;
            		&amp;lt;map_location_type hint=&amp;quot;esc_danila&amp;quot;&amp;gt;blue_location&amp;lt;/map_location_type&amp;gt; ; имя отметки нашего НПС на карте&lt;br /&gt;
            		&amp;lt;object_story_id&amp;gt;esc_danila&amp;lt;/object_story_id&amp;gt; ; отметка нашего НПС на карте&lt;br /&gt;
                        &amp;lt;infoportion_complete&amp;gt;esc_danila_dead&amp;lt;/infoportion_complete&amp;gt; ; указываем инфопорцию, при которой выполнится квест. &lt;br /&gt;
        	&amp;lt;/objective&amp;gt;&lt;br /&gt;
        &amp;lt;/game_task&amp;gt;&amp;lt;/xml&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Создание диалога ==&lt;br /&gt;
&amp;lt;br&amp;gt;Создадим диалог с Волком, после которого выдастся квест. Открываем &amp;lt;b&amp;gt;dialogs_escape.xml&amp;lt;/b&amp;gt; из той же папки, пишем снизу:&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;xml&amp;gt;&amp;lt;dialog id=&amp;quot;esc_kill_danila_dialog&amp;quot;&amp;gt; ; имя диалога&lt;br /&gt;
	&amp;lt;dont_has_info&amp;gt;esc_kill_danila_quest_started&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;esc_danila_dialog_1&amp;lt;/text&amp;gt;&lt;br /&gt;
			&amp;lt;next&amp;gt;1&amp;lt;/next&amp;gt;&lt;br /&gt;
		&amp;lt;/phrase&amp;gt;&lt;br /&gt;
        &amp;lt;phrase id=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;text&amp;gt;esc_danila_dialog_2&amp;lt;/text&amp;gt;&lt;br /&gt;
			&amp;lt;next&amp;gt;2&amp;lt;/next&amp;gt;&lt;br /&gt;
		&amp;lt;/phrase&amp;gt;&lt;br /&gt;
		&amp;lt;phrase id=&amp;quot;2&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;text&amp;gt;esc_danila_dialog_3&amp;lt;/text&amp;gt;&lt;br /&gt;
			 &amp;lt;give_info&amp;gt;esc_kill_danila_quest_started&amp;lt;/give_info&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;/xml&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Регистрация текста ==&lt;br /&gt;
&lt;br /&gt;
Открываем файл &amp;lt;b&amp;gt;stable_dialogs_escape.xml&amp;lt;/b&amp;gt; и пишем следующее: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;xml&amp;gt;&amp;lt;string id=&amp;quot;esc_danila_dialog_1&amp;quot;&amp;gt; &lt;br /&gt;
&amp;lt;text&amp;gt;Есть дополнительная работа?&amp;lt;/text&amp;gt; &lt;br /&gt;
&amp;lt;/string&amp;gt; &lt;br /&gt;
&amp;lt;string id=&amp;quot;esc_danila_dialog_2&amp;quot;&amp;gt; &lt;br /&gt;
&amp;lt;text&amp;gt;Да, предатель появился у нас, Данилой кличут. Убей его, координаты на него я тебе скину.&amp;lt;/text&amp;gt; &lt;br /&gt;
&amp;lt;/string&amp;gt; &lt;br /&gt;
&amp;lt;string id=&amp;quot;esc_danila_dialog_3&amp;quot;&amp;gt; &lt;br /&gt;
&amp;lt;text&amp;gt;Хорошо&amp;lt;/text&amp;gt; &lt;br /&gt;
&amp;lt;/string&amp;gt;&amp;lt;/br&amp;gt;&amp;lt;/xml&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Готово, теперь диалог полностью готов. &lt;br /&gt;
&lt;br /&gt;
== Создадим инфопоршни ==&lt;br /&gt;
&amp;lt;br&amp;gt;Открываем файл &amp;lt;b&amp;gt;info_l01_escape.xml&amp;lt;/b&amp;gt; и всё той же папки добавляем следующее:&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;xml&amp;gt; &amp;lt;info_portion id=&amp;quot;esc_kill_danila_quest_started&amp;quot;&amp;gt; ; инфопорция, дающая начало квеста&lt;br /&gt;
             &amp;lt;task&amp;gt;esc_kill_danila_quest&amp;lt;/task&amp;gt; ; название квеста&lt;br /&gt;
        &amp;lt;/info_portion&amp;gt;&lt;br /&gt;
 &amp;lt;info_portion id=&amp;quot;esc_danila_dead&amp;quot;&amp;gt;&amp;lt;/info_portion&amp;gt; ; инфопорция смерти нашего НПС, который позволяет завершить квеста. Ранее мы его добавили в логику, в раздел смерти нашего персонажа.&amp;lt;/xml&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Создаём отметку нашего NPC на карте.  ==&lt;br /&gt;
&amp;lt;br&amp;gt;Открываем файл &amp;lt;b&amp;gt;stable_bio_name.xml&amp;lt;/b&amp;gt; из папки &amp;lt;i&amp;gt;config/text/rus&amp;lt;/i&amp;gt;, пишем там в конце:&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;xml&amp;gt;&amp;lt;string id=&amp;quot;esc_danila&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;text&amp;gt;Данила&amp;lt;/text&amp;gt;&lt;br /&gt;
	&amp;lt;/string&amp;gt;&amp;lt;/xml&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;Создадим Game Story Id, чтобы НПС наш отображался на карте. Для этого открываем файл &amp;lt;b&amp;gt;game_story_ids&amp;lt;/b&amp;gt; из папки &amp;lt;i&amp;gt;config&amp;lt;/i&amp;gt; и пишем в конце:&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;pre&amp;gt;20000 = &amp;quot;esc_danila&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;Ну вот собственно и всё. Вроде написал всё, что надо. Автор &amp;lt;b&amp;gt;LaRento&amp;lt;/b&amp;gt;. Буду постепенно заливать туторы по созданию разных типов квестов. Всем пока, удачи)&lt;/div&gt;</summary>
		<author><name>91.218.192.254</name></author>	</entry>

	<entry>
		<id>http://stalkerin.gameru.net/wiki/index.php?title=SoC._%D0%A1%D0%BF%D0%B0%D0%B2%D0%BD_%D1%82%D0%B5%D0%BB%D0%B5%D0%BF%D0%BE%D1%80%D1%82%D0%BE%D0%B2_%D1%87%D0%B5%D1%80%D0%B5%D0%B7_%D1%81%D0%BA%D1%80%D0%B8%D0%BF%D1%82</id>
		<title>SoC. Спавн телепортов через скрипт</title>
		<link rel="alternate" type="text/html" href="http://stalkerin.gameru.net/wiki/index.php?title=SoC._%D0%A1%D0%BF%D0%B0%D0%B2%D0%BD_%D1%82%D0%B5%D0%BB%D0%B5%D0%BF%D0%BE%D1%80%D1%82%D0%BE%D0%B2_%D1%87%D0%B5%D1%80%D0%B5%D0%B7_%D1%81%D0%BA%D1%80%D0%B8%D0%BF%D1%82"/>
				<updated>2013-07-26T21:41:48Z</updated>
		
		<summary type="html">&lt;p&gt;91.218.192.254: оформление&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Создаем телепорт==&lt;br /&gt;
===Теория этого дела===&lt;br /&gt;
&lt;br /&gt;
В игре существует такой объект как &amp;quot;zone_teleport&amp;quot;, но если мы его создадим через create, то он будет выглядеть и переливаться как настоящий телепорт, но телепортировать нас куда-либо увы не сможет. Связано это с тем что, у аномалий ( а телепорт это такая разновидность аномалии ) параметры задаются хитромудро, через all.spawn. Вобщем штатным способом телепорты без полнофункционального редактора карт не получить (хотя возможно я не прав уже после написания этого текста появились идеи как это сделать через '''all.spawn'''). Значит на нашу долю остаються способы &amp;quot;не штатные&amp;quot; ;) Реализуем самый простой. Будем считать что у нас на карте есть квадрат с заданными координатами при попадании в который актера должно переместить в точку с другими координатами. Для этого будем периодически проверять координаты актера, и если он в квадрате - перемещяем. Вот в краце принцип действия нашего &amp;quot;самодельного&amp;quot; телепорта.&lt;br /&gt;
&lt;br /&gt;
===Реализация===&lt;br /&gt;
&lt;br /&gt;
В каталоге ''gamedata\scripts\'' Создадим файл '''bind_mteleport.script''' с логикой работы нашего телепорта.&lt;br /&gt;
&amp;lt;lua&amp;gt;&lt;br /&gt;
-- ************************************************&lt;br /&gt;
-- **                    Imp                     **&lt;br /&gt;
-- **       Биндер самодельных телепортов        **&lt;br /&gt;
-- ** Поддерживает работу самопальных телепортов **&lt;br /&gt;
-- ************************************************&lt;br /&gt;
&lt;br /&gt;
local teleport_binders ={}	-- Список телепортов&lt;br /&gt;
&lt;br /&gt;
function abs_comp(a,b)&lt;br /&gt;
	-- Служебная функция вычисления разности&lt;br /&gt;
	if( a &amp;lt; b) then&lt;br /&gt;
		return (b - a)&lt;br /&gt;
	else&lt;br /&gt;
		return (a - b)&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function teleportate(x,y,z)&lt;br /&gt;
-- Функция телепортации&lt;br /&gt;
	local a = vector()&lt;br /&gt;
	-- Задаем координаты&lt;br /&gt;
	a.x = x&lt;br /&gt;
	a.y = y&lt;br /&gt;
	a.z = z&lt;br /&gt;
&lt;br /&gt;
	-- Сама телепортация&lt;br /&gt;
	db.actor:set_actor_position(a)&lt;br /&gt;
&lt;br /&gt;
	-- Звуковое сопровождение&lt;br /&gt;
	local snd_obj = xr_sound.get_safe_sound_object([[affects\tinnitus3a]])&lt;br /&gt;
	snd_obj:play_no_feedback(db.actor, sound_object.s2d, 0, vector(), 1.0)&lt;br /&gt;
&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
function actor_update(delta)&lt;br /&gt;
	local i,v,acter_poz,s&lt;br /&gt;
&lt;br /&gt;
	-- Получим позицию актера (что-бы каждый раз не запрашивать)&lt;br /&gt;
	acter_poz = db.actor:position()&lt;br /&gt;
&lt;br /&gt;
	-- Проверяем наши телепорты&lt;br /&gt;
	for i, v in pairs(teleport_binders) do&lt;br /&gt;
		s = v.parametrs&lt;br /&gt;
&lt;br /&gt;
		local obj = level.object_by_id( i )&lt;br /&gt;
		if obj ~= nil then&lt;br /&gt;
		-- Наш телепорт в онлайне проверяем дальше&lt;br /&gt;
			if s.teleporte ~= nil and s.teleporte ~= false then&lt;br /&gt;
				-- Телепорт запущен&lt;br /&gt;
				if ( time_global() &amp;lt;= s.time ) then&lt;br /&gt;
					-- Если время отведенное на показ спецэфектов&lt;br /&gt;
					-- прошло, производим телепортацию&lt;br /&gt;
					teleportate(s.poz_x,s.poz_y,s.poz_z)&lt;br /&gt;
					if s.rotate ~= nil then&lt;br /&gt;
						db.actor:set_actor_direction(s.rotate)&lt;br /&gt;
					end&lt;br /&gt;
					s.teleporte = false&lt;br /&gt;
				end&lt;br /&gt;
				return&lt;br /&gt;
			end&lt;br /&gt;
&lt;br /&gt;
			-- Пороверим не забрел-ли актер в наш телепорт&lt;br /&gt;
			if (abs_comp(s.x, acter_poz.x)&amp;lt; v.parametrs.radius  and&lt;br /&gt;
			    abs_comp(s.z, acter_poz.z)&amp;lt; v.parametrs.radius  and&lt;br /&gt;
			    abs_comp(s.y, acter_poz.y)&amp;lt; v.parametrs.z_radius) then&lt;br /&gt;
				-- Актер в зоне действия телепорта, запустим телепорт&lt;br /&gt;
				s[&amp;quot;teleporte&amp;quot;] = true&lt;br /&gt;
				s[&amp;quot;time&amp;quot;] = time_global() + 500&lt;br /&gt;
&lt;br /&gt;
				-- Запускаем спецэфекты телепортации&lt;br /&gt;
				level.add_pp_effector (&amp;quot;teleport.ppe&amp;quot;, 2006, false)&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function bind( obj )&lt;br /&gt;
	obj:bind_object( restrictor_teleport( obj ) ) &lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
----------------------------------------------------------------------------------------------------&lt;br /&gt;
class &amp;quot;restrictor_teleport&amp;quot; ( object_binder )&lt;br /&gt;
&lt;br /&gt;
function restrictor_teleport:__init(obj, char_ini) super(obj)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function restrictor_teleport:net_spawn(data)&lt;br /&gt;
	local char_ini = system_ini()&lt;br /&gt;
&lt;br /&gt;
	-- Если это телепорт то занесем его в специальный список телепортов&lt;br /&gt;
	if self.teleport == true then&lt;br /&gt;
		teleport_binders[self.object:id()] = self&lt;br /&gt;
&lt;br /&gt;
		-- Заполним таблицу параметров&lt;br /&gt;
		self[&amp;quot;parametrs&amp;quot;] = {}&lt;br /&gt;
		if char_ini:line_exist(self.section, &amp;quot;radius&amp;quot;) then&lt;br /&gt;
			self.parametrs[&amp;quot;radius&amp;quot;] = tonumber(char_ini:r_string(self.section, &amp;quot;radius&amp;quot;))&lt;br /&gt;
		else&lt;br /&gt;
			self.parametrs[&amp;quot;radius&amp;quot;] = 2 -- Дефолтный радиус по xy&lt;br /&gt;
		end&lt;br /&gt;
		if char_ini:line_exist(self.section, &amp;quot;z_radius&amp;quot;) then&lt;br /&gt;
			self.parametrs[&amp;quot;z_radius&amp;quot;] = tonumber(char_ini:r_string(self.section, &amp;quot;z_radius&amp;quot;))&lt;br /&gt;
		else&lt;br /&gt;
			self.parametrs[&amp;quot;z_radius&amp;quot;] = self.parametrs[&amp;quot;radius&amp;quot;] -- если радиус высоты не задан то задаем равным радиусу xy&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		-- Запомним позицию что-бы каждый раз не считать&lt;br /&gt;
		local s_obj = alife():object(self.object:id())&lt;br /&gt;
		self.parametrs[&amp;quot;x&amp;quot;] = tonumber(s_obj.position.x);&lt;br /&gt;
		self.parametrs[&amp;quot;y&amp;quot;] = tonumber(s_obj.position.y);&lt;br /&gt;
		self.parametrs[&amp;quot;z&amp;quot;] = tonumber(s_obj.position.z);&lt;br /&gt;
&lt;br /&gt;
		-- Запомним координаты куда телепортимся&lt;br /&gt;
		self.parametrs[&amp;quot;poz_x&amp;quot;] = tonumber(char_ini:r_string(self.section, &amp;quot;poz_x&amp;quot;))&lt;br /&gt;
		self.parametrs[&amp;quot;poz_y&amp;quot;] = tonumber(char_ini:r_string(self.section, &amp;quot;poz_y&amp;quot;))&lt;br /&gt;
		self.parametrs[&amp;quot;poz_z&amp;quot;] = tonumber(char_ini:r_string(self.section, &amp;quot;poz_z&amp;quot;))&lt;br /&gt;
&lt;br /&gt;
		if char_ini:line_exist(self.section, &amp;quot;rotate&amp;quot;) then&lt;br /&gt;
			self.parametrs[&amp;quot;rotate&amp;quot;] = tonumber(char_ini:r_string(self.section, &amp;quot;rotate&amp;quot;))&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return true&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function restrictor_teleport:net_destroy()&lt;br /&gt;
	-- Удаляем наш телепорт&lt;br /&gt;
	teleport_binders[self.object:id()] = nil&lt;br /&gt;
	self.parametrs = nil&lt;br /&gt;
	object_binder.net_destroy(self)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function restrictor_teleport:reload(section)&lt;br /&gt;
	local char_ini = system_ini()&lt;br /&gt;
&lt;br /&gt;
	self.section = section&lt;br /&gt;
	-- Если это телепорт то &lt;br /&gt;
	if char_ini ~= nil and char_ini:line_exist(self.section, &amp;quot;teleport&amp;quot;) then&lt;br /&gt;
		self[&amp;quot;teleport&amp;quot;] = true&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/lua&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Для постоянного обновления нужно прицепить функцию actor_update() к биндеру актера, для чего в файле '''bind_stalker.script''' найдем функцию:&lt;br /&gt;
&lt;br /&gt;
''function actor_binder:update(delta)''&lt;br /&gt;
&lt;br /&gt;
В ней найдем вызов обновления рестрикторов&lt;br /&gt;
		''bind_restrictor.actor_update(delta)''&lt;br /&gt;
под которым вставим строку с вызовом нашей функции обновления:&lt;br /&gt;
		''bind_mteleport.actor_update(delta)''&lt;br /&gt;
&lt;br /&gt;
Все с программной частью закончили, теперь задаем данные телепорта.&lt;br /&gt;
&lt;br /&gt;
В каталоге ''gamedata\config\misc'' открываем файл '''zone_teleport.ltx''' и в конце файла добавляем следующие строки описывающие конкретный телепорт:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ini&amp;gt;[m_teleport_1]:zone_teleport&lt;br /&gt;
teleport			= standart&lt;br /&gt;
script_binding          	= bind_mteleport.bind&lt;br /&gt;
;Параметры нашего телепорта&lt;br /&gt;
radius				= 2&lt;br /&gt;
;Высота захвата телепорта&lt;br /&gt;
z_radius			= 2&lt;br /&gt;
&lt;br /&gt;
;Куда телепортируемся (телепортация всегда идет в пределах карты)&lt;br /&gt;
poz_x				= 22.78&lt;br /&gt;
poz_y				= 20.35&lt;br /&gt;
poz_z				= 659.24&lt;br /&gt;
&lt;br /&gt;
; Угол зрения при появлении. Если параметра нет то не меняется.&lt;br /&gt;
rotate = 1.5&amp;lt;/ini&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Параметры нашего телепорта:&lt;br /&gt;
&lt;br /&gt;
* radius - на самом деле не радиус, а половина длинны стороны нашего квадрата (в начале я хотел сделать его кругом, но посчитал, что лучше не тратить процессорное врямя по пусту). Центром квадрата является точка респавна телепорта.&lt;br /&gt;
&lt;br /&gt;
* z_radius - высота нашего телепорта.&lt;br /&gt;
&lt;br /&gt;
* poz_x, poz_y, poz_z - координаты точки телепортации.&lt;br /&gt;
&lt;br /&gt;
* rotate - Угол поворота после телепортации от оси X (я не разбирался в каких единицах задается, но 1.5 примерно равно 90 градусов). Если параметр удалить то будет оставатья угол под которым актер вошел в телепорт.&lt;br /&gt;
&lt;br /&gt;
=== Использование ===&lt;br /&gt;
Теперь с помощью create создадим наш телепорт:&lt;br /&gt;
Пример:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lua&amp;gt;	local obj&lt;br /&gt;
	local a = vector()&lt;br /&gt;
	a.x = -244.55&lt;br /&gt;
	a.y = -19.46&lt;br /&gt;
	a.z = -125.42&lt;br /&gt;
	obj = alife():create(&amp;quot;m_teleport_1&amp;quot;,a,12829,8,65535)&amp;lt;/lua&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Создаст телепорт возле выхода из бункера Сидоровича.&lt;br /&gt;
Наш телепорт перебрасывает игрока на вышку блокпоста (перед выходом с уровня).&lt;br /&gt;
&lt;br /&gt;
Все! Вот [http://www.imp.webhost.ru/stalker/ тут] вы можете взять готовый мод с двумя телепортами.&lt;br /&gt;
&lt;br /&gt;
==Авторы==&lt;br /&gt;
&lt;br /&gt;
Статья создана:&lt;br /&gt;
&lt;br /&gt;
* [[Участник:Imp|Imp]]&lt;br /&gt;
&lt;br /&gt;
[[Категория:Скрипты]]&lt;/div&gt;</summary>
		<author><name>91.218.192.254</name></author>	</entry>

	<entry>
		<id>http://stalkerin.gameru.net/wiki/index.php?title=SoC._%D0%94%D0%BE%D0%B1%D0%B0%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5_%D0%B1%D1%80%D0%BE%D0%BD%D0%B8</id>
		<title>SoC. Добавление брони</title>
		<link rel="alternate" type="text/html" href="http://stalkerin.gameru.net/wiki/index.php?title=SoC._%D0%94%D0%BE%D0%B1%D0%B0%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5_%D0%B1%D1%80%D0%BE%D0%BD%D0%B8"/>
				<updated>2013-07-26T07:02:21Z</updated>
		
		<summary type="html">&lt;p&gt;91.218.192.254: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;В данном примере мы будем добавлять новый костюм со 100% защитой от всего =D&amp;lt;br /&amp;gt;&lt;br /&gt;
Совершенно новый костюм добавлять не будем, возьмём за основу существующий костюм сталкера.&amp;lt;br /&amp;gt;&lt;br /&gt;
Нам понадобится любой текстовый редактор ([http://notepad-plus.sourceforge.net/ru/site.htm Notepad++], Блокнот, WordPad или что там у Вас),&amp;lt;br /&amp;gt;&lt;br /&gt;
Фотошоп + [http://www.nvidia.ru/object/photoshop_dds_plugins.html dds плагин] (для работы с текстурами и иконками) и файлы игры:&lt;br /&gt;
&lt;br /&gt;
'''gamedata\config\misc\outfit.ltx'''    — здесь добавим наш костюм и его хар-ки &lt;br /&gt;
&lt;br /&gt;
'''gamedata\config\misc\trader_trader.ltx'''    — здесь выдадим его торговцу на продажу &lt;br /&gt;
&lt;br /&gt;
'''gamedata\config\text\rus\string_table_outfit.xml'''    — здесь впишем название и описание костюма в игре&lt;br /&gt;
&lt;br /&gt;
Итак, по порядку. Открываем при помощи текстового редактора файл outfit.ltx.&amp;lt;br /&amp;gt;&lt;br /&gt;
Берём любой костюм, копируем всю его секцию и вставляем, например, в конец файла.&lt;br /&gt;
Вот теперь и приступим:&lt;br /&gt;
&amp;lt;ini&amp;gt;;---------------------------------------------------------------------------------------------&lt;br /&gt;
;		КОСТЮМ ЧАКА НОРРИСА&lt;br /&gt;
;---------------------------------------------------------------------------------------------&lt;br /&gt;
[chuck_norris_outfit]:outfit_base    ; имя секции нашей брони&lt;br /&gt;
GroupControlSection	= spawn_group&lt;br /&gt;
discovery_dependency =&lt;br /&gt;
$spawn 		= &amp;quot;outfit\chuck_norris_outfit&amp;quot;&lt;br /&gt;
;$prefetch 	= 32&lt;br /&gt;
class		= E_STLK&lt;br /&gt;
cform           = skeleton&lt;br /&gt;
visual          = equipments\novice_suit      ; модель костюма, лежащего на земле (обычно в папке gamedata\meshes\equipments)&lt;br /&gt;
actor_visual	= actors\hero\stalker_novice.ogf ; модель игрока, одетого в костюм (обычно в папке gamedata\meshes\actor\hero)&lt;br /&gt;
&lt;br /&gt;
ef_equipment_type = 3 ; предпочтительность одевания брони НПС (не используется)&lt;br /&gt;
&lt;br /&gt;
inv_name	  = chuck_norris_outfit ; ссылка на строку, содержащую название костюма в файле string_table_outfit.xml&lt;br /&gt;
inv_name_short    = chuck_norris_outfit ; ссылка на строку с названием костюма на земле&lt;br /&gt;
description       = chuck_norris_outfit_desc ; ссылка на строку  описанием костюма&lt;br /&gt;
inv_weight        = 2.0 ; вес костюма в кг&lt;br /&gt;
inv_grid_x        = 12 ; координата X левого верхнего угла иконки инвентаря из файла gamedata\textures\ui\ui_icon_equipment.dds&lt;br /&gt;
inv_grid_y        = 21 ; координата Y левого верхнего угла иконки инвентаря из файла gamedata\textures\ui\ui_icon_equipment.dds&lt;br /&gt;
inv_grid_width    = 2 ; размер иконки по оси X&lt;br /&gt;
inv_grid_height   = 2 ; размер иконки по оси Y&lt;br /&gt;
full_icon_name    = npc_icon_novice_outfit ; имя иконки&lt;br /&gt;
                                                 &lt;br /&gt;
cost		  = 100000 ; базовая цена костюма&lt;br /&gt;
slot		  = 6 ; слот, на который цепляем костюм (для брони всегда 6)&lt;br /&gt;
full_scale_icon   = 6,6 ; иконка игрока в полный рост в инвентаре (обычно из файла gamedata\textures\ui\ui_icons_***.dds)&lt;br /&gt;
nightvision_sect  = effector_nightvision_good ; тип ПНВ (смотрим секции [effector_nightvision_***]&lt;br /&gt;
                                              ; в файле gamedata\config\misc\postprocess.ltx)&lt;br /&gt;
                                              ; если ПНВ не нужно, то убираем/комментируем строчку&lt;br /&gt;
&lt;br /&gt;
sprint_allowed = true ; можно ли бегать в костюме (true) или нет (false)&lt;br /&gt;
bones_koeff_protection = exo_helmet_damage&lt;br /&gt;
additional_inventory_weight  = 1000 ; на сколько увеличится максимальный переносимый вес в кг&lt;br /&gt;
additional_inventory_weight2 = 1000 ; на сколько увеличится максимальный переносимый вес в кг&lt;br /&gt;
immunities_sect   = sect_chuck_norris_outfit_immunities ; ссылка на секцию износостойкости костюма (см.ниже)&lt;br /&gt;
&lt;br /&gt;
; показатели защиты игрока нашим костюмом (от 0 (это 0%) до 0.99 (это 100%))&lt;br /&gt;
burn_protection          = 0.99 ; ожог&lt;br /&gt;
strike_protection        = 0.99 ; удар&lt;br /&gt;
shock_protection         = 0.99 ; электрошок&lt;br /&gt;
wound_protection         = 0.99 ; разрыв&lt;br /&gt;
radiation_protection     = 0.99 ; радиация&lt;br /&gt;
telepatic_protection     = 0.99 ; телепатия&lt;br /&gt;
chemical_burn_protection = 0.99 ; химический ожог&lt;br /&gt;
explosion_protection     = 0.99 ; взрыв&lt;br /&gt;
fire_wound_protection    = 0.99 ; пулестойкость&lt;br /&gt;
&lt;br /&gt;
[sect_chuck_norris_outfit_immunities] ; секция износостойкости самого костюма&lt;br /&gt;
                                      ; от 0 (в огне не горит, в воде не тонет) до 1 (лучше на него даже не дышать)&lt;br /&gt;
burn_immunity		= 0.0&lt;br /&gt;
strike_immunity		= 0.0&lt;br /&gt;
shock_immunity		= 0.0&lt;br /&gt;
wound_immunity		= 0.0&lt;br /&gt;
radiation_immunity	= 0.0&lt;br /&gt;
telepatic_immunity	= 0.0&lt;br /&gt;
chemical_burn_immunity	= 0.0&lt;br /&gt;
explosion_immunity	= 0.0&lt;br /&gt;
fire_wound_immunity	= 0.0&amp;lt;/ini&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Далее откроем '''string_table_outfit.xml'''&amp;lt;br /&amp;gt;&lt;br /&gt;
И в конце, но ДО закрывающего тега '''&amp;lt;/string_table&amp;gt;''' допишем следующее:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;xml&amp;gt;&amp;lt;string id=&amp;quot;chuck_norris_outfit&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;text&amp;gt;Одёжка Чака Норриса&amp;lt;/text&amp;gt;&lt;br /&gt;
&amp;lt;/string&amp;gt;&lt;br /&gt;
&amp;lt;string id=&amp;quot;chuck_norris_outfit_desc&amp;quot;&amp;gt;&lt;br /&gt;
	&amp;lt;text&amp;gt;Бывшие портки Чака Норриса.\nТеперь победить вас может только сам Чак Норрис.&amp;lt;/text&amp;gt;&lt;br /&gt;
&amp;lt;/string&amp;gt;&amp;lt;/xml&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Далее открываем '''файл trader_trader.ltx''' - это файл конфигурации магазина Cидоровича.&amp;lt;br /&amp;gt;&lt;br /&gt;
Находим секцию '''[supplies_start]'''&amp;lt;br /&amp;gt;&lt;br /&gt;
Добавляем строчку chuck_norris_outfit	= 1,  1 (в запасах на начало игры появится 1 костюм с вероятностью 100%)&lt;br /&gt;
&lt;br /&gt;
Крутим вниз до '''[trader_start_sell]'''&amp;lt;br /&amp;gt;&lt;br /&gt;
Добавляем строчку chuck_norris_outfit	= 1,  1 (цена костюма будет ровно той, что прописана в конфиге)&lt;br /&gt;
&lt;br /&gt;
Если хотим свою иконку костюму, смотрим [http://stalkerin.gameru.net/wiki/index.php/%D0%98%D0%B7%D0%BC%D0%B5%D0%BD%D0%B5%D0%BD%D0%B8%D0%B5_%D1%82%D0%B5%D0%BA%D1%81%D1%82%D1%83%D1%80#.D0.98.D0.B7.D0.BC.D0.B5.D0.BD.D0.B5.D0.BD.D0.B8.D0.B5_.D0.B8.D0.BA.D0.BE.D0.BD.D0.BE.D0.BA_.D0.BF.D1.80.D0.B5.D0.B4.D0.BC.D0.B5.D1.82.D0.BE.D0.B2 тут].&lt;br /&gt;
&lt;br /&gt;
После всего этого кидаем всё по папочкам в gamedata и начинаем новую игру.&lt;br /&gt;
&lt;br /&gt;
[[Категория:Конфигурационные_файлы]]&lt;/div&gt;</summary>
		<author><name>91.218.192.254</name></author>	</entry>

	<entry>
		<id>http://stalkerin.gameru.net/wiki/index.php?title=%D0%9D%D0%BE%D0%B2%D1%8B%D0%B5_%D0%B4%D0%B5%D1%82%D0%B5%D0%BA%D1%82%D0%BE%D1%80%D1%8B</id>
		<title>Новые детекторы</title>
		<link rel="alternate" type="text/html" href="http://stalkerin.gameru.net/wiki/index.php?title=%D0%9D%D0%BE%D0%B2%D1%8B%D0%B5_%D0%B4%D0%B5%D1%82%D0%B5%D0%BA%D1%82%D0%BE%D1%80%D1%8B"/>
				<updated>2013-07-26T07:00:40Z</updated>
		
		<summary type="html">&lt;p&gt;91.218.192.254: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Вступление==&lt;br /&gt;
В этом уроке мы создадим новый детектор артефактов.&lt;br /&gt;
нужные файлы:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
gamedata\configs\misc\devices.ltx&lt;br /&gt;
gamedata\configs\gameplay\character_desc_general.xml&lt;br /&gt;
gamedata\configs\text\rus\st_items_equipment.xml&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;
gamedata\configs\misc\devices.ltx&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
В конце файла добавляем это:&lt;br /&gt;
&amp;lt;ini&amp;gt;&lt;br /&gt;
[detector_ваше_название_на_английском]:detector_advanced&lt;br /&gt;
$spawn 			= &amp;quot;devices\detector_ваше_название_на_английском&amp;quot; ;для левел эдитор&lt;br /&gt;
class			= DET_ELIT&lt;br /&gt;
visual			= dynamics\devices\dev_detector_3\dev_detector_3.ogf ;Ссылка на модель в данном случае в нас будет модель &amp;quot;велеса&amp;quot;&lt;br /&gt;
inv_name		= st_ваше_название_на_английском ;cсылка на название детектора в файле gamedata\configs\text\rus\st_items_equipment.xml&lt;br /&gt;
inv_name_short	= st_ваше_название_на_английском ;тоже самое что и inv_name должно быть одинаковым&lt;br /&gt;
description		= st_ваше_название_на_английском_descr ;опсание детектора в gamedata\configs\text\rus\st_items_equipment.xml&lt;br /&gt;
hud			= detector_ваше_название_на_английском_hud ; ссылка на худ детектора&lt;br /&gt;
&lt;br /&gt;
inv_grid_width		= 1 ;;;&lt;br /&gt;
inv_grid_height		= 1 ;;;;;;;;Иконка детектора&lt;br /&gt;
inv_grid_x		= 5 ;;;;;;;;в данном случае будет иконка велеса&lt;br /&gt;
inv_grid_y		= 14;;;&lt;br /&gt;
cost			= 2000&lt;br /&gt;
&lt;br /&gt;
; elite x=&amp;quot;0.00096&amp;quot; y=&amp;quot;0.0035&amp;quot;&lt;br /&gt;
ui_p			= -0.02904,0.01,0.0364&lt;br /&gt;
ui_r			= 0,90,0&lt;br /&gt;
&lt;br /&gt;
af_radius		= 30 ; наверное радиус на котором на экране детектора видно отметку артефакта&lt;br /&gt;
af_vis_radius		= 5  ; наверное радиус когда артефакт виден глазом ГГ&lt;br /&gt;
&lt;br /&gt;
; строка от af_class_19 до af_freq_26 это какие артефакты видит детектор, важно если вы будите делать новые артефакты то нужно прописать чтобы детектор &lt;br /&gt;
;их видел посмотрим пример на af_class_19 до af_freq_19&lt;br /&gt;
&lt;br /&gt;
af_class_19		= af_eye ; название артефакта&lt;br /&gt;
af_sound_19_		= detectors\art_beep1 ; звук при обнаружении&lt;br /&gt;
af_freq_19		= 0.05, 2 ; ???&lt;br /&gt;
af_class_20		= af_fire&lt;br /&gt;
af_sound_20_		= detectors\art_beep1&lt;br /&gt;
af_freq_20		= 0.05, 2&lt;br /&gt;
&lt;br /&gt;
af_class_21		= af_gravi&lt;br /&gt;
af_sound_21_		= detectors\art_beep1&lt;br /&gt;
af_freq_21		= 0.05, 2&lt;br /&gt;
af_class_22		= af_gold_fish&lt;br /&gt;
af_sound_22_		= detectors\art_beep1&lt;br /&gt;
af_freq_22		= 0.05, 2&lt;br /&gt;
&lt;br /&gt;
af_class_23		= af_baloon&lt;br /&gt;
af_sound_23_		= detectors\art_beep1&lt;br /&gt;
af_freq_23		= 0.05, 2&lt;br /&gt;
af_class_24		= af_glass&lt;br /&gt;
af_sound_24_		= detectors\art_beep1&lt;br /&gt;
af_freq_24		= 0.05, 2&lt;br /&gt;
&lt;br /&gt;
af_class_25		= af_dummy_dummy&lt;br /&gt;
af_sound_25_		= detectors\art_beep1&lt;br /&gt;
af_freq_25		= 0.05, 2&lt;br /&gt;
af_class_26		= af_ice&lt;br /&gt;
af_sound_26_		= detectors\art_beep1&lt;br /&gt;
af_freq_26		= 0.05, 2&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[detector_ваше_название_на_английском_hud]:detector_base_hud ; нужно чтобы совпадало с строчкой hud = &lt;br /&gt;
item_position				= -0.071685,0.036188,-0.009934&lt;br /&gt;
item_orientation			= 314.589233,-186.420761,-189.323669&lt;br /&gt;
&lt;br /&gt;
item_visual                   	= dynamics\devices\dev_detector_3\dev_detector_3_hud ; ссылка модели детектора в руке ГГ&lt;br /&gt;
&lt;br /&gt;
anm_show			= dev_detector_3_draw&lt;br /&gt;
anm_show_fast			= dev_detector_3_draw	;_quick&lt;br /&gt;
anm_hide			= dev_detector_3_holster&lt;br /&gt;
anm_hide_fast			= dev_detector_3_holster_quick&lt;br /&gt;
anm_idle			= dev_detector_3_idle&lt;br /&gt;
anm_idle_moving			= dev_detector_3_idle_moving&lt;br /&gt;
anm_idle_sprint			= dev_detector_3_idle_moving&lt;br /&gt;
&lt;br /&gt;
anm_show_16x9			= dev_detector_3_draw_ws, dev_detector_3_draw&lt;br /&gt;
anm_show_fast_16x9		= dev_detector_3_draw_ws	;_quick&lt;br /&gt;
anm_hide_16x9			= dev_detector_3_holster_ws, dev_detector_3_holster&lt;br /&gt;
anm_hide_fast_16x9		= dev_detector_3_holster_ws_quick&lt;br /&gt;
anm_idle_16x9			= dev_detector_3_idle_ws, dev_detector_3_idle&lt;br /&gt;
anm_idle_moving_16x9		= dev_detector_3_idle_moving_ws, dev_detector_3_idle_moving&lt;br /&gt;
anm_idle_sprint_16x9		= dev_detector_3_idle_moving_ws, dev_detector_3_idle_moving ; анимации детектора лучше не трогать&lt;br /&gt;
&amp;lt;/ini&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Описание==&lt;br /&gt;
Откроем:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
gamedata\configs\text\rus\st_items_equipment.xml&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
и добавим после любого названия  предмета эти строчки:&lt;br /&gt;
&amp;lt;xml&amp;gt;&lt;br /&gt;
	&amp;lt;string id=&amp;quot;detector_ваше_название_на_английском&amp;quot;&amp;gt; &lt;br /&gt;
		&amp;lt;text&amp;gt;Название детектора&amp;lt;/text&amp;gt;&lt;br /&gt;
	&amp;lt;/string&amp;gt;&lt;br /&gt;
	&amp;lt;string id=&amp;quot;st_ваше_название_на_английском_descr&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;text&amp;gt;описание&amp;lt;/text&amp;gt;&lt;br /&gt;
	&amp;lt;/string&amp;gt;&lt;br /&gt;
&amp;lt;/xml&amp;gt;&lt;br /&gt;
закрываем и сохраняем...&lt;br /&gt;
&lt;br /&gt;
==Финал==&lt;br /&gt;
Теперь осталось добавить детектор ГГ&lt;br /&gt;
Открываем:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
gamedata\configs\gameplay\character_desc_general.xml&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
и после строчек:&lt;br /&gt;
&amp;lt;xml&amp;gt;&lt;br /&gt;
&amp;lt;!-- 											 --&amp;gt;&lt;br /&gt;
&amp;lt;!--				 Actor 						 --&amp;gt;&lt;br /&gt;
&amp;lt;!-- 											 --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;specific_character id=&amp;quot;actor&amp;quot; no_random = &amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;name&amp;gt;st_actor_name&amp;lt;/name&amp;gt;&lt;br /&gt;
		&amp;lt;icon&amp;gt;ui_inGame2_Hero&amp;lt;/icon&amp;gt;&lt;br /&gt;
		&amp;lt;map_icon x=&amp;quot;2&amp;quot; y=&amp;quot;5&amp;quot;&amp;gt;&amp;lt;/map_icon&amp;gt;&lt;br /&gt;
&lt;br /&gt;
		&amp;lt;team&amp;gt;Actor&amp;lt;/team&amp;gt;&lt;br /&gt;
		&amp;lt;supplies&amp;gt;&lt;br /&gt;
			[spawn] \n&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/xml&amp;gt;&lt;br /&gt;
добавляем:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
detector_ваше_название_на_английском \n&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
Cохраняем...&lt;br /&gt;
&lt;br /&gt;
P.S. Если все правильно то после начала новой игры в ГГ будет новый детектор&lt;br /&gt;
Cтатья создана [[Участник:NIGHTSTALKER]]&lt;br /&gt;
Статья переделана:&lt;br /&gt;
[[Участник:Mesnik]] [[Участник:StalkerModer]]&lt;br /&gt;
&lt;br /&gt;
[[Категория:Конфигурационные файлы]]&lt;/div&gt;</summary>
		<author><name>91.218.192.254</name></author>	</entry>

	<entry>
		<id>http://stalkerin.gameru.net/wiki/index.php?title=SoC._%D0%AD%D0%BD%D1%86%D0%B8%D0%BA%D0%BB%D0%BE%D0%BF%D0%B5%D0%B4%D0%B8%D1%8F</id>
		<title>SoC. Энциклопедия</title>
		<link rel="alternate" type="text/html" href="http://stalkerin.gameru.net/wiki/index.php?title=SoC._%D0%AD%D0%BD%D1%86%D0%B8%D0%BA%D0%BB%D0%BE%D0%BF%D0%B5%D0%B4%D0%B8%D1%8F"/>
				<updated>2013-07-26T06:57:11Z</updated>
		
		<summary type="html">&lt;p&gt;91.218.192.254: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;====Как получить всю инфу в энциклопедию в начале новой игры====&lt;br /&gt;
Разбирать добавление статьи в энциклопедию я не буду, а просто раскажу как выдать всю инфу в начале игры.&lt;br /&gt;
Открываем файл '''gamedata\scripts\bind_stalker.script''' и  ищем строки:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lua&amp;gt;&lt;br /&gt;
			self.object:give_info_portion(&amp;quot;storyline_actor_start&amp;quot;)&lt;br /&gt;
			_G.g_start_avi = true&lt;br /&gt;
			printf(&amp;quot;*AVI* RUN START AVI&amp;quot;)			&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
--		if not has_alife_info(&amp;quot;encyclopedy&amp;quot;) then		-раскомпилитим &lt;br /&gt;
&lt;br /&gt;
--			self.object:give_info_portion(&amp;quot;encyclopedy&amp;quot;)	-		эти&lt;br /&gt;
&lt;br /&gt;
--		end						-			строки&lt;br /&gt;
&lt;br /&gt;
		if not has_alife_info(&amp;quot;global_dialogs&amp;quot;) then&lt;br /&gt;
			self.object:give_info_portion(&amp;quot;global_dialogs&amp;quot;)&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		if not has_alife_info(&amp;quot;level_changer_icons&amp;quot;) then&lt;br /&gt;
			self.object:give_info_portion(&amp;quot;level_changer_icons&amp;quot;)&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		level_tasks.add_lchanger_location()&lt;br /&gt;
&lt;br /&gt;
		self.bCheckStart = false&lt;br /&gt;
		&lt;br /&gt;
	end		&lt;br /&gt;
&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/lua&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Теперь, когда вы начнете игру, у вас добавятся все стандартные статьи из игры... Просто, да?&lt;br /&gt;
Мы не ограничемся только ими, добавим статьи про оружие, машины и т.п., а так же ваши, добавленные...&lt;br /&gt;
Инфопоршну &amp;quot;энциклопедия&amp;quot; игра берет из файла '''gamedata\config\gamplay\info_known_objects.xml'''.&lt;br /&gt;
Открываем и смотрим структуру:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;xml&amp;gt;&lt;br /&gt;
&amp;lt;?xml version='1.0' encoding=&amp;quot;windows-1251&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;game_information_portions&amp;gt;&lt;br /&gt;
&amp;lt;info_portion id=&amp;quot;encyclopedy&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;article&amp;gt;zone_artifact_af-medusa&amp;lt;/article&amp;gt;&lt;br /&gt;
  &amp;lt;article&amp;gt;zone_artifact_af-cristall-flower&amp;lt;/article&amp;gt;&lt;br /&gt;
  &amp;lt;article&amp;gt;zone_artifact_af-night-star&amp;lt;/article&amp;gt;&lt;br /&gt;
&amp;lt;/xml&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ну и так далее... Чтоб добавить инфу, например о ПМм, просто пишем между любыми артиклами(например):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;xml&amp;gt;&lt;br /&gt;
&amp;lt;game_information_portions&amp;gt;&lt;br /&gt;
&amp;lt;info_portion id=&amp;quot;encyclopedy&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;article&amp;gt;zone_artifact_af-medusa&amp;lt;/article&amp;gt;&lt;br /&gt;
  &amp;lt;article&amp;gt;zone_artifact_af-cristall-flower&amp;lt;/article&amp;gt;&lt;br /&gt;
  &amp;lt;article&amp;gt;weapons1_wpn-pm&amp;lt;/article&amp;gt;			-теперь нам будут выдавать инфу о ПМм&lt;br /&gt;
  &amp;lt;article&amp;gt;zone_artifact_af-night-star&amp;lt;/article&amp;gt;&lt;br /&gt;
&amp;lt;/xml&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Объясню где брал инфопоршну ПМм-в '''config\gameplay\encyclopedia_weapons.xml'''. В той же папке есть и файлы с инфопоршнами предметов(еды и т.п.), машин и т.п.&lt;br /&gt;
Добавляем их все... Долго, но что поделать, раз решились сделать:) Если все добавите-игра вылетит. Исправить это легко---просто в '''config\system.ltx''' добавим наши &amp;quot;недостающие&amp;quot; файлы(типа машин и т.п.).&lt;br /&gt;
Открываем и ищем секцию энциклопедии:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
[encyclopedia]&lt;br /&gt;
files = encyclopedia_infos, storyline_info_to_diary, encyclopedia_weapons, encyclopedia_mutants, encyclopedia_zone, encyclopedia_social, encyclopedia_equipment, encyclopedia_tutorial&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;
[encyclopedia]&lt;br /&gt;
files = encyclopedia_infos, storyline_info_to_diary, encyclopedia_weapons, encyclopedia_mutants, encyclopedia_zone, encyclopedia_social, encyclopedia_equipment, encyclopedia_tutorial,encyclopedia_vehicles,&lt;br /&gt;
encyclopedia_new&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Вроде все (могу ошибатся:))... Кстати, я советовал бы вам добавлять свои статьи таким же способом-создаем отдельный файл, подключаем его в системе, и работаем дальше с ним... И все равно к какой теме&lt;br /&gt;
относится ваша статья, игра считывает ее из любых файлов секции '''encyclopedia'''. Теперь у нас в ПДА отображаются все возможные статьи...&lt;br /&gt;
&lt;br /&gt;
P.S.-сам обсолютно все статьи все никак не собирусь добавить, так что не знаю,есть ли там какие-либо ошибки... Если вылетела или зависла, открываем блокнот и жмем '''Ctrl+V'''(вставить) и смотрим лог &lt;br /&gt;
ошибки...&lt;br /&gt;
&lt;br /&gt;
==Авторы==&lt;br /&gt;
&lt;br /&gt;
Статья создана:&lt;br /&gt;
[[Участник:Костя.н.ы.ч|Костя.н.ы.ч]]&lt;br /&gt;
&lt;br /&gt;
[[Категория:Конфигурационные_файлы]]&lt;/div&gt;</summary>
		<author><name>91.218.192.254</name></author>	</entry>

	<entry>
		<id>http://stalkerin.gameru.net/wiki/index.php?title=%D0%A1%D0%BA%D1%80%D0%B8%D0%BF%D1%82%D1%8B._%D0%9E%D1%82%D0%BA%D1%80%D1%8B%D0%B2%D0%B0%D0%B5%D0%BC_%D1%81%D0%B5%D0%BA%D1%80%D0%B5%D1%82%D0%BD%D1%83%D1%8E_%D0%B4%D0%B2%D0%B5%D1%80%D1%8C_%D0%B2_%D0%A1%D0%B0%D1%80%D0%BA%D0%BE%D1%84%D0%B0%D0%B3%D0%B5_%D0%B1%D0%B5%D0%B7_%D0%B4%D0%B5%D0%BA%D0%BE%D0%B4%D0%B5%D1%80%D0%B0.</id>
		<title>Скрипты. Открываем секретную дверь в Саркофаге без декодера.</title>
		<link rel="alternate" type="text/html" href="http://stalkerin.gameru.net/wiki/index.php?title=%D0%A1%D0%BA%D1%80%D0%B8%D0%BF%D1%82%D1%8B._%D0%9E%D1%82%D0%BA%D1%80%D1%8B%D0%B2%D0%B0%D0%B5%D0%BC_%D1%81%D0%B5%D0%BA%D1%80%D0%B5%D1%82%D0%BD%D1%83%D1%8E_%D0%B4%D0%B2%D0%B5%D1%80%D1%8C_%D0%B2_%D0%A1%D0%B0%D1%80%D0%BA%D0%BE%D1%84%D0%B0%D0%B3%D0%B5_%D0%B1%D0%B5%D0%B7_%D0%B4%D0%B5%D0%BA%D0%BE%D0%B4%D0%B5%D1%80%D0%B0."/>
				<updated>2013-07-26T06:52:39Z</updated>
		
		<summary type="html">&lt;p&gt;91.218.192.254: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Открываем файл '''gamedata/config/scripts/sar_door.ltx'''. Там находим:&lt;br /&gt;
&amp;lt;ini&amp;gt;&lt;br /&gt;
[logic]&lt;br /&gt;
active = ph_door@locked&lt;br /&gt;
&lt;br /&gt;
[ph_door@locked]&lt;br /&gt;
locked = true&lt;br /&gt;
closed = true&lt;br /&gt;
tip_open = tip_door_coded&lt;br /&gt;
on_info = {=actor_has_decoder} ph_door@coded&lt;br /&gt;
&lt;br /&gt;
[ph_door@coded]&lt;br /&gt;
locked = true&lt;br /&gt;
closed = true&lt;br /&gt;
tip_open = tip_door_decode&lt;br /&gt;
on_info = {!actor_has_decoder} ph_door@locked&lt;br /&gt;
on_use = ph_door@decoding %+sar_access_decoding%&lt;br /&gt;
&lt;br /&gt;
[ph_door@decoding]&lt;br /&gt;
locked = true&lt;br /&gt;
closed = true&lt;br /&gt;
tip_open = tip_door_decoding&lt;br /&gt;
on_info = {+sar_finish_decoding} ph_door@unlocked&lt;br /&gt;
&lt;br /&gt;
[ph_door@unlocked]&lt;br /&gt;
locked = false&lt;br /&gt;
closed = false&lt;br /&gt;
show_tips = false&lt;br /&gt;
&amp;lt;/ini&amp;gt;&lt;br /&gt;
Там строки:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
locked = true&lt;br /&gt;
closed = true&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
Заменяем на:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
locked = false&lt;br /&gt;
closed = false&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
[[Категория:Конфигурационные файлы]]&lt;/div&gt;</summary>
		<author><name>91.218.192.254</name></author>	</entry>

	<entry>
		<id>http://stalkerin.gameru.net/wiki/index.php?title=CoP._%D0%94%D0%BE%D0%B1%D0%B0%D0%B2%D0%BB%D1%8F%D0%B5%D0%BC_%D0%B2%D0%BE%D0%B7%D0%BC%D0%BE%D0%B6%D0%BD%D0%BE%D1%81%D1%82%D1%8C_%D1%82%D0%B0%D1%81%D0%BA%D0%B0%D1%82%D1%8C_%D1%82%D1%80%D1%83%D0%BF%D1%8B_%D0%B8_%D0%B4%D1%80%D1%83%D0%B3%D0%B8%D0%B5_%D0%B4%D0%B8%D0%BD%D0%B0%D0%BC%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%B8%D0%B5_%D0%BE%D0%B1%D1%8A%D0%B5%D0%BA%D1%82%D1%8B</id>
		<title>CoP. Добавляем возможность таскать трупы и другие динамические объекты</title>
		<link rel="alternate" type="text/html" href="http://stalkerin.gameru.net/wiki/index.php?title=CoP._%D0%94%D0%BE%D0%B1%D0%B0%D0%B2%D0%BB%D1%8F%D0%B5%D0%BC_%D0%B2%D0%BE%D0%B7%D0%BC%D0%BE%D0%B6%D0%BD%D0%BE%D1%81%D1%82%D1%8C_%D1%82%D0%B0%D1%81%D0%BA%D0%B0%D1%82%D1%8C_%D1%82%D1%80%D1%83%D0%BF%D1%8B_%D0%B8_%D0%B4%D1%80%D1%83%D0%B3%D0%B8%D0%B5_%D0%B4%D0%B8%D0%BD%D0%B0%D0%BC%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%B8%D0%B5_%D0%BE%D0%B1%D1%8A%D0%B5%D0%BA%D1%82%D1%8B"/>
				<updated>2013-07-17T08:18:38Z</updated>
		
		<summary type="html">&lt;p&gt;91.218.192.254: Подправил оформление. Сделал более презентабельным, как по мне (FantomICW)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Привет всем. В этой статье я напишу, как вернуть таскание трупов и объектов в STALKER CoP, не понятно зачем убранное ПЫСами.&amp;lt;br&amp;gt;&lt;br /&gt;
'''Уровень слжности:''' очень легко, не обращайте внимания на длину тутора, тут вам только копипастить придется)&amp;lt;br&amp;gt;&lt;br /&gt;
'''Автор:''' sk0rpi0n&amp;lt;br&amp;gt;&lt;br /&gt;
Открываем '''configs/system.ltx''', идем в конец файла, ищем строку '''[ph_capture_visuals]'''. Под ней - все, что нам нужно, а точнее:&lt;br /&gt;
&amp;lt;ini&amp;gt;;NPC&lt;br /&gt;
;actors\stalker_bandit\stalker_bandit_1&lt;br /&gt;
;actors\stalker_bandit\stalker_bandit_2&lt;br /&gt;
;actors\stalker_bandit\stalker_bandit_3&lt;br /&gt;
;actors\stalker_bandit\stalker_bandit_3_face_1&lt;br /&gt;
;actors\stalker_bandit\stalker_bandit_3_face_2&lt;br /&gt;
;actors\stalker_bandit\stalker_bandit_3_mask&lt;br /&gt;
;actors\stalker_bandit\stalker_bandit_4&lt;br /&gt;
;actors\stalker_dolg\stalker_dolg_1&lt;br /&gt;
;actors\stalker_dolg\stalker_dolg_2&lt;br /&gt;
;actors\stalker_dolg\stalker_dolg_2_face_1&lt;br /&gt;
;actors\stalker_dolg\stalker_dolg_2_face_2&lt;br /&gt;
;actors\stalker_dolg\stalker_dolg_2_mask&lt;br /&gt;
;actors\stalker_dolg\stalker_dolg_3&lt;br /&gt;
;actors\stalker_dolg\stalker_dolg_4&lt;br /&gt;
;actors\stalker_freedom\stalker_freedom_1&lt;br /&gt;
;actors\stalker_freedom\stalker_freedom_2&lt;br /&gt;
;actors\stalker_freedom\stalker_freedom_2_face_1&lt;br /&gt;
;actors\stalker_freedom\stalker_freedom_2_face_2&lt;br /&gt;
;actors\stalker_freedom\stalker_freedom_2_mask&lt;br /&gt;
;actors\stalker_freedom\stalker_freedom_3&lt;br /&gt;
;actors\stalker_freedom\stalker_freedom_4&lt;br /&gt;
;actors\stalker_hero\stalker_hero_1&lt;br /&gt;
;actors\stalker_hero\stalker_hero_stc_strelok&lt;br /&gt;
;actors\stalker_lesnik\stalker_lesnik_1&lt;br /&gt;
;actors\stalker_merc\stalker_merc_2&lt;br /&gt;
;actors\stalker_merc\stalker_merc_4&lt;br /&gt;
;actors\stalker_monolith\stalker_monolith_1&lt;br /&gt;
;actors\stalker_monolith\stalker_monolith_2&lt;br /&gt;
;actors\stalker_monolith\stalker_monolith_3&lt;br /&gt;
;actors\stalker_monolith\stalker_monolith_4&lt;br /&gt;
;actors\stalker_nebo\stalker_nebo_1&lt;br /&gt;
;actors\stalker_nebo\stalker_nebo_2&lt;br /&gt;
;actors\stalker_nebo\stalker_nebo_2_face_1&lt;br /&gt;
;actors\stalker_nebo\stalker_nebo_2_face_2&lt;br /&gt;
;actors\stalker_nebo\stalker_nebo_2_face_3&lt;br /&gt;
;actors\stalker_nebo\stalker_nebo_2_mask&lt;br /&gt;
;actors\stalker_nebo\stalker_nebo_3&lt;br /&gt;
;actors\stalker_neutral\stalker_neutral_1&lt;br /&gt;
;actors\stalker_neutral\stalker_neutral_2&lt;br /&gt;
;actors\stalker_neutral\stalker_neutral_2_face_1&lt;br /&gt;
;actors\stalker_neutral\stalker_neutral_2_face_2&lt;br /&gt;
;actors\stalker_neutral\stalker_neutral_2_mask&lt;br /&gt;
;actors\stalker_neutral\stalker_neutral_3&lt;br /&gt;
;actors\stalker_neutral\stalker_neutral_4&lt;br /&gt;
;actors\stalker_soldier\stalker_soldier_1&lt;br /&gt;
;actors\stalker_soldier\stalker_soldier_2&lt;br /&gt;
;actors\stalker_soldier\stalker_soldier_2_face_1&lt;br /&gt;
;actors\stalker_soldier\stalker_soldier_3&lt;br /&gt;
;actors\stalker_soldier\stalker_soldier_4&lt;br /&gt;
;actors\stalker_trader\stalker_trader_1&lt;br /&gt;
;actors\stalker_ucheniy\stalker_ucheniy_1&lt;br /&gt;
;actors\stalker_zombied\stalker_zombied_1&lt;br /&gt;
;actors\stalker_zombied\stalker_zombied_2&lt;br /&gt;
;actors\stalker_zombied\stalker_zombied_3&lt;br /&gt;
;actors\stalker_zombied\stalker_zombied_4&lt;br /&gt;
&lt;br /&gt;
;Monsters&lt;br /&gt;
;monsters\controller\controller_1&lt;br /&gt;
;monsters\controller\controller_2&lt;br /&gt;
;monsters\controller\controller_3&lt;br /&gt;
;monsters\controller\controller_4&lt;br /&gt;
;monsters\controller\controller_dead&lt;br /&gt;
;monsters\crow\crow&lt;br /&gt;
;monsters\dog\dog&lt;br /&gt;
;monsters\dog\dog_bulterier&lt;br /&gt;
;monsters\dog\dog_bulterier_dead&lt;br /&gt;
;monsters\dog\dog_dead&lt;br /&gt;
;monsters\dog\dog_red&lt;br /&gt;
;monsters\dog\dog_red_dead&lt;br /&gt;
;monsters\dog\dog_white&lt;br /&gt;
;monsters\dog\dog_white_dead&lt;br /&gt;
;monsters\flesh\flesh&lt;br /&gt;
;monsters\flesh\flesh_dead&lt;br /&gt;
;monsters\flesh\flesh_strong&lt;br /&gt;
;monsters\krovosos\krovosos&lt;br /&gt;
;monsters\krovosos\krovosos_dead&lt;br /&gt;
;monsters\krovosos\krovosos_strong&lt;br /&gt;
;monsters\krovosos\krovosos_strong_xray&lt;br /&gt;
;monsters\krovosos\krovosos_xray&lt;br /&gt;
;monsters\mutant_boar\mutant_boar&lt;br /&gt;
;monsters\mutant_boar\mutant_boar_dead&lt;br /&gt;
;monsters\mutant_boar\mutant_boar_strong&lt;br /&gt;
;monsters\poltergeist\poltergeist&lt;br /&gt;
;monsters\poltergeist\poltergeist_dead&lt;br /&gt;
;monsters\poltergeist\poltergeist_strong&lt;br /&gt;
;monsters\pseudodog\pseudodog&lt;br /&gt;
;monsters\pseudodog\pseudodog_dead&lt;br /&gt;
;monsters\pseudodog\pseudodog_grey&lt;br /&gt;
;monsters\pseudodog\pseudodog_grey_dead&lt;br /&gt;
;monsters\rat\rat_1&lt;br /&gt;
;monsters\snork\snork&lt;br /&gt;
;monsters\snork\snork_dead&lt;br /&gt;
;monsters\tushkano\tushkano&lt;br /&gt;
;monsters\tushkano\tushkano_dead&amp;lt;/ini&amp;gt;&lt;br /&gt;
Все строки, помеченные точкой с запятой &amp;quot;;&amp;quot; - не используются игрой.Следовательно, нам надо их убрать.Заменим верхний текст на этот:&lt;br /&gt;
&amp;lt;code&amp;gt;;NPC&lt;br /&gt;
actors\stalker_bandit\stalker_bandit_1&lt;br /&gt;
actors\stalker_bandit\stalker_bandit_2&lt;br /&gt;
actors\stalker_bandit\stalker_bandit_3&lt;br /&gt;
actors\stalker_bandit\stalker_bandit_3_face_1&lt;br /&gt;
actors\stalker_bandit\stalker_bandit_3_face_2&lt;br /&gt;
actors\stalker_bandit\stalker_bandit_3_mask&lt;br /&gt;
actors\stalker_bandit\stalker_bandit_4&lt;br /&gt;
actors\stalker_dolg\stalker_dolg_1&lt;br /&gt;
actors\stalker_dolg\stalker_dolg_2&lt;br /&gt;
actors\stalker_dolg\stalker_dolg_2_face_1&lt;br /&gt;
actors\stalker_dolg\stalker_dolg_2_face_2&lt;br /&gt;
actors\stalker_dolg\stalker_dolg_2_mask&lt;br /&gt;
actors\stalker_dolg\stalker_dolg_3&lt;br /&gt;
actors\stalker_dolg\stalker_dolg_4&lt;br /&gt;
actors\stalker_freedom\stalker_freedom_1&lt;br /&gt;
actors\stalker_freedom\stalker_freedom_2&lt;br /&gt;
actors\stalker_freedom\stalker_freedom_2_face_1&lt;br /&gt;
actors\stalker_freedom\stalker_freedom_2_face_2&lt;br /&gt;
actors\stalker_freedom\stalker_freedom_2_mask&lt;br /&gt;
actors\stalker_freedom\stalker_freedom_3&lt;br /&gt;
actors\stalker_freedom\stalker_freedom_4&lt;br /&gt;
actors\stalker_hero\stalker_hero_1&lt;br /&gt;
actors\stalker_hero\stalker_hero_stc_strelok&lt;br /&gt;
actors\stalker_lesnik\stalker_lesnik_1&lt;br /&gt;
actors\stalker_merc\stalker_merc_2&lt;br /&gt;
actors\stalker_merc\stalker_merc_4&lt;br /&gt;
actors\stalker_monolith\stalker_monolith_1&lt;br /&gt;
actors\stalker_monolith\stalker_monolith_2&lt;br /&gt;
actors\stalker_monolith\stalker_monolith_3&lt;br /&gt;
actors\stalker_monolith\stalker_monolith_4&lt;br /&gt;
actors\stalker_nebo\stalker_nebo_1&lt;br /&gt;
actors\stalker_nebo\stalker_nebo_2&lt;br /&gt;
actors\stalker_nebo\stalker_nebo_2_face_1&lt;br /&gt;
actors\stalker_nebo\stalker_nebo_2_face_2&lt;br /&gt;
actors\stalker_nebo\stalker_nebo_2_face_3&lt;br /&gt;
actors\stalker_nebo\stalker_nebo_2_mask&lt;br /&gt;
actors\stalker_nebo\stalker_nebo_3&lt;br /&gt;
actors\stalker_neutral\stalker_neutral_1&lt;br /&gt;
actors\stalker_neutral\stalker_neutral_2&lt;br /&gt;
actors\stalker_neutral\stalker_neutral_2_face_1&lt;br /&gt;
actors\stalker_neutral\stalker_neutral_2_face_2&lt;br /&gt;
actors\stalker_neutral\stalker_neutral_2_mask&lt;br /&gt;
actors\stalker_neutral\stalker_neutral_3&lt;br /&gt;
actors\stalker_neutral\stalker_neutral_4&lt;br /&gt;
actors\stalker_soldier\stalker_soldier_1&lt;br /&gt;
actors\stalker_soldier\stalker_soldier_2&lt;br /&gt;
actors\stalker_soldier\stalker_soldier_2_face_1&lt;br /&gt;
actors\stalker_soldier\stalker_soldier_3&lt;br /&gt;
actors\stalker_soldier\stalker_soldier_4&lt;br /&gt;
actors\stalker_trader\stalker_trader_1&lt;br /&gt;
actors\stalker_ucheniy\stalker_ucheniy_1&lt;br /&gt;
actors\stalker_zombied\stalker_zombied_1&lt;br /&gt;
actors\stalker_zombied\stalker_zombied_2&lt;br /&gt;
actors\stalker_zombied\stalker_zombied_3&lt;br /&gt;
actors\stalker_zombied\stalker_zombied_4&lt;br /&gt;
&lt;br /&gt;
;Monsters&lt;br /&gt;
;monsters\controller\controller_1&lt;br /&gt;
;monsters\controller\controller_2&lt;br /&gt;
;monsters\controller\controller_3&lt;br /&gt;
;monsters\controller\controller_4&lt;br /&gt;
;monsters\controller\controller_dead&lt;br /&gt;
;monsters\crow\crow&lt;br /&gt;
monsters\dog\dog&lt;br /&gt;
monsters\dog\dog_bulterier&lt;br /&gt;
monsters\dog\dog_bulterier_dead&lt;br /&gt;
monsters\dog\dog_dead&lt;br /&gt;
monsters\dog\dog_red&lt;br /&gt;
monsters\dog\dog_red_dead&lt;br /&gt;
monsters\dog\dog_white&lt;br /&gt;
monsters\dog\dog_white_dead&lt;br /&gt;
;monsters\flesh\flesh&lt;br /&gt;
;monsters\flesh\flesh_dead&lt;br /&gt;
;monsters\flesh\flesh_strong&lt;br /&gt;
monsters\krovosos\krovosos&lt;br /&gt;
monsters\krovosos\krovosos_dead&lt;br /&gt;
monsters\krovosos\krovosos_strong&lt;br /&gt;
monsters\krovosos\krovosos_strong_xray&lt;br /&gt;
monsters\krovosos\krovosos_xray&lt;br /&gt;
;monsters\mutant_boar\mutant_boar&lt;br /&gt;
;monsters\mutant_boar\mutant_boar_dead&lt;br /&gt;
;monsters\mutant_boar\mutant_boar_strong&lt;br /&gt;
;monsters\poltergeist\poltergeist&lt;br /&gt;
;monsters\poltergeist\poltergeist_dead&lt;br /&gt;
;monsters\poltergeist\poltergeist_strong&lt;br /&gt;
monsters\pseudodog\pseudodog&lt;br /&gt;
monsters\pseudodog\pseudodog_dead&lt;br /&gt;
monsters\pseudodog\pseudodog_grey&lt;br /&gt;
monsters\pseudodog\pseudodog_grey_dead&lt;br /&gt;
;monsters\rat\rat_1&lt;br /&gt;
;monsters\snork\snork&lt;br /&gt;
;monsters\snork\snork_dead&lt;br /&gt;
;monsters\tushkano\tushkano&lt;br /&gt;
;monsters\tushkano\tushkano_dead&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Отлично! Теперь можно таскать трупы монстрюг и пиплов.&lt;br /&gt;
Рассмотрим таскание остальных объектов.&lt;br /&gt;
Вы можете добавить почти любую модель из папки '''meshes''', кроме:&lt;br /&gt;
''static models''(статичные модели) - их невозможно никак сдвинуть в игре.&lt;br /&gt;
Пример добавления модели, пишем это после конца списка моделей монстров(на свой страх и риск обтаскайтесь списком моделей из зова припяти. Для ТЧ и ЧН список таскаемых динамических моделей можно получить, например, из лога проверки папки антивирусной программой с &amp;quot;заменой&amp;quot; (в меню правка) в блокноте ненужных частей на пустоту):&lt;br /&gt;
&amp;lt;code&amp;gt;;Other models&lt;br /&gt;
dynamics\artefacts\af_blood&lt;br /&gt;
dynamics\artefacts\af_compass&lt;br /&gt;
dynamics\artefacts\af_control&lt;br /&gt;
dynamics\artefacts\af_cristall&lt;br /&gt;
dynamics\artefacts\af_cristall_flower&lt;br /&gt;
dynamics\artefacts\af_cristall_plant&lt;br /&gt;
dynamics\artefacts\af_dummy_battery&lt;br /&gt;
dynamics\artefacts\af_dummy_dummy&lt;br /&gt;
dynamics\artefacts\af_dummy_glassbeads&lt;br /&gt;
dynamics\artefacts\af_electra_flash&lt;br /&gt;
dynamics\artefacts\af_electra_moonlight&lt;br /&gt;
dynamics\artefacts\af_electra_sparkler&lt;br /&gt;
dynamics\artefacts\af_eye&lt;br /&gt;
dynamics\artefacts\af_fire&lt;br /&gt;
dynamics\artefacts\af_fireball&lt;br /&gt;
dynamics\artefacts\af_fuzz_kolobok&lt;br /&gt;
dynamics\artefacts\af_glass&lt;br /&gt;
dynamics\artefacts\af_gold_fish&lt;br /&gt;
dynamics\artefacts\af_gravi&lt;br /&gt;
dynamics\artefacts\af_ice&lt;br /&gt;
dynamics\artefacts\af_medusa&lt;br /&gt;
dynamics\artefacts\af_mincer_meat&lt;br /&gt;
dynamics\artefacts\af_night_star&lt;br /&gt;
dynamics\artefacts\af_psi_field&lt;br /&gt;
dynamics\artefacts\af_soul&lt;br /&gt;
dynamics\artefacts\af_vyvert&lt;br /&gt;
dynamics\artefacts\artefact_electra_blue&lt;br /&gt;
dynamics\artefacts\artefact_electra_blue_hud&lt;br /&gt;
dynamics\artefacts\artefact_electra_green&lt;br /&gt;
dynamics\artefacts\artefact_electra_green_hud&lt;br /&gt;
dynamics\balon\balon_01&lt;br /&gt;
dynamics\balon\balon_02&lt;br /&gt;
dynamics\balon\balon_02a&lt;br /&gt;
dynamics\balon\bidon&lt;br /&gt;
dynamics\balon\bochka_close_1&lt;br /&gt;
dynamics\balon\bochka_close_2&lt;br /&gt;
dynamics\balon\bochka_close_3&lt;br /&gt;
dynamics\balon\bochka_close_4&lt;br /&gt;
dynamics\balon\bochka_fuel&lt;br /&gt;
dynamics\balon\gaz_balon&lt;br /&gt;
dynamics\balon\kanistra&lt;br /&gt;
dynamics\box\box_1a&lt;br /&gt;
dynamics\box\box_1b&lt;br /&gt;
dynamics\box\box_1c&lt;br /&gt;
dynamics\box\box_bottle_1&lt;br /&gt;
dynamics\box\box_metall_01&lt;br /&gt;
dynamics\box\box_paper&lt;br /&gt;
dynamics\box\box_wood_01&lt;br /&gt;
dynamics\box\box_wood_02&lt;br /&gt;
dynamics\box\expl_dinamit&lt;br /&gt;
dynamics\box\part\box_metall_01_part_1&lt;br /&gt;
dynamics\box\part\box_metall_01_part_2&lt;br /&gt;
dynamics\box\part\box_paper_part_1&lt;br /&gt;
dynamics\box\part\box_wood_01_part_1&lt;br /&gt;
dynamics\box\part\box_wood_01_part_2&lt;br /&gt;
dynamics\box\part\box_wood_01_part_3&lt;br /&gt;
dynamics\box\part\box_wood_01_part_4&lt;br /&gt;
dynamics\box\part\box_wood_01_part_5&lt;br /&gt;
dynamics\box\part\box_wood_01_part_6&lt;br /&gt;
dynamics\box\part\box_wood_01_part_7&lt;br /&gt;
dynamics\dead_body\skelet_crash&lt;br /&gt;
dynamics\dead_body\skelet_crash_monster&lt;br /&gt;
dynamics\dead_body\vertel_boar&lt;br /&gt;
dynamics\devices\dev_antirad\dev_antirad&lt;br /&gt;
dynamics\devices\dev_aptechka\dev_aptechka_high&lt;br /&gt;
dynamics\devices\dev_aptechka\dev_aptechka_low&lt;br /&gt;
dynamics\devices\dev_aptechka\dev_aptechka_mid&lt;br /&gt;
dynamics\devices\dev_bandage\dev_bandage&lt;br /&gt;
dynamics\devices\dev_binoculars\dev_binoculars&lt;br /&gt;
dynamics\devices\dev_bolt\dev_bolt&lt;br /&gt;
dynamics\devices\dev_bred\dev_bred&lt;br /&gt;
dynamics\devices\dev_conserv\dev_conserv&lt;br /&gt;
dynamics\devices\dev_datchik_1\dev_datchik_1&lt;br /&gt;
dynamics\devices\dev_datchik_2\dev_datchik_2&lt;br /&gt;
dynamics\devices\dev_datchik_3\dev_datchik_3&lt;br /&gt;
dynamics\devices\dev_decoder\dev_decoder&lt;br /&gt;
dynamics\devices\dev_detector_1\dev_detector_1&lt;br /&gt;
dynamics\devices\dev_detector_2\dev_detector_2&lt;br /&gt;
dynamics\devices\dev_detector_3\dev_detector_3&lt;br /&gt;
dynamics\devices\dev_detector_4\dev_detector_4&lt;br /&gt;
dynamics\devices\dev_drink_stalker\dev_drink_stalker&lt;br /&gt;
dynamics\devices\dev_drink_stalker\dev_drink_stalker_old&lt;br /&gt;
dynamics\devices\dev_flare\dev_flare&lt;br /&gt;
dynamics\devices\dev_flash_1\dev_flash_1&lt;br /&gt;
dynamics\devices\dev_flash_2\dev_flash_2&lt;br /&gt;
dynamics\devices\dev_fmradio\dev_fmradio&lt;br /&gt;
dynamics\devices\dev_guitar\dev_guitar&lt;br /&gt;
dynamics\devices\dev_harmonica\dev_harmonica&lt;br /&gt;
dynamics\devices\dev_instrument_1\dev_instrument_1&lt;br /&gt;
dynamics\devices\dev_kolbasa\dev_kolbasa&lt;br /&gt;
dynamics\devices\dev_merger\dev_merger&lt;br /&gt;
dynamics\devices\dev_pda\dev_pda&lt;br /&gt;
dynamics\devices\dev_rukzak\dev_rukzak&lt;br /&gt;
dynamics\devices\dev_torch_light\dev_torch_light&lt;br /&gt;
dynamics\devices\dev_vodka\dev_vodka&lt;br /&gt;
dynamics\door\agru_door&lt;br /&gt;
dynamics\door\bookcase_village_50x90_ph_door_l&lt;br /&gt;
dynamics\door\bookcase_village_50x90_ph_door_r&lt;br /&gt;
dynamics\door\box_wooden_01_door&lt;br /&gt;
dynamics\door\cabinet_child_350x200_01_door&lt;br /&gt;
dynamics\door\cabinet_child_45x80_01_door&lt;br /&gt;
dynamics\door\cabinet_village_140x210_ph_door_l&lt;br /&gt;
dynamics\door\cabinet_village_140x210_ph_door_r&lt;br /&gt;
dynamics\door\destr_door_wood_130x250_01&lt;br /&gt;
dynamics\door\door_garbage_01&lt;br /&gt;
dynamics\door\door_garbage_02&lt;br /&gt;
dynamics\door\door_hospital_01_l&lt;br /&gt;
dynamics\door\door_hospital_01_r&lt;br /&gt;
dynamics\door\door_hospital_02&lt;br /&gt;
dynamics\door\door_katakomb_big_2&lt;br /&gt;
dynamics\door\door_katakomb_big_2_lock&lt;br /&gt;
dynamics\door\door_katakomb_big_3&lt;br /&gt;
dynamics\door\door_katakomb_big_4&lt;br /&gt;
dynamics\door\door_lift_01&lt;br /&gt;
dynamics\door\door_metal&lt;br /&gt;
dynamics\door\door_metal_145_230_01&lt;br /&gt;
dynamics\door\door_metal_150x240_01_l&lt;br /&gt;
dynamics\door\door_metal_150x240_01_r&lt;br /&gt;
dynamics\door\door_metal_150x260_01&lt;br /&gt;
dynamics\door\door_metal_150x260_02&lt;br /&gt;
dynamics\door\door_metal_185x297_01_l&lt;br /&gt;
dynamics\door\door_metal_185x297_01_r&lt;br /&gt;
dynamics\door\door_metal_210_250_01&lt;br /&gt;
dynamics\door\door_metal_220x260_01_l&lt;br /&gt;
dynamics\door\door_metal_220x260_01_r&lt;br /&gt;
dynamics\door\door_old_wood_120x240_01&lt;br /&gt;
dynamics\door\door_ship_high&lt;br /&gt;
dynamics\door\door_ship_high_l&lt;br /&gt;
dynamics\door\door_ship_high_r&lt;br /&gt;
dynamics\door\door_slide_140x250_01&lt;br /&gt;
dynamics\door\door_trader&lt;br /&gt;
dynamics\door\door_wood_100x190_01&lt;br /&gt;
dynamics\door\door_wood_120x240_01&lt;br /&gt;
dynamics\door\door_wood_130x245_01&lt;br /&gt;
dynamics\door\door_wood_130x250_01&lt;br /&gt;
dynamics\door\door_wood_150x260_01&lt;br /&gt;
dynamics\door\door_wood_200x250_01_l&lt;br /&gt;
dynamics\door\door_wood_200x250_01_r&lt;br /&gt;
dynamics\door\gate_red_forest_01_l&lt;br /&gt;
dynamics\door\gate_red_forest_01_r&lt;br /&gt;
dynamics\door\safe_01_ph_door&lt;br /&gt;
dynamics\door\shelf_metal_160x200_door_l&lt;br /&gt;
dynamics\door\shelf_metal_160x200_door_r&lt;br /&gt;
dynamics\door\shkaf_lab_01_door_l&lt;br /&gt;
dynamics\door\shkaf_lab_01_door_r&lt;br /&gt;
dynamics\door\shkaf_work_01_door&lt;br /&gt;
dynamics\door\shop_fridge_1_door_l&lt;br /&gt;
dynamics\door\shop_fridge_1_door_r&lt;br /&gt;
dynamics\door\shop_fridge_2_door&lt;br /&gt;
dynamics\door\stol_6_ph_door&lt;br /&gt;
dynamics\door\stol_7_ph_door&lt;br /&gt;
dynamics\door\stol_8a_ph_door&lt;br /&gt;
dynamics\door\stol_8_ph_door&lt;br /&gt;
dynamics\door\stol_9a_ph_door&lt;br /&gt;
dynamics\door\tumba_village_100x90_ph_01_door&lt;br /&gt;
dynamics\door\tumba_village_100x90_ph_door_l&lt;br /&gt;
dynamics\door\tumba_village_100x90_ph_door_r&lt;br /&gt;
dynamics\door\tumba_village_140x60_ph_door&lt;br /&gt;
dynamics\door\tumba_village_50x120_ph_door&lt;br /&gt;
dynamics\door\part\destr_door_wood_130x250_01_part_1&lt;br /&gt;
dynamics\door\part\destr_door_wood_130x250_01_part_2&lt;br /&gt;
dynamics\door\part\destr_door_wood_130x250_01_part_3&lt;br /&gt;
dynamics\door\part\destr_door_wood_130x250_01_part_4&lt;br /&gt;
dynamics\el_tehnika\disel_generator&lt;br /&gt;
dynamics\el_tehnika\el_control_unit_1&lt;br /&gt;
dynamics\el_tehnika\komp_blok&lt;br /&gt;
dynamics\el_tehnika\komp_klava&lt;br /&gt;
dynamics\el_tehnika\komp_monitor&lt;br /&gt;
dynamics\el_tehnika\komp_monitor_screen_1&lt;br /&gt;
dynamics\el_tehnika\krisagenerator&lt;br /&gt;
dynamics\el_tehnika\lab_primary_switcher&lt;br /&gt;
dynamics\el_tehnika\lift_big_1&lt;br /&gt;
dynamics\el_tehnika\notebook&lt;br /&gt;
dynamics\el_tehnika\priemnik_gorizont&lt;br /&gt;
dynamics\el_tehnika\rupor&lt;br /&gt;
dynamics\el_tehnika\speakerphone&lt;br /&gt;
dynamics\el_tehnika\table_lamp_01&lt;br /&gt;
dynamics\el_tehnika\transiver&lt;br /&gt;
dynamics\el_tehnika\tv_1&lt;br /&gt;
dynamics\el_tehnika\ventilator_01&lt;br /&gt;
dynamics\el_tehnika\ventilator_02&lt;br /&gt;
dynamics\el_tehnika\ventilator_03&lt;br /&gt;
dynamics\el_tehnika\ventilator_04&lt;br /&gt;
dynamics\el_tehnika\ventilator_05&lt;br /&gt;
dynamics\equipments\documents_1&lt;br /&gt;
dynamics\equipments\documents_2&lt;br /&gt;
dynamics\equipments\documents_3&lt;br /&gt;
dynamics\equipments\documents_4&lt;br /&gt;
dynamics\equipments\documents_5&lt;br /&gt;
dynamics\equipments\documents_6&lt;br /&gt;
dynamics\equipments\documents_7&lt;br /&gt;
dynamics\equipments\documents_8&lt;br /&gt;
dynamics\equipments\documents_9&lt;br /&gt;
dynamics\equipments\item_boar_leg&lt;br /&gt;
dynamics\equipments\item_dog_tail&lt;br /&gt;
dynamics\equipments\item_flesh_eye&lt;br /&gt;
dynamics\equipments\item_krovosos_jaw&lt;br /&gt;
dynamics\equipments\item_psevdodog_tail&lt;br /&gt;
dynamics\equipments\item_snork_leg&lt;br /&gt;
dynamics\equipments\medical\drug_anabiotic&lt;br /&gt;
dynamics\equipments\medical\drug_antidot&lt;br /&gt;
dynamics\equipments\medical\drug_booster&lt;br /&gt;
dynamics\equipments\medical\drug_coagulant&lt;br /&gt;
dynamics\equipments\medical\drug_psy_blockade&lt;br /&gt;
dynamics\equipments\medical\drug_radioprotector&lt;br /&gt;
dynamics\equipments\quest\access_card&lt;br /&gt;
dynamics\equipments\quest\anomaly_plant&lt;br /&gt;
dynamics\equipments\quest\balloon_poison_gas&lt;br /&gt;
dynamics\equipments\quest\box_black&lt;br /&gt;
dynamics\equipments\quest\box_condensers&lt;br /&gt;
dynamics\equipments\quest\box_kanifol&lt;br /&gt;
dynamics\equipments\quest\box_toolkit_1&lt;br /&gt;
dynamics\equipments\quest\box_toolkit_2&lt;br /&gt;
dynamics\equipments\quest\box_toolkit_3&lt;br /&gt;
dynamics\equipments\quest\box_transistors&lt;br /&gt;
dynamics\equipments\quest\explosive_charge&lt;br /&gt;
dynamics\equipments\quest\identity_card&lt;br /&gt;
dynamics\equipments\quest\key&lt;br /&gt;
dynamics\equipments\quest\materials_textolite&lt;br /&gt;
dynamics\equipments\quest\materials_wire&lt;br /&gt;
dynamics\equipments\quest\memory_module&lt;br /&gt;
dynamics\equipments\quest\notebook&lt;br /&gt;
dynamics\equipments\quest\notes_document_case_1&lt;br /&gt;
dynamics\equipments\quest\notes_document_case_2&lt;br /&gt;
dynamics\equipments\quest\notes_document_case_3&lt;br /&gt;
dynamics\equipments\quest\notes_letter_1&lt;br /&gt;
dynamics\equipments\quest\notes_letter_2&lt;br /&gt;
dynamics\equipments\quest\notes_letter_3&lt;br /&gt;
dynamics\equipments\quest\notes_paper_1&lt;br /&gt;
dynamics\equipments\quest\notes_paper_2&lt;br /&gt;
dynamics\equipments\quest\notes_photo_1&lt;br /&gt;
dynamics\equipments\quest\notes_photo_2&lt;br /&gt;
dynamics\equipments\quest\notes_writing_book_1&lt;br /&gt;
dynamics\equipments\quest\notes_writing_book_2&lt;br /&gt;
dynamics\equipments\quest\safe_container&lt;br /&gt;
dynamics\equipments\quest\scanner_anomaly&lt;br /&gt;
dynamics\equipments\quest\scanner_artefact&lt;br /&gt;
dynamics\equipment_cache\equipment_box_01_case&lt;br /&gt;
dynamics\equipment_cache\equipment_box_02_case&lt;br /&gt;
dynamics\equipment_cache\equipment_box_03_case&lt;br /&gt;
dynamics\equipment_cache\equipment_cross_1_case&lt;br /&gt;
dynamics\equipment_cache\equipment_cross_2_case&lt;br /&gt;
dynamics\equipment_cache\equipment_cross_3_case&lt;br /&gt;
dynamics\equipment_cache\equipment_electric_box_01_case&lt;br /&gt;
dynamics\equipment_cache\equipment_electric_box_02_case&lt;br /&gt;
dynamics\equipment_cache\equipment_hatch_01_case&lt;br /&gt;
dynamics\equipment_cache\equipment_hatch_02_case&lt;br /&gt;
dynamics\equipment_cache\equipment_instrument_case_01_case&lt;br /&gt;
dynamics\equipment_cache\equipment_pipe_01_case&lt;br /&gt;
dynamics\equipment_cache\equipment_pipe_02_case&lt;br /&gt;
dynamics\equipment_cache\equipment_pipe_valve_01_case&lt;br /&gt;
dynamics\equipment_cache\equipment_rucksack_01_case&lt;br /&gt;
dynamics\equipment_cache\equipment_rucksack_02_case&lt;br /&gt;
dynamics\equipment_cache\equipment_seif_01_case&lt;br /&gt;
dynamics\equipment_cache\equipment_seif_02_case&lt;br /&gt;
dynamics\equipment_cache\equipment_seif_03_case&lt;br /&gt;
dynamics\equipment_cache\equipment_trees_log_01_case&lt;br /&gt;
dynamics\equipment_cache\equipment_trees_stump_01_case&lt;br /&gt;
dynamics\equipment_cache\equipment_zaz968_case&lt;br /&gt;
dynamics\fence\debris_01&lt;br /&gt;
dynamics\fence\wooden_board_01&lt;br /&gt;
dynamics\fence\wooden_board_01_2m&lt;br /&gt;
dynamics\fence\wooden_board_02&lt;br /&gt;
dynamics\fence\wooden_board_03&lt;br /&gt;
dynamics\fence\wooden_board_04&lt;br /&gt;
dynamics\fence\wood_fence_1&lt;br /&gt;
dynamics\fence\wood_fence_2&lt;br /&gt;
dynamics\fence\wood_fence_3&lt;br /&gt;
dynamics\fence\wood_fence_4&lt;br /&gt;
dynamics\fence\wood_fence_5&lt;br /&gt;
dynamics\fence\part\wooden_board_01_2m_part_01&lt;br /&gt;
dynamics\fence\part\wooden_board_01_2m_part_02&lt;br /&gt;
dynamics\fence\part\wooden_board_01_2m_part_03&lt;br /&gt;
dynamics\fence\part\wooden_board_01_part_01&lt;br /&gt;
dynamics\fence\part\wooden_board_01_part_02&lt;br /&gt;
dynamics\fence\part\wooden_board_01_part_03&lt;br /&gt;
dynamics\fence\part\wooden_board_01_part_04&lt;br /&gt;
dynamics\fence\part\wooden_board_01_part_05&lt;br /&gt;
dynamics\fence\part\wood_fence_part_1&lt;br /&gt;
dynamics\fence\part\wood_fence_part_2&lt;br /&gt;
dynamics\fence\part\wood_fence_part_3&lt;br /&gt;
dynamics\fence\part\wood_fence_part_4&lt;br /&gt;
dynamics\fence\part\wood_fence_part_5&lt;br /&gt;
dynamics\fence\part\wood_fence_part_6&lt;br /&gt;
dynamics\fence\part\wood_fence_part_7&lt;br /&gt;
dynamics\firestation\fire_vedro&lt;br /&gt;
dynamics\firestation\ognetushitel&lt;br /&gt;
dynamics\kitchen_room\bottle_3l&lt;br /&gt;
dynamics\kitchen_room\curtains&lt;br /&gt;
dynamics\kitchen_room\freezer&lt;br /&gt;
dynamics\kitchen_room\gaz_plita&lt;br /&gt;
dynamics\kitchen_room\gaz_plita_small&lt;br /&gt;
dynamics\kitchen_room\kitchen_bludo&lt;br /&gt;
dynamics\kitchen_room\kitchen_kastrula&lt;br /&gt;
dynamics\kitchen_room\kitchen_kastrula_up&lt;br /&gt;
dynamics\kitchen_room\kitchen_krujka&lt;br /&gt;
dynamics\kitchen_room\kitchen_lojka&lt;br /&gt;
dynamics\kitchen_room\kitchen_miska&lt;br /&gt;
dynamics\kitchen_room\kitchen_tarelka1&lt;br /&gt;
dynamics\kitchen_room\kitchen_tarelka2&lt;br /&gt;
dynamics\kitchen_room\teapot_1&lt;br /&gt;
dynamics\kitchen_room\part\bottle_3l_part_0&lt;br /&gt;
dynamics\kitchen_room\part\bottle_3l_part_1&lt;br /&gt;
dynamics\kitchen_room\part\bottle_3l_part_2&lt;br /&gt;
dynamics\kitchen_room\part\bottle_3l_part_3&lt;br /&gt;
dynamics\kitchen_room\part\bottle_3l_part_4&lt;br /&gt;
dynamics\kitchen_room\part\bottle_3l_part_5&lt;br /&gt;
dynamics\kitchen_room\part\bottle_3l_part_6&lt;br /&gt;
dynamics\kitchen_room\part\bottle_3l_part_7&lt;br /&gt;
dynamics\light\light_abajour_1&lt;br /&gt;
dynamics\light\light_abajour_2_hirez&lt;br /&gt;
dynamics\light\light_abajour_2_lowrez&lt;br /&gt;
dynamics\light\light_abajour_2_lowrez_noflare&lt;br /&gt;
dynamics\light\light_abajour_3_hirez&lt;br /&gt;
dynamics\light\light_abajour_4_hirez&lt;br /&gt;
dynamics\light\light_alarm_1&lt;br /&gt;
dynamics\light\light_alarm_glass&lt;br /&gt;
dynamics\light\light_alarm_green_glass&lt;br /&gt;
dynamics\light\light_alarm_nolight_glass&lt;br /&gt;
dynamics\light\light_alarm_white_glass&lt;br /&gt;
dynamics\light\light_altar&lt;br /&gt;
dynamics\light\light_big_1_glass&lt;br /&gt;
dynamics\light\light_big_2_glass&lt;br /&gt;
dynamics\light\light_circle_1&lt;br /&gt;
dynamics\light\light_galogen_1_glass&lt;br /&gt;
dynamics\light\light_illicha_1&lt;br /&gt;
dynamics\light\light_illicha_2&lt;br /&gt;
dynamics\light\light_illicha_3&lt;br /&gt;
dynamics\light\light_lab_glass&lt;br /&gt;
dynamics\light\light_road_green_glass&lt;br /&gt;
dynamics\light\light_road_orange_glass&lt;br /&gt;
dynamics\light\light_sharnir_1&lt;br /&gt;
dynamics\light\light_signal&lt;br /&gt;
dynamics\light\light_switch_1_green&lt;br /&gt;
dynamics\light\light_switch_1_red&lt;br /&gt;
dynamics\light\light_uglovaya_1_glass&lt;br /&gt;
dynamics\light\light_white_glass&lt;br /&gt;
dynamics\light\light_wire_1_glass&lt;br /&gt;
dynamics\light\projector&lt;br /&gt;
dynamics\medical_object\kolyaska_01&lt;br /&gt;
dynamics\medical_object\kolyaska_01_braked&lt;br /&gt;
dynamics\medical_object\kolyaska_wheel_01_braked&lt;br /&gt;
dynamics\medical_object\med_stolik_01&lt;br /&gt;
dynamics\medical_object\wheel_litter_01&lt;br /&gt;
dynamics\medical_object\wheel_litter_01_braked&lt;br /&gt;
dynamics\outfit\cs_heavy_outfit&lt;br /&gt;
dynamics\outfit\dolg_heavy_outfit&lt;br /&gt;
dynamics\outfit\dolg_outfit&lt;br /&gt;
dynamics\outfit\exo_outfit&lt;br /&gt;
dynamics\outfit\helm_battle&lt;br /&gt;
dynamics\outfit\helm_hardhat&lt;br /&gt;
dynamics\outfit\helm_protective&lt;br /&gt;
dynamics\outfit\helm_respirator&lt;br /&gt;
dynamics\outfit\helm_tactic&lt;br /&gt;
dynamics\outfit\military_outfit&lt;br /&gt;
dynamics\outfit\novice_outfit&lt;br /&gt;
dynamics\outfit\scientific_outfit&lt;br /&gt;
dynamics\outfit\specops_outfit&lt;br /&gt;
dynamics\outfit\stalker_outfit&lt;br /&gt;
dynamics\outfit\svoboda_heavy_outfit&lt;br /&gt;
dynamics\outfit\svoboda_light_outfit&lt;br /&gt;
dynamics\scene_objects\darkvalley\door_darkvalley_01_&lt;br /&gt;
dynamics\scene_objects\darkvalley\gate_darkvalley_01_l&lt;br /&gt;
dynamics\scene_objects\darkvalley\gate_darkvalley_01_r&lt;br /&gt;
dynamics\scene_objects\hospital\hospital_arka_1&lt;br /&gt;
dynamics\scene_objects\hospital\hospital_arka_2&lt;br /&gt;
dynamics\scene_objects\hospital\hospital_arka_3&lt;br /&gt;
dynamics\scene_objects\hospital\hospital_arka_4&lt;br /&gt;
dynamics\scene_objects\hospital\hospital_arka_5&lt;br /&gt;
dynamics\scene_objects\hospital\hospital_debris_01&lt;br /&gt;
dynamics\scene_objects\hospital\hospital_fence_01&lt;br /&gt;
dynamics\scene_objects\hospital\hospital_wooden_board_01&lt;br /&gt;
dynamics\scene_objects\hospital\hospital_wooden_board_02&lt;br /&gt;
dynamics\scene_objects\hospital\part\hospital_arka_1_part_1&lt;br /&gt;
dynamics\scene_objects\hospital\part\hospital_arka_2_part_1&lt;br /&gt;
dynamics\scene_objects\hospital\part\hospital_arka_3_part_1&lt;br /&gt;
dynamics\scene_objects\hospital\part\hospital_arka_4_part_1&lt;br /&gt;
dynamics\scene_objects\hospital\part\hospital_arka_5_part_1&lt;br /&gt;
dynamics\scene_objects\hospital\part\hospital_debris_01_part_01&lt;br /&gt;
dynamics\scene_objects\hospital\part\hospital_debris_01_part_02&lt;br /&gt;
dynamics\scene_objects\hospital\part\hospital_debris_01_part_03&lt;br /&gt;
dynamics\scene_objects\hospital\part\hospital_debris_01_part_04&lt;br /&gt;
dynamics\scene_objects\hospital\part\hospital_debris_01_part_05&lt;br /&gt;
dynamics\scene_objects\hospital\part\hospital_debris_01_part_06&lt;br /&gt;
dynamics\scene_objects\hospital\part\hospital_fence_part_01&lt;br /&gt;
dynamics\scene_objects\hospital\part\hospital_fence_part_02&lt;br /&gt;
dynamics\scene_objects\hospital\part\hospital_fence_part_03&lt;br /&gt;
dynamics\scene_objects\hospital\part\hospital_fence_part_04&lt;br /&gt;
dynamics\scene_objects\hospital\part\hospital_fence_part_05&lt;br /&gt;
dynamics\scene_objects\hospital\part\hospital_wooden_board_01_part_01&lt;br /&gt;
dynamics\scene_objects\hospital\part\hospital_wooden_board_01_part_02&lt;br /&gt;
dynamics\scene_objects\hospital\part\hospital_wooden_board_01_part_03&lt;br /&gt;
dynamics\scene_objects\hospital\part\hospital_wooden_board_01_part_04&lt;br /&gt;
dynamics\scene_objects\hospital\part\hospital_wooden_board_01_part_05&lt;br /&gt;
dynamics\scene_objects\hospital\part\hospital_wooden_board_02_part_01&lt;br /&gt;
dynamics\scene_objects\hospital\part\hospital_wooden_board_02_part_02&lt;br /&gt;
dynamics\scene_objects\hospital\part\hospital_wooden_board_02_part_03&lt;br /&gt;
dynamics\scene_objects\hospital\part\hospital_wooden_board_02_part_04&lt;br /&gt;
dynamics\scene_objects\hospital\part\hospital_wooden_board_02_part_05&lt;br /&gt;
dynamics\scene_objects\hospital\part\hospital_wooden_board_02_part_06&lt;br /&gt;
dynamics\scene_objects\labx8\dummy_rainbow_sign&lt;br /&gt;
dynamics\scene_objects\part\crane_plita&lt;br /&gt;
dynamics\scene_objects\part\part_none&lt;br /&gt;
dynamics\scene_objects\pripyat\pripyat_ventilation_grate&lt;br /&gt;
dynamics\scene_objects\pripyat\pri_a25_antenna_destroyable_barrier&lt;br /&gt;
dynamics\scene_objects\pripyat\part\pri_antenna_part_1&lt;br /&gt;
dynamics\scene_objects\pripyat\part\pri_antenna_part_2&lt;br /&gt;
dynamics\scene_objects\pripyat\part\pri_antenna_part_3&lt;br /&gt;
dynamics\scene_objects\pripyat\part\pri_antenna_part_4&lt;br /&gt;
dynamics\scene_objects\pripyat\part\pri_antenna_part_5&lt;br /&gt;
dynamics\scene_objects\pripyat\part\pri_antenna_part_6&lt;br /&gt;
dynamics\scene_objects\pripyat\part\pri_antenna_part_7&lt;br /&gt;
dynamics\scene_objects\pripyat\part\pri_antenna_part_8&lt;br /&gt;
dynamics\scene_objects\red_forest\red_forest_bridge_01_dynamic&lt;br /&gt;
dynamics\scene_objects\red_forest\red_forest_bridge_01_engine&lt;br /&gt;
dynamics\scene_objects\red_forest\red_forest_rope_01&lt;br /&gt;
dynamics\stul\child_bench&lt;br /&gt;
dynamics\stul\stul_child_01&lt;br /&gt;
dynamics\stul\stul_school_01&lt;br /&gt;
dynamics\stul\stul_school_01_br&lt;br /&gt;
dynamics\stul\stul_wood_01&lt;br /&gt;
dynamics\stul\taburet_village&lt;br /&gt;
dynamics\stul\taburet_wood_01&lt;br /&gt;
dynamics\test_character\boar_test1&lt;br /&gt;
dynamics\test_character\boar_u_test1&lt;br /&gt;
dynamics\test_character\burer_test&lt;br /&gt;
dynamics\test_character\controler_test1&lt;br /&gt;
dynamics\test_character\dogs_big&lt;br /&gt;
dynamics\test_character\dog_brown_test&lt;br /&gt;
dynamics\test_character\dog_bulterer_test&lt;br /&gt;
dynamics\test_character\dog_red_test&lt;br /&gt;
dynamics\test_character\dolg_2_face_1&lt;br /&gt;
dynamics\test_character\dolg_3_face_1&lt;br /&gt;
dynamics\test_character\face_1_01&lt;br /&gt;
dynamics\test_character\face_1_02&lt;br /&gt;
dynamics\test_character\face_1_03&lt;br /&gt;
dynamics\test_character\face_1_04&lt;br /&gt;
dynamics\test_character\face_1_05&lt;br /&gt;
dynamics\test_character\face_1_06&lt;br /&gt;
dynamics\test_character\face_1_07&lt;br /&gt;
dynamics\test_character\face_1_08&lt;br /&gt;
dynamics\test_character\face_2_04&lt;br /&gt;
dynamics\test_character\face_4_01&lt;br /&gt;
dynamics\test_character\face_4_02&lt;br /&gt;
dynamics\test_character\face_4_04&lt;br /&gt;
dynamics\test_character\flesh_test1&lt;br /&gt;
dynamics\test_character\flesh_u_test1&lt;br /&gt;
dynamics\test_character\freedom_2_face_1&lt;br /&gt;
dynamics\test_character\hero_dolg_2&lt;br /&gt;
dynamics\test_character\himera_test1&lt;br /&gt;
dynamics\test_character\krovosos_1_test&lt;br /&gt;
dynamics\test_character\krovosos_2_test&lt;br /&gt;
dynamics\test_character\krovosos_3_test&lt;br /&gt;
dynamics\test_character\neutral_2_face_2&lt;br /&gt;
dynamics\test_character\neutral_2_face_3&lt;br /&gt;
dynamics\test_character\neutral_2_face_6&lt;br /&gt;
dynamics\test_character\neutral_3_face_1&lt;br /&gt;
dynamics\test_character\neutral_nauchniy_face_1&lt;br /&gt;
dynamics\test_character\neutral_nauchniy_face_2&lt;br /&gt;
dynamics\test_character\neutral_nauchniy_face_3&lt;br /&gt;
dynamics\test_character\pseudodog1_test1&lt;br /&gt;
dynamics\test_character\pseudodog_test1&lt;br /&gt;
dynamics\test_character\psevdogigant_test&lt;br /&gt;
dynamics\test_character\stalker_bandit_3_face_1&lt;br /&gt;
dynamics\test_character\stalker_bandit_3_face_3&lt;br /&gt;
dynamics\test_character\stalker_dolg_1_face_1&lt;br /&gt;
dynamics\test_character\stalker_freedom_1_face_1&lt;br /&gt;
dynamics\test_character\stalker_freedom_2_face_2&lt;br /&gt;
dynamics\test_character\stalker_freedom_3_face_1&lt;br /&gt;
dynamics\test_character\stalker_nebo_2_face_1&lt;br /&gt;
dynamics\test_character\stalker_neutral_1_face_2&lt;br /&gt;
dynamics\test_character\stalker_neutral_1_face_3&lt;br /&gt;
dynamics\test_character\stalker_neutral_2_face_1&lt;br /&gt;
dynamics\test_character\stalker_neutral_2_face_4&lt;br /&gt;
dynamics\test_character\stalker_neutral_2_face_5&lt;br /&gt;
dynamics\test_character\stalker_neutral_2_face_7&lt;br /&gt;
dynamics\test_character\stalker_soldier_1_face_1&lt;br /&gt;
dynamics\test_character\stalker_solider_2_face_1&lt;br /&gt;
dynamics\test_character\stalker_solider_3_face_1&lt;br /&gt;
dynamics\test_character\stalker_solider_ecolog_face_1&lt;br /&gt;
dynamics\test_character\stalker_ucheniy_1_face_1&lt;br /&gt;
dynamics\test_character\tushkano_test&lt;br /&gt;
dynamics\test_character\ucheniy_1_face_2&lt;br /&gt;
dynamics\vehicles\btr\veh_btr_script_u_01&lt;br /&gt;
dynamics\vehicles\mi2\veh_mi2_01&lt;br /&gt;
dynamics\vehicles\mi2\part\veh_mi2_part_01&lt;br /&gt;
dynamics\vehicles\mi2\part\veh_mi2_part_02&lt;br /&gt;
dynamics\vehicles\mi2\part\veh_mi2_part_03&lt;br /&gt;
dynamics\vehicles\mi2\part\veh_mi2_part_04&lt;br /&gt;
dynamics\vehicles\mi2\part\veh_mi2_part_05&lt;br /&gt;
dynamics\vehicles\mi2\part\veh_mi2_part_06&lt;br /&gt;
dynamics\vehicles\mi2\part\veh_mi2_part_07&lt;br /&gt;
dynamics\vehicles\mi2\part\veh_mi2_part_08&lt;br /&gt;
dynamics\vehicles\mi24\veh_mi24_u_01&lt;br /&gt;
dynamics\vehicles\mi24\veh_mi24_u_02&lt;br /&gt;
dynamics\vehicles\mi24\veh_mi24_u_02_lod&lt;br /&gt;
dynamics\vehicles\mi24\part\veh_mi24_part1&lt;br /&gt;
dynamics\vehicles\mi24\part\veh_mi24_part10&lt;br /&gt;
dynamics\vehicles\mi24\part\veh_mi24_part2&lt;br /&gt;
dynamics\vehicles\mi24\part\veh_mi24_part3&lt;br /&gt;
dynamics\vehicles\mi24\part\veh_mi24_part4&lt;br /&gt;
dynamics\vehicles\mi24\part\veh_mi24_part5&lt;br /&gt;
dynamics\vehicles\mi24\part\veh_mi24_part6&lt;br /&gt;
dynamics\vehicles\mi24\part\veh_mi24_part7&lt;br /&gt;
dynamics\vehicles\mi24\part\veh_mi24_part8&lt;br /&gt;
dynamics\vehicles\mi24\part\veh_mi24_part9&lt;br /&gt;
dynamics\weapons\wpn_abakan\wpn_abakan&lt;br /&gt;
dynamics\weapons\wpn_ak74\wpn_ak74&lt;br /&gt;
dynamics\weapons\wpn_ak74u\wpn_ak74u&lt;br /&gt;
dynamics\weapons\wpn_ammo\ammo_1143x23_fmj&lt;br /&gt;
dynamics\weapons\wpn_ammo\ammo_1143x23_hydro&lt;br /&gt;
dynamics\weapons\wpn_ammo\ammo_12x70_buck&lt;br /&gt;
dynamics\weapons\wpn_ammo\ammo_12x76_dart&lt;br /&gt;
dynamics\weapons\wpn_ammo\ammo_12x76_zhekan&lt;br /&gt;
dynamics\weapons\wpn_ammo\ammo_545x39_ap&lt;br /&gt;
dynamics\weapons\wpn_ammo\ammo_545x39_fmj&lt;br /&gt;
dynamics\weapons\wpn_ammo\ammo_556x45_ap&lt;br /&gt;
dynamics\weapons\wpn_ammo\ammo_556x45_ss190&lt;br /&gt;
dynamics\weapons\wpn_ammo\ammo_57x28_ap&lt;br /&gt;
dynamics\weapons\wpn_ammo\ammo_57x28_fmj&lt;br /&gt;
dynamics\weapons\wpn_ammo\ammo_762x54_7h1&lt;br /&gt;
dynamics\weapons\wpn_ammo\ammo_762x54_7h14&lt;br /&gt;
dynamics\weapons\wpn_ammo\ammo_762x54_ap&lt;br /&gt;
dynamics\weapons\wpn_ammo\ammo_9x18_fmj&lt;br /&gt;
dynamics\weapons\wpn_ammo\ammo_9x18_pbp&lt;br /&gt;
dynamics\weapons\wpn_ammo\ammo_9x18_pmm&lt;br /&gt;
dynamics\weapons\wpn_ammo\ammo_9x19_fmj&lt;br /&gt;
dynamics\weapons\wpn_ammo\ammo_9x19_pbp&lt;br /&gt;
dynamics\weapons\wpn_ammo\ammo_9x39_ap&lt;br /&gt;
dynamics\weapons\wpn_ammo\ammo_9x39_pab9&lt;br /&gt;
dynamics\weapons\wpn_ammo\ammo_9x39_sp5&lt;br /&gt;
dynamics\weapons\wpn_ammo\ammo_gauss&lt;br /&gt;
dynamics\weapons\wpn_ammo\ammo_gauss_custom&lt;br /&gt;
dynamics\weapons\wpn_ammo\ammo_m209&lt;br /&gt;
dynamics\weapons\wpn_ammo\ammo_og_7b&lt;br /&gt;
dynamics\weapons\wpn_ammo\ammo_pkm&lt;br /&gt;
dynamics\weapons\wpn_ammo\ammo_vog_25&lt;br /&gt;
dynamics\weapons\wpn_ammo\ammo_vog_25p&lt;br /&gt;
dynamics\weapons\wpn_ammo\wpn_mines_1&lt;br /&gt;
dynamics\weapons\wpn_ammo\wpn_mines_2&lt;br /&gt;
dynamics\weapons\wpn_beretta92fs\wpn_beretta92fs&lt;br /&gt;
dynamics\weapons\wpn_bm16\wpn_bm16&lt;br /&gt;
dynamics\weapons\wpn_colt1911\wpn_colt1911&lt;br /&gt;
dynamics\weapons\wpn_desert_eagle\wpn_desert_eagle&lt;br /&gt;
dynamics\weapons\wpn_fn2000\wpn_fn2000&lt;br /&gt;
dynamics\weapons\wpn_fort\wpn_fort&lt;br /&gt;
dynamics\weapons\wpn_g36\wpn_g36&lt;br /&gt;
dynamics\weapons\wpn_gauss\wpn_gauss&lt;br /&gt;
dynamics\weapons\wpn_grenades\wpn_f1&lt;br /&gt;
dynamics\weapons\wpn_grenades\wpn_gd5&lt;br /&gt;
dynamics\weapons\wpn_grenades\wpn_mines1&lt;br /&gt;
dynamics\weapons\wpn_grenades\wpn_mines2&lt;br /&gt;
dynamics\weapons\wpn_grenades\wpn_rgd5&lt;br /&gt;
dynamics\weapons\wpn_groza\wpn_groza&lt;br /&gt;
dynamics\weapons\wpn_hpsa\wpn_hpsa&lt;br /&gt;
dynamics\weapons\wpn_knife\wpn_knife&lt;br /&gt;
dynamics\weapons\wpn_l85\wpn_l85&lt;br /&gt;
dynamics\weapons\wpn_lr300\wpn_lr300&lt;br /&gt;
dynamics\weapons\wpn_mounted\wpn_mounted_btr&lt;br /&gt;
dynamics\weapons\wpn_mounted\wpn_mounted_pkm_cover&lt;br /&gt;
dynamics\weapons\wpn_mounted\wpn_mounted_pkm_trenoga&lt;br /&gt;
dynamics\weapons\wpn_mp5\wpn_mp5&lt;br /&gt;
dynamics\weapons\wpn_pb\wpn_pb&lt;br /&gt;
dynamics\weapons\wpn_pkm\wpn_pkm&lt;br /&gt;
dynamics\weapons\wpn_pm\wpn_pm&lt;br /&gt;
dynamics\weapons\wpn_protecta\wpn_protecta&lt;br /&gt;
dynamics\weapons\wpn_rg6\wpn_rg6&lt;br /&gt;
dynamics\weapons\wpn_rpg7\wpn_rpg7&lt;br /&gt;
dynamics\weapons\wpn_sig220\wpn_sig220&lt;br /&gt;
dynamics\weapons\wpn_sig550\wpn_sig550&lt;br /&gt;
dynamics\weapons\wpn_spas12\wpn_spas12&lt;br /&gt;
dynamics\weapons\wpn_svd\wpn_svd&lt;br /&gt;
dynamics\weapons\wpn_svu\wpn_svu&lt;br /&gt;
dynamics\weapons\wpn_toz34\wpn_toz34&lt;br /&gt;
dynamics\weapons\wpn_upgrade\wpn_grenade_launcher&lt;br /&gt;
dynamics\weapons\wpn_upgrade\wpn_scope&lt;br /&gt;
dynamics\weapons\wpn_upgrade\wpn_silencer&lt;br /&gt;
dynamics\weapons\wpn_usp45\wpn_usp45&lt;br /&gt;
dynamics\weapons\wpn_val\wpn_val&lt;br /&gt;
dynamics\weapons\wpn_vintorez\wpn_vintorez&lt;br /&gt;
dynamics\weapons\wpn_walter99\wpn_walter99&lt;br /&gt;
dynamics\weapons\wpn_winchester1300\wpn_winchester1300&lt;br /&gt;
dynamics\wood_doski\wood_doska1&lt;br /&gt;
dynamics\wood_doski\wood_stolb1&lt;br /&gt;
dynamics\wood_doski\wood_stolb_fixed&lt;br /&gt;
dynamics\workshop_room\axe&lt;br /&gt;
dynamics\workshop_room\banka_kraski_1&lt;br /&gt;
dynamics\workshop_room\hammer&lt;br /&gt;
dynamics\workshop_room\hatch_01&lt;br /&gt;
dynamics\workshop_room\kanistra_02&lt;br /&gt;
dynamics\workshop_room\keyga&lt;br /&gt;
dynamics\workshop_room\lopata&lt;br /&gt;
dynamics\workshop_room\molot&lt;br /&gt;
dynamics\workshop_room\pick&lt;br /&gt;
dynamics\workshop_room\riffler&lt;br /&gt;
dynamics\workshop_room\saw&lt;br /&gt;
dynamics\workshop_room\tiski&lt;br /&gt;
dynamics\workshop_room\vedro_01&lt;br /&gt;
dynamics\workshop_room\ventil_01&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Вот и все)&lt;br /&gt;
[[Категория:Конфигурационные файлы]]&lt;/div&gt;</summary>
		<author><name>91.218.192.254</name></author>	</entry>

	<entry>
		<id>http://stalkerin.gameru.net/wiki/index.php?title=%D0%9D%D0%B0%D1%81%D1%82%D1%80%D0%BE%D0%B9%D0%BA%D0%B0_%D0%BB%D0%BE%D0%B3%D0%B8%D0%BA%D0%B8._%D0%A7%D0%B0%D1%81%D1%82%D1%8C_1</id>
		<title>Настройка логики. Часть 1</title>
		<link rel="alternate" type="text/html" href="http://stalkerin.gameru.net/wiki/index.php?title=%D0%9D%D0%B0%D1%81%D1%82%D1%80%D0%BE%D0%B9%D0%BA%D0%B0_%D0%BB%D0%BE%D0%B3%D0%B8%D0%BA%D0%B8._%D0%A7%D0%B0%D1%81%D1%82%D1%8C_1"/>
				<updated>2013-07-11T12:04:16Z</updated>
		
		<summary type="html">&lt;p&gt;91.218.192.254: /* Схема remark */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Шаблон:Настройка логики}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;font size=6&amp;gt;Настройки логики&amp;lt;/font&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Система флагов (path_walk, path_look)=&lt;br /&gt;
В точках путей можно задавать флаги, изменяющие поведение персонажа. Флаги задаются прямо в имени '''''waypoint'''''-а, например, для точки с именем &amp;quot;'''''wp00'''''&amp;quot;:&amp;lt;br&amp;gt;&lt;br /&gt;
'''''wp00|flag1|flag2'''''&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Флаги точек пути '''''path_walk''''':&amp;lt;br&amp;gt;&lt;br /&gt;
*'''a=state'''&amp;lt;br&amp;gt;&lt;br /&gt;
:Выбирает состояние тела при перемещении (Только из раздела &amp;quot;Ходячие состояния&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
:Список состояний можно взять в ''gamedata\scripts\state_lib.script''&amp;lt;br&amp;gt;&lt;br /&gt;
*'''p=percent'''&amp;lt;br&amp;gt;&lt;br /&gt;
:Вероятность остановиться в точке в процентах (0 – 100). По умолчанию 100, т.е. сталкер никогда не проходит мимо точек остановки.&amp;lt;br&amp;gt;&lt;br /&gt;
*'''sig=name'''&amp;lt;br&amp;gt;&lt;br /&gt;
:Установить сигнал с именем '''''name''''' сразу по прибытию в точку (до поворота) для последующей его проверки с помощью поля '''''on_signal''''' логической схемы. Если нужно установить сигнал после поворота – используйте соответствующий флажок пути *'''''path_look'''''.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Флаги точек пути '''''path_look''''':&amp;lt;br&amp;gt;&lt;br /&gt;
*'''a =state'''&amp;lt;br&amp;gt;&lt;br /&gt;
:Выбирает состояние тела при стоянии (или сидении) на месте. (Из разделов &amp;quot;Стоячие&amp;quot; и &amp;quot;Сидячие&amp;quot; состояния)&amp;lt;br&amp;gt;&lt;br /&gt;
:Список состояний можно взять в ''gamedata\scripts\state_lib.script''&amp;lt;br&amp;gt;&lt;br /&gt;
*'''t=msec''' - время в миллисекундах, которое персонаж должен смотреть в заданную точку.&amp;lt;br&amp;gt;&lt;br /&gt;
:'''*''' – бесконечное время. Допустимы значения в диапазоне [1000, 30000], по умолчанию – 5000.&amp;lt;br&amp;gt;&lt;br /&gt;
:Для конечных (терминальных) вершин пути '''''path_walk''''', у которых не более 1-й соответствующей точки '''path_look''', значение '''''t''''' всегда считается бесконечным и его явно задавать не нужно.&amp;lt;br&amp;gt;&lt;br /&gt;
*'''sig=name'''&amp;lt;br&amp;gt;&lt;br /&gt;
:После поворота в точку '''''path_look''''', установить сигнал с именем '''''name'''''.&amp;lt;br&amp;gt;&lt;br /&gt;
*'''syn'''&amp;lt;br&amp;gt;&lt;br /&gt;
:Наличие флажка задержит установку сигнала до тех пор, пока в точку с флажком '''''syn''''' не прибудут все персонажи с данным '''''team'''''-ом ('''''team''''' задается в виде текстовой строки в '''''customdata'''''). До тех пор, пока остальные персонажи не прибудут, ожидающей персонаж будет отыгрывать свою '''''idle''''' анимацию.&amp;lt;br&amp;gt;&lt;br /&gt;
*'''sigtm=signal'''&amp;lt;br&amp;gt;&lt;br /&gt;
:Устанавливает сигнал при вызове '''''time_callback'''''-а '''''state manager'''''-ом. Соответственно, если '''''t=0''''', то сигнал будет установлен после отыгрывания '''''init''''' анимации. Это используется, например, с анимацией '''''press''''', которая состоит из двух частей: 1 - нажимаем на кнопку, 2 - опускаем руку.&amp;lt;br&amp;gt;&lt;br /&gt;
:В пути '''''path_look''''' можно сделать:&amp;lt;br&amp;gt;&lt;br /&gt;
:&amp;lt;ini&amp;gt;wp00|a=press|t=0|sigtm=pressed&amp;lt;/ini&amp;gt;&lt;br /&gt;
:А затем переключить схему:&amp;lt;br&amp;gt;&lt;br /&gt;
:&amp;lt;ini&amp;gt;on_signal = pressed | другая_схема&amp;lt;/ini&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Более подробное описание путей.==&lt;br /&gt;
&lt;br /&gt;
Настройка:&amp;lt;br&amp;gt;&lt;br /&gt;
[[Изображение:Logic_1.JPG]]&lt;br /&gt;
&lt;br /&gt;
На карту для каждого walker-а нужно поставить:&amp;lt;br&amp;gt;&lt;br /&gt;
#Путь '''''path_walk''''', по которому '''''walker''''' ходит.&amp;lt;br&amp;gt;&lt;br /&gt;
#Путь '''''path_look''''', состоящий из точек, в которые '''''walker''''' смотрит.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''''Walker'''''-ов может быть 1 или больше. Они могут действовать независимо, или взаимодействовать друг с другом.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Если персонаж должен стоять на месте, то ему задается одна точка пути '''''path_walk''''' и как минимум одна точка пути '''''path_look''''', хотя и можно не задавать точку взгляда вовсе (игра автоматически определит точку по умолчанию ту, в которую НПС смотрел изначально), делать этого не следует.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Правила расстановки флажков в путях рассмотрим на нескольких примерах:&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Пример 1:===&lt;br /&gt;
&lt;br /&gt;
Персонаж патрулирует территорию вокруг двух домиков. Маршрут строится следующим образом: &amp;lt;br&amp;gt;&lt;br /&gt;
[[Изображение:Logic_2.JPG]]&lt;br /&gt;
&lt;br /&gt;
Как сделать, чтобы персонаж между определенными точками бежал или крался? Для этого в пути '''''path_walk''''' существуют флажки.&amp;lt;br&amp;gt;&lt;br /&gt;
У каждого вейпоинта есть имя: '''''wp00''''', '''''wp01''''' и т.д.&amp;lt;br&amp;gt;&lt;br /&gt;
Флажки задаются в имени. Их нужно отделять от самого имени с помощью символа ‘'''|'''’. Пишеться '''''a=anim''''', где '''''anim''''' – название анимации. Если мы напишем '''''a=threat''''' то персонаж пойдет в состоянии данжер, если '''''a=raid''''' то побежит с оружием наизготовку и т.д. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''''Примечание''''': В точках пути '''''path_walk''''' используются анимации '''ТОЛЬКО''' из раздела «Ходячие состояния»!&lt;br /&gt;
&lt;br /&gt;
===Пример 2:===&lt;br /&gt;
[[Изображение:Logic_3.JPG]]&lt;br /&gt;
&lt;br /&gt;
Разговор персонажа.&lt;br /&gt;
&lt;br /&gt;
Чтобы персонаж говорил, перемещаясь по маршруту, нужно определить в каждой точке список тем, на которые он может говорить. Для этого существуют следующие поля:&amp;lt;br&amp;gt;&lt;br /&gt;
'''''s = имя_звуковой_схемы''''' - (по умолчанию звук отключен). Несколько тем можно перечислять через запятую.&lt;br /&gt;
&lt;br /&gt;
===Пример 3:===&lt;br /&gt;
[[Изображение:Logic_4.JPG]]&lt;br /&gt;
&lt;br /&gt;
В примере 3 используется только поле '''''s''''', чтобы задать тему разговора, и флажок '''''sc''''', чтобы показать, что звук проигрывается не разово, а периодически.&amp;lt;br&amp;gt;&lt;br /&gt;
Остальные параметры ('''''sp''''', '''''sf''''', '''''st''''') задавать НЕ РЕКОМЕНДУЕТСЯ, значения по умолчанию приемлемы для большинства скриптов.&amp;lt;br&amp;gt;&lt;br /&gt;
Параметр '''''sa''''' также использовать НЕ РЕКОМЕНДУЕТСЯ. Если нужно стартовать звук одновременно с анимацией, лучше воспользоваться полями пути '''''path_look''''', о котором будет написано ниже.&amp;lt;br&amp;gt;&lt;br /&gt;
Если персонаж не только ходит по маршруту, но должен также останавливаться и играть анимации, нужно задать ему путь '''''path_look'''''.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Пример 4:=== &lt;br /&gt;
усовершенствуем пример 1, чтобы персонаж, проходя мимо проема между домами, останавливался и заглядывал в него:&lt;br /&gt;
&lt;br /&gt;
[[Изображение:Logic_5.JPG]]&lt;br /&gt;
&lt;br /&gt;
Что добавилось в этом примере? Путь '''''path_look''''' с двумя точками. Связь между точками этого пути рекомендуется сразу же удалить в редакторе, поскольку она все равно не используется.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Далее, в точках путей '''''path_walk''''' и '''''path_look''''', которые обведены на рисунке пунктирной линией, в редакторе ставим общие флажки (в ''ACDC'' поле '''''flags'''''). Например, в верхней паре точек ставим флажок 0, а в нижней паре точек – флажок 1.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Теперь персонаж будет останавливаться в точках '''''path_walk''''', помеченных флажком, и смотреть в точку '''''path_look''''', помеченную тем же самым флажком.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Если точка '''''path_walk'''''  не помечена флажком, персонаж проходит ее не останавливаясь.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Одной точке '''''path_walk''''' может соответствовать несколько точек '''''path_look'''''. Тогда персонаж выберем случайно одну из подходящих точек.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
По аналогии с '''''path_walk''''', в точках пути '''''path_look''''' можно использовать различные флажки, меняющие поведение:&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''''p = 100''''' – вероятность, с которой персонаж посмотрит именно в эту точку. Значения '''''p''''' всех подходящих точек суммируются, т.е. если у одной точки '''''p = 100''''', а у другой '''''p = 300''''', то персонаж посмотрит в первую с вероятностью 25%! (т.е. 100 из 400).&lt;br /&gt;
Во избежание путаницы, рекомендуется задавать '''''p''''' так, чтобы их сумма составляла '''100'''.&lt;br /&gt;
По умолчанию у всех точек '''''p = 100'''''.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''''t = 5000''''' - время, на которое персонаж задержится в этой точке (по умолчанию 5000 мсек)&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Пример 5:===&lt;br /&gt;
&lt;br /&gt;
[[Изображение:Logic_6.JPG]]&lt;br /&gt;
&lt;br /&gt;
В этом примере проходя через точку '''''wp00''''', персонаж с вероятностью 30% посмотрит в точку '''''wp00''''' в течение 5 секунд, но с вероятностью 70% посмотрит в точку '''''wp01''''' в течении 10 секунд.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
По умолчанию при остановках персонаж играет анимацию '''''idle''''', если он не в состоянии '''''crouch''''', либо анимацию '''''hide''''', если он в состоянии '''''crouch'''''.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Если требуется другая анимация, можно ее указать с помощью флажка:&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''''a = имя_анимации''''' - (по умолчанию '''''idle'''''). &amp;lt;br&amp;gt;&lt;br /&gt;
Пишеться '''''a=anim''''', где '''''anim''''' – название анимации. Если мы напишем '''''a=hide''''', то персонаж сядет в состоянии данжер, если '''''a=guard''''', то встанет  с оружием наизготовку и т.д. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''''Примечание''''': В точках пути '''''path_look''''' используются анимации '''ТОЛЬКО''' из раздела «Стоячие и сидячие состояния»!&lt;br /&gt;
&lt;br /&gt;
==Система флагов для монстров==&lt;br /&gt;
Флаги пути движения:&amp;lt;br&amp;gt;&lt;br /&gt;
'''''s=имя_звуковой_темы'''''&amp;lt;br&amp;gt;&lt;br /&gt;
:Устанавливает звуковую тему на пути в данную точку ('''''idle''''', '''''eat''''', '''''attack''''', '''''attack_hit''''', '''''take_damage''''', '''''die''''', '''''threaten''''', '''''steal''''', '''''panic''''', '''''growling''''').&amp;lt;br&amp;gt;&lt;br /&gt;
'''''с'''''&amp;lt;br&amp;gt;&lt;br /&gt;
:Устанавливает положение ходьбы вприсядку.&amp;lt;br&amp;gt;&lt;br /&gt;
'''''r'''''&amp;lt;br&amp;gt;&lt;br /&gt;
:Устанавливает положение ходьбы бег.&amp;lt;br&amp;gt;&lt;br /&gt;
'''''sig=name'''''&amp;lt;br&amp;gt;&lt;br /&gt;
:Установить сигнал с именем '''''name''''' сразу по прибытию в точку (до поворота) для последующей его проверки с помощью поля '''''on_signal''''' логической схемы.&amp;lt;br&amp;gt;&lt;br /&gt;
'''''b=vis/invis'''''&amp;lt;br&amp;gt;&lt;br /&gt;
:Флаг, исключительно для кровососа. Управляет невидимостью ('''''vis''''' - отключена, '''''invis''''' - включена).&lt;br /&gt;
&lt;br /&gt;
Флаги пути обзора:&amp;lt;br&amp;gt;&lt;br /&gt;
'''''t=msec'''''&amp;lt;br&amp;gt;&lt;br /&gt;
:Время в миллисекундах, которое нужно ждать, смотря в точку.&amp;lt;br&amp;gt;&lt;br /&gt;
'''''a=state'''''&amp;lt;br&amp;gt;&lt;br /&gt;
:Анимация ('''''stand_idle''''', '''''sit_idle''''', '''''lie_idle''''', '''''eat''''', '''''sleep''''', '''''rest''''', '''''attack''''', '''''look_around''''', '''''turn''''').&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Случайный выбор пути==&lt;br /&gt;
По поводу точек пути '''''path_walk'''''.&amp;lt;br&amp;gt;&lt;br /&gt;
Есть ещё один интересный факт: следующую точку пути '''''path_walk''''' можно задавать рандомно.&amp;lt;br&amp;gt;&lt;br /&gt;
Например:[[Файл:Random_path.jpg]]&lt;br /&gt;
&lt;br /&gt;
Нам требуется, чтобы НПС стоящий в точке '''''p0''''' патрулировал территорию по двум цикличным маршрутам:&amp;lt;br&amp;gt;&lt;br /&gt;
'''''p0 -&amp;gt; p1 -&amp;gt; p2 -&amp;gt; p0'''''&amp;lt;br&amp;gt;&lt;br /&gt;
'''''p0 -&amp;gt; p3 -&amp;gt; p4 -&amp;gt; p0'''''&amp;lt;br&amp;gt;&lt;br /&gt;
Чтобы задать вариацию выбора маршрута относительно точки '''''p0''''', нужно в ссылке на следующую точку пути указать не одну, а две точки:&amp;lt;br&amp;gt;&amp;lt;ini&amp;gt;p0:links = p1(1), p3(1)&amp;lt;/ini&amp;gt;Таким не хитрым образом, НПС для продолжения пути рандомно выберет одну из предложенных точек '''''p1''''' или '''''p3'''''. После возврата в точку '''''p0''''' выбор проследует вновь. Варьировать выбор можно в любой точки, например, можно сделать так:&amp;lt;br&amp;gt;&amp;lt;ini&amp;gt;p0:links = p1(1), p3(1)&amp;lt;/ini&amp;gt;а в точке '''''p1''''', также задать выбор:&amp;lt;br&amp;gt;&amp;lt;ini&amp;gt;p1:links = p2(1), p3(1)&amp;lt;/ini&amp;gt;&lt;br /&gt;
'''НО!'''&lt;br /&gt;
Не следует делать выбор между двумя путями, если в пути одна точка! Вот такая схема '''НЕ ПРИЕМЛЕМА''' и, лично у меня, вызывает вылет:[[Файл:Error_random_path.jpg]]&lt;br /&gt;
Цифры в скобках, означают ту самую вероятность с которой НПС пойдёт в точку. Если цифры задать одинаковые, то и вероятность выбора для каждой точки будет равная, если же, например, в одной из точек указать значение 0.75, а в другой 0.25:&amp;lt;br&amp;gt;&amp;lt;ini&amp;gt;p1:links = p2(0.75), p3(0.25)&amp;lt;/ini&amp;gt;то соответственно в точку '''''p2''''' НПС будет ходить в три раза чаще.&lt;br /&gt;
&lt;br /&gt;
=Схемы поведения сталкеров.=&lt;br /&gt;
Есть определенный набор схем, которые описывают поведение персонажа. Они прописываются у него в custom_data или, в случае гулага, в соответствующих файлах, описывающих работы данного гулага. Ниже приведен перечень этих схем.&amp;lt;br&amp;gt;&lt;br /&gt;
В файле ''gamedata\scripts\modules.script'' указаны все загружаемые схемы.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Схема walker==&lt;br /&gt;
Это базовая схема, по которой персонаж, перемещается по патрульному пути ('''''path_walk''''') и останавливается в определенных точках и выполняет соответствующие действия. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''[walker]'''&amp;lt;br&amp;gt;&lt;br /&gt;
'''''path_walk = &amp;lt;имя_пути&amp;gt;'''''    - основной путь, по которому ходит NPC&amp;lt;br&amp;gt;&lt;br /&gt;
'''''path_look = &amp;lt;имя_пути&amp;gt;'''''    - путь, куда смотрит NPC&amp;lt;br&amp;gt;&lt;br /&gt;
'''''team      = &amp;lt;имя_команды&amp;gt;''''' - команда для синхронизации&amp;lt;br&amp;gt;&lt;br /&gt;
'''''def_state_moving1 = &amp;lt;название_анимации&amp;gt;'''''  - состояние, в котором NPC движется к первой точке пути, если она близко ('''''patrol''''' по умолчанию)&amp;lt;br&amp;gt;&lt;br /&gt;
'''''def_state_moving2 = &amp;lt;название_анимации&amp;gt;'''''  - состояние, в котором NPC движется к первой точке пути, если она не слишком далеко ('''''rush''''' по умолчанию)&amp;lt;br&amp;gt;&lt;br /&gt;
'''''def_state_moving3 = &amp;lt;название_анимации&amp;gt;'''''  - состояние, в котором NPC движется к первой точке пути, если она далеко ('''''sprint''''' по умолчанию)&amp;lt;br&amp;gt;&lt;br /&gt;
'''''def_state_standing = &amp;lt;название_анимации&amp;gt;''''' - дефолтное состояние в котором он стоит и смотрит на точку, если в этой точке не задана другое состояние.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В точках '''''path_walk''''', которым соответствуют точки пути '''''path_look''''' (стоят одинаковые флажки) персонаж останавливается и смотрит в определенную точку, при этом отыгрывая (или не отыгрывая) определенную анимацию.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''''Пример использования схемы''''':&amp;lt;br&amp;gt;&amp;lt;ini&amp;gt;[walker@pri_followers_leader_wave1_wait]&lt;br /&gt;
path_walk = wave1_leader_walk2&lt;br /&gt;
path_look = wave1_leader_look2&lt;br /&gt;
def_state_moving1 = assault&lt;br /&gt;
def_state_moving2 = assault&lt;br /&gt;
team = followers&amp;lt;/ini&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Файл: ''gamedata\scripts\xr_walker.script''&lt;br /&gt;
&lt;br /&gt;
==Схема remark==&lt;br /&gt;
Схема используется для синхронизации\связки других схем.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Примечание''': не используйте эту схему в качестве активной - это вызовет неправильное поведение NPC.&lt;br /&gt;
&lt;br /&gt;
'''[remark]'''&amp;lt;br&amp;gt;&lt;br /&gt;
'''''snd_anim_synс = true/false''''' - по умолчанию '''''false'''''. Указывает на то необходимо ли синхронизировать звук с анимацией.&amp;lt;br&amp;gt;&lt;br /&gt;
'''''snd = &amp;lt;название_звуковой_темы&amp;gt;''''' - звук ремарка, берётся из файла ''sound_theme.script''. По умолчанию  '''''nil'''''.&amp;lt;br&amp;gt;&lt;br /&gt;
'''''anim = &amp;lt;название_анимации&amp;gt;''''' - анимация ремарка, по умолчанию '''''wait'''''.&amp;lt;br&amp;gt;&lt;br /&gt;
'''''target = &amp;lt;параметр&amp;gt;''''' - куда смотрит сталкер. Есть следующие варианты:&amp;lt;br&amp;gt;&lt;br /&gt;
:*'''''story_id''''' – числовое значение&amp;lt;nowiki&amp;gt;;&amp;lt;/nowiki&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
:*'''''actor''''' – без комментариев&amp;lt;nowiki&amp;gt;;&amp;lt;/nowiki&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
:*'''''nil''''' – позиция вычисленная АИ автоматически&amp;lt;nowiki&amp;gt;;&amp;lt;/nowiki&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
:*'''''&amp;lt;имя работы&amp;gt;,&amp;lt;имя гулага&amp;gt;''''' - смотреть на сталкера который находится на определенной работе под гулагом (второй параметр необязателен. В этом случае берется гулаг NPC, для которого задана данная секция ремарка).&amp;lt;br&amp;gt;&lt;br /&gt;
:Пример:&amp;lt;br&amp;gt;&lt;br /&gt;
:&amp;lt;ini&amp;gt;target = logic@cit_killers_base_guard, cit_killers&amp;lt;/ini&amp;gt;&lt;br /&gt;
:*'''''&amp;lt;path_name&amp;gt;,&amp;lt;point_number&amp;gt;''''' - можно указывать смотреть в вершину патрульного пути (&amp;lt;имя пути&amp;gt;,&amp;lt;имя точки&amp;gt;).&amp;lt;br&amp;gt;&lt;br /&gt;
:Пример:&amp;lt;br&amp;gt;&lt;br /&gt;
:&amp;lt;ini&amp;gt;target = cit_killers_kamp5,0&amp;lt;/ini&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''''Примечание''''': теперь если значение не задано, то оно равно '''''nil''''' а не '''''actor''''', как было раньше.&amp;lt;br&amp;gt;&lt;br /&gt;
:То есть если вы хотите чтобы персонаж в ремарке смотрел на актера - необходимо явно прописывать это. Если задано значение '''''nil''''', то персонаж развернется в позицию, которую посчитает АИ.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Стандартные сигналы '''''remark'''''а для параметра переключения схемы '''''on_signal''''': &amp;lt;br&amp;gt;&lt;br /&gt;
:*'''''sound_end''''' – по окончании проигрывания звуковой схемы&amp;lt;br&amp;gt;&lt;br /&gt;
:*'''''anim_end''''' – по окончании проигрывания анимации&amp;lt;br&amp;gt;&lt;br /&gt;
:*'''''action_end''''' – по окончании проигрывания и того и другого, если они синхронизированы&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''''Пример использования схемы''''':&amp;lt;br&amp;gt;&amp;lt;ini&amp;gt;[remark@esc_lager_volk2]&lt;br /&gt;
anim = guard_rac&lt;br /&gt;
snd = esc_wolf_radio&lt;br /&gt;
target = actor&lt;br /&gt;
on_signal = sound_end| remark@esc_lager_volk3&amp;lt;/ini&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Файл: ''gamedata\scripts\xr_remark.script''&lt;br /&gt;
&lt;br /&gt;
==Схема sleeper==&lt;br /&gt;
Схема сидящего и спящего NPC. Необходимо поставить патрульный путь, минимум из 1-го поинта. Спящий будет садиться спать в первой точке пути, и разворачиваться при этом в сторону нулевой точки.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''[sleeper]'''&amp;lt;br&amp;gt;&lt;br /&gt;
'''''path_main = &amp;lt;имя_пути&amp;gt;''''' - точка в которой NPC будет спать - второй поинт, развернувшись в нулевой поинт.&amp;lt;br&amp;gt;&lt;br /&gt;
'''''wakeable = true/false''''' – может ли проснуться быстро (если '''''true''''', то спит на корточках и во сне бормочет).&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''''Примечание''''': Если путь состоит из двух точек, то связь нужно делать от первой точки к нулевой (либо двунаправленную).&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''''Пример использования схемы''''':&amp;lt;br&amp;gt;&amp;lt;ini&amp;gt;[sleeper@esc_blockpost_sleep1]&lt;br /&gt;
path_main = sleep1&lt;br /&gt;
wakeable = false&amp;lt;/ini&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Файл: ''gamedata\scripts\xr_sleeper.script''&lt;br /&gt;
&lt;br /&gt;
==Схема kamp==&lt;br /&gt;
Схема сталкера, сидящего в определенном радиусе вокруг указанной точки (у костра), и располагающегося лицом к этой точке.&amp;lt;br&amp;gt;&lt;br /&gt;
	&lt;br /&gt;
'''[kamp]'''&amp;lt;br&amp;gt;&lt;br /&gt;
'''''center_point = &amp;lt;имя_пути&amp;gt;''''' – имя точки вокруг которой NPC будет устраиваться.&amp;lt;br&amp;gt;&lt;br /&gt;
'''''radius = &amp;lt;number&amp;gt;''''' - насколько далеко сталкер будет сидеть от центра лагеря. По умолчанию - 2 метра.&amp;lt;br&amp;gt;&lt;br /&gt;
'''''def_state_moving = &amp;lt;название_анимации&amp;gt;''''' - дефолтное состояние, в котором NPC будет идети к точке кампа. По умолчанию - '''''walk'''''&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''''Примечание''''': Если точка кампа находится в костре, то в оффлайне сталкера прийдут на нее, а когда они перейдут в онлайн, то окажуться внутри костра, где и получат хит.&amp;lt;br&amp;gt;&lt;br /&gt;
:Чтобы этого не случалось в секции кемпа указывать '''''path_walk''''' из одной точке, название которой '''''&amp;lt;path_kamp_name&amp;gt;_task''''':&amp;lt;ini&amp;gt;path_walk = &amp;lt;имя_пути&amp;gt;_task&amp;lt;/ini&amp;gt;Если точка кемпа расположена в чистом поле то, '''''path_walk''''' прописывать необязательно.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''''Пример использования схемы''''':&amp;lt;br&amp;gt;&amp;lt;ini&amp;gt;[kamp@esc_blockpost_kamp1]&lt;br /&gt;
center_point = kamp_center&lt;br /&gt;
path_walk = kamp_center_task&lt;br /&gt;
def_state_moving = raid&amp;lt;/ini&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Файл: ''gamedata\scripts\xr_kamp.script''&lt;br /&gt;
&lt;br /&gt;
==Схема camper==&lt;br /&gt;
Свойства камперов:&lt;br /&gt;
* кампер стоит на точке и смотрит в направлении, куда Вы его поставили в редакторе или передвигается по патрульным путям;&amp;lt;br&amp;gt;&lt;br /&gt;
* камперы переключаются на универсальный комбат, только если видят врага ближе чем в 30 метрах. Если он выжил, он возвращается в состояние кампера;&amp;lt;br&amp;gt;&lt;br /&gt;
* В любых других случаях действуют по собственной скриптовой схеме. Если видим врага - стреляем. Если слышим дэнжер - то смотрим в направление в данжере. Если видим гранату - убегаем от гранаты. Если видели врага, а враг исчез, то смотрим в точку, где видели последний раз врага;&amp;lt;br&amp;gt;&lt;br /&gt;
* камперы не сражаются в движении. Если они видят врага - они останавливаются, стреляют, а потом продолжают движение.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''[camper]'''&amp;lt;br&amp;gt;&lt;br /&gt;
'''''path_walk = &amp;lt;имя_пути&amp;gt;''''' - путь по которому ходит NPC.&amp;lt;br&amp;gt;&lt;br /&gt;
'''''path_look = &amp;lt;имя_пути&amp;gt;''''' - точки в которые смотрит NPC.&amp;lt;br&amp;gt;&lt;br /&gt;
'''''radius = &amp;lt;number&amp;gt;''''' – если расстояние между NPC и противником меньше указанного, то он уходит в универсальный комбат. По умолчанию - 20 метров.&amp;lt;br&amp;gt;&lt;br /&gt;
'''''no_retreat = true/false''''' - NPC при виде врага не будет ломиться на ближайшую точку '''''path_walk''''', а сразу перейдет в режим убивания.&lt;br /&gt;
:Нужно это в том случае, если вы хотите сделать сценку, когда одни ребята наезжают на других. Ставите камперов с вышеуказанным флажком. Они идут по своим патрульным путям и выносят врагов.&amp;lt;br&amp;gt;&lt;br /&gt;
'''''def_state_moving = &amp;lt;название_анимации&amp;gt;''''' - состояние, в котором NPC движется на ближайшую точку пути при враге. По умолчанию - '''''assault'''''.&amp;lt;br&amp;gt;&lt;br /&gt;
'''''def_state_moving_fire = &amp;lt;название_анимации&amp;gt;''''' - состояние, в котором NPC отстреливается от врага, во время движения на ближайшую точку пути.&lt;br /&gt;
:По умолчанию - '''''sneak_fire'''''.&amp;lt;br&amp;gt;&lt;br /&gt;
'''''def_state_campering = &amp;lt;название_анимации&amp;gt;''''' - состояние, в котором NPC ожидает врага, находясь на пути. По умолчанию - '''''hide'''''.&amp;lt;br&amp;gt;&lt;br /&gt;
'''''def_state_campering_fire = &amp;lt;название_анимации&amp;gt;''''' - состояние, в котором NPC отстреливается от врага, находясь на пути. По умолчанию '''''hide_fire'''''.&amp;lt;br&amp;gt;&lt;br /&gt;
'''''attack_sound = &amp;lt;имя_звуковой_темы&amp;gt;''''' - возможность переопределять снайперам/камперам звук атаки. По дефолту он равен звуковой теме '''''fight_attack'''''.&lt;br /&gt;
:Можно изменить на любое другое (для сценических потребностей) либо вообще отключить, прописав значение '''''false'''''.&amp;lt;br&amp;gt;&lt;br /&gt;
'''''shoot = &amp;lt;тип_стрельбы&amp;gt;''''' - возможны следующие значения:&lt;br /&gt;
:*'''''always''''' - значение по умолчанию, стреляет всегда, когда можно;&amp;lt;br&amp;gt;&lt;br /&gt;
:*'''''none''''' - не стреляет вообще;&amp;lt;br&amp;gt;&lt;br /&gt;
:*'''''terminal''''' - стреляет только когда находится на последней точки патрульного пути. Это сделано для облегчения построение атакующих сцен.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''''Примечание''''': У кампера есть один большой минус – когда ему наносится хит и он не знает откуда хит наносится (не видит противника, не слышит выстрела),&amp;lt;br&amp;gt;&lt;br /&gt;
:то он тупо продолжает стоять на старом месте и ждать следующей пули.&amp;lt;br&amp;gt;&lt;br /&gt;
:Ввиду этого не стоит расставлять кемперов в случае, когда сталкеры должны защищаться и держать позицию в том случае, если есть несколько направлений, откуда игрок или сталкеры смогут атаковать поставленного кампера. Используйте '''''walker''''' в таких случаях, а камперов стоить ставить для атак по путям и как снайперов.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''''Пример использования схемы''''':&amp;lt;br&amp;gt;&amp;lt;ini&amp;gt;[camper@dar_military_scout_hide]&lt;br /&gt;
path_walk = walk_hide&lt;br /&gt;
path_look = look_hide&lt;br /&gt;
radius = 10&lt;br /&gt;
no_retreat = true&lt;br /&gt;
def_state_moving = assault&lt;br /&gt;
def_state_campering = hide_na&lt;br /&gt;
shoot = always&amp;lt;/ini&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Файл: ''gamedata\scripts\xr_camper.script''&lt;br /&gt;
&lt;br /&gt;
==Схема sniper==&lt;br /&gt;
Разновидность кампера. Отличаются тем, что стреляют только одиночными выстрелами и не смотрят по точкам патрульного пути, а сканируют пространство между ними. Скорость сканирования от точки к точке фиксирована и равна 20 секунд.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В кастом дате кемпера прописать:&amp;lt;br&amp;gt;&amp;lt;ini&amp;gt;sniper = true&amp;lt;/ini&amp;gt;&lt;br /&gt;
Пример:&amp;lt;br&amp;gt;&amp;lt;ini&amp;gt;[camper@esc_blockpost_camper_day]&lt;br /&gt;
path_walk = camper_day_walk&lt;br /&gt;
path_look = camper_day_look&lt;br /&gt;
sniper = true&lt;br /&gt;
def_state_campering = threat&amp;lt;/ini&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''''Примечание''''': Ставить снайперу только 2 точки '''''look'''''.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Файл: ''gamedata\scripts\xr_camper.script''&lt;br /&gt;
&lt;br /&gt;
==Схема follower== &lt;br /&gt;
NPC идет за NPC-лидером. Если до лидера расстояние менее 5 метров, то он идет, если от 5 до 20 – бежит в режиме '''''run''''', если свыше 20 – догоняет в режиме '''''sprint'''''.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;u&amp;gt;Пути не задаются&amp;lt;/u&amp;gt;.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''[follower]'''&amp;lt;br&amp;gt;&lt;br /&gt;
'''''leader = &amp;lt;number&amp;gt;''''' - '''''story_id''''' лидера из ''game.ltx'' (число!).&amp;lt;br&amp;gt;&lt;br /&gt;
'''''formation_line = true/false''''' - постарается идти сбоку от лидера, в противном случае будет идти сзади.&amp;lt;br&amp;gt;&lt;br /&gt;
'''''distance = &amp;lt;number&amp;gt;''''' - расстояние в метрах, на котором будет идти от лидера '''''attendant'''''. По умолчанию – 1,5 метра, если идет цепью, то 5 метров.&amp;lt;br&amp;gt;&lt;br /&gt;
'''''state_if_leader_in_meet = &amp;lt;название_анимации&amp;gt;''''' - это есть строка с именем  состояния из '''''state_manager''''', которое будет назначено '''''follower'''''-ам, если командир пребывает в состоянии '''''meet'''''.&amp;lt;br&amp;gt;&lt;br /&gt;
'''''anim_walk = &amp;lt;название_анимации&amp;gt;''''' - состояние, в котором фолловер идет за лидером.&amp;lt;br&amp;gt;&lt;br /&gt;
'''''anim_run = &amp;lt;название_анимации&amp;gt;''''' - состояние, в котором фолловер бежит за лидером.&amp;lt;br&amp;gt;&lt;br /&gt;
'''''anim_sprint = &amp;lt;название_анимации&amp;gt;''''' - состояние, в котором фолловер спринтует за лидером.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''''Примечание''''': Не забыть прописать:&lt;br /&gt;
&amp;lt;ini&amp;gt;[smart_terrains]&lt;br /&gt;
none = true&amp;lt;/ini&amp;gt;&lt;br /&gt;
:Иначе NPC засосёт в гулаг и никуда он не пойдёт.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Если все это происходит под гулагом, то вместо '''''story_id''''' лидера, мы прописываем его секцию логики в файле скрипта.&amp;lt;br&amp;gt;&lt;br /&gt;
Пример:&amp;lt;lua&amp;gt;t = { section = &amp;quot;logic@bar_arena_follower_2&amp;quot;, &lt;br /&gt;
      idle    = 0,&lt;br /&gt;
      prior   = 7,&lt;br /&gt;
      state   = {0},&lt;br /&gt;
      squad   = squad,&lt;br /&gt;
      group   = groups[0],&lt;br /&gt;
      ...&lt;br /&gt;
    }&amp;lt;/lua&amp;gt;В данном случае для параметра '''''leader''''' необоходимо указать строку '''''bar_arena_follower_2'''''.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''''Примечание''''': в релизе игры данная схема не используется.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Файл: ''gamedata\scripts\xr_attendant.script''&lt;br /&gt;
&lt;br /&gt;
==Схема zoneguard==&lt;br /&gt;
У NPC есть две зоны (может быть одна). Он ходит по путям, но когда игрок заходит в зону, отрывает от дел, подбегает к игроку, наставляет на игрока оружие (может кричать, может говорить), если игрок заходит во вторую зону – атакует игрока.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''[zoneguard]'''&amp;lt;br&amp;gt;&lt;br /&gt;
'''''path_walk = &amp;lt;имя_пути&amp;gt;''''' - путь перемещения.&amp;lt;br&amp;gt;&lt;br /&gt;
'''''path_look = &amp;lt;имя_пути&amp;gt;''''' - путь обзора.&amp;lt;br&amp;gt;&lt;br /&gt;
'''''team = &amp;lt;имя_команды&amp;gt;''''' - имя команды синхронизированных '''''zoneguard'''''-ов (из всей команды только 1 будет реагировать на игрока).&amp;lt;br&amp;gt;&lt;br /&gt;
'''''zone_guard = &amp;lt;имя_зоны&amp;gt;''''' - зона в пределах которой игрок будет атакован.&amp;lt;br&amp;gt;&lt;br /&gt;
'''''zone_warn = &amp;lt;имя_зоны&amp;gt;''''' - зона в пределах которой NPC будет начинать разговор с игроком.&amp;lt;br&amp;gt;&lt;br /&gt;
'''''walker_team = &amp;lt;имя_команды&amp;gt;''''' -  для схемы перемещения его в состоянии '''''walker''''' (если не задан, используется значение из поля '''''team''''').&amp;lt;br&amp;gt;&lt;br /&gt;
'''''no_move = true/false''''' - персонаж окликнет игрока с места и не будет подбегать к нему.&amp;lt;br&amp;gt;&lt;br /&gt;
'''''snd_greet = &amp;lt;название_звуковой_темы&amp;gt;''''' - звук которой будет проигран при обнаружении игрока.&amp;lt;br&amp;gt;&lt;br /&gt;
'''''ignore_friends = true/false''''' - будет игнорировать дружественных ему персонажей.&amp;lt;br&amp;gt;&lt;br /&gt;
'''''ignore_cond = {+info -info =func !func ~number}''''' - условия, при которых NPC игнорирует игрока.&amp;lt;br&amp;gt;&lt;br /&gt;
'''''no_danger = true/false''''' - отыгрывать или нет угрожающую анимацию будучи нейтралом.&amp;lt;br&amp;gt;&lt;br /&gt;
'''''anim = &amp;lt;название_анимации&amp;gt;''''' - какую отыгрывает анимацию, если игрок ему не враждебен.&amp;lt;br&amp;gt;&lt;br /&gt;
'''''snd_anim_sync = true/false''''' - будет ли синхронизирован звук с анимацией.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''''Пример использования схемы''''':&amp;lt;ini&amp;gt;[zoneguard]&lt;br /&gt;
path_walk = mil_freedom_zoneguard_walk_kill2&lt;br /&gt;
path_look = mil_freedom_zoneguard_look_kill2&lt;br /&gt;
zone_warn = mil_freedom_leader_warn_zone&lt;br /&gt;
zone_guard = mil_freedom_leader_kill_zone&lt;br /&gt;
no_move = true&lt;br /&gt;
team = freedom_bodyguards3&amp;lt;/ini&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Файл: ''gamedata\scripts\xr_zoneguard.script''&lt;br /&gt;
&lt;br /&gt;
==Схема wounded==&lt;br /&gt;
Схема раненного. Определяет поведение NPC в состоянии &amp;quot;раненный&amp;quot;.&amp;lt;br&amp;gt;&lt;br /&gt;
'''''Примечание''''': не рекомендуется задавать схему в качестве активной.&lt;br /&gt;
&lt;br /&gt;
'''[wounded]'''&amp;lt;br&amp;gt;&lt;br /&gt;
'''''hp_state = &amp;lt;HP&amp;gt;|&amp;lt;название_анимации&amp;gt;@&amp;lt;название_звуковой_темы&amp;gt;''''' - поведение NPC при значении уровня его здоровья равному '''''HP''''', когда он не видит игрока.&amp;lt;br&amp;gt;&lt;br /&gt;
'''''hp_state_see = &amp;lt;HP&amp;gt;|&amp;lt;название_анимации&amp;gt;@&amp;lt;название_звуковой_темы&amp;gt;''''' - поведение NPC при значении уровня его здоровья равному '''''HP''''', когда он видит игрока.&amp;lt;br&amp;gt;&lt;br /&gt;
'''''psy_state = &amp;lt;PSY&amp;gt;|&amp;lt;название_анимации&amp;gt;@&amp;lt;название_звуковой_темы&amp;gt;''''' - поведение NPC при псиатаках, в зависимости от уровня пси-здоровья равному '''''PSY'''''.&amp;lt;br&amp;gt;&lt;br /&gt;
'''''hp_victim = &amp;lt;HP&amp;gt;|&amp;lt;параметр&amp;gt;''''' - куда будет смотреть NPC при значении уровня его здоровья равному '''''HP''''', возможные параметры:&amp;lt;br&amp;gt;&lt;br /&gt;
:*'''''story_id''''' - числовое значение;&lt;br /&gt;
:*'''''actor''''' - без комментариев;&lt;br /&gt;
:*'''''nil''''' - позиция вычисленная АИ автоматически.&lt;br /&gt;
'''''hp_cover = &amp;lt;HP&amp;gt;|true/false''''' - идти в укрытие или нет, в зависимости от значения уровня здоровья равному '''''HP'''''.&amp;lt;br&amp;gt;&lt;br /&gt;
'''''hp_fight = &amp;lt;HP&amp;gt;|true/false''''' - разрешено воевать или нет, в зависимости от значения уровня здоровья равному '''''HP'''''.&amp;lt;br&amp;gt;&lt;br /&gt;
'''''syndata = &amp;lt;название_анимации&amp;gt;@&amp;lt;название_звуковой_темы&amp;gt;''''' - синхропары для красоты.&amp;lt;br&amp;gt;&lt;br /&gt;
'''''help_dialog = &amp;lt;название_диалога&amp;gt;''''' - возможность установить диалог, вместо стандартного '''''actor_help_wounded'''''.&amp;lt;br&amp;gt;&lt;br /&gt;
'''''help_start_dialog = &amp;lt;название_диалога&amp;gt;''''' - возможность установить стартовый диалог.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''''Примечание''''': желательно, чтобы все установленные актёрские диалоги для раненых имели условие их появления следующего вида:&amp;lt;br&amp;gt;&lt;br /&gt;
:&amp;lt;xml&amp;gt;&amp;lt;precondition&amp;gt;dialogs.allow_wounded_dialog&amp;lt;/precondition&amp;gt;&amp;lt;/xml&amp;gt;&lt;br /&gt;
'''''Примечание''''': если необходимо поставить несколько состояний, в зависимости от разного значения уровня здоровья, то сами состояния нужно разделять символом ‘|’:&amp;lt;br&amp;gt;&lt;br /&gt;
:&amp;lt;ini&amp;gt;hp_state= 30|help_me@help|10|wounded_heavy@help_heavy&amp;lt;/ini&amp;gt;&lt;br /&gt;
:Здесь определятся два состояния при уровне здоровья 30 и 10 соответственно.&lt;br /&gt;
:Для параметров '''''hp_state_see''''', '''''psy_state''''', '''''hp_victim''''', '''''hp_cover''''', '''''hp_fight''''' способ такой же.&lt;br /&gt;
&lt;br /&gt;
'''''Пример использования схемы &amp;lt;small&amp;gt;(в качестве примера взята дефолтная настройка)'''''&amp;lt;/small&amp;gt;:&amp;lt;br&amp;gt;&amp;lt;ini&amp;gt;hp_state= 30|help_me@help|10|wounded_heavy@help_heavy&lt;br /&gt;
hp_state_see = 30|wounded@help_see|10|wounded_heavy@help_heavy&lt;br /&gt;
psy_state = 50|{=best_pistol}psy_armed,psy_pain@wounded_psy|20|psy_shoot,psy_pain@wounded_psy_shoot,wounded_psy&lt;br /&gt;
hp_victim = 30|actor|10|nil&lt;br /&gt;
hp_cover = 30|true|10|false&lt;br /&gt;
hp_fight = 30|true|10|false&lt;br /&gt;
syndata = wounded@help&lt;br /&gt;
;best_pistol – проверка на то, что лучшее оружие NPC является пистолетом.&amp;lt;/ini&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Файл: ''gamedata\scripts\xr_wounded.script''&lt;br /&gt;
&lt;br /&gt;
==Схема rest==&lt;br /&gt;
Чувак гуляет, хавает, спит.&amp;lt;br&amp;gt;&lt;br /&gt;
Нормально не работает, посему в релизе не используется.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Файл: ''gamedata\scripts\xr_rest.script''&lt;br /&gt;
&lt;br /&gt;
==Схема heli_hunter==&lt;br /&gt;
Хелихантер может стрелять либо не стрелять по вертолету в зависимости от условий. Делается это так:&amp;lt;br&amp;gt;&lt;br /&gt;
В активную схему вставляется параметр:&amp;lt;ini&amp;gt;heli_hunter = {+info -info =func !func ~number}true/false&amp;lt;/ini&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Пример:&amp;lt;ini&amp;gt;[camper@bar_freedom_attack_sniper_1]&lt;br /&gt;
path_walk = camper_1_walk&lt;br /&gt;
path_look = camper_1_look&lt;br /&gt;
on_info = {+bar_freedom_attack_ecolog} camper1@bar_freedom_attack_sniper_1 &amp;lt;br&amp;gt;%=bar_freedom_angry_actor%&lt;br /&gt;
meet_talk_enabled = true&lt;br /&gt;
meet_dialog = bar_svoboda_dialog&lt;br /&gt;
heli_hunter = {-bar_ecolog_crush_heli_down} true&amp;lt;/ini&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Если раньше оверрайд понимал только значения '''''true''''' либо '''''false''''', то сейчас он понимает кондлист, который если возвращает '''''true''''' - то стрельба по вертолету в данной схеме разрешена.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Схема patrol==&lt;br /&gt;
Итак, есть предварительная система патруля. Представляет собой вариацию '''''kamp''''' только в состоянии ходьбы. Для ее работы прописываем в '''''custom_data''''' следующее:&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''[patrol]'''&amp;lt;br&amp;gt;&lt;br /&gt;
'''''path_walk = &amp;lt;имя_пути&amp;gt;''''' - путь по которому ходит NPC.&amp;lt;br&amp;gt; &lt;br /&gt;
'''''path_look = &amp;lt;имя_пути&amp;gt;''''' - точки в которые смотрит NPC.&amp;lt;br&amp;gt;&lt;br /&gt;
'''''formation = &amp;lt;параметр&amp;gt;''''' - описывет способ построения и не является обязательным. Возможны следующие варианты:&amp;lt;br&amp;gt;&lt;br /&gt;
:*'''''back''''' - мужики идут чуть позади командира в два ряда (по умолчанию);&amp;lt;br&amp;gt;&lt;br /&gt;
:*'''''line''''' - шеренга;&amp;lt;br&amp;gt;&lt;br /&gt;
:*'''''around''''' - вокруг командира.&amp;lt;br&amp;gt;&lt;br /&gt;
'''''commander = true/false''''' - будет ли NPC назначен командиром, желательно, чтобы такой красивый он был один. '''''false''''' - по умолчанию.&amp;lt;br&amp;gt;&lt;br /&gt;
'''''move_type = &amp;lt;название_анимации&amp;gt;''''' - задает изначальный режим перемещения, по умолчанию '''''patrol'''''.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
При остановке командора в '''''meet''''' мужики останавливаются.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Если командор помирает, то автоматически будет выбран другой. Командиром становится тот, кто первый попал под схему. Способы построения задаются в вейпоинтах следующим образом:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;ini&amp;gt;ret=0...2&amp;lt;/ini&amp;gt;&lt;br /&gt;
:*0 - линия;&lt;br /&gt;
:*1 – вокруг старшего;&lt;br /&gt;
:*2 – по бокам.&lt;br /&gt;
&lt;br /&gt;
При движении командор работает как обычный '''''walker''''' и сопровождающие его кадры повторяют его действия. То есть, если в параметрах вейпоинта прописано '''''a=assault''''', то командор помчится с орудием убийства на перевес, а остальные его откопируют.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''''Примечание''''': что еще не сделано или глючит:&amp;lt;br&amp;gt;&lt;br /&gt;
:*нет возможности автоматически перестроить команду;&lt;br /&gt;
:*все идут молча;&lt;br /&gt;
:*командор пока не отдает команд;&lt;br /&gt;
:*не рекомендуется включать спринт.&lt;br /&gt;
&lt;br /&gt;
'''''Пример использования схемы''''':&amp;lt;ini&amp;gt;[patrol@val_escort_captive_wait]&lt;br /&gt;
path_walk           = captive_wait_walk&lt;br /&gt;
path_look           = captive_wait_look&lt;br /&gt;
commander           = true&lt;br /&gt;
formation           = back&amp;lt;/ini&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Файл: ''gamedata\scripts\xr_patrol.script''&lt;br /&gt;
&lt;br /&gt;
==Схема meet==&lt;br /&gt;
Схема позволяющая настроить ситуацию, когда НПС встречает актора.&lt;br /&gt;
&lt;br /&gt;
'''[meet]'''&amp;lt;br&amp;gt;&lt;br /&gt;
'''''meet_state/meet_state_wpn = &amp;lt;number&amp;gt;|&amp;lt;название_анимации&amp;gt;@&amp;lt;название_звуковой_темы&amp;gt;''''' – задает анимацию и озвучку персонажа,&lt;br /&gt;
:в зависимости от расстояния до актера равному '''''number'''''. Для ситуации, когда актор безоружен и вооружён соответственно.&amp;lt;br&amp;gt;&lt;br /&gt;
'''''victim/victim_wpn = &amp;lt;number&amp;gt;|&amp;lt;параметр&amp;gt;''''' - задает объект, на который должен будет смотреть персонаж, в зависимости от расстояния равное '''''number'''''.&lt;br /&gt;
:Для ситуации, когда актор безоружен и вооружён соответственно. Возможны следующие значения:&amp;lt;br&amp;gt;&lt;br /&gt;
::*'''''actor''''' - смотреть на игрока;&amp;lt;br&amp;gt;&lt;br /&gt;
::*'''''story_id''''' - смотреть на персонажа со указанным '''''story_id''''';&amp;lt;br&amp;gt;&lt;br /&gt;
::*'''''nil''''' - никуда.&amp;lt;br&amp;gt;&lt;br /&gt;
'''''use/use_wpn = true/false/self''''' - настройки юзабельности персонажа.&lt;br /&gt;
:При установки значения '''''self''''' NPC сам юзнет игрока, как только сможет дотянуться.&amp;lt;br&amp;gt;&lt;br /&gt;
'''''zone = &amp;lt;имя_зоны&amp;gt;|&amp;lt;название_анимации&amp;gt;@&amp;lt;название_звуковой_темы&amp;gt;''''' - если актор будет замечен в указанном рестрикторе,&lt;br /&gt;
:то NPC будет отыгрывать заданную анимацию и произносить заданный звук.&amp;lt;br&amp;gt;&lt;br /&gt;
'''''meet_dialog = &amp;lt;название_диалога&amp;gt;''''' - возможность установить стартовый диалог NPC.&amp;lt;br&amp;gt;&lt;br /&gt;
'''''synpairs = &amp;lt;название_анимации&amp;gt;@&amp;lt;название_звуковой_темы&amp;gt;''''' - Если при каком-то наборе условий&lt;br /&gt;
:встреча будет отыгрывать именно это состояние и эту звуковую тему – то они будут синхронизироваться по рандомным анимациям состояния тела.&amp;lt;br&amp;gt;&lt;br /&gt;
'''''abuse = true/false''''' - по умолчанию '''''true''''', если '''''false''''', то неюзающийся противник не будет обижаться.&amp;lt;br&amp;gt;&lt;br /&gt;
'''''precond = usability/visibility'''''.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Любую строку можно задавать кондлистом ('''''{+info -info =func !func ~number}''''').&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Для облегчения настройки встречи сделана возможность упрощенного  задания дефолта:&amp;lt;br&amp;gt;&amp;lt;ini&amp;gt;[walker]&lt;br /&gt;
meet = default_meet&amp;lt;/ini&amp;gt;Саму секцию '''''default_meet''''' задавать не надо. Все настройки и так возьмутся из дефолта. По дефолту встреча настроена со следующими параметрами:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;ini&amp;gt;[default_meet]&lt;br /&gt;
meet_state = 30|hello@hail|20|wait@wait&lt;br /&gt;
meet_state_wpn = 30|backoff@threat_weap&lt;br /&gt;
victim = 30|actor&lt;br /&gt;
victim_wpn = 30|actor&lt;br /&gt;
use = true&lt;br /&gt;
use_wpn = false&lt;br /&gt;
syndata = hello@hail|backoff@threat_weap&amp;lt;/ini&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''''Примечание''''': если нужно, чтобы сталкер не разговаривал с игроком в данной секции, необходимо прописать ему '''''meet = no_meet'''''.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Теперь о том, как с помощью этого конструктора собрать ту реакцию на актера, которая вам нужна.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*'''Ситуация 1'''.&amp;lt;br&amp;gt;&lt;br /&gt;
Игрок вдалеке подзывает нас рукой, при приближении просит убрать оружие, потом согласен говорить.&amp;lt;br&amp;gt;&amp;lt;ini&amp;gt;[meet]&lt;br /&gt;
meet_state = 50| hello@talk_hello| 20| wait@wait| 10| ward@wait&lt;br /&gt;
meet_state_wpn = 50| hello@talk_hello| 20| threat@threat_weap&lt;br /&gt;
victim = 50| actor&lt;br /&gt;
victim_wpn = 50| actor&lt;br /&gt;
use = true&amp;lt;&lt;br /&gt;
use_wpn = false&amp;lt;/ini&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*'''Ситуация 2'''.&amp;lt;br&amp;gt;&lt;br /&gt;
Сталкер завидя нас просит убрать оружие. После этого подходит и заговаривает с нами. Если мы начинаем уходить от него или достаем оружие – начинает нас стрелять.&amp;lt;br&amp;gt;&amp;lt;ini&amp;gt;[meet]&lt;br /&gt;
meet_state = 50|{+info} threat_fire %=killactor% ,walk@ {+info} talk_abuse, wait|10|walk %+info%&lt;br /&gt;
meet_state_wpn = 50|{+info} threat_fire %=killactor%, threat@ {+info} talk_abuse, wait&lt;br /&gt;
victim = 50|actor&lt;br /&gt;
victim_wpn = 50|actor&lt;br /&gt;
use = {-info2} self, false&lt;br /&gt;
use_wpn = false&amp;lt;/ini&amp;gt;Здесь:&amp;lt;br&amp;gt;&lt;br /&gt;
'''''info''''' – инфопорция, которая указывает что мы уже опустили оружие и были достаточно близко к NPC;&amp;lt;br&amp;gt;&lt;br /&gt;
'''''info2''''' – инфопорция, которая устанавливается в диалоге и говорит что персонаж уже сказал нам все, что хотел;&amp;lt;br&amp;gt;&lt;br /&gt;
'''''killactor''''' – функция в ''xr_effects.script'' которая обижает NPC на игрока.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*'''Ситуация 3'''.&amp;lt;br&amp;gt;&lt;br /&gt;
Персонаж ходит по патрульному пути на заставе лагеря. Если игрок имеет допуск в лагерь – пропускает его и здоровается, иначе сперва отпугивает, а если игрок пробрался в лагерь – то обижается на него. При этом диалог зависит от того, имеет игрок допуск в лагерь или нет.&amp;lt;br&amp;gt;&amp;lt;ini&amp;gt;[camper]&lt;br /&gt;
path_walk = path_walk&lt;br /&gt;
path_look = path_look&lt;br /&gt;
meet = meet&lt;br /&gt;
&lt;br /&gt;
[meet]&lt;br /&gt;
meet_state = 30|{+info} wait, threat@ {+info} talk_hello, threat_back&lt;br /&gt;
meet_state_wpn = 30|{+info} wait, threat@ {+info} talk_hello, threat_back&lt;br /&gt;
victim = 30|actor&lt;br /&gt;
victim_wpn = 30|actor&lt;br /&gt;
use = true&lt;br /&gt;
use_wpn = true&lt;br /&gt;
zone = warnzone|{-info} threat@ {-info} threat_back|kampzone| {-info} true@ {-info} talk_abuse&lt;br /&gt;
meet_dialog = {+info} dialog1, dialog2&amp;lt;/ini&amp;gt;Здесь:&amp;lt;br&amp;gt;&lt;br /&gt;
'''''true''''' – вместо анимации, атаковать игрока;&amp;lt;br&amp;gt;&lt;br /&gt;
'''''info''''' – инфопорция, которая говорит, что мы имеем допуск к лагерю;&amp;lt;br&amp;gt;&lt;br /&gt;
'''''warnzone''''' – рестриктор, в котором нас предупреждают;&amp;lt;br&amp;gt;&lt;br /&gt;
'''''kampzone''''' – рестриктор, в котором нас убивают;&amp;lt;br&amp;gt;&lt;br /&gt;
'''''dialog1''''' – стартовый диалог NPC, если мы имеем допуск в лагерь;&amp;lt;br&amp;gt;&lt;br /&gt;
'''''dialog2''''' – стартовый диалог NPC, если мы не имеем допуск в лагерь.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Файл: ''gamedata\scripts\xr_meet.script''&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;font size = 5&amp;gt;[[Часть 2]]&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Категория:A-Life]][[Категория:Скрипты]]&lt;/div&gt;</summary>
		<author><name>91.218.192.254</name></author>	</entry>

	<entry>
		<id>http://stalkerin.gameru.net/wiki/index.php?title=%D0%9D%D0%B0%D1%81%D1%82%D1%80%D0%BE%D0%B9%D0%BA%D0%B0_%D0%BB%D0%BE%D0%B3%D0%B8%D0%BA%D0%B8._%D0%A7%D0%B0%D1%81%D1%82%D1%8C_1</id>
		<title>Настройка логики. Часть 1</title>
		<link rel="alternate" type="text/html" href="http://stalkerin.gameru.net/wiki/index.php?title=%D0%9D%D0%B0%D1%81%D1%82%D1%80%D0%BE%D0%B9%D0%BA%D0%B0_%D0%BB%D0%BE%D0%B3%D0%B8%D0%BA%D0%B8._%D0%A7%D0%B0%D1%81%D1%82%D1%8C_1"/>
				<updated>2013-07-10T18:45:10Z</updated>
		
		<summary type="html">&lt;p&gt;91.218.192.254: /* Схема remark */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Шаблон:Настройка логики}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;font size=6&amp;gt;Настройки логики&amp;lt;/font&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Система флагов (path_walk, path_look)=&lt;br /&gt;
В точках путей можно задавать флаги, изменяющие поведение персонажа. Флаги задаются прямо в имени '''''waypoint'''''-а, например, для точки с именем &amp;quot;'''''wp00'''''&amp;quot;:&amp;lt;br&amp;gt;&lt;br /&gt;
'''''wp00|flag1|flag2'''''&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Флаги точек пути '''''path_walk''''':&amp;lt;br&amp;gt;&lt;br /&gt;
*'''a=state'''&amp;lt;br&amp;gt;&lt;br /&gt;
:Выбирает состояние тела при перемещении (Только из раздела &amp;quot;Ходячие состояния&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
:Список состояний можно взять в ''gamedata\scripts\state_lib.script''&amp;lt;br&amp;gt;&lt;br /&gt;
*'''p=percent'''&amp;lt;br&amp;gt;&lt;br /&gt;
:Вероятность остановиться в точке в процентах (0 – 100). По умолчанию 100, т.е. сталкер никогда не проходит мимо точек остановки.&amp;lt;br&amp;gt;&lt;br /&gt;
*'''sig=name'''&amp;lt;br&amp;gt;&lt;br /&gt;
:Установить сигнал с именем '''''name''''' сразу по прибытию в точку (до поворота) для последующей его проверки с помощью поля '''''on_signal''''' логической схемы. Если нужно установить сигнал после поворота – используйте соответствующий флажок пути *'''''path_look'''''.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Флаги точек пути '''''path_look''''':&amp;lt;br&amp;gt;&lt;br /&gt;
*'''a =state'''&amp;lt;br&amp;gt;&lt;br /&gt;
:Выбирает состояние тела при стоянии (или сидении) на месте. (Из разделов &amp;quot;Стоячие&amp;quot; и &amp;quot;Сидячие&amp;quot; состояния)&amp;lt;br&amp;gt;&lt;br /&gt;
:Список состояний можно взять в ''gamedata\scripts\state_lib.script''&amp;lt;br&amp;gt;&lt;br /&gt;
*'''t=msec''' - время в миллисекундах, которое персонаж должен смотреть в заданную точку.&amp;lt;br&amp;gt;&lt;br /&gt;
:'''*''' – бесконечное время. Допустимы значения в диапазоне [1000, 30000], по умолчанию – 5000.&amp;lt;br&amp;gt;&lt;br /&gt;
:Для конечных (терминальных) вершин пути '''''path_walk''''', у которых не более 1-й соответствующей точки '''path_look''', значение '''''t''''' всегда считается бесконечным и его явно задавать не нужно.&amp;lt;br&amp;gt;&lt;br /&gt;
*'''sig=name'''&amp;lt;br&amp;gt;&lt;br /&gt;
:После поворота в точку '''''path_look''''', установить сигнал с именем '''''name'''''.&amp;lt;br&amp;gt;&lt;br /&gt;
*'''syn'''&amp;lt;br&amp;gt;&lt;br /&gt;
:Наличие флажка задержит установку сигнала до тех пор, пока в точку с флажком '''''syn''''' не прибудут все персонажи с данным '''''team'''''-ом ('''''team''''' задается в виде текстовой строки в '''''customdata'''''). До тех пор, пока остальные персонажи не прибудут, ожидающей персонаж будет отыгрывать свою '''''idle''''' анимацию.&amp;lt;br&amp;gt;&lt;br /&gt;
*'''sigtm=signal'''&amp;lt;br&amp;gt;&lt;br /&gt;
:Устанавливает сигнал при вызове '''''time_callback'''''-а '''''state manager'''''-ом. Соответственно, если '''''t=0''''', то сигнал будет установлен после отыгрывания '''''init''''' анимации. Это используется, например, с анимацией '''''press''''', которая состоит из двух частей: 1 - нажимаем на кнопку, 2 - опускаем руку.&amp;lt;br&amp;gt;&lt;br /&gt;
:В пути '''''path_look''''' можно сделать:&amp;lt;br&amp;gt;&lt;br /&gt;
:&amp;lt;ini&amp;gt;wp00|a=press|t=0|sigtm=pressed&amp;lt;/ini&amp;gt;&lt;br /&gt;
:А затем переключить схему:&amp;lt;br&amp;gt;&lt;br /&gt;
:&amp;lt;ini&amp;gt;on_signal = pressed | другая_схема&amp;lt;/ini&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Более подробное описание путей.==&lt;br /&gt;
&lt;br /&gt;
Настройка:&amp;lt;br&amp;gt;&lt;br /&gt;
[[Изображение:Logic_1.JPG]]&lt;br /&gt;
&lt;br /&gt;
На карту для каждого walker-а нужно поставить:&amp;lt;br&amp;gt;&lt;br /&gt;
#Путь '''''path_walk''''', по которому '''''walker''''' ходит.&amp;lt;br&amp;gt;&lt;br /&gt;
#Путь '''''path_look''''', состоящий из точек, в которые '''''walker''''' смотрит.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''''Walker'''''-ов может быть 1 или больше. Они могут действовать независимо, или взаимодействовать друг с другом.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Если персонаж должен стоять на месте, то ему задается одна точка пути '''''path_walk''''' и как минимум одна точка пути '''''path_look''''', хотя и можно не задавать точку взгляда вовсе (игра автоматически определит точку по умолчанию ту, в которую НПС смотрел изначально), делать этого не следует.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Правила расстановки флажков в путях рассмотрим на нескольких примерах:&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Пример 1:===&lt;br /&gt;
&lt;br /&gt;
Персонаж патрулирует территорию вокруг двух домиков. Маршрут строится следующим образом: &amp;lt;br&amp;gt;&lt;br /&gt;
[[Изображение:Logic_2.JPG]]&lt;br /&gt;
&lt;br /&gt;
Как сделать, чтобы персонаж между определенными точками бежал или крался? Для этого в пути '''''path_walk''''' существуют флажки.&amp;lt;br&amp;gt;&lt;br /&gt;
У каждого вейпоинта есть имя: '''''wp00''''', '''''wp01''''' и т.д.&amp;lt;br&amp;gt;&lt;br /&gt;
Флажки задаются в имени. Их нужно отделять от самого имени с помощью символа ‘'''|'''’. Пишеться '''''a=anim''''', где '''''anim''''' – название анимации. Если мы напишем '''''a=threat''''' то персонаж пойдет в состоянии данжер, если '''''a=raid''''' то побежит с оружием наизготовку и т.д. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''''Примечание''''': В точках пути '''''path_walk''''' используются анимации '''ТОЛЬКО''' из раздела «Ходячие состояния»!&lt;br /&gt;
&lt;br /&gt;
===Пример 2:===&lt;br /&gt;
[[Изображение:Logic_3.JPG]]&lt;br /&gt;
&lt;br /&gt;
Разговор персонажа.&lt;br /&gt;
&lt;br /&gt;
Чтобы персонаж говорил, перемещаясь по маршруту, нужно определить в каждой точке список тем, на которые он может говорить. Для этого существуют следующие поля:&amp;lt;br&amp;gt;&lt;br /&gt;
'''''s = имя_звуковой_схемы''''' - (по умолчанию звук отключен). Несколько тем можно перечислять через запятую.&lt;br /&gt;
&lt;br /&gt;
===Пример 3:===&lt;br /&gt;
[[Изображение:Logic_4.JPG]]&lt;br /&gt;
&lt;br /&gt;
В примере 3 используется только поле '''''s''''', чтобы задать тему разговора, и флажок '''''sc''''', чтобы показать, что звук проигрывается не разово, а периодически.&amp;lt;br&amp;gt;&lt;br /&gt;
Остальные параметры ('''''sp''''', '''''sf''''', '''''st''''') задавать НЕ РЕКОМЕНДУЕТСЯ, значения по умолчанию приемлемы для большинства скриптов.&amp;lt;br&amp;gt;&lt;br /&gt;
Параметр '''''sa''''' также использовать НЕ РЕКОМЕНДУЕТСЯ. Если нужно стартовать звук одновременно с анимацией, лучше воспользоваться полями пути '''''path_look''''', о котором будет написано ниже.&amp;lt;br&amp;gt;&lt;br /&gt;
Если персонаж не только ходит по маршруту, но должен также останавливаться и играть анимации, нужно задать ему путь '''''path_look'''''.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Пример 4:=== &lt;br /&gt;
усовершенствуем пример 1, чтобы персонаж, проходя мимо проема между домами, останавливался и заглядывал в него:&lt;br /&gt;
&lt;br /&gt;
[[Изображение:Logic_5.JPG]]&lt;br /&gt;
&lt;br /&gt;
Что добавилось в этом примере? Путь '''''path_look''''' с двумя точками. Связь между точками этого пути рекомендуется сразу же удалить в редакторе, поскольку она все равно не используется.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Далее, в точках путей '''''path_walk''''' и '''''path_look''''', которые обведены на рисунке пунктирной линией, в редакторе ставим общие флажки (в ''ACDC'' поле '''''flags'''''). Например, в верхней паре точек ставим флажок 0, а в нижней паре точек – флажок 1.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Теперь персонаж будет останавливаться в точках '''''path_walk''''', помеченных флажком, и смотреть в точку '''''path_look''''', помеченную тем же самым флажком.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Если точка '''''path_walk'''''  не помечена флажком, персонаж проходит ее не останавливаясь.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Одной точке '''''path_walk''''' может соответствовать несколько точек '''''path_look'''''. Тогда персонаж выберем случайно одну из подходящих точек.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
По аналогии с '''''path_walk''''', в точках пути '''''path_look''''' можно использовать различные флажки, меняющие поведение:&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''''p = 100''''' – вероятность, с которой персонаж посмотрит именно в эту точку. Значения '''''p''''' всех подходящих точек суммируются, т.е. если у одной точки '''''p = 100''''', а у другой '''''p = 300''''', то персонаж посмотрит в первую с вероятностью 25%! (т.е. 100 из 400).&lt;br /&gt;
Во избежание путаницы, рекомендуется задавать '''''p''''' так, чтобы их сумма составляла '''100'''.&lt;br /&gt;
По умолчанию у всех точек '''''p = 100'''''.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''''t = 5000''''' - время, на которое персонаж задержится в этой точке (по умолчанию 5000 мсек)&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Пример 5:===&lt;br /&gt;
&lt;br /&gt;
[[Изображение:Logic_6.JPG]]&lt;br /&gt;
&lt;br /&gt;
В этом примере проходя через точку '''''wp00''''', персонаж с вероятностью 30% посмотрит в точку '''''wp00''''' в течение 5 секунд, но с вероятностью 70% посмотрит в точку '''''wp01''''' в течении 10 секунд.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
По умолчанию при остановках персонаж играет анимацию '''''idle''''', если он не в состоянии '''''crouch''''', либо анимацию '''''hide''''', если он в состоянии '''''crouch'''''.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Если требуется другая анимация, можно ее указать с помощью флажка:&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''''a = имя_анимации''''' - (по умолчанию '''''idle'''''). &amp;lt;br&amp;gt;&lt;br /&gt;
Пишеться '''''a=anim''''', где '''''anim''''' – название анимации. Если мы напишем '''''a=hide''''', то персонаж сядет в состоянии данжер, если '''''a=guard''''', то встанет  с оружием наизготовку и т.д. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''''Примечание''''': В точках пути '''''path_look''''' используются анимации '''ТОЛЬКО''' из раздела «Стоячие и сидячие состояния»!&lt;br /&gt;
&lt;br /&gt;
==Система флагов для монстров==&lt;br /&gt;
Флаги пути движения:&amp;lt;br&amp;gt;&lt;br /&gt;
'''''s=имя_звуковой_темы'''''&amp;lt;br&amp;gt;&lt;br /&gt;
:Устанавливает звуковую тему на пути в данную точку ('''''idle''''', '''''eat''''', '''''attack''''', '''''attack_hit''''', '''''take_damage''''', '''''die''''', '''''threaten''''', '''''steal''''', '''''panic''''', '''''growling''''').&amp;lt;br&amp;gt;&lt;br /&gt;
'''''с'''''&amp;lt;br&amp;gt;&lt;br /&gt;
:Устанавливает положение ходьбы вприсядку.&amp;lt;br&amp;gt;&lt;br /&gt;
'''''r'''''&amp;lt;br&amp;gt;&lt;br /&gt;
:Устанавливает положение ходьбы бег.&amp;lt;br&amp;gt;&lt;br /&gt;
'''''sig=name'''''&amp;lt;br&amp;gt;&lt;br /&gt;
:Установить сигнал с именем '''''name''''' сразу по прибытию в точку (до поворота) для последующей его проверки с помощью поля '''''on_signal''''' логической схемы.&amp;lt;br&amp;gt;&lt;br /&gt;
'''''b=vis/invis'''''&amp;lt;br&amp;gt;&lt;br /&gt;
:Флаг, исключительно для кровососа. Управляет невидимостью ('''''vis''''' - отключена, '''''invis''''' - включена).&lt;br /&gt;
&lt;br /&gt;
Флаги пути обзора:&amp;lt;br&amp;gt;&lt;br /&gt;
'''''t=msec'''''&amp;lt;br&amp;gt;&lt;br /&gt;
:Время в миллисекундах, которое нужно ждать, смотря в точку.&amp;lt;br&amp;gt;&lt;br /&gt;
'''''a=state'''''&amp;lt;br&amp;gt;&lt;br /&gt;
:Анимация ('''''stand_idle''''', '''''sit_idle''''', '''''lie_idle''''', '''''eat''''', '''''sleep''''', '''''rest''''', '''''attack''''', '''''look_around''''', '''''turn''''').&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Случайный выбор пути==&lt;br /&gt;
По поводу точек пути '''''path_walk'''''.&amp;lt;br&amp;gt;&lt;br /&gt;
Есть ещё один интересный факт: следующую точку пути '''''path_walk''''' можно задавать рандомно.&amp;lt;br&amp;gt;&lt;br /&gt;
Например:[[Файл:Random_path.jpg]]&lt;br /&gt;
&lt;br /&gt;
Нам требуется, чтобы НПС стоящий в точке '''''p0''''' патрулировал территорию по двум цикличным маршрутам:&amp;lt;br&amp;gt;&lt;br /&gt;
'''''p0 -&amp;gt; p1 -&amp;gt; p2 -&amp;gt; p0'''''&amp;lt;br&amp;gt;&lt;br /&gt;
'''''p0 -&amp;gt; p3 -&amp;gt; p4 -&amp;gt; p0'''''&amp;lt;br&amp;gt;&lt;br /&gt;
Чтобы задать вариацию выбора маршрута относительно точки '''''p0''''', нужно в ссылке на следующую точку пути указать не одну, а две точки:&amp;lt;br&amp;gt;&amp;lt;ini&amp;gt;p0:links = p1(1), p3(1)&amp;lt;/ini&amp;gt;Таким не хитрым образом, НПС для продолжения пути рандомно выберет одну из предложенных точек '''''p1''''' или '''''p3'''''. После возврата в точку '''''p0''''' выбор проследует вновь. Варьировать выбор можно в любой точки, например, можно сделать так:&amp;lt;br&amp;gt;&amp;lt;ini&amp;gt;p0:links = p1(1), p3(1)&amp;lt;/ini&amp;gt;а в точке '''''p1''''', также задать выбор:&amp;lt;br&amp;gt;&amp;lt;ini&amp;gt;p1:links = p2(1), p3(1)&amp;lt;/ini&amp;gt;&lt;br /&gt;
'''НО!'''&lt;br /&gt;
Не следует делать выбор между двумя путями, если в пути одна точка! Вот такая схема '''НЕ ПРИЕМЛЕМА''' и, лично у меня, вызывает вылет:[[Файл:Error_random_path.jpg]]&lt;br /&gt;
Цифры в скобках, означают ту самую вероятность с которой НПС пойдёт в точку. Если цифры задать одинаковые, то и вероятность выбора для каждой точки будет равная, если же, например, в одной из точек указать значение 0.75, а в другой 0.25:&amp;lt;br&amp;gt;&amp;lt;ini&amp;gt;p1:links = p2(0.75), p3(0.25)&amp;lt;/ini&amp;gt;то соответственно в точку '''''p2''''' НПС будет ходить в три раза чаще.&lt;br /&gt;
&lt;br /&gt;
=Схемы поведения сталкеров.=&lt;br /&gt;
Есть определенный набор схем, которые описывают поведение персонажа. Они прописываются у него в custom_data или, в случае гулага, в соответствующих файлах, описывающих работы данного гулага. Ниже приведен перечень этих схем.&amp;lt;br&amp;gt;&lt;br /&gt;
В файле ''gamedata\scripts\modules.script'' указаны все загружаемые схемы.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Схема walker==&lt;br /&gt;
Это базовая схема, по которой персонаж, перемещается по патрульному пути ('''''path_walk''''') и останавливается в определенных точках и выполняет соответствующие действия. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''[walker]'''&amp;lt;br&amp;gt;&lt;br /&gt;
'''''path_walk = &amp;lt;имя_пути&amp;gt;'''''    - основной путь, по которому ходит NPC&amp;lt;br&amp;gt;&lt;br /&gt;
'''''path_look = &amp;lt;имя_пути&amp;gt;'''''    - путь, куда смотрит NPC&amp;lt;br&amp;gt;&lt;br /&gt;
'''''team      = &amp;lt;имя_команды&amp;gt;''''' - команда для синхронизации&amp;lt;br&amp;gt;&lt;br /&gt;
'''''def_state_moving1 = &amp;lt;название_анимации&amp;gt;'''''  - состояние, в котором NPC движется к первой точке пути, если она близко ('''''patrol''''' по умолчанию)&amp;lt;br&amp;gt;&lt;br /&gt;
'''''def_state_moving2 = &amp;lt;название_анимации&amp;gt;'''''  - состояние, в котором NPC движется к первой точке пути, если она не слишком далеко ('''''rush''''' по умолчанию)&amp;lt;br&amp;gt;&lt;br /&gt;
'''''def_state_moving3 = &amp;lt;название_анимации&amp;gt;'''''  - состояние, в котором NPC движется к первой точке пути, если она далеко ('''''sprint''''' по умолчанию)&amp;lt;br&amp;gt;&lt;br /&gt;
'''''def_state_standing = &amp;lt;название_анимации&amp;gt;''''' - дефолтное состояние в котором он стоит и смотрит на точку, если в этой точке не задана другое состояние.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В точках '''''path_walk''''', которым соответствуют точки пути '''''path_look''''' (стоят одинаковые флажки) персонаж останавливается и смотрит в определенную точку, при этом отыгрывая (или не отыгрывая) определенную анимацию.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''''Пример использования схемы''''':&amp;lt;br&amp;gt;&amp;lt;ini&amp;gt;[walker@pri_followers_leader_wave1_wait]&lt;br /&gt;
path_walk = wave1_leader_walk2&lt;br /&gt;
path_look = wave1_leader_look2&lt;br /&gt;
def_state_moving1 = assault&lt;br /&gt;
def_state_moving2 = assault&lt;br /&gt;
team = followers&amp;lt;/ini&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Файл: ''gamedata\scripts\xr_walker.script''&lt;br /&gt;
&lt;br /&gt;
==Схема remark==&lt;br /&gt;
Схема используется для синхронизации\связки других схем.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Примечание''': не используйте эту схему в качестве активной - это вызовет неправильное поведение NPC.&lt;br /&gt;
&lt;br /&gt;
'''[remark]'''&amp;lt;br&amp;gt;&lt;br /&gt;
'''''snd_anim_synс = true/false''''' - по умолчанию '''''false'''''. Указывает на то необходимо ли синхронизировать звук с анимацией.&amp;lt;br&amp;gt;&lt;br /&gt;
'''''snd = &amp;lt;название_звуковой_темы&amp;gt;''''' - звук ремарка, берётся из файла ''sound_theme.script''. По умолчанию  '''''nil'''''.&amp;lt;br&amp;gt;&lt;br /&gt;
'''''anim = &amp;lt;название_анимации&amp;gt;''''' - анимация ремарка, по умолчанию '''''wait'''''.&amp;lt;br&amp;gt;&lt;br /&gt;
'''''target = &amp;lt;параметр&amp;gt;''''' - куда смотрит сталкер. Есть следующие варианты:&amp;lt;br&amp;gt;&lt;br /&gt;
:*'''''story_id''''' – числовое значение (в ТЧ) или графическое (в ЗП и ЧН)&amp;lt;nowiki&amp;gt;;&amp;lt;/nowiki&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
:*'''''actor''''' – без комментариев&amp;lt;nowiki&amp;gt;;&amp;lt;/nowiki&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
:*'''''nil''''' – позиция вычисленная АИ автоматически&amp;lt;nowiki&amp;gt;;&amp;lt;/nowiki&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
:*'''''&amp;lt;имя работы&amp;gt;,&amp;lt;имя гулага&amp;gt;''''' - смотреть на сталкера который находится на определенной работе под гулагом (второй параметр необязателен. В этом случае берется гулаг NPC, для которого задана данная секция ремарка).&amp;lt;br&amp;gt;&lt;br /&gt;
:Пример:&amp;lt;br&amp;gt;&lt;br /&gt;
:&amp;lt;ini&amp;gt;target = logic@cit_killers_base_guard, cit_killers&amp;lt;/ini&amp;gt;&lt;br /&gt;
:*'''''&amp;lt;path_name&amp;gt;,&amp;lt;point_number&amp;gt;''''' - можно указывать смотреть в вершину патрульного пути (&amp;lt;имя пути&amp;gt;,&amp;lt;имя точки&amp;gt;).&amp;lt;br&amp;gt;&lt;br /&gt;
:Пример:&amp;lt;br&amp;gt;&lt;br /&gt;
:&amp;lt;ini&amp;gt;target = cit_killers_kamp5,0&amp;lt;/ini&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''''Примечание''''': теперь если значение не задано, то оно равно '''''nil''''' а не '''''actor''''', как было раньше.&amp;lt;br&amp;gt;&lt;br /&gt;
:То есть если вы хотите чтобы персонаж в ремарке смотрел на актера - необходимо явно прописывать это. Если задано значение '''''nil''''', то персонаж развернется в позицию, которую посчитает АИ.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Стандартные сигналы '''''remark'''''а для параметра переключения схемы '''''on_signal''''': &amp;lt;br&amp;gt;&lt;br /&gt;
:*'''''sound_end''''' – по окончании проигрывания звуковой схемы&amp;lt;br&amp;gt;&lt;br /&gt;
:*'''''anim_end''''' – по окончании проигрывания анимации&amp;lt;br&amp;gt;&lt;br /&gt;
:*'''''action_end''''' – по окончании проигрывания и того и другого, если они синхронизированы&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''''Пример использования схемы''''':&amp;lt;br&amp;gt;&amp;lt;ini&amp;gt;[remark@esc_lager_volk2]&lt;br /&gt;
anim = guard_rac&lt;br /&gt;
snd = esc_wolf_radio&lt;br /&gt;
target = actor&lt;br /&gt;
on_signal = sound_end| remark@esc_lager_volk3&amp;lt;/ini&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Файл: ''gamedata\scripts\xr_remark.script''&lt;br /&gt;
&lt;br /&gt;
==Схема sleeper==&lt;br /&gt;
Схема сидящего и спящего NPC. Необходимо поставить патрульный путь, минимум из 1-го поинта. Спящий будет садиться спать в первой точке пути, и разворачиваться при этом в сторону нулевой точки.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''[sleeper]'''&amp;lt;br&amp;gt;&lt;br /&gt;
'''''path_main = &amp;lt;имя_пути&amp;gt;''''' - точка в которой NPC будет спать - второй поинт, развернувшись в нулевой поинт.&amp;lt;br&amp;gt;&lt;br /&gt;
'''''wakeable = true/false''''' – может ли проснуться быстро (если '''''true''''', то спит на корточках и во сне бормочет).&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''''Примечание''''': Если путь состоит из двух точек, то связь нужно делать от первой точки к нулевой (либо двунаправленную).&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''''Пример использования схемы''''':&amp;lt;br&amp;gt;&amp;lt;ini&amp;gt;[sleeper@esc_blockpost_sleep1]&lt;br /&gt;
path_main = sleep1&lt;br /&gt;
wakeable = false&amp;lt;/ini&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Файл: ''gamedata\scripts\xr_sleeper.script''&lt;br /&gt;
&lt;br /&gt;
==Схема kamp==&lt;br /&gt;
Схема сталкера, сидящего в определенном радиусе вокруг указанной точки (у костра), и располагающегося лицом к этой точке.&amp;lt;br&amp;gt;&lt;br /&gt;
	&lt;br /&gt;
'''[kamp]'''&amp;lt;br&amp;gt;&lt;br /&gt;
'''''center_point = &amp;lt;имя_пути&amp;gt;''''' – имя точки вокруг которой NPC будет устраиваться.&amp;lt;br&amp;gt;&lt;br /&gt;
'''''radius = &amp;lt;number&amp;gt;''''' - насколько далеко сталкер будет сидеть от центра лагеря. По умолчанию - 2 метра.&amp;lt;br&amp;gt;&lt;br /&gt;
'''''def_state_moving = &amp;lt;название_анимации&amp;gt;''''' - дефолтное состояние, в котором NPC будет идети к точке кампа. По умолчанию - '''''walk'''''&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''''Примечание''''': Если точка кампа находится в костре, то в оффлайне сталкера прийдут на нее, а когда они перейдут в онлайн, то окажуться внутри костра, где и получат хит.&amp;lt;br&amp;gt;&lt;br /&gt;
:Чтобы этого не случалось в секции кемпа указывать '''''path_walk''''' из одной точке, название которой '''''&amp;lt;path_kamp_name&amp;gt;_task''''':&amp;lt;ini&amp;gt;path_walk = &amp;lt;имя_пути&amp;gt;_task&amp;lt;/ini&amp;gt;Если точка кемпа расположена в чистом поле то, '''''path_walk''''' прописывать необязательно.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''''Пример использования схемы''''':&amp;lt;br&amp;gt;&amp;lt;ini&amp;gt;[kamp@esc_blockpost_kamp1]&lt;br /&gt;
center_point = kamp_center&lt;br /&gt;
path_walk = kamp_center_task&lt;br /&gt;
def_state_moving = raid&amp;lt;/ini&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Файл: ''gamedata\scripts\xr_kamp.script''&lt;br /&gt;
&lt;br /&gt;
==Схема camper==&lt;br /&gt;
Свойства камперов:&lt;br /&gt;
* кампер стоит на точке и смотрит в направлении, куда Вы его поставили в редакторе или передвигается по патрульным путям;&amp;lt;br&amp;gt;&lt;br /&gt;
* камперы переключаются на универсальный комбат, только если видят врага ближе чем в 30 метрах. Если он выжил, он возвращается в состояние кампера;&amp;lt;br&amp;gt;&lt;br /&gt;
* В любых других случаях действуют по собственной скриптовой схеме. Если видим врага - стреляем. Если слышим дэнжер - то смотрим в направление в данжере. Если видим гранату - убегаем от гранаты. Если видели врага, а враг исчез, то смотрим в точку, где видели последний раз врага;&amp;lt;br&amp;gt;&lt;br /&gt;
* камперы не сражаются в движении. Если они видят врага - они останавливаются, стреляют, а потом продолжают движение.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''[camper]'''&amp;lt;br&amp;gt;&lt;br /&gt;
'''''path_walk = &amp;lt;имя_пути&amp;gt;''''' - путь по которому ходит NPC.&amp;lt;br&amp;gt;&lt;br /&gt;
'''''path_look = &amp;lt;имя_пути&amp;gt;''''' - точки в которые смотрит NPC.&amp;lt;br&amp;gt;&lt;br /&gt;
'''''radius = &amp;lt;number&amp;gt;''''' – если расстояние между NPC и противником меньше указанного, то он уходит в универсальный комбат. По умолчанию - 20 метров.&amp;lt;br&amp;gt;&lt;br /&gt;
'''''no_retreat = true/false''''' - NPC при виде врага не будет ломиться на ближайшую точку '''''path_walk''''', а сразу перейдет в режим убивания.&lt;br /&gt;
:Нужно это в том случае, если вы хотите сделать сценку, когда одни ребята наезжают на других. Ставите камперов с вышеуказанным флажком. Они идут по своим патрульным путям и выносят врагов.&amp;lt;br&amp;gt;&lt;br /&gt;
'''''def_state_moving = &amp;lt;название_анимации&amp;gt;''''' - состояние, в котором NPC движется на ближайшую точку пути при враге. По умолчанию - '''''assault'''''.&amp;lt;br&amp;gt;&lt;br /&gt;
'''''def_state_moving_fire = &amp;lt;название_анимации&amp;gt;''''' - состояние, в котором NPC отстреливается от врага, во время движения на ближайшую точку пути.&lt;br /&gt;
:По умолчанию - '''''sneak_fire'''''.&amp;lt;br&amp;gt;&lt;br /&gt;
'''''def_state_campering = &amp;lt;название_анимации&amp;gt;''''' - состояние, в котором NPC ожидает врага, находясь на пути. По умолчанию - '''''hide'''''.&amp;lt;br&amp;gt;&lt;br /&gt;
'''''def_state_campering_fire = &amp;lt;название_анимации&amp;gt;''''' - состояние, в котором NPC отстреливается от врага, находясь на пути. По умолчанию '''''hide_fire'''''.&amp;lt;br&amp;gt;&lt;br /&gt;
'''''attack_sound = &amp;lt;имя_звуковой_темы&amp;gt;''''' - возможность переопределять снайперам/камперам звук атаки. По дефолту он равен звуковой теме '''''fight_attack'''''.&lt;br /&gt;
:Можно изменить на любое другое (для сценических потребностей) либо вообще отключить, прописав значение '''''false'''''.&amp;lt;br&amp;gt;&lt;br /&gt;
'''''shoot = &amp;lt;тип_стрельбы&amp;gt;''''' - возможны следующие значения:&lt;br /&gt;
:*'''''always''''' - значение по умолчанию, стреляет всегда, когда можно;&amp;lt;br&amp;gt;&lt;br /&gt;
:*'''''none''''' - не стреляет вообще;&amp;lt;br&amp;gt;&lt;br /&gt;
:*'''''terminal''''' - стреляет только когда находится на последней точки патрульного пути. Это сделано для облегчения построение атакующих сцен.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''''Примечание''''': У кампера есть один большой минус – когда ему наносится хит и он не знает откуда хит наносится (не видит противника, не слышит выстрела),&amp;lt;br&amp;gt;&lt;br /&gt;
:то он тупо продолжает стоять на старом месте и ждать следующей пули.&amp;lt;br&amp;gt;&lt;br /&gt;
:Ввиду этого не стоит расставлять кемперов в случае, когда сталкеры должны защищаться и держать позицию в том случае, если есть несколько направлений, откуда игрок или сталкеры смогут атаковать поставленного кампера. Используйте '''''walker''''' в таких случаях, а камперов стоить ставить для атак по путям и как снайперов.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''''Пример использования схемы''''':&amp;lt;br&amp;gt;&amp;lt;ini&amp;gt;[camper@dar_military_scout_hide]&lt;br /&gt;
path_walk = walk_hide&lt;br /&gt;
path_look = look_hide&lt;br /&gt;
radius = 10&lt;br /&gt;
no_retreat = true&lt;br /&gt;
def_state_moving = assault&lt;br /&gt;
def_state_campering = hide_na&lt;br /&gt;
shoot = always&amp;lt;/ini&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Файл: ''gamedata\scripts\xr_camper.script''&lt;br /&gt;
&lt;br /&gt;
==Схема sniper==&lt;br /&gt;
Разновидность кампера. Отличаются тем, что стреляют только одиночными выстрелами и не смотрят по точкам патрульного пути, а сканируют пространство между ними. Скорость сканирования от точки к точке фиксирована и равна 20 секунд.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В кастом дате кемпера прописать:&amp;lt;br&amp;gt;&amp;lt;ini&amp;gt;sniper = true&amp;lt;/ini&amp;gt;&lt;br /&gt;
Пример:&amp;lt;br&amp;gt;&amp;lt;ini&amp;gt;[camper@esc_blockpost_camper_day]&lt;br /&gt;
path_walk = camper_day_walk&lt;br /&gt;
path_look = camper_day_look&lt;br /&gt;
sniper = true&lt;br /&gt;
def_state_campering = threat&amp;lt;/ini&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''''Примечание''''': Ставить снайперу только 2 точки '''''look'''''.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Файл: ''gamedata\scripts\xr_camper.script''&lt;br /&gt;
&lt;br /&gt;
==Схема follower== &lt;br /&gt;
NPC идет за NPC-лидером. Если до лидера расстояние менее 5 метров, то он идет, если от 5 до 20 – бежит в режиме '''''run''''', если свыше 20 – догоняет в режиме '''''sprint'''''.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;u&amp;gt;Пути не задаются&amp;lt;/u&amp;gt;.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''[follower]'''&amp;lt;br&amp;gt;&lt;br /&gt;
'''''leader = &amp;lt;number&amp;gt;''''' - '''''story_id''''' лидера из ''game.ltx'' (число!).&amp;lt;br&amp;gt;&lt;br /&gt;
'''''formation_line = true/false''''' - постарается идти сбоку от лидера, в противном случае будет идти сзади.&amp;lt;br&amp;gt;&lt;br /&gt;
'''''distance = &amp;lt;number&amp;gt;''''' - расстояние в метрах, на котором будет идти от лидера '''''attendant'''''. По умолчанию – 1,5 метра, если идет цепью, то 5 метров.&amp;lt;br&amp;gt;&lt;br /&gt;
'''''state_if_leader_in_meet = &amp;lt;название_анимации&amp;gt;''''' - это есть строка с именем  состояния из '''''state_manager''''', которое будет назначено '''''follower'''''-ам, если командир пребывает в состоянии '''''meet'''''.&amp;lt;br&amp;gt;&lt;br /&gt;
'''''anim_walk = &amp;lt;название_анимации&amp;gt;''''' - состояние, в котором фолловер идет за лидером.&amp;lt;br&amp;gt;&lt;br /&gt;
'''''anim_run = &amp;lt;название_анимации&amp;gt;''''' - состояние, в котором фолловер бежит за лидером.&amp;lt;br&amp;gt;&lt;br /&gt;
'''''anim_sprint = &amp;lt;название_анимации&amp;gt;''''' - состояние, в котором фолловер спринтует за лидером.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''''Примечание''''': Не забыть прописать:&lt;br /&gt;
&amp;lt;ini&amp;gt;[smart_terrains]&lt;br /&gt;
none = true&amp;lt;/ini&amp;gt;&lt;br /&gt;
:Иначе NPC засосёт в гулаг и никуда он не пойдёт.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Если все это происходит под гулагом, то вместо '''''story_id''''' лидера, мы прописываем его секцию логики в файле скрипта.&amp;lt;br&amp;gt;&lt;br /&gt;
Пример:&amp;lt;lua&amp;gt;t = { section = &amp;quot;logic@bar_arena_follower_2&amp;quot;, &lt;br /&gt;
      idle    = 0,&lt;br /&gt;
      prior   = 7,&lt;br /&gt;
      state   = {0},&lt;br /&gt;
      squad   = squad,&lt;br /&gt;
      group   = groups[0],&lt;br /&gt;
      ...&lt;br /&gt;
    }&amp;lt;/lua&amp;gt;В данном случае для параметра '''''leader''''' необоходимо указать строку '''''bar_arena_follower_2'''''.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''''Примечание''''': в релизе игры данная схема не используется.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Файл: ''gamedata\scripts\xr_attendant.script''&lt;br /&gt;
&lt;br /&gt;
==Схема zoneguard==&lt;br /&gt;
У NPC есть две зоны (может быть одна). Он ходит по путям, но когда игрок заходит в зону, отрывает от дел, подбегает к игроку, наставляет на игрока оружие (может кричать, может говорить), если игрок заходит во вторую зону – атакует игрока.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''[zoneguard]'''&amp;lt;br&amp;gt;&lt;br /&gt;
'''''path_walk = &amp;lt;имя_пути&amp;gt;''''' - путь перемещения.&amp;lt;br&amp;gt;&lt;br /&gt;
'''''path_look = &amp;lt;имя_пути&amp;gt;''''' - путь обзора.&amp;lt;br&amp;gt;&lt;br /&gt;
'''''team = &amp;lt;имя_команды&amp;gt;''''' - имя команды синхронизированных '''''zoneguard'''''-ов (из всей команды только 1 будет реагировать на игрока).&amp;lt;br&amp;gt;&lt;br /&gt;
'''''zone_guard = &amp;lt;имя_зоны&amp;gt;''''' - зона в пределах которой игрок будет атакован.&amp;lt;br&amp;gt;&lt;br /&gt;
'''''zone_warn = &amp;lt;имя_зоны&amp;gt;''''' - зона в пределах которой NPC будет начинать разговор с игроком.&amp;lt;br&amp;gt;&lt;br /&gt;
'''''walker_team = &amp;lt;имя_команды&amp;gt;''''' -  для схемы перемещения его в состоянии '''''walker''''' (если не задан, используется значение из поля '''''team''''').&amp;lt;br&amp;gt;&lt;br /&gt;
'''''no_move = true/false''''' - персонаж окликнет игрока с места и не будет подбегать к нему.&amp;lt;br&amp;gt;&lt;br /&gt;
'''''snd_greet = &amp;lt;название_звуковой_темы&amp;gt;''''' - звук которой будет проигран при обнаружении игрока.&amp;lt;br&amp;gt;&lt;br /&gt;
'''''ignore_friends = true/false''''' - будет игнорировать дружественных ему персонажей.&amp;lt;br&amp;gt;&lt;br /&gt;
'''''ignore_cond = {+info -info =func !func ~number}''''' - условия, при которых NPC игнорирует игрока.&amp;lt;br&amp;gt;&lt;br /&gt;
'''''no_danger = true/false''''' - отыгрывать или нет угрожающую анимацию будучи нейтралом.&amp;lt;br&amp;gt;&lt;br /&gt;
'''''anim = &amp;lt;название_анимации&amp;gt;''''' - какую отыгрывает анимацию, если игрок ему не враждебен.&amp;lt;br&amp;gt;&lt;br /&gt;
'''''snd_anim_sync = true/false''''' - будет ли синхронизирован звук с анимацией.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''''Пример использования схемы''''':&amp;lt;ini&amp;gt;[zoneguard]&lt;br /&gt;
path_walk = mil_freedom_zoneguard_walk_kill2&lt;br /&gt;
path_look = mil_freedom_zoneguard_look_kill2&lt;br /&gt;
zone_warn = mil_freedom_leader_warn_zone&lt;br /&gt;
zone_guard = mil_freedom_leader_kill_zone&lt;br /&gt;
no_move = true&lt;br /&gt;
team = freedom_bodyguards3&amp;lt;/ini&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Файл: ''gamedata\scripts\xr_zoneguard.script''&lt;br /&gt;
&lt;br /&gt;
==Схема wounded==&lt;br /&gt;
Схема раненного. Определяет поведение NPC в состоянии &amp;quot;раненный&amp;quot;.&amp;lt;br&amp;gt;&lt;br /&gt;
'''''Примечание''''': не рекомендуется задавать схему в качестве активной.&lt;br /&gt;
&lt;br /&gt;
'''[wounded]'''&amp;lt;br&amp;gt;&lt;br /&gt;
'''''hp_state = &amp;lt;HP&amp;gt;|&amp;lt;название_анимации&amp;gt;@&amp;lt;название_звуковой_темы&amp;gt;''''' - поведение NPC при значении уровня его здоровья равному '''''HP''''', когда он не видит игрока.&amp;lt;br&amp;gt;&lt;br /&gt;
'''''hp_state_see = &amp;lt;HP&amp;gt;|&amp;lt;название_анимации&amp;gt;@&amp;lt;название_звуковой_темы&amp;gt;''''' - поведение NPC при значении уровня его здоровья равному '''''HP''''', когда он видит игрока.&amp;lt;br&amp;gt;&lt;br /&gt;
'''''psy_state = &amp;lt;PSY&amp;gt;|&amp;lt;название_анимации&amp;gt;@&amp;lt;название_звуковой_темы&amp;gt;''''' - поведение NPC при псиатаках, в зависимости от уровня пси-здоровья равному '''''PSY'''''.&amp;lt;br&amp;gt;&lt;br /&gt;
'''''hp_victim = &amp;lt;HP&amp;gt;|&amp;lt;параметр&amp;gt;''''' - куда будет смотреть NPC при значении уровня его здоровья равному '''''HP''''', возможные параметры:&amp;lt;br&amp;gt;&lt;br /&gt;
:*'''''story_id''''' - числовое значение;&lt;br /&gt;
:*'''''actor''''' - без комментариев;&lt;br /&gt;
:*'''''nil''''' - позиция вычисленная АИ автоматически.&lt;br /&gt;
'''''hp_cover = &amp;lt;HP&amp;gt;|true/false''''' - идти в укрытие или нет, в зависимости от значения уровня здоровья равному '''''HP'''''.&amp;lt;br&amp;gt;&lt;br /&gt;
'''''hp_fight = &amp;lt;HP&amp;gt;|true/false''''' - разрешено воевать или нет, в зависимости от значения уровня здоровья равному '''''HP'''''.&amp;lt;br&amp;gt;&lt;br /&gt;
'''''syndata = &amp;lt;название_анимации&amp;gt;@&amp;lt;название_звуковой_темы&amp;gt;''''' - синхропары для красоты.&amp;lt;br&amp;gt;&lt;br /&gt;
'''''help_dialog = &amp;lt;название_диалога&amp;gt;''''' - возможность установить диалог, вместо стандартного '''''actor_help_wounded'''''.&amp;lt;br&amp;gt;&lt;br /&gt;
'''''help_start_dialog = &amp;lt;название_диалога&amp;gt;''''' - возможность установить стартовый диалог.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''''Примечание''''': желательно, чтобы все установленные актёрские диалоги для раненых имели условие их появления следующего вида:&amp;lt;br&amp;gt;&lt;br /&gt;
:&amp;lt;xml&amp;gt;&amp;lt;precondition&amp;gt;dialogs.allow_wounded_dialog&amp;lt;/precondition&amp;gt;&amp;lt;/xml&amp;gt;&lt;br /&gt;
'''''Примечание''''': если необходимо поставить несколько состояний, в зависимости от разного значения уровня здоровья, то сами состояния нужно разделять символом ‘|’:&amp;lt;br&amp;gt;&lt;br /&gt;
:&amp;lt;ini&amp;gt;hp_state= 30|help_me@help|10|wounded_heavy@help_heavy&amp;lt;/ini&amp;gt;&lt;br /&gt;
:Здесь определятся два состояния при уровне здоровья 30 и 10 соответственно.&lt;br /&gt;
:Для параметров '''''hp_state_see''''', '''''psy_state''''', '''''hp_victim''''', '''''hp_cover''''', '''''hp_fight''''' способ такой же.&lt;br /&gt;
&lt;br /&gt;
'''''Пример использования схемы &amp;lt;small&amp;gt;(в качестве примера взята дефолтная настройка)'''''&amp;lt;/small&amp;gt;:&amp;lt;br&amp;gt;&amp;lt;ini&amp;gt;hp_state= 30|help_me@help|10|wounded_heavy@help_heavy&lt;br /&gt;
hp_state_see = 30|wounded@help_see|10|wounded_heavy@help_heavy&lt;br /&gt;
psy_state = 50|{=best_pistol}psy_armed,psy_pain@wounded_psy|20|psy_shoot,psy_pain@wounded_psy_shoot,wounded_psy&lt;br /&gt;
hp_victim = 30|actor|10|nil&lt;br /&gt;
hp_cover = 30|true|10|false&lt;br /&gt;
hp_fight = 30|true|10|false&lt;br /&gt;
syndata = wounded@help&lt;br /&gt;
;best_pistol – проверка на то, что лучшее оружие NPC является пистолетом.&amp;lt;/ini&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Файл: ''gamedata\scripts\xr_wounded.script''&lt;br /&gt;
&lt;br /&gt;
==Схема rest==&lt;br /&gt;
Чувак гуляет, хавает, спит.&amp;lt;br&amp;gt;&lt;br /&gt;
Нормально не работает, посему в релизе не используется.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Файл: ''gamedata\scripts\xr_rest.script''&lt;br /&gt;
&lt;br /&gt;
==Схема heli_hunter==&lt;br /&gt;
Хелихантер может стрелять либо не стрелять по вертолету в зависимости от условий. Делается это так:&amp;lt;br&amp;gt;&lt;br /&gt;
В активную схему вставляется параметр:&amp;lt;ini&amp;gt;heli_hunter = {+info -info =func !func ~number}true/false&amp;lt;/ini&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Пример:&amp;lt;ini&amp;gt;[camper@bar_freedom_attack_sniper_1]&lt;br /&gt;
path_walk = camper_1_walk&lt;br /&gt;
path_look = camper_1_look&lt;br /&gt;
on_info = {+bar_freedom_attack_ecolog} camper1@bar_freedom_attack_sniper_1 &amp;lt;br&amp;gt;%=bar_freedom_angry_actor%&lt;br /&gt;
meet_talk_enabled = true&lt;br /&gt;
meet_dialog = bar_svoboda_dialog&lt;br /&gt;
heli_hunter = {-bar_ecolog_crush_heli_down} true&amp;lt;/ini&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Если раньше оверрайд понимал только значения '''''true''''' либо '''''false''''', то сейчас он понимает кондлист, который если возвращает '''''true''''' - то стрельба по вертолету в данной схеме разрешена.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Схема patrol==&lt;br /&gt;
Итак, есть предварительная система патруля. Представляет собой вариацию '''''kamp''''' только в состоянии ходьбы. Для ее работы прописываем в '''''custom_data''''' следующее:&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''[patrol]'''&amp;lt;br&amp;gt;&lt;br /&gt;
'''''path_walk = &amp;lt;имя_пути&amp;gt;''''' - путь по которому ходит NPC.&amp;lt;br&amp;gt; &lt;br /&gt;
'''''path_look = &amp;lt;имя_пути&amp;gt;''''' - точки в которые смотрит NPC.&amp;lt;br&amp;gt;&lt;br /&gt;
'''''formation = &amp;lt;параметр&amp;gt;''''' - описывет способ построения и не является обязательным. Возможны следующие варианты:&amp;lt;br&amp;gt;&lt;br /&gt;
:*'''''back''''' - мужики идут чуть позади командира в два ряда (по умолчанию);&amp;lt;br&amp;gt;&lt;br /&gt;
:*'''''line''''' - шеренга;&amp;lt;br&amp;gt;&lt;br /&gt;
:*'''''around''''' - вокруг командира.&amp;lt;br&amp;gt;&lt;br /&gt;
'''''commander = true/false''''' - будет ли NPC назначен командиром, желательно, чтобы такой красивый он был один. '''''false''''' - по умолчанию.&amp;lt;br&amp;gt;&lt;br /&gt;
'''''move_type = &amp;lt;название_анимации&amp;gt;''''' - задает изначальный режим перемещения, по умолчанию '''''patrol'''''.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
При остановке командора в '''''meet''''' мужики останавливаются.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Если командор помирает, то автоматически будет выбран другой. Командиром становится тот, кто первый попал под схему. Способы построения задаются в вейпоинтах следующим образом:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;ini&amp;gt;ret=0...2&amp;lt;/ini&amp;gt;&lt;br /&gt;
:*0 - линия;&lt;br /&gt;
:*1 – вокруг старшего;&lt;br /&gt;
:*2 – по бокам.&lt;br /&gt;
&lt;br /&gt;
При движении командор работает как обычный '''''walker''''' и сопровождающие его кадры повторяют его действия. То есть, если в параметрах вейпоинта прописано '''''a=assault''''', то командор помчится с орудием убийства на перевес, а остальные его откопируют.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''''Примечание''''': что еще не сделано или глючит:&amp;lt;br&amp;gt;&lt;br /&gt;
:*нет возможности автоматически перестроить команду;&lt;br /&gt;
:*все идут молча;&lt;br /&gt;
:*командор пока не отдает команд;&lt;br /&gt;
:*не рекомендуется включать спринт.&lt;br /&gt;
&lt;br /&gt;
'''''Пример использования схемы''''':&amp;lt;ini&amp;gt;[patrol@val_escort_captive_wait]&lt;br /&gt;
path_walk           = captive_wait_walk&lt;br /&gt;
path_look           = captive_wait_look&lt;br /&gt;
commander           = true&lt;br /&gt;
formation           = back&amp;lt;/ini&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Файл: ''gamedata\scripts\xr_patrol.script''&lt;br /&gt;
&lt;br /&gt;
==Схема meet==&lt;br /&gt;
Схема позволяющая настроить ситуацию, когда НПС встречает актора.&lt;br /&gt;
&lt;br /&gt;
'''[meet]'''&amp;lt;br&amp;gt;&lt;br /&gt;
'''''meet_state/meet_state_wpn = &amp;lt;number&amp;gt;|&amp;lt;название_анимации&amp;gt;@&amp;lt;название_звуковой_темы&amp;gt;''''' – задает анимацию и озвучку персонажа,&lt;br /&gt;
:в зависимости от расстояния до актера равному '''''number'''''. Для ситуации, когда актор безоружен и вооружён соответственно.&amp;lt;br&amp;gt;&lt;br /&gt;
'''''victim/victim_wpn = &amp;lt;number&amp;gt;|&amp;lt;параметр&amp;gt;''''' - задает объект, на который должен будет смотреть персонаж, в зависимости от расстояния равное '''''number'''''.&lt;br /&gt;
:Для ситуации, когда актор безоружен и вооружён соответственно. Возможны следующие значения:&amp;lt;br&amp;gt;&lt;br /&gt;
::*'''''actor''''' - смотреть на игрока;&amp;lt;br&amp;gt;&lt;br /&gt;
::*'''''story_id''''' - смотреть на персонажа со указанным '''''story_id''''';&amp;lt;br&amp;gt;&lt;br /&gt;
::*'''''nil''''' - никуда.&amp;lt;br&amp;gt;&lt;br /&gt;
'''''use/use_wpn = true/false/self''''' - настройки юзабельности персонажа.&lt;br /&gt;
:При установки значения '''''self''''' NPC сам юзнет игрока, как только сможет дотянуться.&amp;lt;br&amp;gt;&lt;br /&gt;
'''''zone = &amp;lt;имя_зоны&amp;gt;|&amp;lt;название_анимации&amp;gt;@&amp;lt;название_звуковой_темы&amp;gt;''''' - если актор будет замечен в указанном рестрикторе,&lt;br /&gt;
:то NPC будет отыгрывать заданную анимацию и произносить заданный звук.&amp;lt;br&amp;gt;&lt;br /&gt;
'''''meet_dialog = &amp;lt;название_диалога&amp;gt;''''' - возможность установить стартовый диалог NPC.&amp;lt;br&amp;gt;&lt;br /&gt;
'''''synpairs = &amp;lt;название_анимации&amp;gt;@&amp;lt;название_звуковой_темы&amp;gt;''''' - Если при каком-то наборе условий&lt;br /&gt;
:встреча будет отыгрывать именно это состояние и эту звуковую тему – то они будут синхронизироваться по рандомным анимациям состояния тела.&amp;lt;br&amp;gt;&lt;br /&gt;
'''''abuse = true/false''''' - по умолчанию '''''true''''', если '''''false''''', то неюзающийся противник не будет обижаться.&amp;lt;br&amp;gt;&lt;br /&gt;
'''''precond = usability/visibility'''''.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Любую строку можно задавать кондлистом ('''''{+info -info =func !func ~number}''''').&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Для облегчения настройки встречи сделана возможность упрощенного  задания дефолта:&amp;lt;br&amp;gt;&amp;lt;ini&amp;gt;[walker]&lt;br /&gt;
meet = default_meet&amp;lt;/ini&amp;gt;Саму секцию '''''default_meet''''' задавать не надо. Все настройки и так возьмутся из дефолта. По дефолту встреча настроена со следующими параметрами:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;ini&amp;gt;[default_meet]&lt;br /&gt;
meet_state = 30|hello@hail|20|wait@wait&lt;br /&gt;
meet_state_wpn = 30|backoff@threat_weap&lt;br /&gt;
victim = 30|actor&lt;br /&gt;
victim_wpn = 30|actor&lt;br /&gt;
use = true&lt;br /&gt;
use_wpn = false&lt;br /&gt;
syndata = hello@hail|backoff@threat_weap&amp;lt;/ini&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''''Примечание''''': если нужно, чтобы сталкер не разговаривал с игроком в данной секции, необходимо прописать ему '''''meet = no_meet'''''.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Теперь о том, как с помощью этого конструктора собрать ту реакцию на актера, которая вам нужна.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*'''Ситуация 1'''.&amp;lt;br&amp;gt;&lt;br /&gt;
Игрок вдалеке подзывает нас рукой, при приближении просит убрать оружие, потом согласен говорить.&amp;lt;br&amp;gt;&amp;lt;ini&amp;gt;[meet]&lt;br /&gt;
meet_state = 50| hello@talk_hello| 20| wait@wait| 10| ward@wait&lt;br /&gt;
meet_state_wpn = 50| hello@talk_hello| 20| threat@threat_weap&lt;br /&gt;
victim = 50| actor&lt;br /&gt;
victim_wpn = 50| actor&lt;br /&gt;
use = true&amp;lt;&lt;br /&gt;
use_wpn = false&amp;lt;/ini&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*'''Ситуация 2'''.&amp;lt;br&amp;gt;&lt;br /&gt;
Сталкер завидя нас просит убрать оружие. После этого подходит и заговаривает с нами. Если мы начинаем уходить от него или достаем оружие – начинает нас стрелять.&amp;lt;br&amp;gt;&amp;lt;ini&amp;gt;[meet]&lt;br /&gt;
meet_state = 50|{+info} threat_fire %=killactor% ,walk@ {+info} talk_abuse, wait|10|walk %+info%&lt;br /&gt;
meet_state_wpn = 50|{+info} threat_fire %=killactor%, threat@ {+info} talk_abuse, wait&lt;br /&gt;
victim = 50|actor&lt;br /&gt;
victim_wpn = 50|actor&lt;br /&gt;
use = {-info2} self, false&lt;br /&gt;
use_wpn = false&amp;lt;/ini&amp;gt;Здесь:&amp;lt;br&amp;gt;&lt;br /&gt;
'''''info''''' – инфопорция, которая указывает что мы уже опустили оружие и были достаточно близко к NPC;&amp;lt;br&amp;gt;&lt;br /&gt;
'''''info2''''' – инфопорция, которая устанавливается в диалоге и говорит что персонаж уже сказал нам все, что хотел;&amp;lt;br&amp;gt;&lt;br /&gt;
'''''killactor''''' – функция в ''xr_effects.script'' которая обижает NPC на игрока.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*'''Ситуация 3'''.&amp;lt;br&amp;gt;&lt;br /&gt;
Персонаж ходит по патрульному пути на заставе лагеря. Если игрок имеет допуск в лагерь – пропускает его и здоровается, иначе сперва отпугивает, а если игрок пробрался в лагерь – то обижается на него. При этом диалог зависит от того, имеет игрок допуск в лагерь или нет.&amp;lt;br&amp;gt;&amp;lt;ini&amp;gt;[camper]&lt;br /&gt;
path_walk = path_walk&lt;br /&gt;
path_look = path_look&lt;br /&gt;
meet = meet&lt;br /&gt;
&lt;br /&gt;
[meet]&lt;br /&gt;
meet_state = 30|{+info} wait, threat@ {+info} talk_hello, threat_back&lt;br /&gt;
meet_state_wpn = 30|{+info} wait, threat@ {+info} talk_hello, threat_back&lt;br /&gt;
victim = 30|actor&lt;br /&gt;
victim_wpn = 30|actor&lt;br /&gt;
use = true&lt;br /&gt;
use_wpn = true&lt;br /&gt;
zone = warnzone|{-info} threat@ {-info} threat_back|kampzone| {-info} true@ {-info} talk_abuse&lt;br /&gt;
meet_dialog = {+info} dialog1, dialog2&amp;lt;/ini&amp;gt;Здесь:&amp;lt;br&amp;gt;&lt;br /&gt;
'''''true''''' – вместо анимации, атаковать игрока;&amp;lt;br&amp;gt;&lt;br /&gt;
'''''info''''' – инфопорция, которая говорит, что мы имеем допуск к лагерю;&amp;lt;br&amp;gt;&lt;br /&gt;
'''''warnzone''''' – рестриктор, в котором нас предупреждают;&amp;lt;br&amp;gt;&lt;br /&gt;
'''''kampzone''''' – рестриктор, в котором нас убивают;&amp;lt;br&amp;gt;&lt;br /&gt;
'''''dialog1''''' – стартовый диалог NPC, если мы имеем допуск в лагерь;&amp;lt;br&amp;gt;&lt;br /&gt;
'''''dialog2''''' – стартовый диалог NPC, если мы не имеем допуск в лагерь.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Файл: ''gamedata\scripts\xr_meet.script''&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;font size = 5&amp;gt;[[Часть 2]]&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Категория:A-Life]][[Категория:Скрипты]]&lt;/div&gt;</summary>
		<author><name>91.218.192.254</name></author>	</entry>

	</feed>