<?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=81.162.64.91&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=81.162.64.91&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/81.162.64.91"/>
		<updated>2026-04-29T15:07:54Z</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_3</id>
		<title>Настройка логики. Часть 3</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_3"/>
				<updated>2015-04-04T15:50:34Z</updated>
		
		<summary type="html">&lt;p&gt;81.162.64.91: /* Скрипт logic */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Шаблон:Настройка логики}}&lt;br /&gt;
&lt;br /&gt;
=Скрипт logic=&lt;br /&gt;
&lt;br /&gt;
Скрипт '''''logic''''' управляет переключением схем.&amp;lt;br&amp;gt;&lt;br /&gt;
В '''''custom_data''''' любого персонажа (кроме свободных) должна присутствовать секция '''''[logic]'''''.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Функции, на которые ссылается секция '''''[logic]''''' должны находится в файлах ''gamedata\scripts\xr_effects.script'' или ''gamedata\scripts\xr_conditions.script''.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В секции должно присутствовать одно из полей:&amp;lt;br&amp;gt;&lt;br /&gt;
:*'''''active = &amp;lt;название_схемы&amp;gt;''''' - активная схема, запускающаяся первой.&amp;lt;br&amp;gt;&lt;br /&gt;
:*'''''cfg = &amp;lt;имя_ltx_файла_с_настройками&amp;gt;''''' - способ задавать логику персонажа, вынося её во внешний файл (путь учитывается относительно папки ''gamedata\config\scripts'').&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Пример. Настройки простого '''''walker''''':&amp;lt;ini&amp;gt;[logic]&lt;br /&gt;
active = walker&lt;br /&gt;
&lt;br /&gt;
[walker]&lt;br /&gt;
path_walk = walk1&lt;br /&gt;
path_look = look1&amp;lt;/ini&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Переключение схем выполняется с помощью дополнительных условий схемы '''''logic''''', которые прописываются в секции текущей активной схемы. Существуют следующие условия переключения:&amp;lt;br&amp;gt;&lt;br /&gt;
:*'''''on_actor_dist_le = &amp;lt;number&amp;gt;|&amp;lt;название_схемы&amp;gt;''''' - если дистанция в метрах до игрока меньше либо равно '''''number'''''.&amp;lt;br&amp;gt;&lt;br /&gt;
:*'''''on_actor_dist_le_nvis = &amp;lt;number&amp;gt;|&amp;lt;название_схемы&amp;gt;''''' - если дистанция в метрах до игрока меньше либо равно '''''number''''' без проверки на видимость.&amp;lt;br&amp;gt;&lt;br /&gt;
:*'''''on_actor_dist_ge = &amp;lt;number&amp;gt;|&amp;lt;название_схемы&amp;gt;''''' - если дистанция в метрах до игрока больше '''''number'''''.&amp;lt;br&amp;gt;&lt;br /&gt;
:*'''''on_actor_dist_ge_nvis = &amp;lt;number&amp;gt;|&amp;lt;название_схемы&amp;gt;''''' - если дистанция в метрах до игрока больше '''''number''''' без проверки на видимость.&amp;lt;br&amp;gt;&lt;br /&gt;
:*'''''on_signal = &amp;lt;имя_сигнала&amp;gt;|&amp;lt;название_схемы&amp;gt;''''' - срабатывает по приходу сигнала '''''имя_сигнала''''' от текущей активной схемы.&amp;lt;br&amp;gt;&lt;br /&gt;
:*'''''on_info = &amp;lt;название_схемы&amp;gt;''''' - срабатывает всегда.&amp;lt;br&amp;gt;&lt;br /&gt;
:*'''''on_timer = &amp;lt;number&amp;gt;|&amp;lt;название_схемы&amp;gt;''''' - срабатывает через '''''number''''' миллисекунд после включения схемы.&amp;lt;br&amp;gt;&lt;br /&gt;
:*'''''on_game_timer = &amp;lt;number&amp;gt;|&amp;lt;название_схемы&amp;gt;''''' – срабатывает через '''''number''''' секунд игрового времени, после включения схемы.&amp;lt;br&amp;gt;&lt;br /&gt;
:*'''''on_actor_in_zone = &amp;lt;имя_зоны&amp;gt;|&amp;lt;название_схемы&amp;gt;''''' – если актер в находится в указанной зоне (указывается имя рестриктора).&amp;lt;br&amp;gt;&lt;br /&gt;
:*'''''on_actor_not_in_zone = &amp;lt;имя_зоны&amp;gt;|&amp;lt;название_схемы&amp;gt;''''' – если актер не в указанной зоне (указывается имя рестриктора).&amp;lt;br&amp;gt;&lt;br /&gt;
:*'''''on_npc_in_zone = &amp;lt;number&amp;gt;|&amp;lt;имя_зоны&amp;gt;|&amp;lt;название_схемы&amp;gt;''''' – если NPC со '''''story_id''''' равному '''''number''''', в указанной зоне.&amp;lt;br&amp;gt;&lt;br /&gt;
:*'''''on_npc_not_in_zone = &amp;lt;number&amp;gt;|&amp;lt;имя_зоны&amp;gt;|&amp;lt;название_схемы&amp;gt;''''' - если NPC со '''''story_id''''' равному '''''number''''', не в указанной зоне.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''''Примечание''''': если происходит переключение между несколькими одноименными схемами (например несколькими '''''walker'''''), то их можно нумеровать: '''''walker1''''', '''''walker2''''', хотя предпочтительнее через символ ''''@'''&amp;lt;nowiki&amp;gt;'&amp;lt;/nowiki&amp;gt; давать более информативные названия: '''''walker@day''''', '''''walker@alarm''''' и т.д.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
C любыми из вышеперечисленных параметров можно работать следующим образом:&amp;lt;br&amp;gt;&lt;br /&gt;
'''''on_info = {…} %…%'''''&amp;lt;br&amp;gt;&lt;br /&gt;
'''''on_info2 = {…} %…%'''''&amp;lt;br&amp;gt;&lt;br /&gt;
'''''on_info3 = {…} %…%'''''&amp;lt;br&amp;gt;&lt;br /&gt;
и так далее до посинения&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
А также условия для переключения на описанные выше секции.&amp;lt;br&amp;gt;&lt;br /&gt;
'''''combat_ignore_cond = '''''&amp;lt;br&amp;gt;&lt;br /&gt;
'''''on_hit ='''''&amp;lt;br&amp;gt;&lt;br /&gt;
'''''on_death ='''''&amp;lt;br&amp;gt;&lt;br /&gt;
'''''on_combat ='''''&amp;lt;br&amp;gt;&lt;br /&gt;
'''''on_use ='''''&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Синтаксис скрипта Logic==&lt;br /&gt;
&lt;br /&gt;
Для того, чтобы персонаж ходил по пути '''''walk1''''', а при приближении игрока на дистанцию 5 метров, переключался на путь '''''walk2''''' (но только при условии, что он видит игрока), нужно написать следующее:&amp;lt;br&amp;gt;&amp;lt;ini&amp;gt;[logic]&lt;br /&gt;
active = walker@first&lt;br /&gt;
&lt;br /&gt;
[walker@first]&lt;br /&gt;
path_walk = walk1&lt;br /&gt;
path_look = look1&lt;br /&gt;
on_actor_dist_le = 5 | walker@second&lt;br /&gt;
&lt;br /&gt;
[walker@second]&lt;br /&gt;
path_walk = walk2&lt;br /&gt;
path_look = look2&amp;lt;/ini&amp;gt;&lt;br /&gt;
Выше рассмотрено безусловное переключение секций.&amp;lt;br&amp;gt;&lt;br /&gt;
Перед именем секции в фигурных скобках '''''{}''''' можно задавать дополнительные '''''условия''''', а после имени секции - так называемые &amp;quot;'''''эффекты'''''&amp;quot;, которые заключить в знаки процента '''''%%'''''. Эффекты будут применены только в случае выполнения условий, если таковых нет то эффект выполнится безусловно.&amp;lt;br&amp;gt;&lt;br /&gt;
Можно не задавать переход на другую схему указывая её имя, а задать только условия и/или эффекты. Тогда активной останется действующая схема, но условия и эффекты будут все равно обработаны. Если все условия в фигурных скобках не выполняются, схема активирована не будет. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''''Пример''''':&amp;lt;ini&amp;gt;on_actor_dist_le = 5 | {условие} walker@second %эффекты%&amp;lt;/ini&amp;gt;&lt;br /&gt;
Условия могут быть следующими:&amp;lt;br&amp;gt;&lt;br /&gt;
:*'''''+infoportion''''' - требуется присутствие инфопорции &amp;quot;'''''infoportion'''''&amp;quot; у актора;&amp;lt;br&amp;gt;&lt;br /&gt;
:*'''''-infoportion''''' - требуется отсутствие инфопорции &amp;quot;'''''infoportion'''''&amp;quot; у актора;&amp;lt;br&amp;gt;&lt;br /&gt;
:*'''''=function''''' - требуется, чтобы функция &amp;quot;'''''function'''''&amp;quot; вернула '''''true''''';&amp;lt;br&amp;gt;&lt;br /&gt;
:*'''''!function''''' - требуется, чтобы функция &amp;quot;'''''function'''''&amp;quot; вернулся '''''false''''';&amp;lt;br&amp;gt;&lt;br /&gt;
:*'''''~number''''' - вероятность выполнения условия.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Эффекты могут быть следующими:&amp;lt;br&amp;gt;&lt;br /&gt;
:*'''''+infoportion''''' - в случае включения секции у актора будет установлен инфопорция &amp;quot;'''''infoportion'''''&amp;quot;;&amp;lt;br&amp;gt;&lt;br /&gt;
:*'''''-infoportion''''' - в случае включения секции у актора будет убрана инфопорция &amp;quot;'''''infoportion'''''&amp;quot;;&amp;lt;br&amp;gt;&lt;br /&gt;
:*'''''=function''''' - в случае включения секции стартует функция &amp;quot;'''''function'''''&amp;quot;.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''''Примечание''''': для условия переключения схемы '''''{~number}''''' определён следующий расчёт:&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:'''''number''''' сравнивается со случайным числом в диапазоне от 1 до 100, если '''''number''''' больше, то считается, что условие вернуло истину, например:&lt;br /&gt;
:&amp;lt;ini&amp;gt;on_actor_in_zone = restrictor_name | {~30} walker@second&amp;lt;/ini&amp;gt;&lt;br /&gt;
:Если условий несколько, например:&lt;br /&gt;
:&amp;lt;ini&amp;gt;on_actor_dist_le = 5 | {~20} walker@second, {~55} walker@third, walker@fourth&amp;lt;/ini&amp;gt;&lt;br /&gt;
:В таком случае, переход на схему '''''walker@second''''' произойдёт с вероятностью 20%, на схему '''''walker@third''''' с вероятностью 55-20=35% и на схему '''''walker@fourth''''' с оставшейся вероятностью 100-55=45%.&amp;lt;br&amp;gt;&lt;br /&gt;
:Условия в данном случае необходимо выставлять исключительно в порядке возрастания.&amp;lt;br&amp;gt;&lt;br /&gt;
:Неудачный пример:&lt;br /&gt;
:&amp;lt;ini&amp;gt;on_actor_dist_le = 5 | {~40} walker@second, {~25} walker@third, walker@fourth&amp;lt;/ini&amp;gt;&lt;br /&gt;
:Здесь переход на схему '''''walker@third''''' никогда не будет определён, а вероятность перехода на схему '''''walker@fourth''''' составит 60%.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''''Примечание''''': несколько условия или эффектов разделяются пробелами:&amp;lt;ini&amp;gt;on_actor_dist_le = 5 | {+info_1 -info_2 +info_3} walker@second %+info_4 =func%&amp;lt;/ini&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Можно задавать сразу несколько секций, разделенных запятыми. Порядок обхода при этом - слева направо. После срабатывания первого из условий, обход прекращается. В примере ниже, если установлен '''''info_1''''', будет включена схема '''''walker@second''''', иначе, если установлен '''''info_2''''', будет включена схема '''''walker@third''''', иначе будет включен '''''walker@fourth''''':&amp;lt;ini&amp;gt;on_actor_dist_le = 5 | {+info_1} walker@second, {+info_2} walker@third, walker@fourth&amp;lt;/ini&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В описанном выше поле '''''active''''' секции '''''logic''''', можно также задавать условия, например:&amp;lt;ini&amp;gt;[logic]&lt;br /&gt;
active = {=actor_friend} walker@friendly, walker@enemy&amp;lt;/ini&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В логических условиях теперь принимается ключевое слово '''''never''''', которое означает, что условие ложно. Например:&amp;lt;ini&amp;gt;&lt;br /&gt;
combat_ignore_cond = {=actor_enemy =actor_has_suit} always, {=actor_enemy} never %=gar_dm_bandits_fight%&amp;lt;/ini&amp;gt;&lt;br /&gt;
Вышеприведенная конструкция включает игнорирование боя, если у NPC враг игрок в костюме, но отключит его, если врагом является игрок, но без костюма, при этом сработают эффекты (%%) секции '''''never'''''. Таким образом, выбор секции '''''never''''' равносилен отсутствию секции (несрабатыванию условия), но эффекты в знаках процента при этом срабатывают.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Пример работы с секцией '''''nil'''''. &lt;br /&gt;
Секция '''''nil''''' выводит из-под скриптовых схем персонажа, монстра или объект и отпускает его под управление движка. Это надо если какое-либо условие выполнившись один раз больше не нуждается в проверке, при этом экономятся ресурсы машины, которые на каждом апдейте проверяют это условие. Например:&amp;lt;ini&amp;gt;[logic]&lt;br /&gt;
active = sr_idle&lt;br /&gt;
&lt;br /&gt;
[sr_idle]&lt;br /&gt;
on_actor_inside = nil %+esc_actor_inside%&amp;lt;/ini&amp;gt;&lt;br /&gt;
То есть, при входе актера в рестриктор выдается инфопорция и рестриктор уходит в секцию '''''nil''''', больше не проверяя наличие игрока.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''''Примечание''''': обратно из секции '''''nil''''' под скрипты объект вернуть уже невозможно! Учитывайте это, используя ее.&lt;br /&gt;
&lt;br /&gt;
==Пример достаточно сложной логики== &lt;br /&gt;
&amp;lt;ini&amp;gt;[logic]&lt;br /&gt;
active = walker&lt;br /&gt;
combat_ignore = combat_ignore&lt;br /&gt;
on_hit = hit&lt;br /&gt;
on_death = death&lt;br /&gt;
&lt;br /&gt;
[hit]&lt;br /&gt;
on_info = %+alert%&lt;br /&gt;
&lt;br /&gt;
[death]&lt;br /&gt;
on_info = %+alert +trup3%&lt;br /&gt;
&lt;br /&gt;
[walker]&lt;br /&gt;
path_walk = walk_svoboda3&lt;br /&gt;
path_look = look_svoboda3&lt;br /&gt;
combat_ignore_cond = {-alert}&lt;br /&gt;
on_timer = 25000 | remark&lt;br /&gt;
&lt;br /&gt;
[remark]&lt;br /&gt;
anim = idle&lt;br /&gt;
snd = stalker_talk_kampfire&lt;br /&gt;
no_move = true&lt;br /&gt;
no_rotate = true&lt;br /&gt;
on_hit = hit&lt;br /&gt;
on_death = death&lt;br /&gt;
combat_ignore_cond = {-alert}&lt;br /&gt;
&lt;br /&gt;
[combat_ignore]&amp;lt;/ini&amp;gt;&lt;br /&gt;
Рассмотрим ее пошагово.&amp;lt;br&amp;gt;&lt;br /&gt;
Вначале сталкер работает по схеме '''''walker'''''. При этом он игнорирует бой, пока не будет поставлен инфопоршн '''''alert''''. Он ждет 25 секунд, после чего переходит в схему '''''remark'''''. В ремарке он проигрывает анимацию '''''idle''''', говорит на указанные темы, не поворачивается и не двигается и точно также игнорирует бой. Если по нему попадут ('''''on_hit''''') или убьют ('''''on_death'''''), будет поставлен инфопоршн '''''alert''''' и он перестанет игнорировать бой (понятно, что если он будет трупом, то это ему не поможет, но их в сценке трое, и тогда сорвутся в бой все остальные). Если его убьют, то также будет поставлен инфопоршн '''''trup3''''' который сообщит о том, что этот NPC убит.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
А  вот логика его противника:&amp;lt;ini&amp;gt;[logic]&lt;br /&gt;
active = walker&lt;br /&gt;
combat_ignore = combat_ignore&lt;br /&gt;
&lt;br /&gt;
[walker]&lt;br /&gt;
path_walk = soldier_walk1&lt;br /&gt;
path_look = soldier_look1&lt;br /&gt;
combat_ignore_cond = always&lt;br /&gt;
team = assault_group&lt;br /&gt;
on_signal = assault | camper&lt;br /&gt;
&lt;br /&gt;
[camper]&lt;br /&gt;
path_walk = soldier_walk1_2&lt;br /&gt;
path_look = soldier_look1_2&lt;br /&gt;
radius = 5&amp;lt;br&amp;gt;&lt;br /&gt;
on_info = {+trup1 +trup2 +trup3} walker2&lt;br /&gt;
&lt;br /&gt;
[walker2]&amp;lt;br&amp;gt;&lt;br /&gt;
path_walk = soldier_walk1_3&lt;br /&gt;
path_look = soldier_look1_3&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[combat_ignore]&amp;lt;/ini&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Он идет в схеме '''''walker''''', игнорируя бой (причем игнорируя в любой ситуации). Идет в составе группы '''''assault_group'''''. Когда он приходит в конечную точку маршрута (там он синхронизируется с остальными из группы, это приписано в путях) и получает сигнал '''''assault''''', то переходит в схему '''''camper'''''. В этой схеме у него не прописан '''''combat_ignore''''', поэтому он начинает стрелять по противнику. После того, как все трое противников будут убиты, каждый из них, умирая ставит инфопоршн '''''trup1''''', '''''trup2''''' или '''''trup3''''' и когда все трое будут убиты, то он переключится на схему '''''walker2''''' (подойдет к костру).&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Схемы логики space_restrictor=&lt;br /&gt;
&lt;br /&gt;
'''''Общее замечание''''': Чтобы исключить ситуацию, когда актёр проскакивает через рестриктор и тот не успевает сработать, старайтесь ставить рестриктор так, чтоб минимальная ширина была больше 2 метров.&lt;br /&gt;
&lt;br /&gt;
==Схема sr_idle==	&lt;br /&gt;
Предназначение данной схемы – включить другую схему при срабатывании одного из стандартных условий логической схемы.&amp;lt;br&amp;gt;&lt;br /&gt;
Сама по себе схема ничего не делает.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''[sr_idle]'''&amp;lt;br&amp;gt;&lt;br /&gt;
'''''on_actor_inside = nil %+esc_actor_inside%'''''&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Обратите внимание, что после срабатывания проверки активная схема переключается в '''''nil''''', чтобы не продолжать бесполезную проверку на каждом апдейте. Можно не задавать '''''nil'''''.&amp;lt;br&amp;gt;&lt;br /&gt;
Часто эта схема работает вместе со спавнером, рестриктор выдает инфопоршн, при входе в зону, а спавнер по нему уже кого-то спавнит.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''''Пример использования схемы''''':&amp;lt;ini&amp;gt;[logic]&lt;br /&gt;
active = sr_idle&lt;br /&gt;
&lt;br /&gt;
[sr_idle]&lt;br /&gt;
on_actor_inside = {+val_raid_start -esc_return -esc_trader_speak} nil %=esc_return_dv +esc_return +esc_trader_speak%&amp;lt;/ini&amp;gt;&lt;br /&gt;
&lt;br /&gt;
файл ''gamedata\scripts\sr_idle.script''&lt;br /&gt;
&lt;br /&gt;
==Схема sr_no_weapon==&lt;br /&gt;
Данная схема убирает оружие у игрока при входе в зону.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''[sr_no_weapon]'''&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''''Пример использования схемы''''':&amp;lt;ini&amp;gt;[logic]&lt;br /&gt;
active = sr_no_weapon&lt;br /&gt;
&lt;br /&gt;
[sr_no_weapon]&amp;lt;/ini&amp;gt;&lt;br /&gt;
&lt;br /&gt;
файл ''gamedata\scripts\sr_no_weapon.script''&lt;br /&gt;
&lt;br /&gt;
==Схема sr_sound==&lt;br /&gt;
&lt;br /&gt;
Схема предназначена для отыгрывание звука при входе актора в '''''space_restrictor'''''.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''[sr_sound]'''&amp;lt;br&amp;gt;&lt;br /&gt;
'''''snd = &amp;lt;путь_звукового_файла&amp;gt;''''' - перечень имён звуков разделенных запятыми (путь учитывается относительно папки ''gamedata\sounds'').&amp;lt;br&amp;gt;&lt;br /&gt;
'''''type = &amp;lt;параметр&amp;gt;''''' - типы звуков через запятые. Для удобства введены типы наборов звуков в таблице '''''sound_types''''' управляющего файла. Всего их три:&amp;lt;br&amp;gt;&lt;br /&gt;
:*'''''floor_wooden''''';&amp;lt;br&amp;gt;&lt;br /&gt;
:*'''''rats_panic''''';&amp;lt;br&amp;gt;&lt;br /&gt;
:*'''''random'''''.&amp;lt;br&amp;gt;&lt;br /&gt;
'''''delay = &amp;lt;number&amp;gt;''''' - задержка перед проигрыванием звука в секундах реального времени, по умолчанию 0.&amp;lt;br&amp;gt;&lt;br /&gt;
'''''idle = &amp;lt;number&amp;gt;''''' - длина периода игнорирования входа в зону после начала последнего проигранного звука.&lt;br /&gt;
:Чтоб, например, &amp;quot;завывание&amp;quot; было не чаще, чем раз в несколько минут. Указывается в секундах игрового времени. По умолчанию 0.&amp;lt;br&amp;gt;&lt;br /&gt;
'''''rnd = &amp;lt;number&amp;gt;''''' - вероятность (в процентах) того, что звук отыграется. По умолчанию 100.&amp;lt;br&amp;gt;&lt;br /&gt;
'''''position = &amp;lt;имя_пути&amp;gt;''''' - задает имя пути, в вершинах которого может отыграться звук.&lt;br /&gt;
:Есть зарезервированное значение '''''random'''''. Оно означает случайное место в радиусе от 15 до 50 метров от игрока. Если этот параметр не задан, то подразумевается позиция игрока.&amp;lt;br&amp;gt;&lt;br /&gt;
'''''slide_velocity = &amp;lt;number&amp;gt;''''' - скорость (м/с) передвижения звука по точкам патрульного пути. По умолчанию - 3.&amp;lt;br&amp;gt;&lt;br /&gt;
'''''slide_sound_once = true\false''''' - в случае значения '''''true''''' - проиграть звук один раз, даже если он не дошел до последней точки пути,&lt;br /&gt;
:иначе если '''''false''''' – и если звук закончился, а до последней точки пути не дошел, запустить его ещё раз. По умолчанию '''''false'''''.&amp;lt;br&amp;gt;&lt;br /&gt;
'''''play_at_actor = true/false''''' - заставляет звук играться от позиции актера постоянно.&lt;br /&gt;
:Если он будет равен '''''true''''' и будет задан путь перемещения звука (или рандом), то мы тупо вылетим.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Поддерживается сигнал '''''sound_end'''''.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Обязательно нужно задать либо '''''snd''''', либо '''''type'''''. Можно их задать вместе. На базе этих параметров составляется список звуков. При входе актора в рестриктор отыгрывается случайный звук из этого списка.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''''Пример использования схемы''''':&amp;lt;ini&amp;gt;[logic]&lt;br /&gt;
active = sr_idle&lt;br /&gt;
&lt;br /&gt;
[sr_idle]&lt;br /&gt;
on_actor_inside = sr_sound@shooting&lt;br /&gt;
&lt;br /&gt;
[sr_sound@shooting]&lt;br /&gt;
snd = characters_voice\scenario\garbage\grey_grey_1&lt;br /&gt;
play_at_actor = true&lt;br /&gt;
on_signal = sound_end| nil&lt;br /&gt;
on_timer = 20000| nil&amp;lt;/ini&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Есть возможность сделать «скользящий звук». Необходим патрульный путь. Звук начинает отыгрываться с начала пути и перемещается от одной точки пути к другой (по мере их установки на патрульном пути) со скоростью '''''slide_velocity'''''. Пример:&amp;lt;ini&amp;gt;[logic]&lt;br /&gt;
active = sr_sound&lt;br /&gt;
&lt;br /&gt;
[sr_sound]&lt;br /&gt;
type = random&lt;br /&gt;
position = way&lt;br /&gt;
slide_velocity = 8&lt;br /&gt;
slide_sound_once = true&amp;lt;/ini&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Файл ''gamedata\scripts\sr_sound.script''&lt;br /&gt;
&lt;br /&gt;
==Схема sr_tip==&lt;br /&gt;
Предназначение данной схемы – давать игроку сообщение (подсказку) при входе в рестриктор.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''[sr_tip]'''&amp;lt;br&amp;gt;&lt;br /&gt;
'''''name = &amp;lt;имя_текса&amp;gt;''''' - строка с '''''id''''' текста зарегистрированного в папке ''gamedata\config\text''.&amp;lt;br&amp;gt;&lt;br /&gt;
'''''type = news/tips''''' - параметр рудиментарный и не на что не влияет.&amp;lt;br&amp;gt;&lt;br /&gt;
'''''sender = &amp;lt;параметр&amp;gt;''''' - задаёт условный строковый идентификатор иконки персонажа, от которого якобы пришло сообщение.&lt;br /&gt;
:По умолчанию это иконка торговца. Возможны следующие значения: '''''default, trader, dolg, freedom, ecolog, arena, stalker, krot, barman, wolf, o_soznanie, monolith, saharov, prizrak, killer'''''.&amp;lt;br&amp;gt;&lt;br /&gt;
'''''cond = {+info -info =func !func ~number}''''' - необходимые логические условия, при которых подсказка сработает. По дефолту, сработает при входе в зону.&amp;lt;br&amp;gt;&lt;br /&gt;
'''''single = true/false''''' - если параметр в '''''true''''', то типс будет выдан только один раз. По умолчанию '''''false'''''.&amp;lt;br&amp;gt;&lt;br /&gt;
'''''timeout = &amp;lt;number&amp;gt;''''' - задержка вывода сообщения в секундах. По умолчанию - 0.&amp;lt;br&amp;gt;&lt;br /&gt;
'''''showtime = &amp;lt;number&amp;gt;''''' - время показа сообщения на экране. Задаётся в милисекундах. По умолчанию - 5000.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Поддерживается сигнал '''''tip_sended''''', только в случае установленного параметра '''''single'''''.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''''Пример использования схемы''''':&amp;lt;ini&amp;gt;[logic]&lt;br /&gt;
active = sr_idle&lt;br /&gt;
&lt;br /&gt;
[sr_idle]&lt;br /&gt;
on_actor_inside = sr_tip&lt;br /&gt;
&lt;br /&gt;
[sr_tip] &lt;br /&gt;
name = rad_barman_spam&lt;br /&gt;
type = tips&lt;br /&gt;
cond = {+bar_deactivate_radar_done} &lt;br /&gt;
sender = barman&lt;br /&gt;
on_actor_inside = nil&lt;br /&gt;
showtime = 25000&amp;lt;/ini&amp;gt;&lt;br /&gt;
&lt;br /&gt;
файл ''gamedata\scripts\sr_tip.script''&lt;br /&gt;
&lt;br /&gt;
==Схема sr_light==&lt;br /&gt;
Зона, в которой фонарики у NPC будут включены независимо от времени суток.&lt;br /&gt;
&lt;br /&gt;
'''[sr_light]'''&amp;lt;br&amp;gt;&lt;br /&gt;
'''''light_on = true/false''''' - включен/выключен свет.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''''Пример использования схемы''''':&amp;lt;ini&amp;gt;[logic]&lt;br /&gt;
active = sr_light&lt;br /&gt;
&lt;br /&gt;
[sr_light]&lt;br /&gt;
light_on = true&amp;lt;/ini&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Файл: ''gamedata\scripts\sr_light.script''&lt;br /&gt;
&lt;br /&gt;
==Схема sr_territory==&lt;br /&gt;
&lt;br /&gt;
Занимается эта схема тем, что отлавливает всякие события, происходящие внутри рестриктора.&lt;br /&gt;
Пока что она отлавливает только хиты и смерть NPC.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''[sr_territory]'''&amp;lt;br&amp;gt;&lt;br /&gt;
'''''territory_hit = {+info -info =func !func ~number} %+info -info =func%''''' - эффекты, которые произойдут при нанесении хита от актора, будучи в этой зоне.&amp;lt;br&amp;gt;&lt;br /&gt;
'''''territory_death = {+info -info =func !func ~number} %+info -info =func%''''' - эффекты, которые произойдут при смерти от &amp;quot;рук&amp;quot; актора, будучи в этой зоне.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Поскольку схема работает только с игроком – то хиты и смерть засчитываются только от игрока.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''''Пример использования схемы''''':&amp;lt;ini&amp;gt;[logic]&lt;br /&gt;
active = sr_territory@1&lt;br /&gt;
&lt;br /&gt;
[sr_territory@1]&lt;br /&gt;
territory_death = sr_idle@1 %+bar_arena_territory_death%&amp;lt;/ini&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Файл: ''gamedata\scripts\sr_territory.script''&lt;br /&gt;
&lt;br /&gt;
==Схема sr_mapspot==&lt;br /&gt;
При входе в рестриктор он сам себя подсвечивает на карте.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''[sr_mapspot]'''&amp;lt;br&amp;gt;&lt;br /&gt;
'''''hint = &amp;lt;имя_текса&amp;gt;''''' - строка с '''''id''''' текста зарегистрированного в папке ''gamedata\config\text''.&amp;lt;br&amp;gt;&lt;br /&gt;
'''''location = &amp;lt;имя_метки&amp;gt;''''' - имя типа метки, зарегистрированное в файле ''config\ui\map_spots.xml'' и всех, что в него включены инклюдами. По умолчанию - '''''crlc_small'''''.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''''Пример использования схемы''''':&amp;lt;ini&amp;gt;[logic]&lt;br /&gt;
active = sr_idle&lt;br /&gt;
 &lt;br /&gt;
