<?xml version="1.0"?>
<?xml-stylesheet type="text/css" href="http://stalkerin.gameru.net/wiki/skins/common/feed.css?303"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
		<id>http://stalkerin.gameru.net/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=81.162.64.75&amp;*</id>
		<title>S.T.A.L.K.E.R. Inside Wiki - Вклад участника [ru]</title>
		<link rel="self" type="application/atom+xml" href="http://stalkerin.gameru.net/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=81.162.64.75&amp;*"/>
		<link rel="alternate" type="text/html" href="http://stalkerin.gameru.net/wiki/index.php?title=%D0%A1%D0%BB%D1%83%D0%B6%D0%B5%D0%B1%D0%BD%D0%B0%D1%8F:%D0%92%D0%BA%D0%BB%D0%B0%D0%B4/81.162.64.75"/>
		<updated>2026-04-29T15:06:08Z</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>2016-08-06T07:57:58Z</updated>
		
		<summary type="html">&lt;p&gt;81.162.64.75: /* Схема sr_light */&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;
on_hit = hit&lt;br /&gt;
on_death = death&lt;br /&gt;
combat_ignore_cond = {-alert}&lt;br /&gt;
&lt;br /&gt;
[combat_ignore]&amp;lt;/ini&amp;gt;&lt;br /&gt;
Рассмотрим ее пошагово.&amp;lt;br&amp;gt;&lt;br /&gt;
Вначале сталкер работает по схеме '''''walker'''''. При этом он игнорирует бой, пока не будет поставлен инфопоршн '''''alert''''. Он ждет 25 секунд, после чего переходит в схему '''''remark'''''. В ремарке он проигрывает анимацию '''''idle''''', говорит на указанные темы, не поворачивается и не двигается и точно также игнорирует бой. Если по нему попадут ('''''on_hit''''') или убьют ('''''on_death'''''), будет поставлен инфопоршн '''''alert''''' и он перестанет игнорировать бой (понятно, что если он будет трупом, то это ему не поможет, но их в сценке трое, и тогда сорвутся в бой все остальные). Если его убьют, то также будет поставлен инфопоршн '''''trup3''''' который сообщит о том, что этот NPC убит.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
А  вот логика его противника:&amp;lt;ini&amp;gt;[logic]&lt;br /&gt;
active = walker&lt;br /&gt;
combat_ignore = combat_ignore&lt;br /&gt;
&lt;br /&gt;
[walker]&lt;br /&gt;
path_walk = soldier_walk1&lt;br /&gt;
path_look = soldier_look1&lt;br /&gt;
combat_ignore_cond = always&lt;br /&gt;
team = assault_group&lt;br /&gt;
on_signal = assault | camper&lt;br /&gt;
&lt;br /&gt;
[camper]&lt;br /&gt;
path_walk = soldier_walk1_2&lt;br /&gt;
path_look = soldier_look1_2&lt;br /&gt;
radius = 5&amp;lt;br&amp;gt;&lt;br /&gt;
on_info = {+trup1 +trup2 +trup3} walker2&lt;br /&gt;
&lt;br /&gt;
[walker2]&amp;lt;br&amp;gt;&lt;br /&gt;
path_walk = soldier_walk1_3&lt;br /&gt;
path_look = soldier_look1_3&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[combat_ignore]&amp;lt;/ini&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Он идет в схеме '''''walker''''', игнорируя бой (причем игнорируя в любой ситуации). Идет в составе группы '''''assault_group'''''. Когда он приходит в конечную точку маршрута (там он синхронизируется с остальными из группы, это приписано в путях) и получает сигнал '''''assault''''', то переходит в схему '''''camper'''''. В этой схеме у него не прописан '''''combat_ignore''''', поэтому он начинает стрелять по противнику. После того, как все трое противников будут убиты, каждый из них, умирая ставит инфопоршн '''''trup1''''', '''''trup2''''' или '''''trup3''''' и когда все трое будут убиты, то он переключится на схему '''''walker2''''' (подойдет к костру).&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Схемы логики space_restrictor=&lt;br /&gt;
&lt;br /&gt;
'''''Общее замечание''''': Чтобы исключить ситуацию, когда актёр проскакивает через рестриктор и тот не успевает сработать, старайтесь ставить рестриктор так, чтоб минимальная ширина была больше 2 метров.&lt;br /&gt;
&lt;br /&gt;
==Схема sr_idle==	&lt;br /&gt;
Предназначение данной схемы – включить другую схему при срабатывании одного из стандартных условий логической схемы.&amp;lt;br&amp;gt;&lt;br /&gt;
Сама по себе схема ничего не делает.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''[sr_idle]'''&amp;lt;br&amp;gt;&lt;br /&gt;
'''''on_actor_inside = nil %+esc_actor_inside%'''''&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Обратите внимание, что после срабатывания проверки активная схема переключается в '''''nil''''', чтобы не продолжать бесполезную проверку на каждом апдейте. Можно не задавать '''''nil'''''.&amp;lt;br&amp;gt;&lt;br /&gt;
Часто эта схема работает вместе со спавнером, рестриктор выдает инфопоршн, при входе в зону, а спавнер по нему уже кого-то спавнит.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''''Пример использования схемы''''':&amp;lt;ini&amp;gt;[logic]&lt;br /&gt;
active = sr_idle&lt;br /&gt;
&lt;br /&gt;
[sr_idle]&lt;br /&gt;
on_actor_inside = {+val_raid_start -esc_return -esc_trader_speak} nil %=esc_return_dv +esc_return +esc_trader_speak%&amp;lt;/ini&amp;gt;&lt;br /&gt;
&lt;br /&gt;
файл ''gamedata\scripts\sr_idle.script''&lt;br /&gt;
&lt;br /&gt;
==Схема sr_no_weapon==&lt;br /&gt;
Данная схема убирает оружие у игрока при входе в зону.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''[sr_no_weapon]'''&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''''Пример использования схемы''''':&amp;lt;ini&amp;gt;[logic]&lt;br /&gt;
active = sr_no_weapon&lt;br /&gt;
&lt;br /&gt;
[sr_no_weapon]&amp;lt;/ini&amp;gt;&lt;br /&gt;
&lt;br /&gt;
файл ''gamedata\scripts\sr_no_weapon.script''&lt;br /&gt;
&lt;br /&gt;
==Схема sr_sound==&lt;br /&gt;
&lt;br /&gt;
Схема предназначена для отыгрывание звука при входе актора в '''''space_restrictor'''''.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''[sr_sound]'''&amp;lt;br&amp;gt;&lt;br /&gt;
'''''snd = &amp;lt;путь_звукового_файла&amp;gt;''''' - перечень имён звуков разделенных запятыми (путь учитывается относительно папки ''gamedata\sounds'').&amp;lt;br&amp;gt;&lt;br /&gt;
'''''type = &amp;lt;параметр&amp;gt;''''' - типы звуков через запятые. Для удобства введены типы наборов звуков в таблице '''''sound_types''''' управляющего файла. Всего их три:&amp;lt;br&amp;gt;&lt;br /&gt;
:*'''''floor_wooden''''';&amp;lt;br&amp;gt;&lt;br /&gt;
:*'''''rats_panic''''';&amp;lt;br&amp;gt;&lt;br /&gt;
:*'''''random'''''.&amp;lt;br&amp;gt;&lt;br /&gt;
'''''delay = &amp;lt;number&amp;gt;''''' - задержка перед проигрыванием звука в секундах реального времени, по умолчанию 0.&amp;lt;br&amp;gt;&lt;br /&gt;
'''''idle = &amp;lt;number&amp;gt;''''' - длина периода игнорирования входа в зону после начала последнего проигранного звука.&lt;br /&gt;
:Чтоб, например, &amp;quot;завывание&amp;quot; было не чаще, чем раз в несколько минут. Указывается в секундах игрового времени. По умолчанию 0.&amp;lt;br&amp;gt;&lt;br /&gt;
'''''rnd = &amp;lt;number&amp;gt;''''' - вероятность (в процентах) того, что звук отыграется. По умолчанию 100.&amp;lt;br&amp;gt;&lt;br /&gt;
'''''position = &amp;lt;имя_пути&amp;gt;''''' - задает имя пути, в вершинах которого может отыграться звук.&lt;br /&gt;
:Есть зарезервированное значение '''''random'''''. Оно означает случайное место в радиусе от 15 до 50 метров от игрока. Если этот параметр не задан, то подразумевается позиция игрока.&amp;lt;br&amp;gt;&lt;br /&gt;
'''''slide_velocity = &amp;lt;number&amp;gt;''''' - скорость (м/с) передвижения звука по точкам патрульного пути. По умолчанию - 3.&amp;lt;br&amp;gt;&lt;br /&gt;
'''''slide_sound_once = true\false''''' - в случае значения '''''true''''' - проиграть звук один раз, даже если он не дошел до последней точки пути,&lt;br /&gt;
:иначе если '''''false''''' – и если звук закончился, а до последней точки пути не дошел, запустить его ещё раз. По умолчанию '''''false'''''.&amp;lt;br&amp;gt;&lt;br /&gt;
'''''play_at_actor = true/false''''' - заставляет звук играться от позиции актера постоянно.&lt;br /&gt;
:Если он будет равен '''''true''''' и будет задан путь перемещения звука (или рандом), то мы тупо вылетим.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Поддерживается сигнал '''''sound_end'''''.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Обязательно нужно задать либо '''''snd''''', либо '''''type'''''. Можно их задать вместе. На базе этих параметров составляется список звуков. При входе актора в рестриктор отыгрывается случайный звук из этого списка.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''''Пример использования схемы''''':&amp;lt;ini&amp;gt;[logic]&lt;br /&gt;
active = sr_idle&lt;br /&gt;
&lt;br /&gt;
[sr_idle]&lt;br /&gt;
on_actor_inside = sr_sound@shooting&lt;br /&gt;
&lt;br /&gt;
[sr_sound@shooting]&lt;br /&gt;
snd = characters_voice\scenario\garbage\grey_grey_1&lt;br /&gt;
play_at_actor = true&lt;br /&gt;
on_signal = sound_end| nil&lt;br /&gt;
on_timer = 20000| nil&amp;lt;/ini&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Есть возможность сделать «скользящий звук». Необходим патрульный путь. Звук начинает отыгрываться с начала пути и перемещается от одной точки пути к другой (по мере их установки на патрульном пути) со скоростью '''''slide_velocity'''''. Пример:&amp;lt;ini&amp;gt;[logic]&lt;br /&gt;
active = sr_sound&lt;br /&gt;
&lt;br /&gt;
[sr_sound]&lt;br /&gt;
type = random&lt;br /&gt;
position = way&lt;br /&gt;
slide_velocity = 8&lt;br /&gt;
slide_sound_once = true&amp;lt;/ini&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Файл ''gamedata\scripts\sr_sound.script''&lt;br /&gt;
&lt;br /&gt;
==Схема sr_tip==&lt;br /&gt;
Предназначение данной схемы – давать игроку сообщение (подсказку) при входе в рестриктор.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''[sr_tip]'''&amp;lt;br&amp;gt;&lt;br /&gt;
'''''name = &amp;lt;имя_текса&amp;gt;''''' - строка с '''''id''''' текста зарегистрированного в папке ''gamedata\config\text''.&amp;lt;br&amp;gt;&lt;br /&gt;
'''''type = news/tips''''' - параметр рудиментарный и не на что не влияет.&amp;lt;br&amp;gt;&lt;br /&gt;
'''''sender = &amp;lt;параметр&amp;gt;''''' - задаёт условный строковый идентификатор иконки персонажа, от которого якобы пришло сообщение.&lt;br /&gt;
:По умолчанию это иконка торговца. Возможны следующие значения: '''''default, trader, dolg, freedom, ecolog, arena, stalker, krot, barman, wolf, o_soznanie, monolith, saharov, prizrak, killer'''''.&amp;lt;br&amp;gt;&lt;br /&gt;
'''''cond = {+info -info =func !func ~number}''''' - необходимые логические условия, при которых подсказка сработает. По дефолту, сработает при входе в зону.&amp;lt;br&amp;gt;&lt;br /&gt;
'''''single = true/false''''' - если параметр в '''''true''''', то типс будет выдан только один раз. По умолчанию '''''false'''''.&amp;lt;br&amp;gt;&lt;br /&gt;
'''''timeout = &amp;lt;number&amp;gt;''''' - задержка вывода сообщения в секундах. По умолчанию - 0.&amp;lt;br&amp;gt;&lt;br /&gt;
'''''showtime = &amp;lt;number&amp;gt;''''' - время показа сообщения на экране. Задаётся в милисекундах. По умолчанию - 5000.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Поддерживается сигнал '''''tip_sended''''', только в случае установленного параметра '''''single'''''.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''''Пример использования схемы''''':&amp;lt;ini&amp;gt;[logic]&lt;br /&gt;
active = sr_idle&lt;br /&gt;
&lt;br /&gt;
[sr_idle]&lt;br /&gt;
on_actor_inside = sr_tip&lt;br /&gt;
&lt;br /&gt;
[sr_tip] &lt;br /&gt;
name = rad_barman_spam&lt;br /&gt;
type = tips&lt;br /&gt;
cond = {+bar_deactivate_radar_done} &lt;br /&gt;
sender = barman&lt;br /&gt;
on_actor_inside = nil&lt;br /&gt;
showtime = 25000&amp;lt;/ini&amp;gt;&lt;br /&gt;
&lt;br /&gt;
файл ''gamedata\scripts\sr_tip.script''&lt;br /&gt;
&lt;br /&gt;
==Схема sr_light==&lt;br /&gt;
Зона, управляющая вкл\откл фонариков NPC.&lt;br /&gt;
&lt;br /&gt;
'''[sr_light]'''&amp;lt;br&amp;gt;&lt;br /&gt;
'''''light_on = true/false''''' - свет включен/выключен.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''''Пример использования схемы''''':&amp;lt;ini&amp;gt;[logic]&lt;br /&gt;
active = sr_light&lt;br /&gt;
&lt;br /&gt;
[sr_light]&lt;br /&gt;
light_on = true&amp;lt;/ini&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Файл: ''gamedata\scripts\sr_light.script''&lt;br /&gt;
&lt;br /&gt;
==Схема sr_territory==&lt;br /&gt;
&lt;br /&gt;
Занимается эта схема тем, что отлавливает всякие события, происходящие внутри рестриктора.&lt;br /&gt;
Пока что она отлавливает только хиты и смерть NPC.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''[sr_territory]'''&amp;lt;br&amp;gt;&lt;br /&gt;
'''''territory_hit = {+info -info =func !func ~number} %+info -info =func%''''' - эффекты, которые произойдут при нанесении хита от актора, будучи в этой зоне.&amp;lt;br&amp;gt;&lt;br /&gt;
'''''territory_death = {+info -info =func !func ~number} %+info -info =func%''''' - эффекты, которые произойдут при смерти от &amp;quot;рук&amp;quot; актора, будучи в этой зоне.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Поскольку схема работает только с игроком – то хиты и смерть засчитываются только от игрока.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''''Пример использования схемы''''':&amp;lt;ini&amp;gt;[logic]&lt;br /&gt;
active = sr_territory@1&lt;br /&gt;
&lt;br /&gt;
[sr_territory@1]&lt;br /&gt;
territory_death = sr_idle@1 %+bar_arena_territory_death%&amp;lt;/ini&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Файл: ''gamedata\scripts\sr_territory.script''&lt;br /&gt;
&lt;br /&gt;
==Схема sr_mapspot==&lt;br /&gt;
При входе в рестриктор он сам себя подсвечивает на карте.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''[sr_mapspot]'''&amp;lt;br&amp;gt;&lt;br /&gt;
'''''hint = &amp;lt;имя_текса&amp;gt;''''' - строка с '''''id''''' текста зарегистрированного в папке ''gamedata\config\text''.&amp;lt;br&amp;gt;&lt;br /&gt;
'''''location = &amp;lt;имя_метки&amp;gt;''''' - имя типа метки, зарегистрированное в файле ''config\ui\map_spots.xml'' и всех, что в него включены инклюдами. По умолчанию - '''''crlc_small'''''.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''''Пример использования схемы''''':&amp;lt;ini&amp;gt;[logic]&lt;br /&gt;
active = sr_idle&lt;br /&gt;
 &lt;br /&gt;
