<?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=95.134.51.218&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=95.134.51.218&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/95.134.51.218"/>
		<updated>2026-04-29T21:19:29Z</updated>
		<subtitle>Вклад участника</subtitle>
		<generator>MediaWiki 1.22.6</generator>

	<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>2011-12-30T00:52:13Z</updated>
		
		<summary type="html">&lt;p&gt;95.134.51.218: /* 3.2.6. Схема follower */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Шаблон:Настройка логики}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Настройки логики=&lt;br /&gt;
&lt;br /&gt;
==3.1. Система флагов (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;
Флаги точек пути '''path_walk''':&amp;lt;br&amp;gt;&lt;br /&gt;
'''a=state'''&amp;lt;br&amp;gt;&lt;br /&gt;
	Выбирает состояние тела при перемещении (Только из раздела –Ходячие состояния)&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;
Флаги точек пути '''path_look''':&amp;lt;br&amp;gt;&lt;br /&gt;
'''a =state'''&amp;lt;br&amp;gt;&lt;br /&gt;
	Выбирает состояние тела при стоянии (или сидении) на месте. (Из разделов Стоячие и Сидячие состояния)&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 можно сделать: '''wp00|a=press|t=0|sigtm=pressed'''&amp;lt;br&amp;gt;&lt;br /&gt;
А затем переключить схему: '''on_signal = pressed | другая_схема'''&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==3.1.1. Более подробное описание путей. ==&lt;br /&gt;
&lt;br /&gt;
Walker.&amp;lt;br&amp;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;
1)	Путь path_walk, по которому walker ходит.&amp;lt;br&amp;gt;&lt;br /&gt;
2)	Путь 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;
[walker]&amp;lt;br&amp;gt;&lt;br /&gt;
team = …&amp;lt;br&amp;gt;&lt;br /&gt;
имя команды, произвольная текстовая строка. Все walker-ы в одной команде должны иметь один и тот же team. Желательно в team задавать имя уровня и имя места, где стоят walker-ы, например: escape_bridge, escape_factory, это уменьшит шанс ошибиться и дать разным командам общее имя.&amp;lt;br&amp;gt;&lt;br /&gt;
path_walk = …&amp;lt;br&amp;gt;&lt;br /&gt;
	имя пути, описанного в п. 1&amp;lt;br&amp;gt;&lt;br /&gt;
