<?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=Losiara</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=Losiara"/>
		<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/Losiara"/>
		<updated>2026-06-13T23:38:23Z</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>2017-01-06T09:11:03Z</updated>
		
		<summary type="html">&lt;p&gt;Losiara: /* Пример достаточно сложной логики */&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;
:*'''''on_actor_inside = &amp;lt;название_схемы&amp;gt;''''' - зона проверяет, находится ли игрок внутри нее (используется со '''''space_restrictor''''').&amp;lt;br&amp;gt;&lt;br /&gt;
:*'''''on_actor_outside = &amp;lt;название_схемы&amp;gt;''''' - зона проверяет, находится ли игрок за ее пределами (используется со '''''space_restrictor''''').&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;
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&lt;br /&gt;
on_info = {+trup1 +trup2 +trup3} walker2&lt;br /&gt;
&lt;br /&gt;
[walker2]&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>Losiara</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_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>2017-01-06T09:09:32Z</updated>
		
		<summary type="html">&lt;p&gt;Losiara: /* Пример достаточно сложной логики */&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;
:*'''''on_actor_inside = &amp;lt;название_схемы&amp;gt;''''' - зона проверяет, находится ли игрок внутри нее (используется со '''''space_restrictor''''').&amp;lt;br&amp;gt;&lt;br /&gt;
:*'''''on_actor_outside = &amp;lt;название_схемы&amp;gt;''''' - зона проверяет, находится ли игрок за ее пределами (используется со '''''space_restrictor''''').&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;
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]&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>Losiara</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_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>2017-01-06T09:06:09Z</updated>
		
		<summary type="html">&lt;p&gt;Losiara: /* Пример достаточно сложной логики */&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;
:*'''''on_actor_inside = &amp;lt;название_схемы&amp;gt;''''' - зона проверяет, находится ли игрок внутри нее (используется со '''''space_restrictor''''').&amp;lt;br&amp;gt;&lt;br /&gt;
:*'''''on_actor_outside = &amp;lt;название_схемы&amp;gt;''''' - зона проверяет, находится ли игрок за ее пределами (используется со '''''space_restrictor''''').&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;
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>Losiara</name></author>	</entry>

	<entry>
		<id>http://stalkerin.gameru.net/wiki/index.php?title=SoC._%D0%A1%D0%BE%D0%B7%D0%B4%D0%B0%D0%BD%D0%B8%D0%B5_%D0%BA%D0%B2%D0%B5%D1%81%D1%82%D0%BE%D0%B2</id>
		<title>SoC. Создание квестов</title>
		<link rel="alternate" type="text/html" href="http://stalkerin.gameru.net/wiki/index.php?title=SoC._%D0%A1%D0%BE%D0%B7%D0%B4%D0%B0%D0%BD%D0%B8%D0%B5_%D0%BA%D0%B2%D0%B5%D1%81%D1%82%D0%BE%D0%B2"/>
				<updated>2011-09-27T10:22:54Z</updated>
		
		<summary type="html">&lt;p&gt;Losiara: /* Создание нового квеста */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Создание квестов и диалогов==&lt;br /&gt;