[sr_idle]&lt;br /&gt;
on_actor_inside = sr_mapspot&lt;br /&gt;
&lt;br /&gt;
[sr_mapspot]&lt;br /&gt;
hint = gar_swamp&lt;br /&gt;
location = crcl_big&amp;lt;/ini&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Файл: ''gamedata\scripts\sr_mapspot.script''&lt;br /&gt;
&lt;br /&gt;
==Схема sr_particle==&lt;br /&gt;
Данная система отыгрывает партиклы, как статичные, так и движущиеся, в указанном месте и в указанное время.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''[sr_particle]'''&amp;lt;br&amp;gt;&lt;br /&gt;
'''''name = &amp;lt;имя_партикла&amp;gt;''''' - путь до партикла относительно файла ''particles.xr''.&amp;lt;br&amp;gt;&lt;br /&gt;
'''''path = &amp;lt;имя_пути&amp;gt;''''' - точки движения партикла. Возможны два случая:&lt;br /&gt;
:#Когда указывается путь анимации камеры (путь учитывается относительно папки ''gamedata\anims'');&amp;lt;br&amp;gt;&lt;br /&gt;
:#Когда указывается имя патрульного пути.&amp;lt;br&amp;gt;&lt;br /&gt;
'''''mode = &amp;lt;параметр&amp;gt;''''' - параметр обязательный и имеет два значения:&lt;br /&gt;
:* 1 - устанавливается в случае указания анимации камеры для параметра '''''path''''';&amp;lt;br&amp;gt;&lt;br /&gt;
:* 2 - устанавливается в случае указания патрульного пути для параметра '''''path'''''.&amp;lt;br&amp;gt;&lt;br /&gt;
'''''looped = true/false''''' - флаг зацикленности партиклов.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''''Примечание''''': для пути движения партикла, когда установлена анимация движения камеры, для имени файла необходимо ставить расширение '''''.anm''''' (например ''arena.anm'').&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Поддерживается сигнал '''''particle_end'''''.&lt;br /&gt;
&lt;br /&gt;
В вейпоинтах патрульного пути можно задавать флаги:&amp;lt;br&amp;gt;&lt;br /&gt;
:*'''''s=&amp;lt;название_звуковой_темы&amp;gt;''''' - звук проигрываемый во время движения;&amp;lt;br&amp;gt;&lt;br /&gt;
:*'''''d=&amp;lt;number&amp;gt;''''' - время задержки перед проигрыванием, задается в миллисекундах. По умолчанию - 0.&amp;lt;br&amp;gt; &lt;br /&gt;
&lt;br /&gt;
При '''''looped = true''''', по окончании проигрывания партиклов, они будут запускаться сначала, но уже без задержек. Сигнал '''''particle_end''''' выдаваться не будет.&amp;lt;br&amp;gt;&lt;br /&gt;
При '''''looped = false''''' сигнал будет выдан, когда все источники партиклов отыграют.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Данная схема отслеживающим партиклы и нет никакой необходимости чтобы игрок в него заходил.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''''Пример использования схемы''''':&amp;lt;ini&amp;gt;[logic]&lt;br /&gt;
active = sr_idle&lt;br /&gt;
&lt;br /&gt;
[sr_idle]&lt;br /&gt;
on_info = {+sar_mon_poltergeist_1_spawn} sr_particle&lt;br /&gt;
&lt;br /&gt;
[sr_particle]&lt;br /&gt;
name = anomaly2\gravity_blast_03      &lt;br /&gt;
path = sar_poltergeist_1_way                  &lt;br /&gt;
mode = 2 				&lt;br /&gt;
looped = false               &lt;br /&gt;
on_signal = particle_end | sr_idle@2&amp;lt;/ini&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Файл: ''gamedata\scripts\sr_particle.script''&lt;br /&gt;
&lt;br /&gt;
==Схема sr_sound_act==&lt;br /&gt;
Схема играет звук в голове актера. Всякие там переговоры по ПДА и прочие фейки.&lt;br /&gt;
&lt;br /&gt;
'''[sr_sound_act]'''&amp;lt;br&amp;gt;&lt;br /&gt;
'''''snd = &amp;lt;путь_звукового_файла&amp;gt;''''' - имя звукового файла относительно папки ''gamedata\sounds''.&amp;lt;br&amp;gt;&lt;br /&gt;
'''''delay = &amp;lt;number&amp;gt;''''' - задержка перед проигрыванием. По умолчанию - 0.&amp;lt;br&amp;gt;&lt;br /&gt;
'''''delay_max = &amp;lt;number&amp;gt;''''' - между проигрыванием звука будет взят случайный промежуток между '''''delay''''' и '''''delay_max'''''.&amp;lt;br&amp;gt;&lt;br /&gt;
'''''theme = &amp;lt;название_звуковой_темы&amp;gt;''''' - имя темы из файла ''sound_theme.script''.&amp;lt;br&amp;gt;&lt;br /&gt;
'''''stereo = true/false''''' - при установке этого параметра к файлу, который задан параметром '''''snd''''' или в звуковой теме,&lt;br /&gt;
:автоматически будут добавляться суффиксы '''''_r''''' и '''''_l''''' для загрузки левого и правого каналов и, соответственно, всё это будет проигрываться.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Поддерживается сигнал '''''sound_end'''''.&lt;br /&gt;
&lt;br /&gt;
Если указывается тема, то звук будет играть зациклено, случайным образом выбирая один из звуков прописанных в теме, если указывается звук, то он отыгрывается один раз.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''''Пример использования схемы''''':&amp;lt;ini&amp;gt;[logic]&lt;br /&gt;
active = sr_idle&lt;br /&gt;
&lt;br /&gt;
[sr_idle]&lt;br /&gt;
on_actor_inside = sr_sound_act&lt;br /&gt;
&lt;br /&gt;
[sr_sound_act]&lt;br /&gt;
theme = sar_monolith_call&lt;br /&gt;
delay = 10000&lt;br /&gt;
delay_max = 15000&lt;br /&gt;
stereo = true&lt;br /&gt;
on_info = {+sar2_monolith_miracle} sr_idle@end&amp;lt;/ini&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Файл: ''gamedata\scripts\sr_sound2d.script''&lt;br /&gt;
&lt;br /&gt;
==Схема sr_timer==&lt;br /&gt;
Схема использовать для производства каких либо действий в зависимости от состояния таймера.&lt;br /&gt;
&lt;br /&gt;
'''[sr_timer]'''&amp;lt;br&amp;gt;&lt;br /&gt;
'''''type = dec/inc''''' - тип счётчика.&lt;br /&gt;
:*'''''dec''''' - декриментирующий, т.е. обратный отсчёт;&amp;lt;br&amp;gt;&lt;br /&gt;
:*'''''inc''''' - инрементирующий, т.е. отчёт по возрастанию.&amp;lt;br&amp;gt;&lt;br /&gt;
'''''start_value = &amp;lt;number&amp;gt;''''' - начальное значение счетчика в реальных миллисекундах.&lt;br /&gt;
:Для декриментирующих счетчиков задавать обязательно. Для инкриментирующих, если не задано, то считается с 0.&amp;lt;br&amp;gt;&lt;br /&gt;
'''''on_value = &amp;lt;number&amp;gt;|%+info -info =func% &amp;lt;название_схемы&amp;gt;''''' - производит действие в зависимости от состояния счётчика.&amp;lt;br&amp;gt;&lt;br /&gt;
'''''string = &amp;lt;имя_текса&amp;gt;''''' - строка с '''''id''''' текста зарегистрированного в папке ''gamedata\config\text''.&lt;br /&gt;
&lt;br /&gt;
'''''Пример использования схемы''''':&amp;lt;ini&amp;gt;[logic]&lt;br /&gt;
active = sr_idle&lt;br /&gt;
 &lt;br /&gt;
[sr_idle]&lt;br /&gt;
on_actor_inside = sr_timer@1&lt;br /&gt;
 &lt;br /&gt;
[sr_timer@1]&lt;br /&gt;
type = dec&lt;br /&gt;
start_value = 1000000&lt;br /&gt;
on_value = 5 | %=play_snd(characters_voice\scenario\radar\rad_hat_2)% | 0 | nil %=aes_kill_actor%&lt;br /&gt;
on_actor_outside = sr_idle&lt;br /&gt;
on_info = {+bar_deactivate_radar_done} nil&lt;br /&gt;
string = st_helmet_countdown&amp;lt;/ini&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Файл: ''gamedata\scripts\sr_timer.script''&lt;br /&gt;
&lt;br /&gt;
==Схема sr_psy_antenna==&lt;br /&gt;
Зоны с такой секцией позволяют управлять эффектами от пси-воздействия (на Янтаре и Радаре). Сейчас можно управлять интенсивностью излучения и интенсивностью получения повреждений.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''[sr_psy_antenna]'''&amp;lt;br&amp;gt;&lt;br /&gt;
'''''eff_intensity = &amp;lt;number&amp;gt;''''' - увеличение/уменьшение в процентах от базового значения интенсивности излучения.&amp;lt;br&amp;gt;&lt;br /&gt;
'''''hit_intensity = &amp;lt;nymber&amp;gt;''''' - увеличение/уменьшение в процентах от базового значения наносимого повреждения.&amp;lt;br&amp;gt;&lt;br /&gt;
'''''phantom_prob = &amp;lt;nymber&amp;gt;''''' - вероятность проявления фантомов в процентах. По умолчанию - 0.&amp;lt;br&amp;gt;&lt;br /&gt;
'''''postprocess = &amp;lt;имя_постэффекта&amp;gt;''''' - файл постэффекта, относительно папки ''gamedata\anims''. Расширение ставить обязательно! По умолчанию - ''psy_antenna.ppe''.&amp;lt;br&amp;gt;&lt;br /&gt;
'''''mute_sound_threshold = &amp;lt;number&amp;gt;''''' - предел до которого можно занижать звук уровня. 0 - глушит полностью, стоит по умолчанию.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''''Пример использования схемы''''':&amp;lt;ini&amp;gt;[logic]&lt;br /&gt;
active = sr_psy_antenna@good_helmet&lt;br /&gt;
&lt;br /&gt;
[sr_psy_antenna@good_helmet]&lt;br /&gt;
eff_intensity = -10&lt;br /&gt;
hit_intensity = 0&lt;br /&gt;
phantom_prob = 45&amp;lt;/ini&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Файл: ''gamedata\scripts\sr_psy_antenna.script''&lt;br /&gt;
&lt;br /&gt;
==Схема sr_teleport==&lt;br /&gt;
Схема позволяет телепортировать актора в пределах локации.&lt;br /&gt;
&lt;br /&gt;
'''[sr_teleport]'''&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''''point = &amp;lt;имя_пути&amp;gt;''''' - патрульный путь из одной точки, куда переместится актор.&amp;lt;br&amp;gt;&lt;br /&gt;
'''''look = &amp;lt;имя_пути&amp;gt;''''' - патрульный путь из одной точки, куда будет смотреть актор после перемещения.&amp;lt;br&amp;gt;&lt;br /&gt;
'''''prob = &amp;lt;number&amp;gt;''''' - вероятность перемещения в заданную точку. По умолчанию - 100.&amp;lt;br&amp;gt;&lt;br /&gt;
'''''timeout = &amp;lt;number&amp;gt;''''' - задержка срабатывания телепорта в миллисекундах. По умолчанию - 900.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Телепорты желательно ставить совместно с особой аномальной зоной (партиклом). Зона добавит визуализацию и создаст эффект втягивания.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''''Пример использования схемы''''':&amp;lt;ini&amp;gt;[logic]&lt;br /&gt;
active = sr_teleport&lt;br /&gt;
&lt;br /&gt;
[sr_teleport]&lt;br /&gt;
point1 = aes2_teleport_walk_exit1&lt;br /&gt;
look1 = aes2_teleport_look_exit1&lt;br /&gt;
prob1 = 10&lt;br /&gt;
point2 = aes2_teleport_walk_exit2&lt;br /&gt;
look2 = aes2_teleport_look_exit2&lt;br /&gt;
prob2 = 20&lt;br /&gt;
timeout = 0&amp;lt;/ini&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Файл: ''gamedata\scripts\sr_teleport.script''&lt;br /&gt;
&lt;br /&gt;
==Схема sr_sleep==&lt;br /&gt;
Появилась возможность задавать зоны сна.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''[sr_sleep]'''&amp;lt;br&amp;gt;&lt;br /&gt;
'''''cond = {+info -info =func !func ~number}''''' - условия, при выполнении которых сон будет возможен.&amp;lt;br&amp;gt;&lt;br /&gt;
'''''type = nightmare/normal/happy/all''''' - задает тип сна разрешенный в данной зоне (по умолчанию '''''all'''''). Влияет (группирует) только на не сценарные сны.&lt;br /&gt;
'''''dream_prob = &amp;lt;number&amp;gt;''''' - вероятность просмотра не сценарных сновидений в данной зоне (по умолчанию 80). В противном случае будет только черный экран.&lt;br /&gt;
&lt;br /&gt;
Необязательное поле '''''cond''''' задает условие(я), при котором в этой зоне можно спать. Сейчас производится индикация зон, где разрешен сон. В левом нижнем углу отображается маленькая иконка легких при входе в такую зону. Вероятно, позже будет изменена на другую.&amp;lt;br&amp;gt;&lt;br /&gt;
Сновидения теперь делятся на сценарные и обычные. Сценарные сновидения отыгрываются один раз при выполнении необходимых условий. Обычные сновидения проигрываются, если нет сценарных или ни одно условие выполнения сценарных не сработало. Можно задавать вероятность отыгрывания обычных сновидений в целом, а также задавать вероятность срабатывания каждого конкретного сновидения в отдельности. Обычным сновидениям можно задавать тип и потом ограничивать по нему сны воспроизводимые в управляемом файле.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В файле ''misc\dream.ltx'' задаются настройки снов.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Секция '''''videos'''''.&amp;lt;br&amp;gt;&lt;br /&gt;
Полями задаются пути к видео файлам со снами.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Секция '''''dreams'''''. Поля:&amp;lt;br&amp;gt;&lt;br /&gt;
'''''regular_probability = &amp;lt;number&amp;gt;''''' - вероятность проигрывания обычных сновидений в целом;&amp;lt;br&amp;gt;&lt;br /&gt;
'''''regular = &amp;lt;секции&amp;gt;''''' - список секций с настройками для обычных сновидений;&amp;lt;br&amp;gt;&lt;br /&gt;
'''''scene = &amp;lt;секции&amp;gt;''''' - список секций с настройками для сценарных сновидений.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Настройки обычных сновидений:&amp;lt;br&amp;gt;&lt;br /&gt;
'''''dream = &amp;lt;название&amp;gt;''''' - имя поля из секции '''''videos''''';&amp;lt;br&amp;gt;&lt;br /&gt;
'''''probability = &amp;lt;number&amp;gt;''''' - чем больше, тем больше вероятность проигрывания сна;&amp;lt;br&amp;gt;&lt;br /&gt;
'''''type = nightmare/normal/happy''''' - тип сна.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Настройки сценарных сновидений:&amp;lt;br&amp;gt;&lt;br /&gt;
'''''dream = &amp;lt;название&amp;gt;''''' - имя поля из секции '''''videos''''';&amp;lt;br&amp;gt;&lt;br /&gt;
'''''cond = {+info -info =func !func ~number} - условия срабатывания;&amp;lt;br&amp;gt;&lt;br /&gt;
'''''to_regular = &amp;lt;number&amp;gt;,&amp;lt;тип&amp;gt;''''' - необязательное поле. Дает возможность переводить сценарный сон после первого отыгрыша в разряд обычных. &amp;lt;'''''number'''''&amp;gt;, &amp;lt;'''''тип'''''&amp;gt; аналогичны '''''probability''''' и '''''type''''' из настроек обычных сновидений соответственно.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''''Примечание''''': до релиза данная схема дошла сильно порезанной, все параметры в управляющем файле были закомментированы, поэтому данная схема не работает, если быть точнее, то ничего не делает.&lt;br /&gt;
&lt;br /&gt;
Файл: ''gamedata\scripts\sr_sleep.script''&lt;br /&gt;
&lt;br /&gt;
==Схема sr_cutscene==&lt;br /&gt;
&lt;br /&gt;
Эта схема предназначена для проведения анимации камеры c некоторым эффектом ('''''pp_effector'''''). Последовательность действий, осуществляемых схемой, состоит из мгновенного перемещения игрока в начало пути '''''point''''' и ориентации его взгляда на начало пути '''''look''''', потери управления игроком и начала анимации камеры '''''cam_effector''''' по завершении которой игрок вновь получает управление.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''[sr_cutscene]'''&amp;lt;br&amp;gt;&lt;br /&gt;
'''''point = &amp;lt;имя_пути&amp;gt;''''' - путь в первую точку которого переносится игрок.&amp;lt;br&amp;gt;&lt;br /&gt;
'''''look = &amp;lt;имя_пути&amp;gt;''''' - путь в первую точку которого смотрит игрок.&amp;lt;br&amp;gt;&lt;br /&gt;
'''''pp_effector = &amp;lt;имя_постэффекта&amp;gt;''''' - файл, расположенный в папке ''gamedata\anims\'' и содержащий эффект (имя файла пишется без расширения).&amp;lt;br&amp;gt;&lt;br /&gt;
'''''cam_effector = &amp;lt;имя_анимации_камеры&amp;gt;''''' - файл, расположенный в папке ''gamedata\anims\camera_effects\'' и содержащий анимацию камеры (имя файла пишется без расширения).&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Поддерживается сигнал '''''cameff_end'''''.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''''Пример использования схемы''''':&amp;lt;ini&amp;gt;[logic]&lt;br /&gt;
active = sr_idle&lt;br /&gt;
&lt;br /&gt;
[sr_idle]&lt;br /&gt;
on_actor_inside = sr_cutscene&lt;br /&gt;
&lt;br /&gt;
[sr_cutscene]&lt;br /&gt;
point = agr_cutscene_walk&lt;br /&gt;
look = agr_cutscene_look&lt;br /&gt;
cam_effector = agroprom_demo&lt;br /&gt;
on_signal = cameff_end | nil&amp;lt;/ini&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Файл: ''gamedata\scripts\sr_cutscene.script''&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;font size = 5&amp;gt;[[Часть 4]]&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Категория:A-Life]][[Категория:Скрипты]]&lt;/div&gt;</summary>
		<author><name>81.162.64.75</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>2016-08-06T07:57:33Z</updated>
		
		<summary type="html">&lt;p&gt;81.162.64.75: /* Схема sr_light */&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;
on_hit = hit&lt;br /&gt;
on_death = death&lt;br /&gt;
combat_ignore_cond = {-alert}&lt;br /&gt;
&lt;br /&gt;
[combat_ignore]&amp;lt;/ini&amp;gt;&lt;br /&gt;
Рассмотрим ее пошагово.&amp;lt;br&amp;gt;&lt;br /&gt;
Вначале сталкер работает по схеме '''''walker'''''. При этом он игнорирует бой, пока не будет поставлен инфопоршн '''''alert''''. Он ждет 25 секунд, после чего переходит в схему '''''remark'''''. В ремарке он проигрывает анимацию '''''idle''''', говорит на указанные темы, не поворачивается и не двигается и точно также игнорирует бой. Если по нему попадут ('''''on_hit''''') или убьют ('''''on_death'''''), будет поставлен инфопоршн '''''alert''''' и он перестанет игнорировать бой (понятно, что если он будет трупом, то это ему не поможет, но их в сценке трое, и тогда сорвутся в бой все остальные). Если его убьют, то также будет поставлен инфопоршн '''''trup3''''' который сообщит о том, что этот NPC убит.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
А  вот логика его противника:&amp;lt;ini&amp;gt;[logic]&lt;br /&gt;
active = walker&lt;br /&gt;
combat_ignore = combat_ignore&lt;br /&gt;
&lt;br /&gt;
[walker]&lt;br /&gt;
path_walk = soldier_walk1&lt;br /&gt;
path_look = soldier_look1&lt;br /&gt;
combat_ignore_cond = always&lt;br /&gt;
team = assault_group&lt;br /&gt;
on_signal = assault | camper&lt;br /&gt;
&lt;br /&gt;
[camper]&lt;br /&gt;
path_walk = soldier_walk1_2&lt;br /&gt;
path_look = soldier_look1_2&lt;br /&gt;
radius = 5&amp;lt;br&amp;gt;&lt;br /&gt;
on_info = {+trup1 +trup2 +trup3} walker2&lt;br /&gt;
&lt;br /&gt;
[walker2]&amp;lt;br&amp;gt;&lt;br /&gt;
path_walk = soldier_walk1_3&lt;br /&gt;
path_look = soldier_look1_3&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[combat_ignore]&amp;lt;/ini&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Он идет в схеме '''''walker''''', игнорируя бой (причем игнорируя в любой ситуации). Идет в составе группы '''''assault_group'''''. Когда он приходит в конечную точку маршрута (там он синхронизируется с остальными из группы, это приписано в путях) и получает сигнал '''''assault''''', то переходит в схему '''''camper'''''. В этой схеме у него не прописан '''''combat_ignore''''', поэтому он начинает стрелять по противнику. После того, как все трое противников будут убиты, каждый из них, умирая ставит инфопоршн '''''trup1''''', '''''trup2''''' или '''''trup3''''' и когда все трое будут убиты, то он переключится на схему '''''walker2''''' (подойдет к костру).&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Схемы логики space_restrictor=&lt;br /&gt;
&lt;br /&gt;
'''''Общее замечание''''': Чтобы исключить ситуацию, когда актёр проскакивает через рестриктор и тот не успевает сработать, старайтесь ставить рестриктор так, чтоб минимальная ширина была больше 2 метров.&lt;br /&gt;
&lt;br /&gt;
==Схема sr_idle==	&lt;br /&gt;
Предназначение данной схемы – включить другую схему при срабатывании одного из стандартных условий логической схемы.&amp;lt;br&amp;gt;&lt;br /&gt;
Сама по себе схема ничего не делает.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''[sr_idle]'''&amp;lt;br&amp;gt;&lt;br /&gt;
'''''on_actor_inside = nil %+esc_actor_inside%'''''&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Обратите внимание, что после срабатывания проверки активная схема переключается в '''''nil''''', чтобы не продолжать бесполезную проверку на каждом апдейте. Можно не задавать '''''nil'''''.&amp;lt;br&amp;gt;&lt;br /&gt;
Часто эта схема работает вместе со спавнером, рестриктор выдает инфопоршн, при входе в зону, а спавнер по нему уже кого-то спавнит.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''''Пример использования схемы''''':&amp;lt;ini&amp;gt;[logic]&lt;br /&gt;
active = sr_idle&lt;br /&gt;
&lt;br /&gt;
[sr_idle]&lt;br /&gt;
on_actor_inside = {+val_raid_start -esc_return -esc_trader_speak} nil %=esc_return_dv +esc_return +esc_trader_speak%&amp;lt;/ini&amp;gt;&lt;br /&gt;
&lt;br /&gt;
файл ''gamedata\scripts\sr_idle.script''&lt;br /&gt;
&lt;br /&gt;
==Схема sr_no_weapon==&lt;br /&gt;
Данная схема убирает оружие у игрока при входе в зону.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''[sr_no_weapon]'''&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''''Пример использования схемы''''':&amp;lt;ini&amp;gt;[logic]&lt;br /&gt;
active = sr_no_weapon&lt;br /&gt;
&lt;br /&gt;
[sr_no_weapon]&amp;lt;/ini&amp;gt;&lt;br /&gt;
&lt;br /&gt;
файл ''gamedata\scripts\sr_no_weapon.script''&lt;br /&gt;
&lt;br /&gt;
==Схема sr_sound==&lt;br /&gt;
&lt;br /&gt;
Схема предназначена для отыгрывание звука при входе актора в '''''space_restrictor'''''.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''[sr_sound]'''&amp;lt;br&amp;gt;&lt;br /&gt;
'''''snd = &amp;lt;путь_звукового_файла&amp;gt;''''' - перечень имён звуков разделенных запятыми (путь учитывается относительно папки ''gamedata\sounds'').&amp;lt;br&amp;gt;&lt;br /&gt;
'''''type = &amp;lt;параметр&amp;gt;''''' - типы звуков через запятые. Для удобства введены типы наборов звуков в таблице '''''sound_types''''' управляющего файла. Всего их три:&amp;lt;br&amp;gt;&lt;br /&gt;
:*'''''floor_wooden''''';&amp;lt;br&amp;gt;&lt;br /&gt;
:*'''''rats_panic''''';&amp;lt;br&amp;gt;&lt;br /&gt;
:*'''''random'''''.&amp;lt;br&amp;gt;&lt;br /&gt;
'''''delay = &amp;lt;number&amp;gt;''''' - задержка перед проигрыванием звука в секундах реального времени, по умолчанию 0.&amp;lt;br&amp;gt;&lt;br /&gt;
'''''idle = &amp;lt;number&amp;gt;''''' - длина периода игнорирования входа в зону после начала последнего проигранного звука.&lt;br /&gt;
:Чтоб, например, &amp;quot;завывание&amp;quot; было не чаще, чем раз в несколько минут. Указывается в секундах игрового времени. По умолчанию 0.&amp;lt;br&amp;gt;&lt;br /&gt;
'''''rnd = &amp;lt;number&amp;gt;''''' - вероятность (в процентах) того, что звук отыграется. По умолчанию 100.&amp;lt;br&amp;gt;&lt;br /&gt;
'''''position = &amp;lt;имя_пути&amp;gt;''''' - задает имя пути, в вершинах которого может отыграться звук.&lt;br /&gt;
:Есть зарезервированное значение '''''random'''''. Оно означает случайное место в радиусе от 15 до 50 метров от игрока. Если этот параметр не задан, то подразумевается позиция игрока.&amp;lt;br&amp;gt;&lt;br /&gt;
'''''slide_velocity = &amp;lt;number&amp;gt;''''' - скорость (м/с) передвижения звука по точкам патрульного пути. По умолчанию - 3.&amp;lt;br&amp;gt;&lt;br /&gt;
'''''slide_sound_once = true\false''''' - в случае значения '''''true''''' - проиграть звук один раз, даже если он не дошел до последней точки пути,&lt;br /&gt;
:иначе если '''''false''''' – и если звук закончился, а до последней точки пути не дошел, запустить его ещё раз. По умолчанию '''''false'''''.&amp;lt;br&amp;gt;&lt;br /&gt;
'''''play_at_actor = true/false''''' - заставляет звук играться от позиции актера постоянно.&lt;br /&gt;
:Если он будет равен '''''true''''' и будет задан путь перемещения звука (или рандом), то мы тупо вылетим.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Поддерживается сигнал '''''sound_end'''''.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Обязательно нужно задать либо '''''snd''''', либо '''''type'''''. Можно их задать вместе. На базе этих параметров составляется список звуков. При входе актора в рестриктор отыгрывается случайный звук из этого списка.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''''Пример использования схемы''''':&amp;lt;ini&amp;gt;[logic]&lt;br /&gt;
active = sr_idle&lt;br /&gt;
&lt;br /&gt;
[sr_idle]&lt;br /&gt;
on_actor_inside = sr_sound@shooting&lt;br /&gt;
&lt;br /&gt;
[sr_sound@shooting]&lt;br /&gt;
snd = characters_voice\scenario\garbage\grey_grey_1&lt;br /&gt;
play_at_actor = true&lt;br /&gt;
on_signal = sound_end| nil&lt;br /&gt;
on_timer = 20000| nil&amp;lt;/ini&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Есть возможность сделать «скользящий звук». Необходим патрульный путь. Звук начинает отыгрываться с начала пути и перемещается от одной точки пути к другой (по мере их установки на патрульном пути) со скоростью '''''slide_velocity'''''. Пример:&amp;lt;ini&amp;gt;[logic]&lt;br /&gt;
active = sr_sound&lt;br /&gt;
&lt;br /&gt;
[sr_sound]&lt;br /&gt;
type = random&lt;br /&gt;
position = way&lt;br /&gt;
slide_velocity = 8&lt;br /&gt;
slide_sound_once = true&amp;lt;/ini&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Файл ''gamedata\scripts\sr_sound.script''&lt;br /&gt;
&lt;br /&gt;
==Схема sr_tip==&lt;br /&gt;
Предназначение данной схемы – давать игроку сообщение (подсказку) при входе в рестриктор.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''[sr_tip]'''&amp;lt;br&amp;gt;&lt;br /&gt;
'''''name = &amp;lt;имя_текса&amp;gt;''''' - строка с '''''id''''' текста зарегистрированного в папке ''gamedata\config\text''.&amp;lt;br&amp;gt;&lt;br /&gt;
'''''type = news/tips''''' - параметр рудиментарный и не на что не влияет.&amp;lt;br&amp;gt;&lt;br /&gt;
'''''sender = &amp;lt;параметр&amp;gt;''''' - задаёт условный строковый идентификатор иконки персонажа, от которого якобы пришло сообщение.&lt;br /&gt;
:По умолчанию это иконка торговца. Возможны следующие значения: '''''default, trader, dolg, freedom, ecolog, arena, stalker, krot, barman, wolf, o_soznanie, monolith, saharov, prizrak, killer'''''.&amp;lt;br&amp;gt;&lt;br /&gt;
'''''cond = {+info -info =func !func ~number}''''' - необходимые логические условия, при которых подсказка сработает. По дефолту, сработает при входе в зону.&amp;lt;br&amp;gt;&lt;br /&gt;
'''''single = true/false''''' - если параметр в '''''true''''', то типс будет выдан только один раз. По умолчанию '''''false'''''.&amp;lt;br&amp;gt;&lt;br /&gt;
'''''timeout = &amp;lt;number&amp;gt;''''' - задержка вывода сообщения в секундах. По умолчанию - 0.&amp;lt;br&amp;gt;&lt;br /&gt;
'''''showtime = &amp;lt;number&amp;gt;''''' - время показа сообщения на экране. Задаётся в милисекундах. По умолчанию - 5000.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Поддерживается сигнал '''''tip_sended''''', только в случае установленного параметра '''''single'''''.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''''Пример использования схемы''''':&amp;lt;ini&amp;gt;[logic]&lt;br /&gt;
active = sr_idle&lt;br /&gt;
&lt;br /&gt;
[sr_idle]&lt;br /&gt;
on_actor_inside = sr_tip&lt;br /&gt;
&lt;br /&gt;
[sr_tip] &lt;br /&gt;
name = rad_barman_spam&lt;br /&gt;
type = tips&lt;br /&gt;
cond = {+bar_deactivate_radar_done} &lt;br /&gt;
sender = barman&lt;br /&gt;
on_actor_inside = nil&lt;br /&gt;
showtime = 25000&amp;lt;/ini&amp;gt;&lt;br /&gt;
&lt;br /&gt;
файл ''gamedata\scripts\sr_tip.script''&lt;br /&gt;
&lt;br /&gt;
==Схема sr_light==&lt;br /&gt;
Зона, управляющая вкл\откл фонариков NPC.&lt;br /&gt;
&lt;br /&gt;
'''[sr_light]'''&amp;lt;br&amp;gt;&lt;br /&gt;
'''''light_on = true/false''''' - включен/выключен свет.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''''Пример использования схемы''''':&amp;lt;ini&amp;gt;[logic]&lt;br /&gt;
active = sr_light&lt;br /&gt;
&lt;br /&gt;
[sr_light]&lt;br /&gt;
light_on = true&amp;lt;/ini&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Файл: ''gamedata\scripts\sr_light.script''&lt;br /&gt;
&lt;br /&gt;
==Схема sr_territory==&lt;br /&gt;
&lt;br /&gt;
Занимается эта схема тем, что отлавливает всякие события, происходящие внутри рестриктора.&lt;br /&gt;
Пока что она отлавливает только хиты и смерть NPC.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''[sr_territory]'''&amp;lt;br&amp;gt;&lt;br /&gt;
'''''territory_hit = {+info -info =func !func ~number} %+info -info =func%''''' - эффекты, которые произойдут при нанесении хита от актора, будучи в этой зоне.&amp;lt;br&amp;gt;&lt;br /&gt;
'''''territory_death = {+info -info =func !func ~number} %+info -info =func%''''' - эффекты, которые произойдут при смерти от &amp;quot;рук&amp;quot; актора, будучи в этой зоне.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Поскольку схема работает только с игроком – то хиты и смерть засчитываются только от игрока.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''''Пример использования схемы''''':&amp;lt;ini&amp;gt;[logic]&lt;br /&gt;
active = sr_territory@1&lt;br /&gt;
&lt;br /&gt;
[sr_territory@1]&lt;br /&gt;
territory_death = sr_idle@1 %+bar_arena_territory_death%&amp;lt;/ini&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Файл: ''gamedata\scripts\sr_territory.script''&lt;br /&gt;
&lt;br /&gt;
==Схема sr_mapspot==&lt;br /&gt;
При входе в рестриктор он сам себя подсвечивает на карте.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''[sr_mapspot]'''&amp;lt;br&amp;gt;&lt;br /&gt;
'''''hint = &amp;lt;имя_текса&amp;gt;''''' - строка с '''''id''''' текста зарегистрированного в папке ''gamedata\config\text''.&amp;lt;br&amp;gt;&lt;br /&gt;
'''''location = &amp;lt;имя_метки&amp;gt;''''' - имя типа метки, зарегистрированное в файле ''config\ui\map_spots.xml'' и всех, что в него включены инклюдами. По умолчанию - '''''crlc_small'''''.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''''Пример использования схемы''''':&amp;lt;ini&amp;gt;[logic]&lt;br /&gt;
active = sr_idle&lt;br /&gt;
 &lt;br /&gt;
[sr_idle]&lt;br /&gt;
on_actor_inside = sr_mapspot&lt;br /&gt;
&lt;br /&gt;
[sr_mapspot]&lt;br /&gt;
hint = gar_swamp&lt;br /&gt;
location = crcl_big&amp;lt;/ini&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Файл: ''gamedata\scripts\sr_mapspot.script''&lt;br /&gt;
&lt;br /&gt;
==Схема sr_particle==&lt;br /&gt;
Данная система отыгрывает партиклы, как статичные, так и движущиеся, в указанном месте и в указанное время.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''[sr_particle]'''&amp;lt;br&amp;gt;&lt;br /&gt;
'''''name = &amp;lt;имя_партикла&amp;gt;''''' - путь до партикла относительно файла ''particles.xr''.&amp;lt;br&amp;gt;&lt;br /&gt;
'''''path = &amp;lt;имя_пути&amp;gt;''''' - точки движения партикла. Возможны два случая:&lt;br /&gt;
:#Когда указывается путь анимации камеры (путь учитывается относительно папки ''gamedata\anims'');&amp;lt;br&amp;gt;&lt;br /&gt;
:#Когда указывается имя патрульного пути.&amp;lt;br&amp;gt;&lt;br /&gt;
'''''mode = &amp;lt;параметр&amp;gt;''''' - параметр обязательный и имеет два значения:&lt;br /&gt;
:* 1 - устанавливается в случае указания анимации камеры для параметра '''''path''''';&amp;lt;br&amp;gt;&lt;br /&gt;
:* 2 - устанавливается в случае указания патрульного пути для параметра '''''path'''''.&amp;lt;br&amp;gt;&lt;br /&gt;
'''''looped = true/false''''' - флаг зацикленности партиклов.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''''Примечание''''': для пути движения партикла, когда установлена анимация движения камеры, для имени файла необходимо ставить расширение '''''.anm''''' (например ''arena.anm'').&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Поддерживается сигнал '''''particle_end'''''.&lt;br /&gt;
&lt;br /&gt;
В вейпоинтах патрульного пути можно задавать флаги:&amp;lt;br&amp;gt;&lt;br /&gt;
:*'''''s=&amp;lt;название_звуковой_темы&amp;gt;''''' - звук проигрываемый во время движения;&amp;lt;br&amp;gt;&lt;br /&gt;
:*'''''d=&amp;lt;number&amp;gt;''''' - время задержки перед проигрыванием, задается в миллисекундах. По умолчанию - 0.&amp;lt;br&amp;gt; &lt;br /&gt;
&lt;br /&gt;
При '''''looped = true''''', по окончании проигрывания партиклов, они будут запускаться сначала, но уже без задержек. Сигнал '''''particle_end''''' выдаваться не будет.&amp;lt;br&amp;gt;&lt;br /&gt;
При '''''looped = false''''' сигнал будет выдан, когда все источники партиклов отыграют.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Данная схема отслеживающим партиклы и нет никакой необходимости чтобы игрок в него заходил.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''''Пример использования схемы''''':&amp;lt;ini&amp;gt;[logic]&lt;br /&gt;
active = sr_idle&lt;br /&gt;
&lt;br /&gt;
[sr_idle]&lt;br /&gt;
on_info = {+sar_mon_poltergeist_1_spawn} sr_particle&lt;br /&gt;
&lt;br /&gt;
[sr_particle]&lt;br /&gt;
name = anomaly2\gravity_blast_03      &lt;br /&gt;
path = sar_poltergeist_1_way                  &lt;br /&gt;
mode = 2 				&lt;br /&gt;
looped = false               &lt;br /&gt;
on_signal = particle_end | sr_idle@2&amp;lt;/ini&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Файл: ''gamedata\scripts\sr_particle.script''&lt;br /&gt;
&lt;br /&gt;
==Схема sr_sound_act==&lt;br /&gt;
Схема играет звук в голове актера. Всякие там переговоры по ПДА и прочие фейки.&lt;br /&gt;
&lt;br /&gt;
'''[sr_sound_act]'''&amp;lt;br&amp;gt;&lt;br /&gt;
'''''snd = &amp;lt;путь_звукового_файла&amp;gt;''''' - имя звукового файла относительно папки ''gamedata\sounds''.&amp;lt;br&amp;gt;&lt;br /&gt;
'''''delay = &amp;lt;number&amp;gt;''''' - задержка перед проигрыванием. По умолчанию - 0.&amp;lt;br&amp;gt;&lt;br /&gt;
'''''delay_max = &amp;lt;number&amp;gt;''''' - между проигрыванием звука будет взят случайный промежуток между '''''delay''''' и '''''delay_max'''''.&amp;lt;br&amp;gt;&lt;br /&gt;
'''''theme = &amp;lt;название_звуковой_темы&amp;gt;''''' - имя темы из файла ''sound_theme.script''.&amp;lt;br&amp;gt;&lt;br /&gt;
'''''stereo = true/false''''' - при установке этого параметра к файлу, который задан параметром '''''snd''''' или в звуковой теме,&lt;br /&gt;
:автоматически будут добавляться суффиксы '''''_r''''' и '''''_l''''' для загрузки левого и правого каналов и, соответственно, всё это будет проигрываться.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Поддерживается сигнал '''''sound_end'''''.&lt;br /&gt;
&lt;br /&gt;
Если указывается тема, то звук будет играть зациклено, случайным образом выбирая один из звуков прописанных в теме, если указывается звук, то он отыгрывается один раз.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''''Пример использования схемы''''':&amp;lt;ini&amp;gt;[logic]&lt;br /&gt;
active = sr_idle&lt;br /&gt;
&lt;br /&gt;
[sr_idle]&lt;br /&gt;
on_actor_inside = sr_sound_act&lt;br /&gt;
&lt;br /&gt;
[sr_sound_act]&lt;br /&gt;
theme = sar_monolith_call&lt;br /&gt;
delay = 10000&lt;br /&gt;
delay_max = 15000&lt;br /&gt;
stereo = true&lt;br /&gt;
on_info = {+sar2_monolith_miracle} sr_idle@end&amp;lt;/ini&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Файл: ''gamedata\scripts\sr_sound2d.script''&lt;br /&gt;
&lt;br /&gt;
==Схема sr_timer==&lt;br /&gt;
Схема использовать для производства каких либо действий в зависимости от состояния таймера.&lt;br /&gt;
&lt;br /&gt;
'''[sr_timer]'''&amp;lt;br&amp;gt;&lt;br /&gt;
'''''type = dec/inc''''' - тип счётчика.&lt;br /&gt;
:*'''''dec''''' - декриментирующий, т.е. обратный отсчёт;&amp;lt;br&amp;gt;&lt;br /&gt;
:*'''''inc''''' - инрементирующий, т.е. отчёт по возрастанию.&amp;lt;br&amp;gt;&lt;br /&gt;
'''''start_value = &amp;lt;number&amp;gt;''''' - начальное значение счетчика в реальных миллисекундах.&lt;br /&gt;
:Для декриментирующих счетчиков задавать обязательно. Для инкриментирующих, если не задано, то считается с 0.&amp;lt;br&amp;gt;&lt;br /&gt;
'''''on_value = &amp;lt;number&amp;gt;|%+info -info =func% &amp;lt;название_схемы&amp;gt;''''' - производит действие в зависимости от состояния счётчика.&amp;lt;br&amp;gt;&lt;br /&gt;
'''''string = &amp;lt;имя_текса&amp;gt;''''' - строка с '''''id''''' текста зарегистрированного в папке ''gamedata\config\text''.&lt;br /&gt;
&lt;br /&gt;
'''''Пример использования схемы''''':&amp;lt;ini&amp;gt;[logic]&lt;br /&gt;
active = sr_idle&lt;br /&gt;
 &lt;br /&gt;