path_look = …&amp;lt;br&amp;gt;&lt;br /&gt;
(не обязательно) имя пути, описанного в п. 2. Если персонаж должен только ходить по маршруту, path_look можно не задавать.&amp;lt;br&amp;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 – название анимации из пункта 2.4.4. настоящей документации. Если мы напишем a=threat то персонаж пойдет в состоянии данжер, если a=raid то побежит с оружием наизготовку и т.д. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
NB: В точках пути 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, которые обведены на рисунке пунктирной линией, в редакторе ставим общие флажки. Например, в верхней паре точек ставим флажок 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, а у другой 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 мсек)&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 – название анимации из пункта 2.4.4. настоящей документации. Если мы напишем a=hide, то персонаж сядет в состоянии данжер, если a=guard, то встанет  с оружием наизготовку и т.д. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
NB: В точках пути path_look используются анимации ТОЛЬКО из раздела «Стоячие и сидячие состояния»!&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
===Случайный выбор пути===&lt;br /&gt;
По поводу точек пути path_walk! Есть еще один интересный факт: следующую точку пути path_walk можно задавать рандомно.&lt;br /&gt;
Например:[[Файл:Random_path.jpg]]&lt;br /&gt;
&lt;br /&gt;
Нам требуется, чтобы НПС стоящий в точке p0 патрулировал территорию по двум цикличным маршрутам:&lt;br /&gt;
&lt;br /&gt;
p0 -&amp;gt; p1 -&amp;gt; p2 -&amp;gt; p0&lt;br /&gt;
&lt;br /&gt;
p0 -&amp;gt; p3 -&amp;gt; p4 -&amp;gt; p0&lt;br /&gt;
&lt;br /&gt;
Чтобы задать вариацию выбора маршрута относительно точки p0, нужно в ссылке на следующую точку пути указать не одну, а две точки:&lt;br /&gt;
&lt;br /&gt;
p0:links = p1(1), p3(1)&lt;br /&gt;
&lt;br /&gt;
Таким не хитрым образом, НПС для продолжения пути рандомно выберет одну из предложенных точек p1 или p3. После возврата в точку p0 выбор проследует вновь. Варьировать выбор можно в любой точки, можно сделать так:&lt;br /&gt;
&lt;br /&gt;
p0:links = p1(1), p3(1)&lt;br /&gt;
&lt;br /&gt;
а в точке p1, также задать выбор&lt;br /&gt;
&lt;br /&gt;
p1:links = p2(1), p3(1)&lt;br /&gt;
&lt;br /&gt;
'''НО!'''&lt;br /&gt;
Не следует делать выбор между двумя путями, если в пути одна точка! Вот такая схема не приемлема и, лично у меня, вызывает вылет:[[Файл:Error_random_path.jpg]]&lt;br /&gt;
&lt;br /&gt;
==3.2. Схемы поведения сталкеров.==&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;
==3.2.1. Схема 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;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В точках path_walk, которым соответствуют точки пути path_look (стоят одинаковые флажки) персонаж останавливается и смотрит в определенную точку, при этом отыгрывая (или не отыгрывая) определенную анимацию.&amp;lt;br&amp;gt;&lt;br /&gt;
* def_state_moving1 = состояние, в котором сталкер движется к первой точке пути, если она близко (patrol по умолчанию)&amp;lt;br&amp;gt;&lt;br /&gt;
* def_state_moving2 = состояние, в котором сталкер движется к первой точке пути, если она не слишком далеко (rush по умолчанию)&amp;lt;br&amp;gt;&lt;br /&gt;
* def_state_moving3 = состояние, в котором сталкер движется к первой точке пути, если она далеко (sprint по умолчанию)&amp;lt;br&amp;gt;&lt;br /&gt;
* def_state_standing = дефолтное состояние в котором он стоит и смотрит на точку, если в этой точке не задана другое состояние.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Файл: \gamedata\scripts\xr_walker.script&lt;br /&gt;
&lt;br /&gt;
==3.2.2. Схема remark==&lt;br /&gt;
Схема используется для синхронизации\связки других схем.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[remark]&lt;br /&gt;
*snd_anim_synс = true либо false. По умолчанию false. Указывает на то необходимо ли синхронизировать звук с анимацией либо нет&lt;br /&gt;
*snd  = звук ремарка, по умолчанию nil&lt;br /&gt;
*anim = анимация ремарка, по умолчанию wait&lt;br /&gt;
*target = Куда смотрит сталкер. Есть следующие варианты&lt;br /&gt;
story_id – числовое значение&amp;lt;br&amp;gt;&lt;br /&gt;
		actor – без комментариев&amp;lt;br&amp;gt;&lt;br /&gt;
		nil – позиция вычисленная АИ автоматически&amp;lt;br&amp;gt;&lt;br /&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;