===Создание базового диалога===&lt;br /&gt;
&lt;br /&gt;
Итак, приступим к созданию диалога, в котором нам будет выдаваться новый квест.&lt;br /&gt;
Участвующие лица: Сидорович (С) и Меченый (М)&lt;br /&gt;
&lt;br /&gt;
'''М:''' Здравствуй, Сидорыч! Есть работенка?&lt;br /&gt;
&lt;br /&gt;
'''С:''' О, неужели заглянул к нам на огонек, Меченый? Ладно... ближе к телу... эээ, к делу. У меня к тебе следующая просьба: сбегай к Волку, у него что-то намечалось. &lt;br /&gt;
&lt;br /&gt;
'''М:''' Без проблем! Уже бегу.&lt;br /&gt;
&lt;br /&gt;
Будем считать, определились с фразами базового диалога. Теперь необходимо добавить его в соответствующем виде, чтобы игре он был «понятен».&lt;br /&gt;
&lt;br /&gt;
Создание «скелета» диалога.&lt;br /&gt;
&lt;br /&gt;
Для того, чтобы добавить наш диалог, необходимо открыть для редактирования файл gamedata\config\gameplay\dialogs_escape.xml&lt;br /&gt;
&lt;br /&gt;
Для тех, кто знаком с языком XML структура данного файла будет ясна с первого взгляда. Но, поподробнее об этом. &lt;br /&gt;
&lt;br /&gt;
Для того, чтобы добавить в игру диалог предусмотрены так называемые тэги. В данном случае, тэгами являются такие конструкции:&lt;br /&gt;
&lt;br /&gt;
'''1.''' &amp;lt;tt&amp;gt;&amp;lt;game_dialogs&amp;gt;&amp;lt;/tt&amp;gt; и закрывающий к нему - &amp;lt;tt&amp;gt;&amp;lt;/game_dialogs&amp;gt;&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''2.''' &amp;lt;tt&amp;gt;&amp;lt;dialog id = &amp;quot;&amp;quot;&amp;gt; закрывающий - &amp;lt;/dialog&amp;gt;&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''3.''' &amp;lt;tt&amp;gt;&amp;lt;phrase_list&amp;gt; - &amp;lt;/phrase_list&amp;gt;&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''4.''' &amp;lt;tt&amp;gt;&amp;lt;phrase id = &amp;quot;&amp;quot;&amp;gt; - &amp;lt;/phrase&amp;gt;&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''5.''' &amp;lt;code&amp;gt;&amp;lt;text&amp;gt; &amp;lt;/text&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''6.''' &amp;lt;tt&amp;gt;&amp;lt;next&amp;gt; &amp;lt;/next&amp;gt;&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В принципе, этих конструкций уже достаточно для того, чтобы создать диалог. Но, диалог, созданный на основе этих конструкций, не сможет стать основой для нового квеста. Для того, чтобы во время диалога вам выдавался квест, есть соответствующий тэг. Но об этом – чуть позже.&lt;br /&gt;
&lt;br /&gt;
Поясню, что обозначает каждый тэг в отдельности.&lt;br /&gt;
&lt;br /&gt;
'''1.''' Определяет содержимое файла (в данном случае, говорит о том, что файл содержит диалоги);&lt;br /&gt;
&lt;br /&gt;
'''2.''' Определяет новый диалог с &amp;lt;tt&amp;gt;id = &amp;quot;&amp;quot;&amp;lt;/tt&amp;gt;. Где содержимое кавычек есть идентификатор диалога. Идентификатор диалога задается в файлах типа character_description_***.xml ;&lt;br /&gt;
&lt;br /&gt;
'''3.''' Этот тэг говорит XML-парсеру игры о том, что далее следуют фразы диалога. Иными словами, между &amp;lt;tt&amp;gt;&amp;lt;phrase_list&amp;gt;&amp;lt;/tt&amp;gt; и &amp;lt;tt&amp;gt;&amp;lt;/phrase_list&amp;gt;&amp;lt;/tt&amp;gt;  содержатся фразы диалога;&lt;br /&gt;
&lt;br /&gt;
'''4.''' Этот тэг определяет фразу с &amp;lt;tt&amp;gt;id = &amp;quot;&amp;quot;&amp;lt;/tt&amp;gt;. Внутри кавычек содержится идентификатор фразы (ВНИМАНИЕ: идентификатором в данном случае могут быть ТОЛЬКО цифры);&lt;br /&gt;
&lt;br /&gt;
'''5.''' Внутри этих двух тэгов содержится ссылка на соответствующий данной фразе текст (пример, esc_trader_talk_info_123). Сам текст берется из файлов типа stable_dialogs_*****.xml, в котором содержатся все фразы в текстовом виде. О создании текста фразы поговорим позже;&lt;br /&gt;
&lt;br /&gt;
'''6.''' Внутри этого тэга содержится ссылка (в числовом формате) на следующую (или следующие) фразы.&lt;br /&gt;
&lt;br /&gt;
Теперь приступим к тэгам, позволяющим производить какие-то действия во время диалога.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&amp;lt;precondition&amp;gt; &amp;lt;/precondition&amp;gt;&amp;lt;/tt&amp;gt;. Представляет собой предусловие, в случае выполнения которого (то есть предусловие вернуло ИСТИНУ) данный диалог, или фраза будут появляться в списке доступных во время игры у NPC. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&amp;lt;action&amp;gt; &amp;lt;/action&amp;gt;&amp;lt;/tt&amp;gt;.  Данный тэг позволяет производить какое-либо действие во время диалога (например, передачу предметов между общающимися... так же позволяет производить более сложные действия). Внутри тэга располагается ссылка на какую-либо функцию (например, dialogs. actor_set_dolg сделает игрока членом группировки Долг). &lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&amp;lt;give_info&amp;gt; &amp;lt;/give_info&amp;gt;&amp;lt;/tt&amp;gt;. Позволяет  выдавать игроку во время диалога так называемые info_portion'ы (кстати, инфопоршны можно выдавать так же и через &amp;lt;action&amp;gt;, только это потребует создания специальной функции). info_portion – является основой для квестов, info_portion’ы определяются в файлах типа info****.xml. Инфопоршны могут, как начинать квест, так и заканчивать (завершать) его.  Так же, с помощью инфопоршнов можно отслеживать действия игрока, для того, чтобы, например, вывести в нужное время диалог.&lt;br /&gt;
&amp;lt;tt&amp;gt;&amp;lt;has_info&amp;gt; &amp;lt;/has_info&amp;gt;&amp;lt;/tt&amp;gt; и &amp;lt;tt&amp;gt;&amp;lt;dont_has_info&amp;gt; &amp;lt;/dont_has_info&amp;gt;&amp;lt;/tt&amp;gt; являются предусловиями для текущей фразы/диалога. Первый тэг проверяет наличие данного инфопоршна у игрока, второй – отсутствие.&lt;br /&gt;
&lt;br /&gt;
Ну что, теперь мы можем создать диалог, в котором нам будет выдаваться квест. Но мы не создали самих info_portion'оф, которые позволяет активировать квест.&lt;br /&gt;
&lt;br /&gt;
===Создание info_portion'ов===&lt;br /&gt;
&lt;br /&gt;
Итак, открываем файл gamedata\config\gameplay\ info_l01escape.xml. Что мы там видим? Правильно, все ту же структуру XML. &lt;br /&gt;
В данном файле нас интересуют только два тэга:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
&amp;lt;info_portion id = &amp;quot;&amp;quot;&amp;gt; &amp;lt;/info_portion&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
&amp;lt;task&amp;gt; &amp;lt;/task&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Первый объявляет сам info_portion. Второй – объявляет задание (идентификатор задания id содержится внутри тэга &amp;lt;task&amp;gt;)&lt;br /&gt;
&lt;br /&gt;
Для примера, создадим 3 info_portion, которые понадобятся нам для будущего квеста:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
&amp;lt;info_portion id = &amp;quot;new_task_started&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
&amp;lt;task&amp;gt;new_task&amp;lt;/task&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
&amp;lt;/info_portion&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Это инфопоршн с именем new_task_started. Он активирует квест с именем new_task.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
&amp;lt;info_portion id = &amp;quot;player_talked_with_wolf&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/info_portion&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
&amp;lt;info_portion id = &amp;quot;player_complete_new_task&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/info_portion&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Создание нового квеста===&lt;br /&gt;
&lt;br /&gt;
Сами квесты содержаться в файлах типа tasks_*****.xml&lt;br /&gt;
&lt;br /&gt;
Откроем файл  gamedata\config\gameplay\tasks_escape.xml. Структура – все тот же XML.&lt;br /&gt;
&lt;br /&gt;
Для примера исследуем уже существующий квест:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
&amp;lt;game_task id=&amp;quot;esc_help_wounded_from_raid&amp;quot; prio=&amp;quot;485&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;title&amp;gt;esc_help_wounded_from_raid&amp;lt;/title&amp;gt;&lt;br /&gt;
	&amp;lt;objective&amp;gt;&lt;br /&gt;
		&amp;lt;text&amp;gt;esc_help_wounded_from_raid_0&amp;lt;/text&amp;gt;&lt;br /&gt;
		&amp;lt;icon&amp;gt;ui_iconsTotal_esc_help_wounded_from_raid&amp;lt;/icon&amp;gt;&lt;br /&gt;
		&amp;lt;function_complete&amp;gt;escape_tasks.task_fox_complete&amp;lt;/function_complete&amp;gt;&lt;br /&gt;
		&amp;lt;infoportion_set_complete&amp;gt;garbage_meetstalker_start&amp;lt;/infoportion_set_complete&amp;gt;&lt;br /&gt;
		&amp;lt;article&amp;gt;esc_fox_help&amp;lt;/article&amp;gt;&lt;br /&gt;
		&amp;lt;/objective&amp;gt;&lt;br /&gt;
		&amp;lt;objective&amp;gt;&lt;br /&gt;
		&amp;lt;text&amp;gt;esc_help_wounded_from_raid_1&amp;lt;/text&amp;gt;&lt;br /&gt;
		&amp;lt;map_location_type hint=&amp;quot;esc_fox&amp;quot;&amp;gt;green_location&amp;lt;/map_location_type&amp;gt;&lt;br /&gt;
		&amp;lt;object_story_id&amp;gt;Escape_stalker_from_raid&amp;lt;/object_story_id&amp;gt;&lt;br /&gt;
		&amp;lt;infoportion_complete&amp;gt;escape_fox_heal&amp;lt;/infoportion_complete&amp;gt;&lt;br /&gt;
		&amp;lt;infoportion_fail&amp;gt;esc_dogs_return&amp;lt;/infoportion_fail&amp;gt;&lt;br /&gt;
	&amp;lt;/objective&amp;gt;&lt;br /&gt;
		&amp;lt;objective&amp;gt;&lt;br /&gt;
		&amp;lt;text&amp;gt;esc_help_wounded_from_raid_2&amp;lt;/text&amp;gt;&lt;br /&gt;
		&amp;lt;map_location_type hint=&amp;quot;esc_fox&amp;quot;&amp;gt;green_location&amp;lt;/map_location_type&amp;gt;&lt;br /&gt;
		&amp;lt;object_story_id&amp;gt;Escape_stalker_from_raid&amp;lt;/object_story_id&amp;gt;&lt;br /&gt;
		&amp;lt;infoportion_complete&amp;gt;escape_stalker_done&amp;lt;/infoportion_complete&amp;gt;&lt;br /&gt;
	&amp;lt;/objective&amp;gt;&lt;br /&gt;
&amp;lt;/game_task&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
По кусочкам:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
&amp;lt;game_task id=&amp;quot;esc_help_wounded_from_raid&amp;quot; prio=&amp;quot;485&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/game_task&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Задает имя (id) нового квеста. В данном случае, esc_help_wounded_from_raid. prio = &amp;quot;&amp;quot; задает приоритет задачи. Чем выше приоритет, тем больше вероятность того, что текущий маркер квеста будет переключен на ваше задание.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
&amp;lt;title&amp;gt;esc_help_wounded_from_raid&amp;lt;/title&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Задает заголовок квеста. Т. е. его название. Название можно прописать в виде текста, либо в виде ссылки. В данном случае используется ссылка на текст, который хранится в файле string_table_tasks_escape.xml. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
&amp;lt;function_complete&amp;gt;escape_tasks.task_fox_complete&amp;lt;/function_complete&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
Вызывает функцию из файла escape_tasks.script под именем task_fox_complete. Tсли все условия функции соблюдаются, то при выполнении данной функции подзадача становится выполненной.&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
&amp;lt;function_call_complete&amp;gt;agroprom_tasks.agr_trader_documents&amp;lt;/function_call_complete&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
выполняет функцию, после завершения подзадачи.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
&amp;lt;infoportion_complete&amp;gt;escape_fox_heal&amp;lt;/infoportion_complete&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
Текущее подзадание будет завершено в случае, если игроку будет дан этот info_portion.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
&amp;lt;infoportion_fail&amp;gt;esc_dogs_return&amp;lt;/infoportion_fail&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
Текущее подзадание будет провалено в случае, если игроку будет дан этот info_portion.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
&amp;lt;map_location_type hint=&amp;quot;esc_fox&amp;quot;&amp;gt;green_location&amp;lt;/map_location_type&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
Создает указатель на карте с подсказкой esc_fox и типом green_location. Есть такие типы маркеров:&lt;br /&gt;
&amp;lt;br&amp;gt;green_location - зелёный маркер. Служит обычно для обозначения неодушевлённых предметов. Скажем чей-нибудь труп :)&lt;br /&gt;
&amp;lt;br&amp;gt;blue_location - синий маркер. Служит целью на человека.&lt;br /&gt;
&amp;lt;br&amp;gt;crlc_big - примерное место. К примеру зона поиска предмета.&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
&amp;lt;object_story_id&amp;gt;Escape_stalker_from_raid&amp;lt;/object_story_id&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
Указывает на sid из файла gamedata\config\game_story_ids.ltx&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
&amp;lt;infoportion_set_complete&amp;gt;garbage_meetstalker_start&amp;lt;/infoportion_set_complete&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
Автоматически устанавливает данную подзадачу в положение «Выполнено», если у игрока есть данный info_portion. //!!!!!!Не уверен – не пользовался не разу. Есть ещё версия, что выдаёт поршень, как только задача становится выполненной.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
&amp;lt;text&amp;gt;esc_help_wounded_from_raid_0&amp;lt;/text&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
Содержит описание подзадачи. Может содержать внутри как текст, так и ссылку на текст.&lt;br /&gt;
&lt;br /&gt;
Создадим задание, которое потребуется нам для диалога:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
&amp;lt;game_task id=&amp;quot;new_task&amp;quot;&amp;gt;&lt;br /&gt;
	&amp;lt;title&amp;gt;Поговорить с Волком&amp;lt;/title&amp;gt;&lt;br /&gt;
	&amp;lt;objective&amp;gt;&lt;br /&gt;
		&amp;lt;text&amp;gt;Вернуться к Сидорычу&amp;lt;/text&amp;gt;&lt;br /&gt;
                &amp;lt;icon&amp;gt;ui_iconsTotal_find_item&amp;lt;/icon&amp;gt;&lt;br /&gt;
		&amp;lt;map_location_type hint=&amp;quot;escape_trader&amp;quot;&amp;gt;blue_location&amp;lt;/map_location_type&amp;gt;&lt;br /&gt;
		&amp;lt;object_story_id&amp;gt;Escape_Trader&amp;lt;/object_story_id&amp;gt;&lt;br /&gt;
		&amp;lt;infoportion_complete&amp;gt;player_complete_new_task&amp;lt;/ infoportion_complete&amp;gt;&lt;br /&gt;
	&amp;lt;/objective&amp;gt;&lt;br /&gt;
	&amp;lt;objective&amp;gt;&lt;br /&gt;
		&amp;lt;text&amp;gt;Поговорить с Волком&amp;lt;/text&amp;gt;&lt;br /&gt;
		&amp;lt;map_location_type hint=&amp;quot;volk&amp;quot;&amp;gt;green_location&amp;lt;/map_location_type&amp;gt;&lt;br /&gt;
		&amp;lt;object_story_id&amp;gt;Escape_novice_lager_volk&amp;lt;/object_story_id&amp;gt;&lt;br /&gt;
		&amp;lt;infoportion_complete&amp;gt;player_talked_with_wolf&amp;lt;/ infoportion_complete&amp;gt;&lt;br /&gt;
	&amp;lt;/objective&amp;gt;&lt;br /&gt;
	&amp;lt;objective&amp;gt;&lt;br /&gt;
		&amp;lt;text&amp;gt;Вернуться к Сидорычу&amp;lt;/text&amp;gt;&lt;br /&gt;
		&amp;lt;map_location_type hint=&amp;quot;escape_trader&amp;quot;&amp;gt;blue_location&amp;lt;/map_location_type&amp;gt;&lt;br /&gt;
		&amp;lt;object_story_id&amp;gt;Escape_Trader&amp;lt;/object_story_id&amp;gt;&lt;br /&gt;
		&amp;lt;infoportion_complete&amp;gt;player_complete_new_task&amp;lt;/ infoportion_complete&amp;gt;&lt;br /&gt;
	&amp;lt;/objective&amp;gt;&lt;br /&gt;
&amp;lt;/game_task&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''Здесь же необходимо обязательно указать ссылку на иконку из файла ui_iconstotal, иначе при попытке заглянуть в раздел &amp;quot;Задания&amp;quot; в ПДА при взятии квеста будет происходить вылет. Для примера я проставил иконку поиска предмета.''&lt;br /&gt;
&lt;br /&gt;
Теперь создадим скелеты диалогов для нашего квеста. Потребуется три: один для Волка и два для Сидорыча.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
&amp;lt;dialog id = &amp;quot;volk_new_quest&amp;quot;&amp;gt;&lt;br /&gt;
	&amp;lt;has_info&amp;gt;new_task_started&amp;lt;/has_info&amp;gt;&lt;br /&gt;
	&amp;lt;dont_has_info&amp;gt;player_talked_with_wolf&amp;lt;/dont_has_info&amp;gt;&lt;br /&gt;
	&amp;lt;dont_has_info&amp;gt; player_complete_new_task &amp;lt;/dont_has_info&amp;gt;&lt;br /&gt;
	&amp;lt;phrase_list&amp;gt;&lt;br /&gt;
		&amp;lt;phrase id = &amp;quot;0&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;text&amp;gt;esc_volk_new_quest_0&amp;lt;/text&amp;gt;&lt;br /&gt;
			&amp;lt;next&amp;gt;1&amp;lt;/next&amp;gt;&lt;br /&gt;
		&amp;lt;/phrase&amp;gt;&lt;br /&gt;
		&amp;lt;phrase id = &amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;text&amp;gt;esc_volk_new_quest_1&amp;lt;/text&amp;gt;&lt;br /&gt;
			&amp;lt;give_info&amp;gt;player_talked_with_wolf&amp;lt;/give_info&amp;gt;&lt;br /&gt;
			&amp;lt;next&amp;gt;2&amp;lt;/next&amp;gt;&lt;br /&gt;
		&amp;lt;/phrase&amp;gt;&lt;br /&gt;
		&amp;lt;phrase id = &amp;quot;2&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;text&amp;gt;esc_volk_new_quest_2&amp;lt;/text&amp;gt;&lt;br /&gt;
			&amp;lt;action&amp;gt;dialogs.break_dialog&amp;lt;/action&amp;gt;&lt;br /&gt;
	&amp;lt;/phrase&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;/phrase_list&amp;gt;&lt;br /&gt;
&amp;lt;/dialog&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;dialog id = &amp;quot;esc_trader_new_quest&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;dont_has_info&amp;gt;player_complete_new_task&amp;lt;/dont_has_info&amp;gt;&lt;br /&gt;
&amp;lt;dont_has_info&amp;gt;player_talked_with_wolf&amp;lt;/dont_has_info&amp;gt;&lt;br /&gt;
&amp;lt;phrase_list&amp;gt;&lt;br /&gt;
	&amp;lt;phrase id = &amp;quot;0&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;text&amp;gt;esc_trader_new_quest_0&amp;lt;/text&amp;gt;&lt;br /&gt;
		&amp;lt;next&amp;gt;1&amp;lt;/next&amp;gt;&lt;br /&gt;
	&amp;lt;/phrase&amp;gt;&lt;br /&gt;
	&amp;lt;phrase id = &amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;text&amp;gt;esc_trader_new_quest_1&amp;lt;/text&amp;gt;&lt;br /&gt;
		&amp;lt;give_info&amp;gt;new_task_started&amp;lt;/give_info&amp;gt;&lt;br /&gt;
		&amp;lt;next&amp;gt;2&amp;lt;/next&amp;gt;&lt;br /&gt;
	&amp;lt;/phrase&amp;gt;&lt;br /&gt;
	&amp;lt;phrase id = &amp;quot;2&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;text&amp;gt;esc_trader_new_quest_2&amp;lt;/text&amp;gt;&lt;br /&gt;
		&amp;lt;action&amp;gt;dialogs.break_dialog&amp;lt;/action&amp;gt; &lt;br /&gt;
&amp;lt;/phrase&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/phrase_list&amp;gt;&lt;br /&gt;
&amp;lt;/dialog&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;dialog id = &amp;quot;esc_trader_new_quest_complete&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;dont_has_info&amp;gt;player_complete_new_task&amp;lt;/dont_has_info&amp;gt;&lt;br /&gt;
&amp;lt;phrase_list&amp;gt;&lt;br /&gt;
	&amp;lt;phrase id = &amp;quot;0&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;text&amp;gt;esc_trader_new_quest_complete_0&amp;lt;/text&amp;gt;&lt;br /&gt;
		&amp;lt;next&amp;gt;1&amp;lt;/next&amp;gt;&lt;br /&gt;
	&amp;lt;/phrase&amp;gt;&lt;br /&gt;
	&amp;lt;phrase id = &amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;text&amp;gt;esc_trader_new_quest_complete_1&amp;lt;/text&amp;gt;&lt;br /&gt;
		&amp;lt;give_info&amp;gt;player_complete_new_task&amp;lt;/give_info&amp;gt;&lt;br /&gt;
		&amp;lt;next&amp;gt;2&amp;lt;/next&amp;gt;&lt;br /&gt;
	&amp;lt;/phrase&amp;gt;&lt;br /&gt;
	&amp;lt;phrase id = &amp;quot;2&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;text&amp;gt;esc_trader_new_quest_complete_2&amp;lt;/text&amp;gt;&lt;br /&gt;
		&amp;lt;action&amp;gt;dialogs.break_dialog&amp;lt;/action&amp;gt;&lt;br /&gt;
&amp;lt;/phrase&amp;gt;&lt;br /&gt;
&amp;lt;/phrase_list&amp;gt;&lt;br /&gt;
&amp;lt;/dialog&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Все «скелеты» добавляем в файл dialogs_escape.xml. Между &amp;lt;game_dialogs&amp;gt; и &amp;lt;dialog id=...&amp;gt;! &lt;br /&gt;
&lt;br /&gt;
''Внимательно следите за правильностью написания тэгов и ОДИНАКОВЫМ написанием идентификаций - как в файле с вашим новым диалогом, так и во всех других файлах, где используются тэги или ваши идентификации(например, идентификации фраз в файле с диалогом должны быть такими же, как и идентификации этих же фраз в файле с текстом). Иначе кроме серии вылетов с не всем понятными логами вы ничего не получите. У меня самого были проблемы при попытке активировать квест, выложеный в этой статье, так что пришлось кое-что поправить - и в тэгах, и в идентификаторах.''&lt;br /&gt;
&lt;br /&gt;
Примечание: посмотрите на уже готовые диалоги, которые создали разработчики игры – это облегчит вам жизнь.&lt;br /&gt;
&lt;br /&gt;
Теперь бежим в файл character_desc_escape.xml&lt;br /&gt;
&lt;br /&gt;
Ищем там NPC с &amp;lt;tt&amp;gt;id = &amp;quot;escape_trader&amp;quot;&amp;lt;/tt&amp;gt; и добавляем два новых &amp;lt;tt&amp;gt;&amp;lt;actor_dialog&amp;gt;&amp;lt;/actor_dialog&amp;gt;&amp;lt;/tt&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
&amp;lt;actor_dialog&amp;gt;esc_trader_new_quest_complete &amp;lt;/actor_dialog&amp;gt;&lt;br /&gt;
&amp;lt;actor_dialog&amp;gt;esc_trader_new_quest &amp;lt;/actor_dialog&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Там же ищем NPC с id = &amp;quot;esc_wolf&amp;quot; и добавляем один актор_диалог:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
&amp;lt;actor_dialog&amp;gt; volk_new_quest &amp;lt;/actor_dialog&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Примечание: &amp;lt;tt&amp;gt;&amp;lt;actor_dialog&amp;gt;&amp;lt;/tt&amp;gt; является диалогом, который активируется самим игроком по желанию. А &amp;lt;tt&amp;gt;&amp;lt;start_dialog&amp;gt;&amp;lt;/tt&amp;gt; активируется только при выполнении определенных условий, заданных в нем, и обычно недоступен.&lt;br /&gt;
&lt;br /&gt;
Осталось только добавить текст трех диалогов, чтобы наш квест стал полноценным. Открываем файл stable_dialogs_escape.xml и добавляем в него новый текст в таком виде:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;string id=&amp;quot;esc_trader_new_quest_complete_0&amp;quot;&amp;gt;&lt;br /&gt;
	&amp;lt;text&amp;gt;Все, я выполнил поручение Волка!&amp;lt;/text&amp;gt;&lt;br /&gt;
&amp;lt;/string&amp;gt;&lt;br /&gt;
&amp;lt;string id=&amp;quot;esc_trader_new_quest_complete_1&amp;quot;&amp;gt;&lt;br /&gt;
	&amp;lt;text&amp;gt;Молодец, Меченый. На тебя можно положиться.&amp;lt;/text&amp;gt;&lt;br /&gt;
&amp;lt;/string&amp;gt;&lt;br /&gt;
&amp;lt;string id=&amp;quot;esc_trader_new_quest_complete_2&amp;quot;&amp;gt;&lt;br /&gt;
	&amp;lt;text&amp;gt;Рад был помочь, Сидорыч.&amp;lt;/text&amp;gt;&lt;br /&gt;
&amp;lt;/string&amp;gt;&lt;br /&gt;
&amp;lt;string id=&amp;quot;esc_trader_new_quest_0&amp;quot;&amp;gt;&lt;br /&gt;
	&amp;lt;text&amp;gt; Здравствуй, Сидорыч! Есть работенка?&amp;lt;/text&amp;gt;&lt;br /&gt;
&amp;lt;/string&amp;gt;&lt;br /&gt;
&amp;lt;string id=&amp;quot;esc_trader_new_quest_1&amp;quot;&amp;gt;&lt;br /&gt;
	&amp;lt;text&amp;gt;О, неужели заглянул к нам на огонек, Меченый? Ладно… ближе к телу… эээ, к делу. У меня к тебе следующая &lt;br /&gt;
просьба: сбегай к Волку, у него что-то намечалось.&amp;lt;/text&amp;gt;&lt;br /&gt;
&amp;lt;/string&amp;gt;&lt;br /&gt;
&amp;lt;string id=&amp;quot; esc_trader_new_quest_2&amp;quot;&amp;gt;&lt;br /&gt;
	&amp;lt;text&amp;gt;Без проблем! Уже бегу.&amp;lt;/text&amp;gt;&lt;br /&gt;
&amp;lt;/string&amp;gt;&lt;br /&gt;
&amp;lt;string id=&amp;quot;esc_volk_new_quest_0&amp;quot;&amp;gt;&lt;br /&gt;
	&amp;lt;text&amp;gt;Здорово, Волк. Меня тут Сидорыч послал, говорит у тебя работа есть.&amp;lt;/text&amp;gt;&lt;br /&gt;
&amp;lt;/string&amp;gt;&lt;br /&gt;
&amp;lt;string id=&amp;quot;esc_volk_new_quest_1&amp;quot;&amp;gt;&lt;br /&gt;
	&amp;lt;text&amp;gt;Привет, Меченый. Верь ты ему больше, этому старому маразматику! Все спокойно сейчас. Так что иди к нему и &lt;br /&gt;
скажи, что все хорошо.&amp;lt;/text&amp;gt;&lt;br /&gt;
&amp;lt;/string&amp;gt;&lt;br /&gt;
&amp;lt;string id=&amp;quot;esc_volk_new_quest_2&amp;quot;&amp;gt;&lt;br /&gt;
	&amp;lt;text&amp;gt;Все, ухожу.&amp;lt;/text&amp;gt;&lt;br /&gt;
&amp;lt;/string&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Все! Поздравляю! Вы только что написали новый квест.&lt;br /&gt;
&lt;br /&gt;
==Авторы==&lt;br /&gt;
&lt;br /&gt;
Статья создана: [[Участник:Fr3nzy|Fr3nzy]]&lt;br /&gt;
&lt;br /&gt;
== Внесённые изменения ==&lt;br /&gt;
*[[Участник:BerSerK™|BerSerK™]]&lt;br /&gt;
&lt;br /&gt;
[[Категория:Конфигурационные файлы]]&lt;/div&gt;</summary>
		<author><name>Losiara</name></author>	</entry>

	</feed>