[sr_idle]&lt;br /&gt;
on_actor_inside = sr_mapspot&lt;br /&gt;
&lt;br /&gt;
[sr_mapspot]&lt;br /&gt;
hint = gar_swamp&lt;br /&gt;
location = crcl_big&amp;lt;/ini&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Файл: ''gamedata\scripts\sr_mapspot.script''&lt;br /&gt;
&lt;br /&gt;
==Схема sr_particle==&lt;br /&gt;
Данная система отыгрывает партиклы, как статичные, так и движущиеся, в указанном месте и в указанное время.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''[sr_particle]'''&amp;lt;br&amp;gt;&lt;br /&gt;
'''''name = &amp;lt;имя_партикла&amp;gt;''''' - путь до партикла относительно файла ''particles.xr''.&amp;lt;br&amp;gt;&lt;br /&gt;
'''''path = &amp;lt;имя_пути&amp;gt;''''' - точки движения партикла. Возможны два случая:&lt;br /&gt;
:#Когда указывается путь анимации камеры (путь учитывается относительно папки ''gamedata\anims'');&amp;lt;br&amp;gt;&lt;br /&gt;
:#Когда указывается имя патрульного пути.&amp;lt;br&amp;gt;&lt;br /&gt;
'''''mode = &amp;lt;параметр&amp;gt;''''' - параметр обязательный и имеет два значения:&lt;br /&gt;
:* 1 - устанавливается в случае указания анимации камеры для параметра '''''path''''';&amp;lt;br&amp;gt;&lt;br /&gt;
:* 2 - устанавливается в случае указания патрульного пути для параметра '''''path'''''.&amp;lt;br&amp;gt;&lt;br /&gt;
'''''looped = true/false''''' - флаг зацикленности партиклов.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''''Примечание''''': для пути движения партикла, когда установлена анимация движения камеры, для имени файла необходимо ставить расширение '''''.anm''''' (например ''arena.anm'').&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Поддерживается сигнал '''''particle_end'''''.&lt;br /&gt;
&lt;br /&gt;
В вейпоинтах патрульного пути можно задавать флаги:&amp;lt;br&amp;gt;&lt;br /&gt;
:*'''''s=&amp;lt;название_звуковой_темы&amp;gt;''''' - звук проигрываемый во время движения;&amp;lt;br&amp;gt;&lt;br /&gt;
:*'''''d=&amp;lt;number&amp;gt;''''' - время задержки перед проигрыванием, задается в миллисекундах. По умолчанию - 0.&amp;lt;br&amp;gt; &lt;br /&gt;
&lt;br /&gt;
При '''''looped = true''''', по окончании проигрывания партиклов, они будут запускаться сначала, но уже без задержек. Сигнал '''''particle_end''''' выдаваться не будет.&amp;lt;br&amp;gt;&lt;br /&gt;
При '''''looped = false''''' сигнал будет выдан, когда все источники партиклов отыграют.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Данная схема отслеживающим партиклы и нет никакой необходимости чтобы игрок в него заходил.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''''Пример использования схемы''''':&amp;lt;ini&amp;gt;[logic]&lt;br /&gt;
active = sr_idle&lt;br /&gt;
&lt;br /&gt;
[sr_idle]&lt;br /&gt;
on_info = {+sar_mon_poltergeist_1_spawn} sr_particle&lt;br /&gt;
&lt;br /&gt;
[sr_particle]&lt;br /&gt;
name = anomaly2\gravity_blast_03      &lt;br /&gt;
path = sar_poltergeist_1_way                  &lt;br /&gt;
mode = 2 				&lt;br /&gt;
looped = false               &lt;br /&gt;
on_signal = particle_end | sr_idle@2&amp;lt;/ini&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Файл: ''gamedata\scripts\sr_particle.script''&lt;br /&gt;
&lt;br /&gt;
==Схема sr_sound_act==&lt;br /&gt;
Схема играет звук в голове актера. Всякие там переговоры по ПДА и прочие фейки.&lt;br /&gt;
&lt;br /&gt;
'''[sr_sound_act]'''&amp;lt;br&amp;gt;&lt;br /&gt;
'''''snd = &amp;lt;путь_звукового_файла&amp;gt;''''' - имя звукового файла относительно папки ''gamedata\sounds''.&amp;lt;br&amp;gt;&lt;br /&gt;
'''''delay = &amp;lt;number&amp;gt;''''' - задержка перед проигрыванием. По умолчанию - 0.&amp;lt;br&amp;gt;&lt;br /&gt;
'''''delay_max = &amp;lt;number&amp;gt;''''' - между проигрыванием звука будет взят случайный промежуток между '''''delay''''' и '''''delay_max'''''.&amp;lt;br&amp;gt;&lt;br /&gt;
'''''theme = &amp;lt;название_звуковой_темы&amp;gt;''''' - имя темы из файла ''sound_theme.script''.&amp;lt;br&amp;gt;&lt;br /&gt;
'''''stereo = true/false''''' - при установке этого параметра к файлу, который задан параметром '''''snd''''' или в звуковой теме,&lt;br /&gt;
:автоматически будут добавляться суффиксы '''''_r''''' и '''''_l''''' для загрузки левого и правого каналов и, соответственно, всё это будет проигрываться.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Поддерживается сигнал '''''sound_end'''''.&lt;br /&gt;
&lt;br /&gt;
Если указывается тема, то звук будет играть зациклено, случайным образом выбирая один из звуков прописанных в теме, если указывается звук, то он отыгрывается один раз.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''''Пример использования схемы''''':&amp;lt;ini&amp;gt;[logic]&lt;br /&gt;
active = sr_idle&lt;br /&gt;
&lt;br /&gt;
[sr_idle]&lt;br /&gt;
on_actor_inside = sr_sound_act&lt;br /&gt;
&lt;br /&gt;
[sr_sound_act]&lt;br /&gt;
theme = sar_monolith_call&lt;br /&gt;
delay = 10000&lt;br /&gt;
delay_max = 15000&lt;br /&gt;
stereo = true&lt;br /&gt;
on_info = {+sar2_monolith_miracle} sr_idle@end&amp;lt;/ini&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Файл: ''gamedata\scripts\sr_sound2d.script''&lt;br /&gt;
&lt;br /&gt;
==Схема sr_timer==&lt;br /&gt;
Схема использовать для производства каких либо действий в зависимости от состояния таймера.&lt;br /&gt;
&lt;br /&gt;
'''[sr_timer]'''&amp;lt;br&amp;gt;&lt;br /&gt;
'''''type = dec/inc''''' - тип счётчика.&lt;br /&gt;
:*'''''dec''''' - декриментирующий, т.е. обратный отсчёт;&amp;lt;br&amp;gt;&lt;br /&gt;
:*'''''inc''''' - инрементирующий, т.е. отчёт по возрастанию.&amp;lt;br&amp;gt;&lt;br /&gt;
'''''start_value = &amp;lt;number&amp;gt;''''' - начальное значение счетчика в реальных миллисекундах.&lt;br /&gt;
:Для декриментирующих счетчиков задавать обязательно. Для инкриментирующих, если не задано, то считается с 0.&amp;lt;br&amp;gt;&lt;br /&gt;
'''''on_value = &amp;lt;number&amp;gt;|%+info -info =func% &amp;lt;название_схемы&amp;gt;''''' - производит действие в зависимости от состояния счётчика.&amp;lt;br&amp;gt;&lt;br /&gt;
'''''string = &amp;lt;имя_текса&amp;gt;''''' - строка с '''''id''''' текста зарегистрированного в папке ''gamedata\config\text''.&lt;br /&gt;
&lt;br /&gt;
'''''Пример использования схемы''''':&amp;lt;ini&amp;gt;[logic]&lt;br /&gt;
active = sr_idle&lt;br /&gt;
 &lt;br /&gt;
[sr_idle]&lt;br /&gt;
on_actor_inside = sr_timer@1&lt;br /&gt;
 &lt;br /&gt;
[sr_timer@1]&lt;br /&gt;
type = dec&lt;br /&gt;
start_value = 1000000&lt;br /&gt;
on_value = 5 | %=play_snd(characters_voice\scenario\radar\rad_hat_2)% | 0 | nil %=aes_kill_actor%&lt;br /&gt;
on_actor_outside = sr_idle&lt;br /&gt;
on_info = {+bar_deactivate_radar_done} nil&lt;br /&gt;
string = st_helmet_countdown&amp;lt;/ini&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Файл: ''gamedata\scripts\sr_timer.script''&lt;br /&gt;
&lt;br /&gt;
==Схема sr_psy_antenna==&lt;br /&gt;
Зоны с такой секцией позволяют управлять эффектами от пси-воздействия (на Янтаре и Радаре). Сейчас можно управлять интенсивностью излучения и интенсивностью получения повреждений.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''[sr_psy_antenna]'''&amp;lt;br&amp;gt;&lt;br /&gt;
'''''eff_intensity = &amp;lt;number&amp;gt;''''' - увеличение/уменьшение в процентах от базового значения интенсивности излучения.&amp;lt;br&amp;gt;&lt;br /&gt;
'''''hit_intensity = &amp;lt;nymber&amp;gt;''''' - увеличение/уменьшение в процентах от базового значения наносимого повреждения.&amp;lt;br&amp;gt;&lt;br /&gt;
'''''phantom_prob = &amp;lt;nymber&amp;gt;''''' - вероятность проявления фантомов в процентах. По умолчанию - 0.&amp;lt;br&amp;gt;&lt;br /&gt;
'''''postprocess = &amp;lt;имя_постэффекта&amp;gt;''''' - файл постэффекта, относительно папки ''gamedata\anims''. Расширение ставить обязательно! По умолчанию - ''psy_antenna.ppe''.&amp;lt;br&amp;gt;&lt;br /&gt;
'''''mute_sound_threshold = &amp;lt;number&amp;gt;''''' - предел до которого можно занижать звук уровня. 0 - глушит полностью, стоит по умолчанию.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''''Пример использования схемы''''':&amp;lt;ini&amp;gt;[logic]&lt;br /&gt;
active = sr_psy_antenna@good_helmet&lt;br /&gt;
&lt;br /&gt;
[sr_psy_antenna@good_helmet]&lt;br /&gt;
eff_intensity = -10&lt;br /&gt;
hit_intensity = 0&lt;br /&gt;
phantom_prob = 45&amp;lt;/ini&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Файл: ''gamedata\scripts\sr_psy_antenna.script''&lt;br /&gt;
&lt;br /&gt;
==Схема sr_teleport==&lt;br /&gt;
Схема позволяет телепортировать актора в пределах локации.&lt;br /&gt;
&lt;br /&gt;
'''[sr_teleport]'''&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''''point = &amp;lt;имя_пути&amp;gt;''''' - патрульный путь из одной точки, куда переместится актор.&amp;lt;br&amp;gt;&lt;br /&gt;
'''''look = &amp;lt;имя_пути&amp;gt;''''' - патрульный путь из одной точки, куда будет смотреть актор после перемещения.&amp;lt;br&amp;gt;&lt;br /&gt;
'''''prob = &amp;lt;number&amp;gt;''''' - вероятность перемещения в заданную точку. По умолчанию - 100.&amp;lt;br&amp;gt;&lt;br /&gt;
'''''timeout = &amp;lt;number&amp;gt;''''' - задержка срабатывания телепорта в миллисекундах. По умолчанию - 900.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Телепорты желательно ставить совместно с особой аномальной зоной (партиклом). Зона добавит визуализацию и создаст эффект втягивания.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''''Пример использования схемы''''':&amp;lt;ini&amp;gt;[logic]&lt;br /&gt;
active = sr_teleport&lt;br /&gt;
&lt;br /&gt;
[sr_teleport]&lt;br /&gt;
point1 = aes2_teleport_walk_exit1&lt;br /&gt;
look1 = aes2_teleport_look_exit1&lt;br /&gt;
prob1 = 10&lt;br /&gt;
point2 = aes2_teleport_walk_exit2&lt;br /&gt;
look2 = aes2_teleport_look_exit2&lt;br /&gt;
prob2 = 20&lt;br /&gt;
timeout = 0&amp;lt;/ini&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Файл: ''gamedata\scripts\sr_teleport.script''&lt;br /&gt;
&lt;br /&gt;
==Схема sr_sleep==&lt;br /&gt;
Появилась возможность задавать зоны сна.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''[sr_sleep]'''&amp;lt;br&amp;gt;&lt;br /&gt;
'''''cond = {+info -info =func !func ~number}''''' - условия, при выполнении которых сон будет возможен.&amp;lt;br&amp;gt;&lt;br /&gt;
'''''type = nightmare/normal/happy/all''''' - задает тип сна разрешенный в данной зоне (по умолчанию '''''all'''''). Влияет (группирует) только на не сценарные сны.&lt;br /&gt;
'''''dream_prob = &amp;lt;number&amp;gt;''''' - вероятность просмотра не сценарных сновидений в данной зоне (по умолчанию 80). В противном случае будет только черный экран.&lt;br /&gt;
&lt;br /&gt;
Необязательное поле '''''cond''''' задает условие(я), при котором в этой зоне можно спать. Сейчас производится индикация зон, где разрешен сон. В левом нижнем углу отображается маленькая иконка легких при входе в такую зону. Вероятно, позже будет изменена на другую.&amp;lt;br&amp;gt;&lt;br /&gt;
Сновидения теперь делятся на сценарные и обычные. Сценарные сновидения отыгрываются один раз при выполнении необходимых условий. Обычные сновидения проигрываются, если нет сценарных или ни одно условие выполнения сценарных не сработало. Можно задавать вероятность отыгрывания обычных сновидений в целом, а также задавать вероятность срабатывания каждого конкретного сновидения в отдельности. Обычным сновидениям можно задавать тип и потом ограничивать по нему сны воспроизводимые в управляемом файле.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В файле ''misc\dream.ltx'' задаются настройки снов.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Секция '''''videos'''''.&amp;lt;br&amp;gt;&lt;br /&gt;
Полями задаются пути к видео файлам со снами.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Секция '''''dreams'''''. Поля:&amp;lt;br&amp;gt;&lt;br /&gt;
'''''regular_probability = &amp;lt;number&amp;gt;''''' - вероятность проигрывания обычных сновидений в целом;&amp;lt;br&amp;gt;&lt;br /&gt;
'''''regular = &amp;lt;секции&amp;gt;''''' - список секций с настройками для обычных сновидений;&amp;lt;br&amp;gt;&lt;br /&gt;
'''''scene = &amp;lt;секции&amp;gt;''''' - список секций с настройками для сценарных сновидений.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Настройки обычных сновидений:&amp;lt;br&amp;gt;&lt;br /&gt;
'''''dream = &amp;lt;название&amp;gt;''''' - имя поля из секции '''''videos''''';&amp;lt;br&amp;gt;&lt;br /&gt;
'''''probability = &amp;lt;number&amp;gt;''''' - чем больше, тем больше вероятность проигрывания сна;&amp;lt;br&amp;gt;&lt;br /&gt;
'''''type = nightmare/normal/happy''''' - тип сна.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Настройки сценарных сновидений:&amp;lt;br&amp;gt;&lt;br /&gt;
'''''dream = &amp;lt;название&amp;gt;''''' - имя поля из секции '''''videos''''';&amp;lt;br&amp;gt;&lt;br /&gt;
'''''cond = {+info -info =func !func ~number} - условия срабатывания;&amp;lt;br&amp;gt;&lt;br /&gt;
'''''to_regular = &amp;lt;number&amp;gt;,&amp;lt;тип&amp;gt;''''' - необязательное поле. Дает возможность переводить сценарный сон после первого отыгрыша в разряд обычных. &amp;lt;'''''number'''''&amp;gt;, &amp;lt;'''''тип'''''&amp;gt; аналогичны '''''probability''''' и '''''type''''' из настроек обычных сновидений соответственно.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''''Примечание''''': до релиза данная схема дошла сильно порезанной, все параметры в управляющем файле были закомментированы, поэтому данная схема не работает, если быть точнее, то ничего не делает.&lt;br /&gt;
&lt;br /&gt;
Файл: ''gamedata\scripts\sr_sleep.script''&lt;br /&gt;
&lt;br /&gt;
==Схема sr_cutscene==&lt;br /&gt;
&lt;br /&gt;
Эта схема предназначена для проведения анимации камеры c некоторым эффектом ('''''pp_effector'''''). Последовательность действий, осуществляемых схемой, состоит из мгновенного перемещения игрока в начало пути '''''point''''' и ориентации его взгляда на начало пути '''''look''''', потери управления игроком и начала анимации камеры '''''cam_effector''''' по завершении которой игрок вновь получает управление.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''[sr_cutscene]'''&amp;lt;br&amp;gt;&lt;br /&gt;
'''''point = &amp;lt;имя_пути&amp;gt;''''' - путь в первую точку которого переносится игрок.&amp;lt;br&amp;gt;&lt;br /&gt;
'''''look = &amp;lt;имя_пути&amp;gt;''''' - путь в первую точку которого смотрит игрок.&amp;lt;br&amp;gt;&lt;br /&gt;
'''''pp_effector = &amp;lt;имя_постэффекта&amp;gt;''''' - файл, расположенный в папке ''gamedata\anims\'' и содержащий эффект (имя файла пишется без расширения).&amp;lt;br&amp;gt;&lt;br /&gt;
'''''cam_effector = &amp;lt;имя_анимации_камеры&amp;gt;''''' - файл, расположенный в папке ''gamedata\anims\camera_effects\'' и содержащий анимацию камеры (имя файла пишется без расширения).&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Поддерживается сигнал '''''cameff_end'''''.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''''Пример использования схемы''''':&amp;lt;ini&amp;gt;[logic]&lt;br /&gt;
active = sr_idle&lt;br /&gt;
&lt;br /&gt;
[sr_idle]&lt;br /&gt;
on_actor_inside = sr_cutscene&lt;br /&gt;
&lt;br /&gt;
[sr_cutscene]&lt;br /&gt;
point = agr_cutscene_walk&lt;br /&gt;
look = agr_cutscene_look&lt;br /&gt;
cam_effector = agroprom_demo&lt;br /&gt;
on_signal = cameff_end | nil&amp;lt;/ini&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Файл: ''gamedata\scripts\sr_cutscene.script''&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;font size = 5&amp;gt;[[Часть 4]]&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Категория:A-Life]][[Категория:Скрипты]]&lt;/div&gt;</summary>
		<author><name>81.162.64.91</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_2</id>
		<title>Настройка логики. Часть 2</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_2"/>
				<updated>2014-06-18T16:01:26Z</updated>
		
		<summary type="html">&lt;p&gt;81.162.64.91: /* Секция combat_ignore */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Шаблон:Настройка логики}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Секции.=&lt;br /&gt;
==Секция combat==&lt;br /&gt;
Показывает, что происходит, когда NPC срывается в бой.&amp;lt;br&amp;gt;&lt;br /&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 !func ~number}%+info -info =func%''''' -  эффекты, которые вызываются когда NPC уходит в бой. Вызываются при каждом апдейте.&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;
&amp;lt;ini&amp;gt;[logic]&lt;br /&gt;
active = walker&lt;br /&gt;
on_combat = combat&lt;br /&gt;
&lt;br /&gt;
[walker]&lt;br /&gt;
path_walk = ...&lt;br /&gt;
&lt;br /&gt;
[combat]&lt;br /&gt;
combat_type = {=fighting_actor =fighting_ge_X_meters} camper, &amp;lt;br&amp;gt;{=fighting_ge_Y_meters} monolith&amp;lt;/ini&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Пример такой функции: нам надо чтобы на расстоянии свыше 20 метров npc переходил бы в кемперский комбат.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;lua&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;/lua&amp;gt;&lt;br /&gt;
'''''Примечание''''': 400 – это 20&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;. Мы пишем квадрат нужного нам расстояния, для экономии системных ресурсов.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ещё один пример. Сталкер ходит под симуляцией, но у него бой не движковый, а всегда зомбированый:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;ini&amp;gt;[logic]&lt;br /&gt;
active = nil&lt;br /&gt;
on_combat = combat&lt;br /&gt;
&lt;br /&gt;
[combat]&lt;br /&gt;
combat_type = zombied&amp;lt;/ini&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Если в разных секциях для персонажа требуются разные типы боя или разные условия, то можно воспользоваться оверрайдом   '''''combat_type'''''.&amp;lt;br&amp;gt;&lt;br /&gt;
'''''Помните(!)''''': оверрайд всегда будет перекрывать настройку в секции '''''combat'''''. Т.е., если у вас логика на три секции и в двух из них нужен камперский комбат, а в третьей - монолитовский, то можно задать так:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;ini&amp;gt;[logic]&lt;br /&gt;
active = walker1&lt;br /&gt;
on_combat = combat&lt;br /&gt;
&lt;br /&gt;
[walker1]&lt;br /&gt;
...&lt;br /&gt;
[walker2]&lt;br /&gt;
...&lt;br /&gt;
[walker3]&lt;br /&gt;
...&lt;br /&gt;
combat_type = monolith&lt;br /&gt;
&lt;br /&gt;
[combat]&lt;br /&gt;
combat_type = camper&amp;lt;/ini&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В файле ''xr_effects.script'' есть функция отключающая секцию '''''combat''''' - '''''disable_combat_handler'''''&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Файл: ''gamedata\scripts\xr_combat.script''&lt;br /&gt;
&lt;br /&gt;
==Секция death==&lt;br /&gt;
Схема показывает, что происходит при смерти NPC.&amp;lt;br&amp;gt;&lt;br /&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 !func ~number} %+info -info =func%''''' - эффекты, которые вызываются при смерти NPC.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''''Пример использования секции''''':&amp;lt;ini&amp;gt;[logic]&lt;br /&gt;
...&lt;br /&gt;
on_death = death@mil_freedom_max_combat1&lt;br /&gt;
&lt;br /&gt;
[death@mil_freedom_max_combat1]&lt;br /&gt;
on_info = %=military_max_dead +sar2_death_47%&amp;lt;/ini&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Файл: ''gamedata\scripts\xr_death.script''&lt;br /&gt;
&lt;br /&gt;
==Cекция hit==&lt;br /&gt;
Схема показывает, что происходит при нанесении повреждения NPC.&amp;lt;br&amp;gt;&lt;br /&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 !func ~number} %+info -info =func%''''' - эффекты, которые вызываются в случае, если NPC нанесён хит.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''''on_hit''''' НЕ СРАБАТЫВАЕТ на звук выстрела, только на попадание по сталкеру! Это сделано, потому что выстрел в воздух в общем случае не должен восприниматься как агрессия (игрок отстреливает, скажем, собак, а на него срывается охрана).&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''''Пример использования секции''''':&amp;lt;ini&amp;gt;[logic]&lt;br /&gt;
...&lt;br /&gt;
on_hit = on_hit@agr_factory_hold_fake&lt;br /&gt;
&lt;br /&gt;
[on_hit@agr_factory_hold_fake]&lt;br /&gt;
on_info = {=hit_by_actor} %+agr_krot_skirmish_start%&amp;lt;/ini&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Файл: ''gamedata\scripts\xr_hit.script''&lt;br /&gt;
&lt;br /&gt;
==Секция actor_dialogs==&lt;br /&gt;
Показывает, какие диалоги будут доступны или недоступны игроку при разговоре с этим NPC. Пишется практически в любой схеме.&amp;lt;br&amp;gt;&lt;br /&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;название_диалога&amp;gt;''''' - доступные диалоги, перечислять через запятую.&amp;lt;br&amp;gt;&lt;br /&gt;
'''''disable = &amp;lt;название_диалога&amp;gt;''''' - запрещенные диалоги, тоже через запятую.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''''Пример использования секции''''':&amp;lt;ini&amp;gt;[logic]&lt;br /&gt;
...&lt;br /&gt;
actor_dialogs = actor_dialogs&lt;br /&gt;
&lt;br /&gt;
[actor_dialbr&amp;gt;&lt;br /&gt;
:*'''''story_id''''' – числовое значениеogs]&lt;br /&gt;
id = yantar_general_ucheniy_talk_start,yantar_general_ucheniy_talk_end&amp;lt;/ini&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Файл: ''gamedata\scripts\xr_meet.script''&lt;br /&gt;
&lt;br /&gt;
==Секция use==&lt;br /&gt;
Схема показывает, что произойдет, если игрок попытается взаимодействовать с NPC.&lt;br /&gt;
&lt;br /&gt;
'''''on_use = use'''''&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''[use]'''&amp;lt;br&amp;gt;&lt;br /&gt;
'''''on_info = {+info -info =func !func ~number} %+info -info =func%''''' - эффекты, которые вызываются в случае, если игрок попытается взаимодействовать с NPC.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Пример использования секции:&amp;lt;ini&amp;gt;[logic]&lt;br /&gt;
...&lt;br /&gt;
on_use = use@mil_dolg_leader&lt;br /&gt;
 &lt;br /&gt;