[sr_idle]&lt;br /&gt;
on_actor_inside = sr_timer@1&lt;br /&gt;
 &lt;br /&gt;
[sr_timer@1]&lt;br /&gt;
type = dec&lt;br /&gt;
start_value = 1000000&lt;br /&gt;
on_value = 5 | %=play_snd(characters_voice\scenario\radar\rad_hat_2)% | 0 | nil %=aes_kill_actor%&lt;br /&gt;
on_actor_outside = sr_idle&lt;br /&gt;
on_info = {+bar_deactivate_radar_done} nil&lt;br /&gt;
string = st_helmet_countdown&amp;lt;/ini&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Файл: ''gamedata\scripts\sr_timer.script''&lt;br /&gt;
&lt;br /&gt;
==Схема sr_psy_antenna==&lt;br /&gt;
Зоны с такой секцией позволяют управлять эффектами от пси-воздействия (на Янтаре и Радаре). Сейчас можно управлять интенсивностью излучения и интенсивностью получения повреждений.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''[sr_psy_antenna]'''&amp;lt;br&amp;gt;&lt;br /&gt;
'''''eff_intensity = &amp;lt;number&amp;gt;''''' - увеличение/уменьшение в процентах от базового значения интенсивности излучения.&amp;lt;br&amp;gt;&lt;br /&gt;
'''''hit_intensity = &amp;lt;nymber&amp;gt;''''' - увеличение/уменьшение в процентах от базового значения наносимого повреждения.&amp;lt;br&amp;gt;&lt;br /&gt;
'''''phantom_prob = &amp;lt;nymber&amp;gt;''''' - вероятность проявления фантомов в процентах. По умолчанию - 0.&amp;lt;br&amp;gt;&lt;br /&gt;
'''''postprocess = &amp;lt;имя_постэффекта&amp;gt;''''' - файл постэффекта, относительно папки ''gamedata\anims''. Расширение ставить обязательно! По умолчанию - ''psy_antenna.ppe''.&amp;lt;br&amp;gt;&lt;br /&gt;
'''''mute_sound_threshold = &amp;lt;number&amp;gt;''''' - предел до которого можно занижать звук уровня. 0 - глушит полностью, стоит по умолчанию.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''''Пример использования схемы''''':&amp;lt;ini&amp;gt;[logic]&lt;br /&gt;
active = sr_psy_antenna@good_helmet&lt;br /&gt;
&lt;br /&gt;
[sr_psy_antenna@good_helmet]&lt;br /&gt;
eff_intensity = -10&lt;br /&gt;
hit_intensity = 0&lt;br /&gt;
phantom_prob = 45&amp;lt;/ini&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Файл: ''gamedata\scripts\sr_psy_antenna.script''&lt;br /&gt;
&lt;br /&gt;
==Схема sr_teleport==&lt;br /&gt;
Схема позволяет телепортировать актора в пределах локации.&lt;br /&gt;
&lt;br /&gt;
'''[sr_teleport]'''&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''''point = &amp;lt;имя_пути&amp;gt;''''' - патрульный путь из одной точки, куда переместится актор.&amp;lt;br&amp;gt;&lt;br /&gt;
'''''look = &amp;lt;имя_пути&amp;gt;''''' - патрульный путь из одной точки, куда будет смотреть актор после перемещения.&amp;lt;br&amp;gt;&lt;br /&gt;
'''''prob = &amp;lt;number&amp;gt;''''' - вероятность перемещения в заданную точку. По умолчанию - 100.&amp;lt;br&amp;gt;&lt;br /&gt;
'''''timeout = &amp;lt;number&amp;gt;''''' - задержка срабатывания телепорта в миллисекундах. По умолчанию - 900.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Телепорты желательно ставить совместно с особой аномальной зоной (партиклом). Зона добавит визуализацию и создаст эффект втягивания.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''''Пример использования схемы''''':&amp;lt;ini&amp;gt;[logic]&lt;br /&gt;
active = sr_teleport&lt;br /&gt;
&lt;br /&gt;
[sr_teleport]&lt;br /&gt;
point1 = aes2_teleport_walk_exit1&lt;br /&gt;
look1 = aes2_teleport_look_exit1&lt;br /&gt;
prob1 = 10&lt;br /&gt;
point2 = aes2_teleport_walk_exit2&lt;br /&gt;
look2 = aes2_teleport_look_exit2&lt;br /&gt;
prob2 = 20&lt;br /&gt;
timeout = 0&amp;lt;/ini&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Файл: ''gamedata\scripts\sr_teleport.script''&lt;br /&gt;
&lt;br /&gt;
==Схема sr_sleep==&lt;br /&gt;
Появилась возможность задавать зоны сна.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''[sr_sleep]'''&amp;lt;br&amp;gt;&lt;br /&gt;
'''''cond = {+info -info =func !func ~number}''''' - условия, при выполнении которых сон будет возможен.&amp;lt;br&amp;gt;&lt;br /&gt;
'''''type = nightmare/normal/happy/all''''' - задает тип сна разрешенный в данной зоне (по умолчанию '''''all'''''). Влияет (группирует) только на не сценарные сны.&lt;br /&gt;
'''''dream_prob = &amp;lt;number&amp;gt;''''' - вероятность просмотра не сценарных сновидений в данной зоне (по умолчанию 80). В противном случае будет только черный экран.&lt;br /&gt;
&lt;br /&gt;
Необязательное поле '''''cond''''' задает условие(я), при котором в этой зоне можно спать. Сейчас производится индикация зон, где разрешен сон. В левом нижнем углу отображается маленькая иконка легких при входе в такую зону. Вероятно, позже будет изменена на другую.&amp;lt;br&amp;gt;&lt;br /&gt;
Сновидения теперь делятся на сценарные и обычные. Сценарные сновидения отыгрываются один раз при выполнении необходимых условий. Обычные сновидения проигрываются, если нет сценарных или ни одно условие выполнения сценарных не сработало. Можно задавать вероятность отыгрывания обычных сновидений в целом, а также задавать вероятность срабатывания каждого конкретного сновидения в отдельности. Обычным сновидениям можно задавать тип и потом ограничивать по нему сны воспроизводимые в управляемом файле.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В файле ''misc\dream.ltx'' задаются настройки снов.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Секция '''''videos'''''.&amp;lt;br&amp;gt;&lt;br /&gt;
Полями задаются пути к видео файлам со снами.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Секция '''''dreams'''''. Поля:&amp;lt;br&amp;gt;&lt;br /&gt;
'''''regular_probability = &amp;lt;number&amp;gt;''''' - вероятность проигрывания обычных сновидений в целом;&amp;lt;br&amp;gt;&lt;br /&gt;
'''''regular = &amp;lt;секции&amp;gt;''''' - список секций с настройками для обычных сновидений;&amp;lt;br&amp;gt;&lt;br /&gt;
'''''scene = &amp;lt;секции&amp;gt;''''' - список секций с настройками для сценарных сновидений.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Настройки обычных сновидений:&amp;lt;br&amp;gt;&lt;br /&gt;
'''''dream = &amp;lt;название&amp;gt;''''' - имя поля из секции '''''videos''''';&amp;lt;br&amp;gt;&lt;br /&gt;
'''''probability = &amp;lt;number&amp;gt;''''' - чем больше, тем больше вероятность проигрывания сна;&amp;lt;br&amp;gt;&lt;br /&gt;
'''''type = nightmare/normal/happy''''' - тип сна.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Настройки сценарных сновидений:&amp;lt;br&amp;gt;&lt;br /&gt;
'''''dream = &amp;lt;название&amp;gt;''''' - имя поля из секции '''''videos''''';&amp;lt;br&amp;gt;&lt;br /&gt;
'''''cond = {+info -info =func !func ~number} - условия срабатывания;&amp;lt;br&amp;gt;&lt;br /&gt;
'''''to_regular = &amp;lt;number&amp;gt;,&amp;lt;тип&amp;gt;''''' - необязательное поле. Дает возможность переводить сценарный сон после первого отыгрыша в разряд обычных. &amp;lt;'''''number'''''&amp;gt;, &amp;lt;'''''тип'''''&amp;gt; аналогичны '''''probability''''' и '''''type''''' из настроек обычных сновидений соответственно.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''''Примечание''''': до релиза данная схема дошла сильно порезанной, все параметры в управляющем файле были закомментированы, поэтому данная схема не работает, если быть точнее, то ничего не делает.&lt;br /&gt;
&lt;br /&gt;
Файл: ''gamedata\scripts\sr_sleep.script''&lt;br /&gt;
&lt;br /&gt;
==Схема sr_cutscene==&lt;br /&gt;
&lt;br /&gt;
Эта схема предназначена для проведения анимации камеры c некоторым эффектом ('''''pp_effector'''''). Последовательность действий, осуществляемых схемой, состоит из мгновенного перемещения игрока в начало пути '''''point''''' и ориентации его взгляда на начало пути '''''look''''', потери управления игроком и начала анимации камеры '''''cam_effector''''' по завершении которой игрок вновь получает управление.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''[sr_cutscene]'''&amp;lt;br&amp;gt;&lt;br /&gt;
'''''point = &amp;lt;имя_пути&amp;gt;''''' - путь в первую точку которого переносится игрок.&amp;lt;br&amp;gt;&lt;br /&gt;
'''''look = &amp;lt;имя_пути&amp;gt;''''' - путь в первую точку которого смотрит игрок.&amp;lt;br&amp;gt;&lt;br /&gt;
'''''pp_effector = &amp;lt;имя_постэффекта&amp;gt;''''' - файл, расположенный в папке ''gamedata\anims\'' и содержащий эффект (имя файла пишется без расширения).&amp;lt;br&amp;gt;&lt;br /&gt;
'''''cam_effector = &amp;lt;имя_анимации_камеры&amp;gt;''''' - файл, расположенный в папке ''gamedata\anims\camera_effects\'' и содержащий анимацию камеры (имя файла пишется без расширения).&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Поддерживается сигнал '''''cameff_end'''''.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''''Пример использования схемы''''':&amp;lt;ini&amp;gt;[logic]&lt;br /&gt;
active = sr_idle&lt;br /&gt;
&lt;br /&gt;
[sr_idle]&lt;br /&gt;
on_actor_inside = sr_cutscene&lt;br /&gt;
&lt;br /&gt;
[sr_cutscene]&lt;br /&gt;
point = agr_cutscene_walk&lt;br /&gt;
look = agr_cutscene_look&lt;br /&gt;
cam_effector = agroprom_demo&lt;br /&gt;
on_signal = cameff_end | nil&amp;lt;/ini&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Файл: ''gamedata\scripts\sr_cutscene.script''&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;font size = 5&amp;gt;[[Часть 4]]&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Категория:A-Life]][[Категория:Скрипты]]&lt;/div&gt;</summary>
		<author><name>81.162.64.75</name></author>	</entry>

	</feed>