target              = logic@cit_killers_base_guard, cit_killers&amp;lt;br&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;
&lt;br /&gt;
Внимание, теперь если значение не задано, то оно равно nil а не actor, как было раньше. То есть если вы хотите чтобы персонаж в ремарке смотрел на актера - необходимо явно прописывать это. Если задано значение nil, то персонаж развернется в позицию, которую посчитает АИ.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Стандартные сигналы для remark: &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;
Пример синхронизации анимации и звука в схеме Remark:&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[remark]&amp;lt;br&amp;gt;&lt;br /&gt;
anim = анимация&amp;lt;br&amp;gt;&lt;br /&gt;
snd = звук&amp;lt;br&amp;gt;&lt;br /&gt;
snd_anim_sync = true&amp;lt;br&amp;gt;&lt;br /&gt;
on_signal = action_end | следующая схема&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==3.2.3. Схема 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;&lt;br /&gt;
*wakeable = true – может ли проснуться быстро (если true, то спит на корточках и во сне бормочет)&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
NB: Если путь состоит из двух точек, то связь нужно делать от первой точки к нулевой (либо двунаправленную).&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Файл: \gamedata\scripts\xr_sleeper.script&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==3.2.4. Схема 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 = kamp_center – имя точки вокруг которой NPC будет устраиваться.&lt;br /&gt;
*radius = 2 (насколько далеко сталкер будет сидеть от центра лагеря, 2- по умолчанию)&amp;lt;br&amp;gt;&lt;br /&gt;
*def_state_moving = run (дефолтное состояние, в котором сталкер будет идети к точке кампа)&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Файл: \gamedata\scripts\xr_kamp.script&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
NB! Если точка кампа находится в костре, то в оффлайне сталкера прийдут на нее, а когда они перейдут в онлайн, то окажуться внутри костра, где и получат хит. Чтобы этого не случалось в секции кемпа указывать path_walk из одной точке, название которой = &amp;lt;path_kamp_name&amp;gt;_task&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*path_walk = &amp;lt;path_kamp_name&amp;gt;_task&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Если точка кемпа расположена в чистом поле то, path_walk прописывать не надо.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==3.2.5. Схема camper==&lt;br /&gt;
Свойства кемперов:&amp;lt;br&amp;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 = patrol_path&amp;lt;br&amp;gt;&lt;br /&gt;
path_look = patrol_path&amp;lt;br&amp;gt;&lt;br /&gt;
*radius = number – расстояние в метрах, если расстояние между кэмпером и противником меньше указанного, кэмпер уходит в универсальный комбат. По умолчанию этот радиус равен 20 метрам.&lt;br /&gt;
*no_retreat = true - персонаж при виде врага не будет ломиться на ближайшую точку path_walk, а сразу перейдет в режим убивания. Нужно это в том случае, если вы хотите сделать сценку, когда одни ребята наезжают на других. Ставите кемперов с вышеуказанным флажком. Они идут по своим патрульным путям и выносят врагов.&lt;br /&gt;
*def_state_moving = состояние из стейт менеджера&lt;br /&gt;
	Состояние, в котором мы движемся на ближайшую точку пути при враге&lt;br /&gt;
*def_state_moving_fire = состояние из стейт менеджера (sneak_fire)&lt;br /&gt;
	Состояние, в котором мы отстреливаемся от врага, во время движения на ближайшую точку пути.&lt;br /&gt;
*def_state_campering = состояние из стейт менеджера (hide)&lt;br /&gt;
	Состояние, в котором мы ожидаем врага, находясь на пути&lt;br /&gt;
*def_state_campering_fire = состояние из стейт менеджера (hide_fire)&lt;br /&gt;
	Состояние, в котором мы отстреливаемся от врага, находясь на пути&lt;br /&gt;
*attack_sound = имя_звуковой_темы&lt;br /&gt;
Возможность переопределять снайперам/кемперам звук атаки. По дефолту он равен звуковой теме &amp;quot;fight_attack&amp;quot;. Можно изменить на любое другое (для сценических потребностей) либо вообще отключить, прописав в секции кемпера: attack_sound =&amp;lt;br&amp;gt;&lt;br /&gt;
*shoot = тип.&lt;br /&gt;
Задаем тип стрельбы. Возможные значения - always|none|terminal&amp;lt;br&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;
NB! У кемпера есть один большой минус – когда ему наносится хит и он не знает откуда хит наносится (не видит противника, не слышит выстрела), то он тупо продолжает стоять на старом месте и ждать следующей пули.&amp;lt;br&amp;gt;&lt;br /&gt;
Ввиду этого не стоит расставлять кемперов в случае, когда сталкеры должны защищаться и держать позицию в том случае, если есть несколько направлений, откуда игрок или стелкеры смогут атаковать поставленного кемпера. Используйте walkerов в таких случаях, а кемперов стоить ставить для атак по путям и как снайперов.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==3.2.5.1. Схема sniper==&lt;br /&gt;
	Разновидность кемпера. Отличаются тем, что стреляют только одиночными выстрелами и не смотрят по точкам патрульного пути, а сканируют пространство между ними. Скорость сканирования от точки к точке фиксирована и равна 20сек.&amp;lt;br&amp;gt;&lt;br /&gt;
	NB! Ставить снайперу только 2 точки look&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	В кастом дате кемпера прописать:&amp;lt;br&amp;gt;&lt;br /&gt;
	sniper = true&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Файл: \gamedata\scripts\xr_camper.script&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==3.2.6. Схема follower== &lt;br /&gt;