[use@mil_dolg_leader]&lt;br /&gt;
on_info = {=gulag_empty(mil_lager)} %+mil_dolg_leader_reward%&amp;lt;/ini&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Файл: ''gamedata\scripts\xr_use.script''&lt;br /&gt;
&lt;br /&gt;
==Секция combat_ignore==&lt;br /&gt;
Если для NPC установлена данная секция то он, не переходит в боевой режим.&amp;lt;br&amp;gt;&lt;br /&gt;
Для секции нет дополнительных полей.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''''combat_ignore = combat_ignore'''''&lt;br /&gt;
&lt;br /&gt;
'''[combat_ignore]'''&lt;br /&gt;
&lt;br /&gt;
В любой другой схеме нужно задать оверрайд, который позволит игнорировать бой только по выполнению условия:&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 ~number}''''' – условия для игнорирования боя.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Если для оверрайда задать значение '''''always''''', то в данной схеме NPC будет игнорировать бой всегда, пока не перейдет в схему, где бой не игнорируется.&amp;lt;br&amp;gt;&lt;br /&gt;
Таким образом, можно задавать игнорирование боя только будучи под определённой схемой, в отличии от секции, которая запрещает бой в любом случае.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В файле ''xr_condition.script'' есть функции, используемые для работы с кондлистом оверрайда:&amp;lt;br&amp;gt;&lt;br /&gt;
:*'''''fighting_dist_ge_20''''' - текущий враг на расстоянии больше или равном 20 м;&amp;lt;br&amp;gt;&lt;br /&gt;
:*'''''fighting_dist_ge''''' – универсальная функция, проверка расстояния для игрока;&amp;lt;br&amp;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;
Пример использования секции:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;ini&amp;gt;[logic]&lt;br /&gt;
...&lt;br /&gt;
combat_ignore = combat_ignore&lt;br /&gt;
&lt;br /&gt;
[combat_ignore]&amp;lt;/ini&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Файл: ''gamedata\scripts\xr_combat_ignore.script''&lt;br /&gt;
&lt;br /&gt;
==Секция dont_spawn_character_supplies==&lt;br /&gt;
Если прописать эту секцию в кастом дату персонажу, то у него внутри не заспавниться стандартный набор барахла, прописанный в его профиле.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''[dont_spawn_character_supplies]'''&lt;br /&gt;
&lt;br /&gt;
==Секция threshold==&lt;br /&gt;
Есть возможность изменять у сталкеров параметры, по которым они атакуют монстров.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''''threshold = threshold'''''&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''[threshold]'''&amp;lt;br&amp;gt;&lt;br /&gt;
'''''max_ignore_distance = &amp;lt;number&amp;gt;''''' - (в данный момент дефолт 15 метров). Сталкер будет всегда атаковать монстров, которые находятся внутри данного радиуса.&amp;lt;br&amp;gt;&lt;br /&gt;
'''''ignore_monster = &amp;lt;number&amp;gt;''''' - (в данный момент дефолт 0). Параметр от 0 до 1. Если функция оценки монстра ниже, чем этот параметр, и монстр находится за пределами вышеуказанного радиуса - он будет атакован. В данный момент все настроено так, что сталкеры вообще не атакуют монстров находящихся дальше чем 15 метров от них.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''''Примечание''''': второй параметр следует менять '''ОЧЕНЬ''' осторожно. Помните, в него нужно вписывать значение ''от 0 до 1''!&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''''Пример использования секции''''':&amp;lt;ini&amp;gt;[logic]&lt;br /&gt;
...&lt;br /&gt;
threshold = threshold@mil_fbarier&lt;br /&gt;
&lt;br /&gt;
[threshold@mil_fbarier]&lt;br /&gt;
max_ignore_distance = 150&lt;br /&gt;
ignore_monster = 0.1&amp;lt;/ini&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Файл: ''gamedata\scripts\stalker_generic.script''&lt;br /&gt;
&lt;br /&gt;
==Секция Danger==&lt;br /&gt;
Секцию необходимо указывать '''только для какой-то конкретной схемы'''!&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''''danger = danger_condition'''''&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''[danger_condition]'''&amp;lt;br&amp;gt;&lt;br /&gt;
'''''ignore_distance = &amp;lt;number&amp;gt;''''' - расстояние свыше которого игнорируется &amp;quot;живая&amp;quot; опасность (150 метров по умолчанию).&amp;lt;br&amp;gt;&lt;br /&gt;
'''''ignore_distance_grenade = &amp;lt;number&amp;gt;''''' - расстояние свыше которого игнорируется граната (15 метров по умолчанию).&amp;lt;br&amp;gt;&lt;br /&gt;
'''''ignore_distance_corpse = &amp;lt;number&amp;gt;''''' - расстояние свыше которого игнорируется труп (10 метров по умолчанию).&amp;lt;br&amp;gt;&lt;br /&gt;
'''''ignore_distance_hit = &amp;lt;number&amp;gt;''''' -  расстояние свыше которого игнорируется хит (150 метров по умолчанию).&amp;lt;br&amp;gt;&lt;br /&gt;
'''''ignore_distance_sound = &amp;lt;number&amp;gt;''''' -  расстояние свыше которого игнорируется звук (50 метров по умолчанию).&amp;lt;br&amp;gt;&lt;br /&gt;
'''''danger_inertion_time_grenade = &amp;lt;number&amp;gt;''''' - время, спустя которое, NPC забудет о гранате (20000 миллисекунд по умолчанию).&amp;lt;br&amp;gt;&lt;br /&gt;
'''''danger_inertion_time_corpse = &amp;lt;number&amp;gt;''''' - время, спустя которое, NPC забудет о трупе (10000 миллисекунд по умолчанию).&amp;lt;br&amp;gt;&lt;br /&gt;
'''''danger_inertion_time_hit = &amp;lt;number&amp;gt;''''' - время, спустя которое, NPC забудет о хите (60000 миллисекунд по умолчанию).&amp;lt;br&amp;gt;&lt;br /&gt;
'''''danger_inertion_time_sound = &amp;lt;number&amp;gt;''''' - время, спустя которое, NPC забудет о звуке (15000 миллисекунд по умолчанию).&amp;lt;br&amp;gt;&lt;br /&gt;
'''''danger_inertion_time_ricochet = &amp;lt;number&amp;gt;''''' - время, спустя которое, NPC забудет о рикошете (30000 миллисекунд по умолчанию).&amp;lt;br&amp;gt;&lt;br /&gt;
'''''danger_expiration_time = &amp;lt;number&amp;gt;''''' - время, через которое денжер перестанет быть акутальным. (5000 миллисекунд по умолчанию)&lt;br /&gt;
&lt;br /&gt;
'''''Примечание''''': NPC в принципе игнорируют авто с секцией '''''m_car'''''.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''''Примечание''''': если надо, чтобы в разных случаях сталкер игнорировал разные типы данжеров, создается несколько секций данжера '''''danger_condition@1''''', '''''danger_condition@2''''' и так далее.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''''Пример использования секции''''':&amp;lt;ini&amp;gt;[camper@dar_military_scout_camper3]&lt;br /&gt;
...&lt;br /&gt;
danger = danger_condition@scout&lt;br /&gt;
&lt;br /&gt;
[danger_condition@scout]&lt;br /&gt;
ignore_distance       = 10&lt;br /&gt;
ignore_distance_grenade = 10&lt;br /&gt;
ignore_distance_corpse  = 0&lt;br /&gt;
ignore_distance_danger_hit     = 20&lt;br /&gt;
ignore_distance_sound   = 0 &lt;br /&gt;
danger_inertion_time_hit = 1&amp;lt;/ini&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Файл: ''gamedata_1006\scripts\xr_danger.script''&lt;br /&gt;
&lt;br /&gt;
==Секция game_info==&lt;br /&gt;
&amp;quot;Обучает&amp;quot; NPC рассказывать у костра истории и легенды. Секция прописывается в '''''custom_data''''' NPC.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''[game_info]'''&amp;lt;br&amp;gt;&lt;br /&gt;
'''''stories = &amp;quot;&amp;lt;название_звуковой_темы&amp;gt;&amp;quot;''''' - имена звуковых тем из файла ''sound_theme.script''.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Несколько тем перечислять через запятую.&amp;lt;br&amp;gt;&lt;br /&gt;
Существуют следующие истории и легенды:&amp;lt;br&amp;gt;&lt;br /&gt;
:*'''''story_01''''' - Граница зоны и граната за 1 действие;&amp;lt;br&amp;gt;&lt;br /&gt;
:*'''''story_02''''' - Про трамплин и про камешки;&amp;lt;br&amp;gt;&lt;br /&gt;
:*'''''story_03''''' - Про то, как группа Вильнова вернулась;&amp;lt;br&amp;gt;&lt;br /&gt;
:*'''''story_04''''' - Про то, как Костя Федорин наткнулся на артефакт и пропал на радаре;&amp;lt;br&amp;gt;&lt;br /&gt;
:*'''''story_05''''' - Про то, как духманам с контролером сражаться;br&amp;gt;&lt;br /&gt;
:*'''''story_06''''' - Про дверцу, водку и избушку;br&amp;gt;&lt;br /&gt;
:*'''''legend_01''''' - Про эксперимент в Зоне, который производят инопланетяне;&amp;lt;br&amp;gt;&lt;br /&gt;
:*'''''legend_02''''' - Об особо засекреченных лабораториях в зоне;&amp;lt;br&amp;gt;&lt;br /&gt;
:*'''''legend_03''''' - Легенда о проводнике;&amp;lt;br&amp;gt;&lt;br /&gt;
:*'''''legend_04''''' - Легенда о темном Сталкере;&amp;lt;br&amp;gt;&lt;br /&gt;
:*'''''legend_05''''' - Легенда о том что глубоко в Зоне спать нельзя.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''''Пример использования секции''''':&amp;lt;ini&amp;gt;[game_info]&lt;br /&gt;
stories = &amp;quot;story_04, legend_03, legend_04&amp;quot;&amp;lt;/ini&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Секция dont_spawn_loot==&lt;br /&gt;
Всякого рода сюжетные персонажи, которые должны быть пустыми после смерти (например раненные или пленные), оказываются не пустыми. Чтобы это исправить необходимо в '''''custom_data''''' персонажа прописать следующую секцию:&amp;lt;br&amp;gt;&lt;br /&gt;
'''[dont_spawn_loot]'''&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Файл: ''gamedata\scripts\death_manager.script''&lt;br /&gt;
&lt;br /&gt;
=Оверрайды=&lt;br /&gt;
Настройки, которые меняют поведение общих схем, в зависимости от активной в данный момент обычной схемы (все они необязательны).&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''''combat_ignore_cond = {+info –info =func !func ~number}''''' – условия для игнорирования боя.&amp;lt;br&amp;gt;&lt;br /&gt;
'''''combat_ignore_keep_when_attacked = true/false''''' - NPC продолжает игнорировать бой, даже если в него стреляют – ''только в случае стрельбы игрока''!!!&amp;lt;br&amp;gt;&lt;br /&gt;
'''''combat_type = {+info –info =func !func ~number} &amp;lt;параметр&amp;gt;''''' - тип боя которым будет пользоваться NPC из данной схемы. Возможны следующие значения:&amp;lt;br&amp;gt;&lt;br /&gt;
:*'''''camper'''''&amp;lt;br&amp;gt;&lt;br /&gt;
:*'''''monolith'''''&amp;lt;br&amp;gt;&lt;br /&gt;
:*'''''zombied'''''&amp;lt;br&amp;gt;&lt;br /&gt;
:*'''''nil'''''&amp;lt;br&amp;gt;&lt;br /&gt;
'''''on_combat = {+info –info =func !func ~number} %+info -info =func%''''' - определяет поведение NPC при его уходе в бой.&amp;lt;br&amp;gt;&lt;br /&gt;
'''''companion_enabled = true/false''''' - cвободноходящие сталкеры могут наниматься как компаньоны. Оверрайд существует, но не используется из-за недоработанной схемы ''xr_attendant.script''.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Файл: ''gamedata\scripts\xr_combat.script''&lt;br /&gt;
&lt;br /&gt;
==Отметки на минимапе==&lt;br /&gt;
Появилась возможность не показывать сталкеров на минимапе и на карте (прятать жёлтые и красные точки). Для этого в секции логики или в текущей схеме указываем параметр '''''show_spot'''''. Возможно наличие условия.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''[walker]'''&amp;lt;br&amp;gt;&lt;br /&gt;
'''''show_spot = {+info -info =func !func ~number} true/false''''' - показывать или нет на карте. По умолчанию '''''true'''''.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Файл: ''gamedata\scripts\stalker_generic.script''&lt;br /&gt;
&lt;br /&gt;
=Схемы для монстров=&lt;br /&gt;
&lt;br /&gt;
==Схема mob_walker==&lt;br /&gt;
Работает аналогично схеме обычного '''''walker'''''. Но есть некоторые отличия:&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''[mob_walker]'''&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;
'''''no_reset = true/false''''' - не сбрасывать '''''action''''' предыдущей схемы (если нужно сохранить, например, звук). По умолчанию '''''false'''''.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''''Примечание''''': У кровосососов можно управлять невидимостью, для этого необходимо указать параметр '''''state''''':&lt;br /&gt;
:'''''state = invis/vis''''' - включить/выключить невидимость.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''''Пример использования схемы''''':&amp;lt;ini&amp;gt;[mob_walker]&lt;br /&gt;
path_walk = x18_snork_walk_1&lt;br /&gt;
path_look = x18_snork_look&amp;lt;/ini&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Файл: ''gamedata\scripts\mob_walker.script''&lt;br /&gt;
&lt;br /&gt;
==Схема mob_eluder==&lt;br /&gt;
Монстр перемещается по точкам патрульного пути (не учитывая связи между точками), держась на расстоянии от игрока, при этом придерживаясь своего пути, выходя из под схемы при слишком близком приближении к игроку, и возвращаясь обратно, когда расстояние увеличиться.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''[mob_eluder]'''&amp;lt;br&amp;gt;&lt;br /&gt;
'''''path  = &amp;lt;имя_пути&amp;gt;''''' - работает как обычно path_walk. Набор точек патрульного пути.&amp;lt;br&amp;gt;&lt;br /&gt;
'''''time_capture = &amp;lt;number&amp;gt;''''' - время, которое монстр находится под этой схемой. По умолчанию – 10 секунд.&amp;lt;br&amp;gt;&lt;br /&gt;
'''''time_release = &amp;lt;number&amp;gt;''''' - время, которое монстр находится под универсальной схемой. По умолчанию – 10 секунд.&amp;lt;br&amp;gt;&lt;br /&gt;
'''''min_dist = &amp;lt;number&amp;gt;''''' - если расстояние до врага меньше этого, то он переходит под универсальную схему. По умолчанию – 5 метров.&amp;lt;br&amp;gt;&lt;br /&gt;
'''''max_dist = &amp;lt;number&amp;gt;''''' - если расстояние до врага больше этого, то он переходит под '''''eluder'''''. По умолчанию – 10 метров.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''''Примечание''''': '''работает нестабильно'''.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''''Пример использования схемы''''':&amp;lt;ini&amp;gt;[mob_eluder]&lt;br /&gt;
path = dar_way_checker&amp;lt;/ini&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Файл: ''gamedata\scripts\mob_eluder.script''&lt;br /&gt;
&lt;br /&gt;
==Схема mob_remark==&lt;br /&gt;
Ремарковая схема, только не для сталкеров, а для монстров.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''[mob_remark]'''&amp;lt;br&amp;gt;&lt;br /&gt;
'''''state = &amp;lt;параметр&amp;gt;''''' - специфическое состояние данного конкретного монстра (для кровососов - невидимость).&amp;lt;br&amp;gt;&lt;br /&gt;
'''''dialog_cond = {+info, =func, -info, !func ~number}''''' - условия для открытия окна диалога.&amp;lt;br&amp;gt;&lt;br /&gt;
'''''anim = &amp;lt;название_анимации&amp;gt;''''' - анимации монстра, перечисляются через запятую.&amp;lt;br&amp;gt;&lt;br /&gt;
'''''anim.head = &amp;lt;название_анимации&amp;gt;''''' - анимации головы монстра, перечисляются через запятую.&amp;lt;br&amp;gt;&lt;br /&gt;
'''''tip = &amp;lt;параметр&amp;gt;''''' - какой значок под светится, при наведении на него курсора.&amp;lt;br&amp;gt;&lt;br /&gt;
'''''snd = &amp;lt;название_звуковой_темы&amp;gt;''''' - какой звук издает.&amp;lt;br&amp;gt;&lt;br /&gt;
'''''time = &amp;lt;number&amp;gt;''''' - время проигрывания анимаций, используется только для отладки.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''''Пример использования схемы''''':&amp;lt;br&amp;gt;&amp;lt;ini&amp;gt;[mob_remark@hold]&lt;br /&gt;
anim = stand_idle_0&lt;br /&gt;
time = 50000&amp;lt;/ini&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Файл ''gamedata\scripts\mob_remark.script''&lt;br /&gt;
&lt;br /&gt;
==Схема mob_jump==&lt;br /&gt;
Схема '''''mob_jump''''' служит для задания прыжков монстров без каких либо проверок и ограничений (расстояние, углы и т.д.). Указывается позиция с помощью патрульного пути, смещение относительно этой позиции и физический фактор прыжка.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''[mob_jump]'''&amp;lt;br&amp;gt;&lt;br /&gt;
'''''path_jump = &amp;lt;имя_пути&amp;gt;''''' - путь, с помощью которого мы задаем 1 целевую точку прыжка (с нулевым индексом).&lt;br /&gt;
:Реальная точка учитывает позицию '''''path_jump[0]''''' + смещение, заданное с помощью '''''offset'''''.&amp;lt;br&amp;gt;&lt;br /&gt;
'''''ph_jump_factor = &amp;lt;number&amp;gt;''''' - влияет на время прыжка. Визуально с помощью него задается кривизна траектории полёта.&lt;br /&gt;
:Чем он больше, тем прыжок более острый, быстрый (меньше дуга). По умолчанию 1.8.&amp;lt;br&amp;gt;&lt;br /&gt;
'''''offset = &amp;lt;vector&amp;gt;''''' - смещение по осям '''''x''''', '''''y''''', '''''z''''' соответственно, с помощью которого задается реальная точка в пространстве (может не находится на аи-ноде). &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
С помощью данной схемы можно делать: перепрыгивание со здания на здание, выпрыгивание из окна, перепрыгивание высоких ограждений и др.&lt;br /&gt;
&lt;br /&gt;
'''''Примечание''''': фактически '''''mob_jump''''' - это не состояние, а разовое действие. При переходе в него монстр разворачивается в сторону прыжка и прыгает, поднимая сигнал '''''jumped'''''. Т.е. '''''on_signal = jumped | имя_схемы_или_nil''''' – является обязательным параметром в схеме, чтобы знать куда переходить дальше.&amp;lt;br&amp;gt;&lt;br /&gt;
При выборе позиции используется первая точка патрульного пути (0-вой индекс).&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''''Пример использования схемы''''':&amp;lt;br&amp;gt;&amp;lt;ini&amp;gt;[mob_jump]&lt;br /&gt;
path_jump = aes_snork_jump1&lt;br /&gt;
ph_jump_factor = 1.8&lt;br /&gt;
offset = 0,0,0&lt;br /&gt;
on_signal = jumped | mob_walker2&amp;lt;/ini&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Файл: ''gamedata\scripts\mob_jump.script''&lt;br /&gt;
&lt;br /&gt;
==Схема mob_camp==&lt;br /&gt;
&lt;br /&gt;
Свойства схемы:&lt;br /&gt;
:*Сидит на позиции, смотрит в точку;&lt;br /&gt;
:*Можно задать несколько позиций и время смены позиции;&lt;br /&gt;
:*Перемещается между позициями бегом;&lt;br /&gt;
:*При виде врага переходит под универсальную схему (комбат/паника и т.д);&lt;br /&gt;
:*Задаются минимальная и максимальная дистанции от врага до текущей camp-позиции;&lt;br /&gt;
:*Если враг уходит далеко - монстр возвращается на позицию;&lt;br /&gt;
&lt;br /&gt;
'''[mob_camp]'''&amp;lt;br&amp;gt;&lt;br /&gt;
'''''path_home = &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;
'''''time_change_point = &amp;lt;number&amp;gt;''''' - время изменения текущей camp-точки. По умолчанию - 10000 миллисекунд.&amp;lt;br&amp;gt;&lt;br /&gt;
'''''home_min_radius  = &amp;lt;number&amp;gt;''''' - минимальный радиус от врага до camp-точки. По умолчанию - 30 метров.&amp;lt;br&amp;gt;&lt;br /&gt;
'''''home_max_radius = &amp;lt;number&amp;gt;''''' - максимальный радиус  от врага до camp-точки. По умолчанию - 40 метров.&amp;lt;br&amp;gt;&lt;br /&gt;
'''''skip_transfer_enemy = true/false''''' – управляет передачей врагов от друзей. Если установлено в '''''true''''' и видит дружественного монстра, то его враги также становятся врагами.(для этого нужно всех монстров в разные '''''group''''' разнести).&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Минимальный и максимальный радиус необходимы для игнорирования врага, если он убежал далеко и для возврата на текущую позицию. Учитывается дистанция от врага до текущей позиции. Если дистанция меньше '''''home_min_radius''''' - атакуем врага, пока враг не исчезнет или дистанция не будет больше '''''home_max_radius'''''.&amp;lt;br&amp;gt;&lt;br /&gt;
Две дистанции необходимы для того, чтобы избежать ситуации, когда игрок стоит на границе радиуса действия и входит/выходит в зону и монстр бегает то в свою camp-позицию, то на врага.&amp;lt;br&amp;gt;&lt;br /&gt;
Выбор текущей позиции производится случайным образом.&amp;lt;br&amp;gt;&lt;br /&gt;
Индексы точек пути для '''''path_home''''' и '''''path_look''''' должны совпадать (т.е. монстр сидит во второй точке '''''path_home''''' и смотрит во вторую точку '''''path_look''''').&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Единственным необходимым параметром является '''''path_look'''''.&amp;lt;br&amp;gt;&lt;br /&gt;
Если не установлен '''''path_home''''', в качестве камперской точки учитывается позиция и нода объекта при спауне.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Для того чтобы монстр смотрел в разные точки на кампер-позиции, '''''path_look''''' может состоять из нескольких точек.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''''Примечание''''': обязательные требованием является:&amp;lt;br&amp;gt;&lt;br /&gt;
:*'''''home_min_radius &amp;lt; home_max_radius''''';&amp;lt;br&amp;gt;&lt;br /&gt;
:*Количество точек путей '''''path_look''''' и '''''path_home должно быть равным.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
P.S. '''''mob_camp''''' можно использовать как альтернативу к монстрам под рестрикторами.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''''Пример использования схемы''''':&amp;lt;ini&amp;gt;[mob_camp]&lt;br /&gt;
path_home = aes2_snork_walk3&lt;br /&gt;
path_look = aes2_snork_look3&lt;br /&gt;
home_min_radius  = 10&lt;br /&gt;
home_max_radius = 15&amp;lt;/ini&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Файл: ''gamedata\scripts\mob_camp.script''&lt;br /&gt;
&lt;br /&gt;
==Схема mob_home==&lt;br /&gt;
Схема является ещё одним решением по замене рестрикторов. Рекомендую все следующие гулаги монстров делать на '''''mob_home''''', а старые гулаги постепенно переводить на '''''mob_home'''''. У кого рестрикторы работают хорошо и красиво, их можно не трогать. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''[mob_home]'''&amp;lt;br&amp;gt;&lt;br /&gt;
'''''path_home = &amp;lt;имя_пути&amp;gt;''''' - точка, вокруг которой будут держаться монстр.&amp;lt;br&amp;gt;&lt;br /&gt;
'''''home_min_radius = &amp;lt;number&amp;gt;''''' - минимальный радиус от врага до '''''path_home''''' точки. По умолчанию - 20 метров.&amp;lt;br&amp;gt;&lt;br /&gt;
'''''home_max_radius = &amp;lt;number&amp;gt;''''' - максимальный радиус от врага до '''''path_home''''' точки. По умолчанию - 40 метров.&amp;lt;br&amp;gt;&lt;br /&gt;
'''''aggressive_home''''' - в назначенную точку '''''path_home''''' монстры бегут а не идут.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Описание:&amp;lt;br&amp;gt;&lt;br /&gt;
Монстры держатся вокруг точек пути path_home. В атаке бросаются на врага, если враг внутри '''''home_min''''' радиуса, иначе прячутся в укрытия. Отсюда следует, что '''''home_min_radius''''' желательно делать таким, чтобы внутри было достаточно каверов. В айдле тоже обычно расходятся по каверам. '''''home_max_radius''''' сделан по принципу большого рестриктера в схеме '''''mob_camp'''''.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''''Примечание''''': добавлена возможность задания минимального и максимального радиусов для схемы '''''mob_home''''' в флагах первой точки пути ('''''path_home'''''). Для этого введены флаги '''''minr''''' и '''''maxr'''''. В случае, если радиусы заданы и в секции и во флагах, то значение радиуса берется из '''''секции'''''. Если не задано ни там, ни там, то берутся дефолтные значения.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''''Пример использования схемы''''':&amp;lt;ini&amp;gt;[mob_home@gar_boars_nest]&lt;br /&gt;
path_home = home&lt;br /&gt;
home_min_radius = 25&lt;br /&gt;
home_max_radius = 50&lt;br /&gt;
aggressive_home&amp;lt;/ini&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Файл: ''gamedata\scripts\mob_home.script''&lt;br /&gt;
&lt;br /&gt;
==Схема mob_fake_death==&lt;br /&gt;
&lt;br /&gt;
Появилась схема '''''mob_fake_death''''' для зомби. Необходимо для сценок, когда игрок идёт, а вокруг него начинают подниматься зомби.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''[mob_fake_death]'''&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
При входе в схему зомби падает, при выходе из схемы встает.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''''Пример использования схемы''''':&amp;lt;ini&amp;gt;[mob_fake_death]&lt;br /&gt;
on_actor_dist_le = 5 | nil&amp;lt;/ini&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Файл: ''gamedata\scripts\mob_fake_death.script''&lt;br /&gt;
&lt;br /&gt;
=Секции для монстров=&lt;br /&gt;
&lt;br /&gt;
==Секция mob_combat==&lt;br /&gt;
Секция работает аналогично схеме '''''combat''''' для NPC.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''''on_combat = mob_combat'''''&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''[mob_combat]'''&amp;lt;br&amp;gt;&lt;br /&gt;
'''''on_info = {+info -info =func !func ~number}%+info -info =func%''''' - эффекты, которые вызываются когда монстр уходит в бой. Вызываются при каждом апдейте.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''''Пример использования секции''''':&amp;lt;ini&amp;gt;[logic@val_sos_bs]&lt;br /&gt;
...&lt;br /&gt;
on_combat = mob_combat&lt;br /&gt;
&lt;br /&gt;
[mob_combat]&lt;br /&gt;
on_info = nil %=disable_combat_handler%&amp;lt;/ini&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Файл: ''gamedata\scripts\mob_combat.script''&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Секция mob_death==&lt;br /&gt;
Секция работает аналогично схеме '''''death''''' для NPC.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''''on_death = mob_death'''''&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''[mob_death]'''&amp;lt;br&amp;gt;&lt;br /&gt;
'''''on_info = {+info -info =func !func ~number} %+info -info =func%''''' - эффекты, которые вызываются при смерти монстра.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''''Пример использования секции''''':&amp;lt;ini&amp;gt;[logic@gar_boars_nest_rush]&lt;br /&gt;
...&lt;br /&gt;
on_death = mob_death@gar_boars_rush&lt;br /&gt;
&lt;br /&gt;
[mob_death@gar_boars_rush]&lt;br /&gt;
on_info = {=killed_by_actor} %=inc_counter(gar_boars_counter)%&amp;lt;/ini&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Файл: ''gamedata\scripts\mob_death.script''&lt;br /&gt;
&lt;br /&gt;
=Оверрайды для монстров=&lt;br /&gt;
'''''actor_friendly = true/false''''' - если '''''true''''', то монстр не атакует актера, до первой атаки на него.&amp;lt;br&amp;gt;&lt;br /&gt;
'''''npc_friendly = true/false''''' - если '''''true''''', то монстр не атакует сталкеров и монстров, до первой атаки на него.&amp;lt;br&amp;gt;&lt;br /&gt;
'''''friendly = true/false''''' - если '''''true''''', то монстр не атакует никого до первой атаки на него.&amp;lt;br&amp;gt;&lt;br /&gt;
'''''braindead = true/false''''' - если '''''true''''', то монстр игнорирует любые атаки.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Общая секция spawner=&lt;br /&gt;
Эта секция, которая присутствует как у NPC, так и у монстров, спавнит их по определенному условию (выводит в онлайн). Для того, чтобы они появились в данной точке, им надо поставить в настройках в ''Level editor'' флажок '''''no_move_in_offline''''' и отключен '''''can_switch_offline'''''. Спавнер прописывается в '''''custom_data''''' объекта перед секцией '''''logic'''''.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''[spawner]'''&amp;lt;br&amp;gt;&lt;br /&gt;
'''''cond = {+info -info =func !func ~number}''''' - условия для спавна.&amp;lt;br&amp;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;
&lt;br /&gt;
'''''Пример использования секции''''':&amp;lt;ini&amp;gt;[spawner]&lt;br /&gt;
cond = {+esc_boar_dogs_restrictor}&amp;lt;/ini&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Файл: ''gamedata\scripts\xr_spawner.script''&lt;br /&gt;
&lt;br /&gt;
==Спавн монстров дневных и ночных==&lt;br /&gt;
'''[spawner]'''&amp;lt;br&amp;gt;&lt;br /&gt;
'''''cond = {=is_day}''''' – спавнить монстра только днем (если надо ночью, то пишем {!is_day})&amp;lt;br&amp;gt;&lt;br /&gt;
'''''check_distance = true''''' – проверка на наличие персонажа рядом.&amp;lt;br&amp;gt;&lt;br /&gt;
'''''min_distance = 100''''' – если игрок ближе указанной дистанции, то монстр не заспавниться (по дефолту 150 метров, но на самом деле это много).&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;font size = 5&amp;gt;[[Часть 3]]&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Категория:A-Life]][[Категория:Скрипты]]&lt;/div&gt;</summary>
		<author><name>81.162.64.91</name></author>	</entry>

	</feed>