В custom_data прописан как follower&lt;br /&gt;
NPC идет за NPC лидером. Если до лидера расстояние менее 5 метров, то он идет, если от 5 до 20 – бежит в режиме run, если свыше 20 – догоняет в режиме sprint. Пути не задаются.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[follower]&amp;lt;br&amp;gt;&lt;br /&gt;
leader = story id лидера из game.ltx (число!)&amp;lt;br&amp;gt;&lt;br /&gt;
*formation_line = true (постарается идти сбоку от лидера, в противном случае будет идти сзади&lt;br /&gt;
*distance = расстояние в метрах, на котором будет идти от лидера attendant. По умолчанию – 1,5 метра, если идет цепью, то 5 метров.&lt;br /&gt;
*state_if_leader_in_meet. Это есть строка с именем  состояния из state_manager, которое будет назначено follower-ам, если командир пребывает в состоянии meet.&lt;br /&gt;
*anim_walk = state (состояние, в котором фолловер идет за лидером)&lt;br /&gt;
*anim_run = state (состояние, в котором фолловер бежит за лидером)&lt;br /&gt;
*anim_sprint = state (состояние, в котором фолловер спринтует за лидером)&lt;br /&gt;
Файл: \gamedata\scripts\xr_ attendant.script&amp;lt;br&amp;gt;&lt;br /&gt;
ВНИМАНИЕ!!!!!! НЕ ЗАБЫТЬ ПРОПИСАТЬ:&lt;br /&gt;
[smart_terrains]&lt;br /&gt;
none = true&lt;br /&gt;
ИНАЧЕ НПС ЗАСОСЁТ В ГУЛАГ И НИКУДА ОН НЕ ПОЙДЁТ&lt;br /&gt;
&lt;br /&gt;
Если все это происходит под гулагом, то вместо story_id лидера, мы прописываем его секцию  логики в файле скрипта. Пример:&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;t = { section = &amp;quot;logic@bar_arena_follower_2&amp;quot;, &lt;br /&gt;
		     idle = 0,&lt;br /&gt;
	             prior = 7, state = {0}, squad = squad, group = groups[0],&lt;br /&gt;
		     in_rest = &amp;quot;&amp;quot;, out_rest = &amp;quot;&amp;quot;,&lt;br /&gt;
		     dependent = &amp;quot;logic@bar_arena_leader&amp;quot;,&lt;br /&gt;
	             predicate = function(obj)&lt;br /&gt;
				 return obj:character_community() == &amp;quot;dolg&amp;quot;&lt;br /&gt;
			    end&lt;br /&gt;
}&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==3.2.7. Схема 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 = путь перемещения&lt;br /&gt;
*path_look = путь обзора&lt;br /&gt;
team = имя команды синхронизированных zoneguard-ов (из всей команды только 1 будет реагировать на игрока)&lt;br /&gt;
*zone_guard = имя зоны, в пределах которой игрок будет атакован&lt;br /&gt;
zone_warn = имя зоны, в пределах которой начинать разговор с игроком&lt;br /&gt;
*walker_team = team для схемы перемещения его в состоянии walker (если не задан, используется значение из поля team)&lt;br /&gt;
*no_move = если true, персонаж окликнет игрока с места и не будет подбегать к нему&lt;br /&gt;
*snd_greet = имя звуковой схемы, из которой будет проигран звук при обнаружении персонажа&lt;br /&gt;
*ignore_friends = true, будет игнорировать дружественных ему персонажей.&lt;br /&gt;
*ignore_cond = {+info -info =func !func} условия, при которых NPC игнорирует игрока&lt;br /&gt;
*no_danger = если true, то не отыгрывает угрожающую анимацию, нейтралам.&lt;br /&gt;
*anim = какую отыгрывает анимацию, если игрок ему не враждебен.&lt;br /&gt;
*snd_anim_sync = если true, то npc будет синхронизировать звук с анимацией&lt;br /&gt;
Файл: \gamedata\scripts\xr_zoneguard.script&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==3.2.8. Схема wounded (раненый)==&lt;br /&gt;
&lt;br /&gt;
[logic]&amp;lt;br&amp;gt;&lt;br /&gt;
wounded = wounded&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[walker]&amp;lt;br&amp;gt;&lt;br /&gt;
wounded = wounded&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[wounded]&amp;lt;br&amp;gt;&lt;br /&gt;
hp_state 		= HP|condstate@condsound|HP|condstate@condsound&amp;lt;br&amp;gt;&lt;br /&gt;
hp_state_see	= HP|condstate@condsound|HP|condstate@condsound&amp;lt;br&amp;gt;&lt;br /&gt;
psy_state 		= PSY|condstate@condsound|PSY|condstate@condsound&amp;lt;br&amp;gt;&lt;br /&gt;
hp_victim		= HP|condvictim|HP|condvictim&amp;lt;br&amp;gt;&lt;br /&gt;
hp_cover		= HP|condbool|HP|condbool&amp;lt;br&amp;gt;&lt;br /&gt;
hp_fight		= HP|condbool|HP|condbool&amp;lt;br&amp;gt;&lt;br /&gt;
*syndata		= state@sound|state@sound&amp;lt;br&amp;gt;&lt;br /&gt;
*help_dialog	= story_id&lt;br /&gt;
*help_start_dialog = story_id&lt;br /&gt;
&lt;br /&gt;
Где:&amp;lt;br&amp;gt;&lt;br /&gt;
Condstate – кондлист, возвращающий состояние персонажа, либо true. Если он возвращает true – нпс обидится на игрока&amp;lt;br&amp;gt;&lt;br /&gt;
Condsound – кондлист, возвращающий саунд тему.&amp;lt;br&amp;gt;&lt;br /&gt;
HP – пороговые значение здоровья персонажа&amp;lt;br&amp;gt;&lt;br /&gt;
PSY – пороговые значения пси здоровья персонажа&amp;lt;br&amp;gt;&lt;br /&gt;
Condvictim – кондлист, возвращающий направление куда смотреть. Возможные значения:&amp;lt;br&amp;gt; &lt;br /&gt;
nil, actor, number. В случае числа – будет смотреть на персонажа с указанными стори айди.&amp;lt;br&amp;gt;&lt;br /&gt;
Condbool – кондлист, возвращаюзий true либо false.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Значения полей:&amp;lt;br&amp;gt;&lt;br /&gt;
hp_state – поведение персонажа когда он не видит игрока&amp;lt;br&amp;gt;&lt;br /&gt;
hp_state_see – поведение персонажа, когда он видит игрока&amp;lt;br&amp;gt;&lt;br /&gt;
psy_state – поведение персонажа при псиатаках&amp;lt;br&amp;gt;&lt;br /&gt;
hp_victim – куда смотреть, в зависимости от ХП&amp;lt;br&amp;gt;&lt;br /&gt;
hp_cover – идти в укрытие или нет, в зависимости от ХП&amp;lt;br&amp;gt;&lt;br /&gt;
hp_fight – разрешено воевать или нет, в зависимости от ХП&lt;br /&gt;
syndata – синхропары для красоты.&amp;lt;br&amp;gt;&lt;br /&gt;
help_dialog – story_id диалога вместо дефолтного actor_help_wounded. Если вам по сюжету  необходимо заменить диалог другим, то вы в этом поле прописываете id другого диалога.&amp;lt;br&amp;gt;&lt;br /&gt;
Также мы вставляем стартовый диалог раненого. Если мы его прописываем, то все актёрские диалоги для раненых должны иметь такой precondition: &amp;lt;br&amp;gt;&lt;br /&gt;
dialogs.allow_wounded_dialog.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Пример. В качестве примера взята дефолтная настройка.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
hp_state = 30|help_me@help|10|wounded_heavy@help_heavy&amp;lt;br&amp;gt;&lt;br /&gt;
hp_state_see = 30|wounded@help_see|10|wounded_heavy@help_heavy&amp;lt;br&amp;gt;&lt;br /&gt;
psy_state = 50|{=best_pistol}psy_armed,psy_pain@wounded_psy|20| &amp;lt;br&amp;gt;{=best_pistol}psy_shoot,psy_pain@{=best_pistol}wounded_psy_shoot,wounded_psy&amp;lt;br&amp;gt;&lt;br /&gt;
hp_victim = 30|actor|10|nil&amp;lt;br&amp;gt;&lt;br /&gt;
hp_cover = 30|true|10|false&amp;lt;br&amp;gt;&lt;br /&gt;
hp_fight = 30|true|10|false&amp;lt;br&amp;gt;&lt;br /&gt;
syndata = wounded@help&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Где:&amp;lt;br&amp;gt;&lt;br /&gt;
Best_pistol – проверка на то, что лучшее оружие НПС является пистолетом.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Файл: \gamedata\scripts\xr_wounded.script&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==3.2.9. Схема rest==&lt;br /&gt;
Чувак гуляет, хавает, спит.&amp;lt;br&amp;gt;&lt;br /&gt;
Пока нормально не работает.&amp;lt;br&amp;gt;&lt;br /&gt;
Файл: \gamedata\scripts\xr_rest.script&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==3.2.10. Схема heli_hunter==&lt;br /&gt;
Хелихантер может стрелять либо не стрелять по вертолету в зависимости от условий. Делается это так:&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[camper@bar_freedom_attack_sniper_1]&amp;lt;br&amp;gt;&lt;br /&gt;
path_walk = camper_1_walk&amp;lt;br&amp;gt;&lt;br /&gt;
path_look = camper_1_look&amp;lt;br&amp;gt;&lt;br /&gt;
on_info = {+bar_freedom_attack_ecolog} camper1@bar_freedom_attack_sniper_1 &amp;lt;br&amp;gt;%=bar_freedom_angry_actor%&amp;lt;br&amp;gt;&lt;br /&gt;
meet_talk_enabled = true&amp;lt;br&amp;gt;&lt;br /&gt;
meet_dialog = bar_svoboda_dialog&amp;lt;br&amp;gt;&lt;br /&gt;
heli_hunter = {-bar_ecolog_crush_heli_down} true, false&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Если раньше оверрайд хелихантера понимал только значения true либо false, то сейчас он понимает кондлист, который если возвращает true - то стрельба по вертолету в данной схеме разрешена.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==3.2.11. Patrol==&lt;br /&gt;
Итак, есть предварительная система патруля. Представляет собой вариацию kamp только в состоянии ходьбы. Для ее работы прописываем в кустовой дате следующее:&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[patrol]&amp;lt;br&amp;gt;&lt;br /&gt;
path_walk = path_walk&amp;lt;br&amp;gt;&lt;br /&gt;
path_look = path_look&amp;lt;br&amp;gt;&lt;br /&gt;
*formation = back&amp;lt;br&amp;gt;&lt;br /&gt;
*commander = true (типа назначат командиром, желательно, чтобы такой красивый он был один)&lt;br /&gt;
*move_type = задает изначальный режим перемещения, по умолчанию patrol. Вообще, значение этого поля есть название ходячей анимации из state_mgr_lib&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  formation  - описывет способ построения и не является обязательным. &lt;br /&gt;
  Возможны следующие варианты:&lt;br /&gt;
  back    - мужики идут чуть позади командира в два ряда (по умолчанию)&lt;br /&gt;
  line    - шеренга&lt;br /&gt;
  around  - вокруг командира&lt;br /&gt;
&lt;br /&gt;
При остановке командора в meet мужики останавливаются.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Если командор помирает, то автоматически будет выбран другой. Командиром становится тот, кто первый попал под схему. Способы построения задаются в вейпоинтах следующим образом:&lt;br /&gt;
  ret=0...2&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;
  - нет возможности автоматически перестроить команду (нужно от Шурика то, &lt;br /&gt;
    что записано в todo листе)&lt;br /&gt;
  - все идут молча (когда будет манагер баек, то сделаем)&lt;br /&gt;
  - командор пока не отдает команд (нет озвучки)&lt;br /&gt;
  - не рекомендуется включать спринт (глючит)&lt;br /&gt;
&lt;br /&gt;
==3.3. Секции.==&lt;br /&gt;
==3.3.1. Секция combat==&lt;br /&gt;
Показывает, что происходит, когда NPC срывается в бой.&amp;lt;br&amp;gt;&lt;br /&gt;
on_combat = combat&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[combat]&amp;lt;br&amp;gt;&lt;br /&gt;
on_info =  %+info -info =func%  эффекты, которые вызываются на каждом раунде боя.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Для задания различных типов скриптовых боёв для различных ситуаций используется параметр combat_type.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В следующем примере сталкер сражается:&amp;lt;br&amp;gt;&lt;br /&gt;
 * по-кемперски, если враг=актёр и он дальше Х метров&lt;br /&gt;
 * по-монолитовски, если любой враг дальше Y метров&lt;br /&gt;
 * иначе - движковый бой&lt;br /&gt;
&lt;br /&gt;
[logic]&amp;lt;br&amp;gt;&lt;br /&gt;
active = walker&amp;lt;br&amp;gt;&lt;br /&gt;
on_combat = combat&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[walker]&amp;lt;br&amp;gt;&lt;br /&gt;
path_walk = ...&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[combat]&amp;lt;br&amp;gt;&lt;br /&gt;
combat_type = {=fighting_actor =fighting_ge_X_meters} camper, &amp;lt;br&amp;gt;{=fighting_ge_Y_meters} monolith&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Пример такой функции: нам надо чтобы на расстоянии свыше 20 метров npc переходил бы в кемперский комбат.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;function fighting_dist_ge_20(actor, npc)&lt;br /&gt;
return db.storage[npc:id()].enemy:position():distance_to ( npc:position() ) &amp;gt;= 400 &lt;br /&gt;
end&amp;lt;/code&amp;gt;&lt;br /&gt;
400 – это 202  . Примечание – мы пишем квадрат нужного нам расстояния, для экономии системных ресурсов.&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;
[logic]&amp;lt;br&amp;gt;&lt;br /&gt;
active = nil&amp;lt;br&amp;gt;&lt;br /&gt;
on_combat = combat&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[combat]&amp;lt;br&amp;gt;&lt;br /&gt;
combat_type = zombied&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Если в разных секциях для персонажа требуются разные типы боя или разные условия, то можно воспользоваться оверрайдом   combat_type.&amp;lt;br&amp;gt;&lt;br /&gt;
Помните: оверрайд всегда будет перекрывать настройку в секции combat. Т.е., если у вас логика на 5 секций и в четырёх нужен кемперский комбат, а в пятой монолитовский, то можно задать так:&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[logic]&amp;lt;br&amp;gt;&lt;br /&gt;
active = walker1&amp;lt;br&amp;gt;&lt;br /&gt;
on_combat = combat&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[walker1]&amp;lt;br&amp;gt;&lt;br /&gt;
...&amp;lt;br&amp;gt;&lt;br /&gt;
[walker2]&amp;lt;br&amp;gt;&lt;br /&gt;
...&amp;lt;br&amp;gt;&lt;br /&gt;
[walker3]&amp;lt;br&amp;gt;&lt;br /&gt;
...&amp;lt;br&amp;gt;&lt;br /&gt;
[walker4]&amp;lt;br&amp;gt;&lt;br /&gt;
...&amp;lt;br&amp;gt;&lt;br /&gt;
[walker5]&amp;lt;br&amp;gt;&lt;br /&gt;
...&amp;lt;br&amp;gt;&lt;br /&gt;
combat_type = monolith&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[combat]&amp;lt;br&amp;gt;&lt;br /&gt;
combat_type = camper&amp;lt;br&amp;gt;&lt;br /&gt;
 (scheme - задает тип боя (monolith, camper, zombied), иначе - универсальный бой)&lt;br /&gt;
&lt;br /&gt;
disable_combat_handler – функция отключающая секцию combat.&amp;lt;br&amp;gt;&lt;br /&gt;
Файл: \gamedata\scripts\xr_combat.script&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==3.3.2 Секция death==&lt;br /&gt;
Схема показывает, что происходит при смерти NPC.&amp;lt;br&amp;gt;&lt;br /&gt;
on_death = death&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[death]&amp;lt;br&amp;gt;&lt;br /&gt;
on_info = %+info -info =func%&amp;lt;br&amp;gt;&lt;br /&gt;
Файл: \gamedata\scripts\xr_death.script&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==3.3.3. Cекция hit==&lt;br /&gt;
Схема показывает, что происходит при, нанесении повреждения NPC. on_hit НЕ СРАБАТЫВАЕТ на звук выстрела, только на попадание по сталкеру! Это сделано, потому что выстрел в воздух в общем случае не должен восприниматься как агрессия (игрок отстреливает, скажем, собак, а на него срывается охрана).&amp;lt;br&amp;gt;&lt;br /&gt;
on_hit = hit&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[hit]&amp;lt;br&amp;gt;&lt;br /&gt;
on_info = %+info -info =func%&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Файл: \gamedata\scripts\xr_hit.script&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==3.3.4. Секция actor_dialogs==&lt;br /&gt;
Показывает, какие диалоги будут доступны или недоступны игроку при разговоре с этим NPC. Пишется практически в любой схеме.&amp;lt;br&amp;gt;&lt;br /&gt;
actor_dialogs = actor_dialogs&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[actor_dialogs]&amp;lt;br&amp;gt;&lt;br /&gt;
id = доступные диалоги через запятую.&amp;lt;br&amp;gt;&lt;br /&gt;
disable = запрещенные диалоги, тоже через запятую.&amp;lt;br&amp;gt;&lt;br /&gt;
Файл: \gamedata\scripts\xr_meet.script&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==3.3.5. Секция use==&lt;br /&gt;
Схема показывает, что произойдет, если игрок юзнет NPC.&lt;br /&gt;
&lt;br /&gt;
on_use = use&lt;br /&gt;
&lt;br /&gt;
[use]&lt;br /&gt;
on_info = %+info -info =func%&lt;br /&gt;
&lt;br /&gt;
Файл: \gamedata\scripts\xr_use.script&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==3.3.6. Секция combat_ignore==&lt;br /&gt;
Если NPC в этой схеме то он, не переходит в боевой режим. В любой другой схеме:&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[walker]&amp;lt;br&amp;gt;&lt;br /&gt;
combat_ignore_cond = {+info –info =func !func} – условия для игнорирования боя (если написать always, то в данной схеме игрок будет игнорировать бой всегда, пока не перейдет в схему, где бой не игнорируется).&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В схеме нет дополнительных полей&amp;lt;br&amp;gt;&lt;br /&gt;
[walker]&amp;lt;br&amp;gt;&lt;br /&gt;
combat_ignore = combat_ignore &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[combat_ignore]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Функции, используемые для работы с кондлистом комбат игнора:&amp;lt;br&amp;gt;&lt;br /&gt;
fighting_dist_ge_20 -- текущий враг на расстоянии больше или равном 20м&amp;lt;br&amp;gt;&lt;br /&gt;
fighting_dist_ge(pасстояние в метрах) – универсальная функция для combat_ignore, проверка расстояния для игрока&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
fighting_actor -- текущий враг актёр?&amp;lt;br&amp;gt;&lt;br /&gt;
check_fighting -- проверка (по story_id) того, что нашим врагом есть хотя бы кто-то один из списка&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Файл: \gamedata\scripts\xr_combat_ignore.script&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===[[Часть 2]]===&lt;br /&gt;
&lt;br /&gt;
[[Категория:A-Life]][[Категория:Скрипты]]&lt;/div&gt;</summary>
		<author><name>95.134.51.218</name></author>	</entry>

	</feed>