<?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=Vast</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=Vast"/>
		<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/Vast"/>
		<updated>2026-06-10T06:32:58Z</updated>
		<subtitle>Вклад участника</subtitle>
		<generator>MediaWiki 1.22.6</generator>

	<entry>
		<id>http://stalkerin.gameru.net/wiki/index.php?title=CoP._%D0%A1%D0%B8%D0%BC%D1%83%D0%BB%D1%8F%D1%86%D0%B8%D1%8F._%D0%9F%D0%B0%D1%80%D0%B0%D0%BC%D0%B5%D1%82%D1%80%D1%8B_%D1%81%D0%BC%D0%B0%D1%80%D1%82-%D1%82%D0%B5%D1%80%D1%80%D0%B5%D0%B9%D0%BD%D0%BE%D0%B2.</id>
		<title>CoP. Симуляция. Параметры смарт-террейнов.</title>
		<link rel="alternate" type="text/html" href="http://stalkerin.gameru.net/wiki/index.php?title=CoP._%D0%A1%D0%B8%D0%BC%D1%83%D0%BB%D1%8F%D1%86%D0%B8%D1%8F._%D0%9F%D0%B0%D1%80%D0%B0%D0%BC%D0%B5%D1%82%D1%80%D1%8B_%D1%81%D0%BC%D0%B0%D1%80%D1%82-%D1%82%D0%B5%D1%80%D1%80%D0%B5%D0%B9%D0%BD%D0%BE%D0%B2."/>
				<updated>2016-07-10T17:35:34Z</updated>
		
		<summary type="html">&lt;p&gt;Vast: /* Работа в смарт-террейнах */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Смарт-террейны ==&lt;br /&gt;
Смарт-террейн - это определенный скриптовый класс в игре, при помощи которого происходит заселение локаций. В смартах организуются работы для НПС, реализуется логика для отдельных эксклюзивных персонажей, происходит респавн НПС и монстров, а также организуются укрытия от выброса для НПС.&lt;br /&gt;
&lt;br /&gt;
===== Типы смарт-террейнов =====&lt;br /&gt;
{| class=&amp;quot;standard&amp;quot;&lt;br /&gt;
 !'''default'''&lt;br /&gt;
 |Обычный тип смарт-террейна.&lt;br /&gt;
 |-&lt;br /&gt;
 !'''default_resource'''&lt;br /&gt;
 |Смарты с наличием аномальных зон, в которых есть работа для НПС по поиску артефактов. &lt;br /&gt;
 |-&lt;br /&gt;
 !'''default_base'''&lt;br /&gt;
 |Главный смарт. Сюда идут все отряды с наступлением ночи.&lt;br /&gt;
 |-&lt;br /&gt;
 !'''default_lair'''&lt;br /&gt;
 |Смарт для монстров. Тем не менее сталкеры сюда тоже могут прийти.&lt;br /&gt;
 |-&lt;br /&gt;
 !'''default_squad'''&lt;br /&gt;
 |Не смарт. Класс, выделяющий в симуляции уникальные отряды и персонажей.&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
===== Параметры смарт-террейнов =====&lt;br /&gt;
* '''Необходимые параметры:'''&lt;br /&gt;
{|class=&amp;quot;standard&amp;quot;&lt;br /&gt;
 !Параметр&lt;br /&gt;
 !Описание&lt;br /&gt;
 !Пример&lt;br /&gt;
 |-&lt;br /&gt;
 !'''squad_id'''&lt;br /&gt;
 |Уникальный ID отряда. Никогда не должен повторятся. Для любой локации начинается с единицы.&lt;br /&gt;
 |squad_id = 1&lt;br /&gt;
 |-&lt;br /&gt;
 !'''max_population'''&lt;br /&gt;
 |Количество отрядов, которые может принять смарт. Определяет для скольких отрядов в симуляции тут найдется работа.&lt;br /&gt;
 |max_population = 1&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
* '''Дополнительные параметры: '''&lt;br /&gt;
{| class=&amp;quot;standard&amp;quot;&lt;br /&gt;
 !Параметр&lt;br /&gt;
 !Описание&lt;br /&gt;
 !Пример&lt;br /&gt;
 |-&lt;br /&gt;
 !respawn_only_smart&lt;br /&gt;
 |Могут ли из смарта удаляться отряды в симуляции.&lt;br /&gt;
 |respawn_only_smart = true&lt;br /&gt;
 |-&lt;br /&gt;
 !respawn_params&lt;br /&gt;
 |Ссылка на секцию респауна (параметры этой секции см. ниже).&lt;br /&gt;
 |respawn_params = respawn@base_smart&lt;br /&gt;
 |-&lt;br /&gt;
 !smart_control&lt;br /&gt;
 |Ссылка на секцию с параметрами контроля смарта.&lt;br /&gt;
 |smart_control = smart_control&lt;br /&gt;
 |-&lt;br /&gt;
 !def_restr&lt;br /&gt;
 |Определяет рестриктор, в пределах которой находится лагерь. &lt;br /&gt;
 |def_restr = pri_a16_sr_noweap&lt;br /&gt;
 |-&lt;br /&gt;
 !safe_restr &lt;br /&gt;
 |Определяет рестриктор, в пределах которой НПС бессмертны.&lt;br /&gt;
 |safe_restr = pri_surge_hide_a16&lt;br /&gt;
 |-&lt;br /&gt;
 !spawn_point &lt;br /&gt;
 |Имя вейпоинта, в котором происходит респаун. Может иметь значение ''self''.&lt;br /&gt;
 |spawn_point = zat_sim_16_spawn_point&lt;br /&gt;
 |-&lt;br /&gt;
 !arrive_dist&lt;br /&gt;
 |Определяет расстояние, на котором отряд считается прибывшим в смарт и регистрируется в нем.&lt;br /&gt;
 |arrive_dist = 100&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
* '''Параметры smart_control: '''&lt;br /&gt;
{| class=&amp;quot;standard&amp;quot;&lt;br /&gt;
 !Параметр&lt;br /&gt;
 !Описание&lt;br /&gt;
 !Пример&lt;br /&gt;
 |-&lt;br /&gt;
 !noweap_zone&lt;br /&gt;
 |Определяет рестриктор, в котором запрещается использовать оружие (в том числе актору).&lt;br /&gt;
 |noweap_zone = zat_a2_sr_noweap&lt;br /&gt;
 |-&lt;br /&gt;
 !ignore_zone&lt;br /&gt;
 |Определяет рестриктор, в котором НПС не реагируют на опасности даже если атакованы.&lt;br /&gt;
 |ignore_zone = zat_a2_sr_light&lt;br /&gt;
 |-&lt;br /&gt;
 !alarm_start_sound&lt;br /&gt;
 |Воспроизводит звук из script_sound_...ltx, если актор атаковал смарт.&lt;br /&gt;
 |alarm_start_sound = zat_a2_base_alarm&lt;br /&gt;
 |-&lt;br /&gt;
 !alarm_stop_sound&lt;br /&gt;
 |Воспроизводит звук из script_sound_...ltx, когда тревога закончилась.&lt;br /&gt;
 |alarm_start_sound = zat_a2_base_relax&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
* '''Параметры respawn_params'''&lt;br /&gt;
Данная секция представляет собой список ссылок на секции сквадов, которые будут спауниться в этом смарт-террейне.&amp;lt;br&amp;gt;&lt;br /&gt;
Пример секции: &lt;br /&gt;
&amp;lt;blockquote&amp;gt;'''&lt;br /&gt;
'''[respawn@base_smart]&amp;lt;br&amp;gt;&lt;br /&gt;
spawn_bandit@novice&amp;lt;br&amp;gt;&lt;br /&gt;
spawn_bandit@advanced&amp;lt;br&amp;gt;&lt;br /&gt;
spawn_bandit@master&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
: Каждая секция сквада имеет следующие параметры:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard&amp;quot;&lt;br /&gt;
 !Параметр&lt;br /&gt;
 !Описание&lt;br /&gt;
 !Пример&lt;br /&gt;
 |-&lt;br /&gt;
 !spawn_squads&lt;br /&gt;
 |Список имен сквадов из squad_descr_...ltx. Может иметь логические проверки условий.&lt;br /&gt;
 |spawn_squads = bandit_sim_squad_veteran, bandit_sim_squad_advanced&lt;br /&gt;
 |-&lt;br /&gt;
 !spawn_num&lt;br /&gt;
 |Количество отрядов, которые будут респаунится. Может иметь логические проверки условий. &lt;br /&gt;
 |spawn_num = {+infoportion} 2, 0&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Параметры секции [exclusive]'''&lt;br /&gt;
Секция позволяет задавать логику для уникальных персонажей, которые находятся в данном смарте. &amp;lt;br&amp;gt;Пример использования:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
'''[exclusive]'''&amp;lt;br&amp;gt;&lt;br /&gt;
zat_a2_stalker_barmen = zaton\zat_a2_stalker_barmen.ltx&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Параметры:&lt;br /&gt;
{| class=&amp;quot;standard&amp;quot;&lt;br /&gt;
 !zat_a2_stalker_barmen&lt;br /&gt;
 |Сharacter ID НПС&lt;br /&gt;
 |-&lt;br /&gt;
 !zaton\zat_a2_stalker_barmen.ltx&lt;br /&gt;
 |путь к файлу с логикой.&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
== Работа в смарт-террейнах ==&lt;br /&gt;
Под работой стоит понимать пути по которым ходят, стоят и отыгрывают анимации НПС при попадании в смарт. Каждый тип работы должен начинатся с единицы. Предположительно максимальное число каждого типа работ - '''20'''. Каждый тип работы имеет свой приоритет. Чем больше число тем больше вероятность, что НПС пойдет на эту работу. &lt;br /&gt;
&lt;br /&gt;
Имя каждой работы состоит из:&amp;lt;br&amp;gt;&lt;br /&gt;
# Имени смарта ''(esc_a1)''&lt;br /&gt;
# Типа работы ''(walker)''&lt;br /&gt;
# Номера работы ''(1,2,3..20)''&lt;br /&gt;
# Дополнительные параметры для вейпоинтов ''(walk,look)''&lt;br /&gt;
Пример:&amp;lt;br&amp;gt;&lt;br /&gt;
'''esc_a1_walker_1_walk''' &lt;br /&gt;
&lt;br /&gt;
'''Типы работ:'''&lt;br /&gt;
{| class=&amp;quot;standard&amp;quot;&lt;br /&gt;
 !Название&lt;br /&gt;
 !Приоритет&lt;br /&gt;
 !Описание&lt;br /&gt;
 !Пример&lt;br /&gt;
 |-&lt;br /&gt;
 !GENERIC POINT&lt;br /&gt;
 |3&lt;br /&gt;
 |При отсутствии каких-либо работ, сталкер идет в случайное место радиусом от 3 до 8 метров от смарта и садится на корточки. &lt;br /&gt;
 |отсутствует&lt;br /&gt;
 |-&lt;br /&gt;
 !SLEEP&lt;br /&gt;
 |10&lt;br /&gt;
 |Схема сидящего и спящего NPC. Необходимо поставить путь минимум из двух поинтов. &amp;lt;br&amp;gt; Спящий будет садиться спать в нулевой точке пути, и разворачиваться при этом в сторону первой точки.&lt;br /&gt;
 |esc_a1_sleep_1_walk&lt;br /&gt;
 |-&lt;br /&gt;
 !WALKER&lt;br /&gt;
 |15&lt;br /&gt;
 |Перемещается по пути (path_walk), останавливается в определенных точках и выполняет соответствующие действия. Для корректной работы желательно наличие look-вейпоинта.&lt;br /&gt;
 |esc_a1_walker_1_walk&lt;br /&gt;
 |-&lt;br /&gt;
 !ANIMPOINT&lt;br /&gt;
 |15&lt;br /&gt;
 |Конечная точка с кастомной анимацией. Доступны следующие анимации: НПС сидит, стоит за стойкой, стоит прислонившись к стене.&lt;br /&gt;
 |esc_a1_animpoint_1&lt;br /&gt;
 |-&lt;br /&gt;
 !PATROL&lt;br /&gt;
 |20&lt;br /&gt;
 |Вейпоинт, по которому будут ходить сталкер и выполнять функцию патруля. Должен быть зациклен. &lt;br /&gt;
 |esc_a1_patrol_1_walk&lt;br /&gt;
 |-&lt;br /&gt;
 !COLLECTOR&lt;br /&gt;
 |25&lt;br /&gt;
 |Вейпоинт, по которому пойдет сталкер отыгрывать анимацию собирания артефактов. &lt;br /&gt;
 |esc_a1_collector_1_walk&lt;br /&gt;
 |-&lt;br /&gt;
 !GUARD&lt;br /&gt;
 |25&lt;br /&gt;
 |Вейпоинт, по которому будут ходить сталкер и выполнять функцию охраны. Должен быть зациклен. &lt;br /&gt;
 |esc_a1_guard_1_walk&lt;br /&gt;
 |-&lt;br /&gt;
 !SNIPER&lt;br /&gt;
 |30&lt;br /&gt;
 |Разновидность кемпера. Отличаются тем, что стреляют только одиночными выстрелами и не смотрят по точкам патрульного пути, а сканируют пространство между ними. &amp;lt;br&amp;gt; Скорость сканирования от точки к точке фиксирована и равна 20 сек. Необходимо ставить снайперу только 2 точки look.&lt;br /&gt;
 |esc_a1_sniper_1_walk&lt;br /&gt;
 |-&lt;br /&gt;
 !CAMPER&lt;br /&gt;
 |45&lt;br /&gt;
 |Кемпер стоит на точке и смотрит в направлении, куда Вы его поставили в редакторе или передигается по патрульным путям. Переключаются на универсальный комбат, &amp;lt;br&amp;gt; только если видят врага ближе чем в 30 метрах. Если он выжил, он возращается в состояние кемпера. В любых других случаях действуют по собственной скриптовой схеме.&lt;br /&gt;
 |esc_a1_camper_1_walk&lt;br /&gt;
 |-&lt;br /&gt;
 !SURGE&lt;br /&gt;
 |50&lt;br /&gt;
 |Вейпоинт, по которому пойдет сталкер в случае выброса. Должно быть разрешено в файле simulation_objects_props.ltx&lt;br /&gt;
 |esc_a1_surge_1_walk&lt;br /&gt;
 |-&lt;br /&gt;
 !MOB HOME&lt;br /&gt;
 |40&lt;br /&gt;
 |Вейпоинт, по которому будут двигаться мутанты в смарте. '''Только для мутантов!'''  &lt;br /&gt;
 |esc_a1_home_1_walk&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
Некоторые walk-вейпоинты, могут не иметь look-вейпоинтов. Для некоторых наличие look-вейпоинта обязательно.&lt;br /&gt;
&lt;br /&gt;
'''Чтобы сталкеры могли сидеть возле костра необходимо:&lt;br /&gt;
# поставить walk-вейпоинт на место где они сядут и look-вейпоинт куда будут смотреть. &lt;br /&gt;
# установить общий флаг&lt;br /&gt;
# в параметрах '''look'''-вейпоинта задать одну из этих анимаций:&lt;br /&gt;
#* sit&lt;br /&gt;
#* sit_knee&lt;br /&gt;
#* sit_ass&lt;br /&gt;
&lt;br /&gt;
Список остальных анимаций см. в файле '''scripts\state_lib.script'''.&lt;br /&gt;
&lt;br /&gt;
== Симуляция ==&lt;br /&gt;
=== Некоторые условия работы симуляции ===&lt;br /&gt;
В файле '''scripts\sim_board.script''' для каждой группировки заданы прекондишены:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
squad = {	stalker		= { prec = function(squad, target) return in_time_interval(6, 19) and simulation_objects.sim_dist_to(squad, target) &amp;lt;= 150 end },&lt;br /&gt;
		bandit		= { prec = function(squad, target) return in_time_interval(6, 19) and simulation_objects.sim_dist_to(squad, target) &amp;lt;= 150 end },&lt;br /&gt;
		dolg		= { prec = function(squad, target) return in_time_interval(6, 19) and simulation_objects.sim_dist_to(squad, target) &amp;lt;= 150 end },&lt;br /&gt;
		freedom		= { prec = function(squad, target) return in_time_interval(6, 19) and simulation_objects.sim_dist_to(squad, target) &amp;lt;= 150 end },&lt;br /&gt;
		killer		= { prec = function(squad, target) return in_time_interval(6, 19) and simulation_objects.sim_dist_to(squad, target) &amp;lt;= 150 end }&lt;br /&gt;
	},&lt;br /&gt;
smart = { 	base		= { prec = function(squad, target) return in_time_interval(18,8) and not xr_conditions.surge_started() and not	travel_manager.check_squad_for_enemies(squad) &lt;br /&gt;
												and (target:name() == &amp;quot;zat_stalker_base_smart&amp;quot; or target:name() == &amp;quot;jup_a6&amp;quot; or target:name() == &amp;quot;pri_a16&amp;quot;) end },&lt;br /&gt;
		surge		= { prec = function() return xr_conditions.surge_started() end },&lt;br /&gt;
		territory	= { prec = function() return in_time_interval(8,18) and not xr_conditions.surge_started() end },&lt;br /&gt;
		resource	= { prec = function(squad, target) return in_time_interval(8,18) and not xr_conditions.surge_started() end } -- and squad:has_detector() },&lt;br /&gt;
		lair	 	= { prec = function() return in_time_interval(6,19) end }&lt;br /&gt;
	},&lt;br /&gt;
actor = { 	prec = function(squad, target) return has_alife_info(&amp;quot;sim_bandit_attack_harder&amp;quot;) and simulation_objects.sim_dist_to(squad, target) &amp;lt;= 150 end }&lt;br /&gt;
			&amp;lt;/code&amp;gt;&lt;br /&gt;
	&lt;br /&gt;
* '''squad''' — набор условий для вражды с другой фракцией.&lt;br /&gt;
**'''simulation_objects.sim_dist_to(squad, target) &amp;lt;= 150''' — проверка расстояния до отряда меньше требуемой.&lt;br /&gt;
* '''smart''' - набор условий для выбора того, или иного смарта.	&lt;br /&gt;
** '''base'''  — набор условий для возвращения на базу-смарт ('''default_base''') &amp;lt;br&amp;gt;&lt;br /&gt;
*** '''return in_time_interval(18,8) '''  — проверка находится ли отряд в данном отрезке времени &amp;lt;br&amp;gt;&lt;br /&gt;
*** '''xr_conditions.surge_started()'''  — проверка начала выброса &amp;lt;br&amp;gt;&lt;br /&gt;
*** '''travel_manager.check_squad_for_enemies(squad)'''  — проверка присутствия в отряде врагов. &amp;lt;br&amp;gt;&lt;br /&gt;
*** '''target:name() == &amp;quot;zat_stalker_base_smart&amp;quot; or target:name() == &amp;quot;jup_a6&amp;quot; or target:name() == &amp;quot;pri_a16&amp;quot; '''  — проверка наличия базы. &lt;br /&gt;
** '''surge''' — набор условий для поиска укрытия от выброса.&lt;br /&gt;
** '''territory''' — набор условий для начала поиска обычного смарта '''default'''. &lt;br /&gt;
** '''resource''' — набор условий для начала поиска смарта с аномалиями и добычи артефактов '''(default_resource)'''.&lt;br /&gt;
** '''lair''' — набор условий для поиска мутантом смарта-укрытия '''(default_lair)'''&lt;br /&gt;
* '''actor''' — набор условий для вражды с актором.&lt;br /&gt;
** '''has_alife_info(&amp;quot;sim_bandit_attack_harder&amp;quot;)''' — проверка присутствия инфопоршня&lt;br /&gt;
&lt;br /&gt;
=== Добавление смарта в общую симуляцию ===&lt;br /&gt;
В файле '''misc\travel_manager.ltx''' есть два раздела. &amp;lt;br&amp;gt;&lt;br /&gt;
* '''[locations]'''&lt;br /&gt;
Секция описание того куда направлются сталкеры. Текст добавляется в '''text\rus\st_dialog_manager.xml'''.&amp;lt;br&amp;gt;&lt;br /&gt;
Принцип: '''ваше_название_смарта''' = '''st_stalker_ваше_название_смарта'''. &amp;lt;br&amp;gt;&lt;br /&gt;
Например для смарта '''zat_sim_1''' которому соответствует стринг '''st_stalker_zat_sim_1''' НПС на вопрос &amp;quot;Куда вы направляетесь?&amp;quot;, ответит: ''&amp;quot;Иду в направлении аномалии «Котёл». Там рощица за ней - туда и иду.&amp;quot;''&lt;br /&gt;
* '''[traveler]'''&lt;br /&gt;
В файле уже все сказано: это перечень точек, куда проводники могут отвести за бабосы. Тут указываем наш смарт, затем создаем секцию:&lt;br /&gt;
&amp;lt;code&amp;gt;[ваше_название_смарта]&lt;br /&gt;
level = ваш_уровень&lt;br /&gt;
name = ваше_название_смарта &lt;br /&gt;
condlist = true&amp;lt;/code&amp;gt;&lt;br /&gt;
ваше_название_смарта указываем в файле '''text\rus\st_land_names.xml''' &amp;lt;br&amp;gt;&lt;br /&gt;
'''condlist''' - условия существования данной точки. Можно использовать стандартные проверки условий.&lt;br /&gt;
&lt;br /&gt;
=== Добавление базы в общую симуляцию ===&lt;br /&gt;
#В '''misc\simulation_objects_props.ltx''' назначаем вашему смарту класс '''default_base'''. &lt;br /&gt;
#В файле '''scripts\state_lib.script''' для нужной вам группировки в секции '''base''' дополняем своей проверкой '''target:name() == &amp;quot;ваше_название_смарта&amp;quot;'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
'''Написал и оформил''': Vast&amp;lt;br&amp;gt;&lt;br /&gt;
Большое количество фраз и информации было взято отсюда [http://www.stalker-modostroy.ru/publ/x_ray_sdk/x_ray_sdk_0_7/rabota_so_smart_terrain_v_stalker_zp_sozdanie_i_nastrojka_squad_ov_otrjadov/4-1-0-12], из файла '''logic_setup.pdf''', а также из статей умершего сайта '''stalker-2.com.ua''', поэтому линков никаих нет.  &amp;lt;br&amp;gt;&lt;br /&gt;
Любые дополнения, критика, угрозы, все приветствуется.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
[[Category:A-Life]]&lt;/div&gt;</summary>
		<author><name>Vast</name></author>	</entry>

	<entry>
		<id>http://stalkerin.gameru.net/wiki/index.php?title=CoP._%D0%A1%D0%B8%D0%BC%D1%83%D0%BB%D1%8F%D1%86%D0%B8%D1%8F._%D0%9F%D0%B0%D1%80%D0%B0%D0%BC%D0%B5%D1%82%D1%80%D1%8B_%D1%81%D0%BC%D0%B0%D1%80%D1%82-%D1%82%D0%B5%D1%80%D1%80%D0%B5%D0%B9%D0%BD%D0%BE%D0%B2.</id>
		<title>CoP. Симуляция. Параметры смарт-террейнов.</title>
		<link rel="alternate" type="text/html" href="http://stalkerin.gameru.net/wiki/index.php?title=CoP._%D0%A1%D0%B8%D0%BC%D1%83%D0%BB%D1%8F%D1%86%D0%B8%D1%8F._%D0%9F%D0%B0%D1%80%D0%B0%D0%BC%D0%B5%D1%82%D1%80%D1%8B_%D1%81%D0%BC%D0%B0%D1%80%D1%82-%D1%82%D0%B5%D1%80%D1%80%D0%B5%D0%B9%D0%BD%D0%BE%D0%B2."/>
				<updated>2016-07-10T00:41:49Z</updated>
		
		<summary type="html">&lt;p&gt;Vast: /* Добавление базы в общую симуляцию */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Смарт-террейны ==&lt;br /&gt;
Смарт-террейн - это определенный скриптовый класс в игре, при помощи которого происходит заселение локаций. В смартах организуются работы для НПС, реализуется логика для отдельных эксклюзивных персонажей, происходит респавн НПС и монстров, а также организуются укрытия от выброса для НПС.&lt;br /&gt;
&lt;br /&gt;
===== Типы смарт-террейнов =====&lt;br /&gt;
{| class=&amp;quot;standard&amp;quot;&lt;br /&gt;
 !'''default'''&lt;br /&gt;
 |Обычный тип смарт-террейна.&lt;br /&gt;
 |-&lt;br /&gt;
 !'''default_resource'''&lt;br /&gt;
 |Смарты с наличием аномальных зон, в которых есть работа для НПС по поиску артефактов. &lt;br /&gt;
 |-&lt;br /&gt;
 !'''default_base'''&lt;br /&gt;
 |Главный смарт. Сюда идут все отряды с наступлением ночи.&lt;br /&gt;
 |-&lt;br /&gt;
 !'''default_lair'''&lt;br /&gt;
 |Смарт для монстров. Тем не менее сталкеры сюда тоже могут прийти.&lt;br /&gt;
 |-&lt;br /&gt;
 !'''default_squad'''&lt;br /&gt;
 |Не смарт. Класс, выделяющий в симуляции уникальные отряды и персонажей.&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
===== Параметры смарт-террейнов =====&lt;br /&gt;
* '''Необходимые параметры:'''&lt;br /&gt;
{|class=&amp;quot;standard&amp;quot;&lt;br /&gt;
 !Параметр&lt;br /&gt;
 !Описание&lt;br /&gt;
 !Пример&lt;br /&gt;
 |-&lt;br /&gt;
 !'''squad_id'''&lt;br /&gt;
 |Уникальный ID отряда. Никогда не должен повторятся. Для любой локации начинается с единицы.&lt;br /&gt;
 |squad_id = 1&lt;br /&gt;
 |-&lt;br /&gt;
 !'''max_population'''&lt;br /&gt;
 |Количество отрядов, которые может принять смарт. Определяет для скольких отрядов в симуляции тут найдется работа.&lt;br /&gt;
 |max_population = 1&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
* '''Дополнительные параметры: '''&lt;br /&gt;
{| class=&amp;quot;standard&amp;quot;&lt;br /&gt;
 !Параметр&lt;br /&gt;
 !Описание&lt;br /&gt;
 !Пример&lt;br /&gt;
 |-&lt;br /&gt;
 !respawn_only_smart&lt;br /&gt;
 |Могут ли из смарта удаляться отряды в симуляции.&lt;br /&gt;
 |respawn_only_smart = true&lt;br /&gt;
 |-&lt;br /&gt;
 !respawn_params&lt;br /&gt;
 |Ссылка на секцию респауна (параметры этой секции см. ниже).&lt;br /&gt;
 |respawn_params = respawn@base_smart&lt;br /&gt;
 |-&lt;br /&gt;
 !smart_control&lt;br /&gt;
 |Ссылка на секцию с параметрами контроля смарта.&lt;br /&gt;
 |smart_control = smart_control&lt;br /&gt;
 |-&lt;br /&gt;
 !def_restr&lt;br /&gt;
 |Определяет рестриктор, в пределах которой находится лагерь. &lt;br /&gt;
 |def_restr = pri_a16_sr_noweap&lt;br /&gt;
 |-&lt;br /&gt;
 !safe_restr &lt;br /&gt;
 |Определяет рестриктор, в пределах которой НПС бессмертны.&lt;br /&gt;
 |safe_restr = pri_surge_hide_a16&lt;br /&gt;
 |-&lt;br /&gt;
 !spawn_point &lt;br /&gt;
 |Имя вейпоинта, в котором происходит респаун. Может иметь значение ''self''.&lt;br /&gt;
 |spawn_point = zat_sim_16_spawn_point&lt;br /&gt;
 |-&lt;br /&gt;
 !arrive_dist&lt;br /&gt;
 |Определяет расстояние, на котором отряд считается прибывшим в смарт и регистрируется в нем.&lt;br /&gt;
 |arrive_dist = 100&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
* '''Параметры smart_control: '''&lt;br /&gt;
{| class=&amp;quot;standard&amp;quot;&lt;br /&gt;
 !Параметр&lt;br /&gt;
 !Описание&lt;br /&gt;
 !Пример&lt;br /&gt;
 |-&lt;br /&gt;
 !noweap_zone&lt;br /&gt;
 |Определяет рестриктор, в котором запрещается использовать оружие (в том числе актору).&lt;br /&gt;
 |noweap_zone = zat_a2_sr_noweap&lt;br /&gt;
 |-&lt;br /&gt;
 !ignore_zone&lt;br /&gt;
 |Определяет рестриктор, в котором НПС не реагируют на опасности даже если атакованы.&lt;br /&gt;
 |ignore_zone = zat_a2_sr_light&lt;br /&gt;
 |-&lt;br /&gt;
 !alarm_start_sound&lt;br /&gt;
 |Воспроизводит звук из script_sound_...ltx, если актор атаковал смарт.&lt;br /&gt;
 |alarm_start_sound = zat_a2_base_alarm&lt;br /&gt;
 |-&lt;br /&gt;
 !alarm_stop_sound&lt;br /&gt;
 |Воспроизводит звук из script_sound_...ltx, когда тревога закончилась.&lt;br /&gt;
 |alarm_start_sound = zat_a2_base_relax&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
* '''Параметры respawn_params'''&lt;br /&gt;
Данная секция представляет собой список ссылок на секции сквадов, которые будут спауниться в этом смарт-террейне.&amp;lt;br&amp;gt;&lt;br /&gt;
Пример секции: &lt;br /&gt;
&amp;lt;blockquote&amp;gt;'''&lt;br /&gt;
'''[respawn@base_smart]&amp;lt;br&amp;gt;&lt;br /&gt;
spawn_bandit@novice&amp;lt;br&amp;gt;&lt;br /&gt;
spawn_bandit@advanced&amp;lt;br&amp;gt;&lt;br /&gt;
spawn_bandit@master&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
: Каждая секция сквада имеет следующие параметры:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard&amp;quot;&lt;br /&gt;
 !Параметр&lt;br /&gt;
 !Описание&lt;br /&gt;
 !Пример&lt;br /&gt;
 |-&lt;br /&gt;
 !spawn_squads&lt;br /&gt;
 |Список имен сквадов из squad_descr_...ltx. Может иметь логические проверки условий.&lt;br /&gt;
 |spawn_squads = bandit_sim_squad_veteran, bandit_sim_squad_advanced&lt;br /&gt;
 |-&lt;br /&gt;
 !spawn_num&lt;br /&gt;
 |Количество отрядов, которые будут респаунится. Может иметь логические проверки условий. &lt;br /&gt;
 |spawn_num = {+infoportion} 2, 0&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Параметры секции [exclusive]'''&lt;br /&gt;
Секция позволяет задавать логику для уникальных персонажей, которые находятся в данном смарте. &amp;lt;br&amp;gt;Пример использования:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
'''[exclusive]'''&amp;lt;br&amp;gt;&lt;br /&gt;
zat_a2_stalker_barmen = zaton\zat_a2_stalker_barmen.ltx&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Параметры:&lt;br /&gt;
{| class=&amp;quot;standard&amp;quot;&lt;br /&gt;
 !zat_a2_stalker_barmen&lt;br /&gt;
 |Сharacter ID НПС&lt;br /&gt;
 |-&lt;br /&gt;
 !zaton\zat_a2_stalker_barmen.ltx&lt;br /&gt;
 |путь к файлу с логикой.&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
== Работа в смарт-террейнах ==&lt;br /&gt;
Под работой стоит понимать пути по которым ходят, стоят и отыгрывают анимации НПС при попадании в смарт. Каждый тип работы должен начинатся с единицы. Предположительно максимальное число каждого типа работ - '''20'''. Каждый тип работы имеет свой приоритет. Чем больше число тем больше вероятность, что НПС пойдет на эту работу. &lt;br /&gt;
&lt;br /&gt;
Имя каждой работы состоит из:&amp;lt;br&amp;gt;&lt;br /&gt;
# Имени смарта ''(esc_a1)''&lt;br /&gt;
# Типа работы ''(walker)''&lt;br /&gt;
# Номера работы ''(1,2,3..20)''&lt;br /&gt;
# Дополнительные параметры для вейпоинтов ''(walk,look)''&lt;br /&gt;
Пример:&amp;lt;br&amp;gt;&lt;br /&gt;
'''esc_a1_walker_1_walk''' &lt;br /&gt;
&lt;br /&gt;
'''Типы работ:'''&lt;br /&gt;
{| class=&amp;quot;standard&amp;quot;&lt;br /&gt;
 !Название&lt;br /&gt;
 !Приоритет&lt;br /&gt;
 !Описание&lt;br /&gt;
 !Пример&lt;br /&gt;
 |-&lt;br /&gt;
 !GENERIC POINT&lt;br /&gt;
 |3&lt;br /&gt;
 |При отсутствии каких-либо работ, сталкер идет в случайное место радиусом от 3 до 8 метров от смарта и садится на корточки. &lt;br /&gt;
 |отсутствует&lt;br /&gt;
 |-&lt;br /&gt;
 !SLEEP&lt;br /&gt;
 |10&lt;br /&gt;
 |Схема сидящего и спящего NPC. Необходимо поставить путь минимум из двух поинтов. &amp;lt;br&amp;gt; Спящий будет садиться спать в нулевой точке пути, и разворачиваться при этом в сторону первой точки.&lt;br /&gt;
 |esc_a1_sleep_1_walk&lt;br /&gt;
 |-&lt;br /&gt;
 !WALKER&lt;br /&gt;
 |15&lt;br /&gt;
 |Перемещается по пути (path_walk), останавливается в определенных точках и выполняет соответствующие действия. Для корректной работы желательно наличие look-вейпоинта.&lt;br /&gt;
 |esc_a1_walker_1_walk&lt;br /&gt;
 |-&lt;br /&gt;
 !ANIMPOINT&lt;br /&gt;
 |15&lt;br /&gt;
 |Конечная точка с кастомной анимацией. Доступны следующие анимации: НПС сидит, стоит за стойкой, стоит прислонившись к стене.&lt;br /&gt;
 |esc_a1_animpoint_1&lt;br /&gt;
 |-&lt;br /&gt;
 !PATROL&lt;br /&gt;
 |20&lt;br /&gt;
 |Вейпоинт, по которому будут ходить сталкер и выполнять функцию патруля. Должен быть зациклен. &lt;br /&gt;
 |esc_a1_patrol_1_walk&lt;br /&gt;
 |-&lt;br /&gt;
 !COLLECTOR&lt;br /&gt;
 |25&lt;br /&gt;
 |Вейпоинт, по которому пойдет сталкер отыгрывать анимацию собирания артефактов. &lt;br /&gt;
 |esc_a1_collector_1_walk&lt;br /&gt;
 |-&lt;br /&gt;
 !GUARD&lt;br /&gt;
 |25&lt;br /&gt;
 |Вейпоинт, по которому будут ходить сталкер и выполнять функцию охраны. Должен быть зациклен. &lt;br /&gt;
 |esc_a1_guard_1_walk&lt;br /&gt;
 |-&lt;br /&gt;
 !SNIPER&lt;br /&gt;
 |30&lt;br /&gt;
 |Разновидность кемпера. Отличаются тем, что стреляют только одиночными выстрелами и не смотрят по точкам патрульного пути, а сканируют пространство между ними. &amp;lt;br&amp;gt; Скорость сканирования от точки к точке фиксирована и равна 20 сек. Необходимо ставить снайперу только 2 точки look.&lt;br /&gt;
 |esc_a1_sniper_1_walk&lt;br /&gt;
 |-&lt;br /&gt;
 !CAMPER&lt;br /&gt;
 |45&lt;br /&gt;
 |Кемпер стоит на точке и смотрит в направлении, куда Вы его поставили в редакторе или передигается по патрульным путям. Переключаются на универсальный комбат, &amp;lt;br&amp;gt; только если видят врага ближе чем в 30 метрах. Если он выжил, он возращается в состояние кемпера. В любых других случаях действуют по собственной скриптовой схеме.&lt;br /&gt;
 |esc_a1_camper_1_walk&lt;br /&gt;
 |-&lt;br /&gt;
 !SURGE&lt;br /&gt;
 |50&lt;br /&gt;
 |Вейпоинт, по которому пойдет сталкер в случае выброса. Должно быть разрешено в файле simulation_objects_props.ltx&lt;br /&gt;
 |esc_a1_surge_1_walk&lt;br /&gt;
 |-&lt;br /&gt;
 !MOB HOME&lt;br /&gt;
 |40&lt;br /&gt;
 |Вейпоинт, по которому будут двигаться мутанты в смарте. '''Только для мутантов!'''  &lt;br /&gt;
 |esc_a1_home_1_walk&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
Некоторые walk-вейпоинты, могут не иметь look-вейпоинтов. Для некоторых наличие look-вейпоинта обязательно. Для того, чтобы точка walk-вейпоинта работала с точкой look-вейпоинта, необходимо каждому из них задать одинаковый флаг. Некоторые анимации также стоит задавать в look-поинтах.&lt;br /&gt;
&lt;br /&gt;
'''Чтобы сталкеры могли сидеть возле костра необходимо:&lt;br /&gt;
# поставить walk-вейпоинт на место где они сядут и look-вейпоинт куда будут смотреть. &lt;br /&gt;
# установить общий флаг&lt;br /&gt;
# в параметрах '''look'''-вейпоинта (именно look) задать одну из этих анимаций:&lt;br /&gt;
#* sit&lt;br /&gt;
#* sit_knee&lt;br /&gt;
#* sit_ass&lt;br /&gt;
&lt;br /&gt;
Список остальных анимаций см. в файле '''scripts\state_lib.script'''.&lt;br /&gt;
&lt;br /&gt;
== Симуляция ==&lt;br /&gt;
=== Некоторые условия работы симуляции ===&lt;br /&gt;
В файле '''scripts\sim_board.script''' для каждой группировки заданы прекондишены:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
squad = {	stalker		= { prec = function(squad, target) return in_time_interval(6, 19) and simulation_objects.sim_dist_to(squad, target) &amp;lt;= 150 end },&lt;br /&gt;
		bandit		= { prec = function(squad, target) return in_time_interval(6, 19) and simulation_objects.sim_dist_to(squad, target) &amp;lt;= 150 end },&lt;br /&gt;
		dolg		= { prec = function(squad, target) return in_time_interval(6, 19) and simulation_objects.sim_dist_to(squad, target) &amp;lt;= 150 end },&lt;br /&gt;
		freedom		= { prec = function(squad, target) return in_time_interval(6, 19) and simulation_objects.sim_dist_to(squad, target) &amp;lt;= 150 end },&lt;br /&gt;
		killer		= { prec = function(squad, target) return in_time_interval(6, 19) and simulation_objects.sim_dist_to(squad, target) &amp;lt;= 150 end }&lt;br /&gt;
	},&lt;br /&gt;
smart = { 	base		= { prec = function(squad, target) return in_time_interval(18,8) and not xr_conditions.surge_started() and not	travel_manager.check_squad_for_enemies(squad) &lt;br /&gt;
												and (target:name() == &amp;quot;zat_stalker_base_smart&amp;quot; or target:name() == &amp;quot;jup_a6&amp;quot; or target:name() == &amp;quot;pri_a16&amp;quot;) end },&lt;br /&gt;
		surge		= { prec = function() return xr_conditions.surge_started() end },&lt;br /&gt;
		territory	= { prec = function() return in_time_interval(8,18) and not xr_conditions.surge_started() end },&lt;br /&gt;
		resource	= { prec = function(squad, target) return in_time_interval(8,18) and not xr_conditions.surge_started() end } -- and squad:has_detector() },&lt;br /&gt;
		lair	 	= { prec = function() return in_time_interval(6,19) end }&lt;br /&gt;
	},&lt;br /&gt;
actor = { 	prec = function(squad, target) return has_alife_info(&amp;quot;sim_bandit_attack_harder&amp;quot;) and simulation_objects.sim_dist_to(squad, target) &amp;lt;= 150 end }&lt;br /&gt;
			&amp;lt;/code&amp;gt;&lt;br /&gt;
	&lt;br /&gt;
* '''squad''' — набор условий для вражды с другой фракцией.&lt;br /&gt;
**'''simulation_objects.sim_dist_to(squad, target) &amp;lt;= 150''' — проверка расстояния до отряда меньше требуемой.&lt;br /&gt;
* '''smart''' - набор условий для выбора того, или иного смарта.	&lt;br /&gt;
** '''base'''  — набор условий для возвращения на базу-смарт ('''default_base''') &amp;lt;br&amp;gt;&lt;br /&gt;
*** '''return in_time_interval(18,8) '''  — проверка находится ли отряд в данном отрезке времени &amp;lt;br&amp;gt;&lt;br /&gt;
*** '''xr_conditions.surge_started()'''  — проверка начала выброса &amp;lt;br&amp;gt;&lt;br /&gt;
*** '''travel_manager.check_squad_for_enemies(squad)'''  — проверка присутствия в отряде врагов. &amp;lt;br&amp;gt;&lt;br /&gt;
*** '''target:name() == &amp;quot;zat_stalker_base_smart&amp;quot; or target:name() == &amp;quot;jup_a6&amp;quot; or target:name() == &amp;quot;pri_a16&amp;quot; '''  — проверка наличия базы. &lt;br /&gt;
** '''surge''' — набор условий для поиска укрытия от выброса.&lt;br /&gt;
** '''territory''' — набор условий для начала поиска обычного смарта '''default'''. &lt;br /&gt;
** '''resource''' — набор условий для начала поиска смарта с аномалиями и добычи артефактов '''(default_resource)'''.&lt;br /&gt;
** '''lair''' — набор условий для поиска мутантом смарта-укрытия '''(default_lair)'''&lt;br /&gt;
* '''actor''' — набор условий для вражды с актором.&lt;br /&gt;
** '''has_alife_info(&amp;quot;sim_bandit_attack_harder&amp;quot;)''' — проверка присутствия инфопоршня&lt;br /&gt;
&lt;br /&gt;
=== Добавление смарта в общую симуляцию ===&lt;br /&gt;
В файле '''misc\travel_manager.ltx''' есть два раздела. &amp;lt;br&amp;gt;&lt;br /&gt;
* '''[locations]'''&lt;br /&gt;
Секция описание того куда направлются сталкеры. Текст добавляется в '''text\rus\st_dialog_manager.xml'''.&amp;lt;br&amp;gt;&lt;br /&gt;
Принцип: '''ваше_название_смарта''' = '''st_stalker_ваше_название_смарта'''. &amp;lt;br&amp;gt;&lt;br /&gt;
Например для смарта '''zat_sim_1''' которому соответствует стринг '''st_stalker_zat_sim_1''' НПС на вопрос &amp;quot;Куда вы направляетесь?&amp;quot;, ответит: ''&amp;quot;Иду в направлении аномалии «Котёл». Там рощица за ней - туда и иду.&amp;quot;''&lt;br /&gt;
* '''[traveler]'''&lt;br /&gt;
В файле уже все сказано: это перечень точек, куда проводники могут отвести за бабосы. Тут указываем наш смарт, затем создаем секцию:&lt;br /&gt;
&amp;lt;code&amp;gt;[ваше_название_смарта]&lt;br /&gt;
level = ваш_уровень&lt;br /&gt;
name = ваше_название_смарта &lt;br /&gt;
condlist = true&amp;lt;/code&amp;gt;&lt;br /&gt;
ваше_название_смарта указываем в файле '''text\rus\st_land_names.xml''' &amp;lt;br&amp;gt;&lt;br /&gt;
'''condlist''' - условия существования данной точки. Можно использовать стандартные проверки условий.&lt;br /&gt;
&lt;br /&gt;
=== Добавление базы в общую симуляцию ===&lt;br /&gt;
#В '''misc\simulation_objects_props.ltx''' назначаем вашему смарту класс '''default_base'''. &lt;br /&gt;
#В файле '''scripts\state_lib.script''' для нужной вам группировки в секции '''base''' дополняем своей проверкой '''target:name() == &amp;quot;ваше_название_смарта&amp;quot;'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
'''Написал и оформил''': Vast&amp;lt;br&amp;gt;&lt;br /&gt;
Большое количество фраз и информации было взято отсюда [http://www.stalker-modostroy.ru/publ/x_ray_sdk/x_ray_sdk_0_7/rabota_so_smart_terrain_v_stalker_zp_sozdanie_i_nastrojka_squad_ov_otrjadov/4-1-0-12], из файла '''logic_setup.pdf''', а также из статей умершего сайта '''stalker-2.com.ua''', поэтому линков никаих нет.  &amp;lt;br&amp;gt;&lt;br /&gt;
Любые дополнения, критика, угрозы, все приветствуется.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
[[Category:A-Life]]&lt;/div&gt;</summary>
		<author><name>Vast</name></author>	</entry>

	<entry>
		<id>http://stalkerin.gameru.net/wiki/index.php?title=CoP._%D0%A1%D0%B8%D0%BC%D1%83%D0%BB%D1%8F%D1%86%D0%B8%D1%8F._%D0%9F%D0%B0%D1%80%D0%B0%D0%BC%D0%B5%D1%82%D1%80%D1%8B_%D1%81%D0%BC%D0%B0%D1%80%D1%82-%D1%82%D0%B5%D1%80%D1%80%D0%B5%D0%B9%D0%BD%D0%BE%D0%B2.</id>
		<title>CoP. Симуляция. Параметры смарт-террейнов.</title>
		<link rel="alternate" type="text/html" href="http://stalkerin.gameru.net/wiki/index.php?title=CoP._%D0%A1%D0%B8%D0%BC%D1%83%D0%BB%D1%8F%D1%86%D0%B8%D1%8F._%D0%9F%D0%B0%D1%80%D0%B0%D0%BC%D0%B5%D1%82%D1%80%D1%8B_%D1%81%D0%BC%D0%B0%D1%80%D1%82-%D1%82%D0%B5%D1%80%D1%80%D0%B5%D0%B9%D0%BD%D0%BE%D0%B2."/>
				<updated>2016-07-10T00:40:56Z</updated>
		
		<summary type="html">&lt;p&gt;Vast: /* Работа в смарт-террейнах */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Смарт-террейны ==&lt;br /&gt;
Смарт-террейн - это определенный скриптовый класс в игре, при помощи которого происходит заселение локаций. В смартах организуются работы для НПС, реализуется логика для отдельных эксклюзивных персонажей, происходит респавн НПС и монстров, а также организуются укрытия от выброса для НПС.&lt;br /&gt;
&lt;br /&gt;
===== Типы смарт-террейнов =====&lt;br /&gt;
{| class=&amp;quot;standard&amp;quot;&lt;br /&gt;
 !'''default'''&lt;br /&gt;
 |Обычный тип смарт-террейна.&lt;br /&gt;
 |-&lt;br /&gt;
 !'''default_resource'''&lt;br /&gt;
 |Смарты с наличием аномальных зон, в которых есть работа для НПС по поиску артефактов. &lt;br /&gt;
 |-&lt;br /&gt;
 !'''default_base'''&lt;br /&gt;
 |Главный смарт. Сюда идут все отряды с наступлением ночи.&lt;br /&gt;
 |-&lt;br /&gt;
 !'''default_lair'''&lt;br /&gt;
 |Смарт для монстров. Тем не менее сталкеры сюда тоже могут прийти.&lt;br /&gt;
 |-&lt;br /&gt;
 !'''default_squad'''&lt;br /&gt;
 |Не смарт. Класс, выделяющий в симуляции уникальные отряды и персонажей.&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
===== Параметры смарт-террейнов =====&lt;br /&gt;
* '''Необходимые параметры:'''&lt;br /&gt;
{|class=&amp;quot;standard&amp;quot;&lt;br /&gt;
 !Параметр&lt;br /&gt;
 !Описание&lt;br /&gt;
 !Пример&lt;br /&gt;
 |-&lt;br /&gt;
 !'''squad_id'''&lt;br /&gt;
 |Уникальный ID отряда. Никогда не должен повторятся. Для любой локации начинается с единицы.&lt;br /&gt;
 |squad_id = 1&lt;br /&gt;
 |-&lt;br /&gt;
 !'''max_population'''&lt;br /&gt;
 |Количество отрядов, которые может принять смарт. Определяет для скольких отрядов в симуляции тут найдется работа.&lt;br /&gt;
 |max_population = 1&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
* '''Дополнительные параметры: '''&lt;br /&gt;
{| class=&amp;quot;standard&amp;quot;&lt;br /&gt;
 !Параметр&lt;br /&gt;
 !Описание&lt;br /&gt;
 !Пример&lt;br /&gt;
 |-&lt;br /&gt;
 !respawn_only_smart&lt;br /&gt;
 |Могут ли из смарта удаляться отряды в симуляции.&lt;br /&gt;
 |respawn_only_smart = true&lt;br /&gt;
 |-&lt;br /&gt;
 !respawn_params&lt;br /&gt;
 |Ссылка на секцию респауна (параметры этой секции см. ниже).&lt;br /&gt;
 |respawn_params = respawn@base_smart&lt;br /&gt;
 |-&lt;br /&gt;
 !smart_control&lt;br /&gt;
 |Ссылка на секцию с параметрами контроля смарта.&lt;br /&gt;
 |smart_control = smart_control&lt;br /&gt;
 |-&lt;br /&gt;
 !def_restr&lt;br /&gt;
 |Определяет рестриктор, в пределах которой находится лагерь. &lt;br /&gt;
 |def_restr = pri_a16_sr_noweap&lt;br /&gt;
 |-&lt;br /&gt;
 !safe_restr &lt;br /&gt;
 |Определяет рестриктор, в пределах которой НПС бессмертны.&lt;br /&gt;
 |safe_restr = pri_surge_hide_a16&lt;br /&gt;
 |-&lt;br /&gt;
 !spawn_point &lt;br /&gt;
 |Имя вейпоинта, в котором происходит респаун. Может иметь значение ''self''.&lt;br /&gt;
 |spawn_point = zat_sim_16_spawn_point&lt;br /&gt;
 |-&lt;br /&gt;
 !arrive_dist&lt;br /&gt;
 |Определяет расстояние, на котором отряд считается прибывшим в смарт и регистрируется в нем.&lt;br /&gt;
 |arrive_dist = 100&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
* '''Параметры smart_control: '''&lt;br /&gt;
{| class=&amp;quot;standard&amp;quot;&lt;br /&gt;
 !Параметр&lt;br /&gt;
 !Описание&lt;br /&gt;
 !Пример&lt;br /&gt;
 |-&lt;br /&gt;
 !noweap_zone&lt;br /&gt;
 |Определяет рестриктор, в котором запрещается использовать оружие (в том числе актору).&lt;br /&gt;
 |noweap_zone = zat_a2_sr_noweap&lt;br /&gt;
 |-&lt;br /&gt;
 !ignore_zone&lt;br /&gt;
 |Определяет рестриктор, в котором НПС не реагируют на опасности даже если атакованы.&lt;br /&gt;
 |ignore_zone = zat_a2_sr_light&lt;br /&gt;
 |-&lt;br /&gt;
 !alarm_start_sound&lt;br /&gt;
 |Воспроизводит звук из script_sound_...ltx, если актор атаковал смарт.&lt;br /&gt;
 |alarm_start_sound = zat_a2_base_alarm&lt;br /&gt;
 |-&lt;br /&gt;
 !alarm_stop_sound&lt;br /&gt;
 |Воспроизводит звук из script_sound_...ltx, когда тревога закончилась.&lt;br /&gt;
 |alarm_start_sound = zat_a2_base_relax&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
* '''Параметры respawn_params'''&lt;br /&gt;
Данная секция представляет собой список ссылок на секции сквадов, которые будут спауниться в этом смарт-террейне.&amp;lt;br&amp;gt;&lt;br /&gt;
Пример секции: &lt;br /&gt;
&amp;lt;blockquote&amp;gt;'''&lt;br /&gt;
'''[respawn@base_smart]&amp;lt;br&amp;gt;&lt;br /&gt;
spawn_bandit@novice&amp;lt;br&amp;gt;&lt;br /&gt;
spawn_bandit@advanced&amp;lt;br&amp;gt;&lt;br /&gt;
spawn_bandit@master&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
: Каждая секция сквада имеет следующие параметры:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard&amp;quot;&lt;br /&gt;
 !Параметр&lt;br /&gt;
 !Описание&lt;br /&gt;
 !Пример&lt;br /&gt;
 |-&lt;br /&gt;
 !spawn_squads&lt;br /&gt;
 |Список имен сквадов из squad_descr_...ltx. Может иметь логические проверки условий.&lt;br /&gt;
 |spawn_squads = bandit_sim_squad_veteran, bandit_sim_squad_advanced&lt;br /&gt;
 |-&lt;br /&gt;
 !spawn_num&lt;br /&gt;
 |Количество отрядов, которые будут респаунится. Может иметь логические проверки условий. &lt;br /&gt;
 |spawn_num = {+infoportion} 2, 0&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Параметры секции [exclusive]'''&lt;br /&gt;
Секция позволяет задавать логику для уникальных персонажей, которые находятся в данном смарте. &amp;lt;br&amp;gt;Пример использования:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
'''[exclusive]'''&amp;lt;br&amp;gt;&lt;br /&gt;
zat_a2_stalker_barmen = zaton\zat_a2_stalker_barmen.ltx&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Параметры:&lt;br /&gt;
{| class=&amp;quot;standard&amp;quot;&lt;br /&gt;
 !zat_a2_stalker_barmen&lt;br /&gt;
 |Сharacter ID НПС&lt;br /&gt;
 |-&lt;br /&gt;
 !zaton\zat_a2_stalker_barmen.ltx&lt;br /&gt;
 |путь к файлу с логикой.&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
== Работа в смарт-террейнах ==&lt;br /&gt;
Под работой стоит понимать пути по которым ходят, стоят и отыгрывают анимации НПС при попадании в смарт. Каждый тип работы должен начинатся с единицы. Предположительно максимальное число каждого типа работ - '''20'''. Каждый тип работы имеет свой приоритет. Чем больше число тем больше вероятность, что НПС пойдет на эту работу. &lt;br /&gt;
&lt;br /&gt;
Имя каждой работы состоит из:&amp;lt;br&amp;gt;&lt;br /&gt;
# Имени смарта ''(esc_a1)''&lt;br /&gt;
# Типа работы ''(walker)''&lt;br /&gt;
# Номера работы ''(1,2,3..20)''&lt;br /&gt;
# Дополнительные параметры для вейпоинтов ''(walk,look)''&lt;br /&gt;
Пример:&amp;lt;br&amp;gt;&lt;br /&gt;
'''esc_a1_walker_1_walk''' &lt;br /&gt;
&lt;br /&gt;
'''Типы работ:'''&lt;br /&gt;
{| class=&amp;quot;standard&amp;quot;&lt;br /&gt;
 !Название&lt;br /&gt;
 !Приоритет&lt;br /&gt;
 !Описание&lt;br /&gt;
 !Пример&lt;br /&gt;
 |-&lt;br /&gt;
 !GENERIC POINT&lt;br /&gt;
 |3&lt;br /&gt;
 |При отсутствии каких-либо работ, сталкер идет в случайное место радиусом от 3 до 8 метров от смарта и садится на корточки. &lt;br /&gt;
 |отсутствует&lt;br /&gt;
 |-&lt;br /&gt;
 !SLEEP&lt;br /&gt;
 |10&lt;br /&gt;
 |Схема сидящего и спящего NPC. Необходимо поставить путь минимум из двух поинтов. &amp;lt;br&amp;gt; Спящий будет садиться спать в нулевой точке пути, и разворачиваться при этом в сторону первой точки.&lt;br /&gt;
 |esc_a1_sleep_1_walk&lt;br /&gt;
 |-&lt;br /&gt;
 !WALKER&lt;br /&gt;
 |15&lt;br /&gt;
 |Перемещается по пути (path_walk), останавливается в определенных точках и выполняет соответствующие действия. Для корректной работы желательно наличие look-вейпоинта.&lt;br /&gt;
 |esc_a1_walker_1_walk&lt;br /&gt;
 |-&lt;br /&gt;
 !ANIMPOINT&lt;br /&gt;
 |15&lt;br /&gt;
 |Конечная точка с кастомной анимацией. Доступны следующие анимации: НПС сидит, стоит за стойкой, стоит прислонившись к стене.&lt;br /&gt;
 |esc_a1_animpoint_1&lt;br /&gt;
 |-&lt;br /&gt;
 !PATROL&lt;br /&gt;
 |20&lt;br /&gt;
 |Вейпоинт, по которому будут ходить сталкер и выполнять функцию патруля. Должен быть зациклен. &lt;br /&gt;
 |esc_a1_patrol_1_walk&lt;br /&gt;
 |-&lt;br /&gt;
 !COLLECTOR&lt;br /&gt;
 |25&lt;br /&gt;
 |Вейпоинт, по которому пойдет сталкер отыгрывать анимацию собирания артефактов. &lt;br /&gt;
 |esc_a1_collector_1_walk&lt;br /&gt;
 |-&lt;br /&gt;
 !GUARD&lt;br /&gt;
 |25&lt;br /&gt;
 |Вейпоинт, по которому будут ходить сталкер и выполнять функцию охраны. Должен быть зациклен. &lt;br /&gt;
 |esc_a1_guard_1_walk&lt;br /&gt;
 |-&lt;br /&gt;
 !SNIPER&lt;br /&gt;
 |30&lt;br /&gt;
 |Разновидность кемпера. Отличаются тем, что стреляют только одиночными выстрелами и не смотрят по точкам патрульного пути, а сканируют пространство между ними. &amp;lt;br&amp;gt; Скорость сканирования от точки к точке фиксирована и равна 20 сек. Необходимо ставить снайперу только 2 точки look.&lt;br /&gt;
 |esc_a1_sniper_1_walk&lt;br /&gt;
 |-&lt;br /&gt;
 !CAMPER&lt;br /&gt;
 |45&lt;br /&gt;
 |Кемпер стоит на точке и смотрит в направлении, куда Вы его поставили в редакторе или передигается по патрульным путям. Переключаются на универсальный комбат, &amp;lt;br&amp;gt; только если видят врага ближе чем в 30 метрах. Если он выжил, он возращается в состояние кемпера. В любых других случаях действуют по собственной скриптовой схеме.&lt;br /&gt;
 |esc_a1_camper_1_walk&lt;br /&gt;
 |-&lt;br /&gt;
 !SURGE&lt;br /&gt;
 |50&lt;br /&gt;
 |Вейпоинт, по которому пойдет сталкер в случае выброса. Должно быть разрешено в файле simulation_objects_props.ltx&lt;br /&gt;
 |esc_a1_surge_1_walk&lt;br /&gt;
 |-&lt;br /&gt;
 !MOB HOME&lt;br /&gt;
 |40&lt;br /&gt;
 |Вейпоинт, по которому будут двигаться мутанты в смарте. '''Только для мутантов!'''  &lt;br /&gt;
 |esc_a1_home_1_walk&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
Некоторые walk-вейпоинты, могут не иметь look-вейпоинтов. Для некоторых наличие look-вейпоинта обязательно. Для того, чтобы точка walk-вейпоинта работала с точкой look-вейпоинта, необходимо каждому из них задать одинаковый флаг. Некоторые анимации также стоит задавать в look-поинтах.&lt;br /&gt;
&lt;br /&gt;
'''Чтобы сталкеры могли сидеть возле костра необходимо:&lt;br /&gt;
# поставить walk-вейпоинт на место где они сядут и look-вейпоинт куда будут смотреть. &lt;br /&gt;
# установить общий флаг&lt;br /&gt;
# в параметрах '''look'''-вейпоинта (именно look) задать одну из этих анимаций:&lt;br /&gt;
#* sit&lt;br /&gt;
#* sit_knee&lt;br /&gt;
#* sit_ass&lt;br /&gt;
&lt;br /&gt;
Список остальных анимаций см. в файле '''scripts\state_lib.script'''.&lt;br /&gt;
&lt;br /&gt;
== Симуляция ==&lt;br /&gt;
=== Некоторые условия работы симуляции ===&lt;br /&gt;
В файле '''scripts\sim_board.script''' для каждой группировки заданы прекондишены:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
squad = {	stalker		= { prec = function(squad, target) return in_time_interval(6, 19) and simulation_objects.sim_dist_to(squad, target) &amp;lt;= 150 end },&lt;br /&gt;
		bandit		= { prec = function(squad, target) return in_time_interval(6, 19) and simulation_objects.sim_dist_to(squad, target) &amp;lt;= 150 end },&lt;br /&gt;
		dolg		= { prec = function(squad, target) return in_time_interval(6, 19) and simulation_objects.sim_dist_to(squad, target) &amp;lt;= 150 end },&lt;br /&gt;
		freedom		= { prec = function(squad, target) return in_time_interval(6, 19) and simulation_objects.sim_dist_to(squad, target) &amp;lt;= 150 end },&lt;br /&gt;
		killer		= { prec = function(squad, target) return in_time_interval(6, 19) and simulation_objects.sim_dist_to(squad, target) &amp;lt;= 150 end }&lt;br /&gt;
	},&lt;br /&gt;
smart = { 	base		= { prec = function(squad, target) return in_time_interval(18,8) and not xr_conditions.surge_started() and not	travel_manager.check_squad_for_enemies(squad) &lt;br /&gt;
												and (target:name() == &amp;quot;zat_stalker_base_smart&amp;quot; or target:name() == &amp;quot;jup_a6&amp;quot; or target:name() == &amp;quot;pri_a16&amp;quot;) end },&lt;br /&gt;
		surge		= { prec = function() return xr_conditions.surge_started() end },&lt;br /&gt;
		territory	= { prec = function() return in_time_interval(8,18) and not xr_conditions.surge_started() end },&lt;br /&gt;
		resource	= { prec = function(squad, target) return in_time_interval(8,18) and not xr_conditions.surge_started() end } -- and squad:has_detector() },&lt;br /&gt;
		lair	 	= { prec = function() return in_time_interval(6,19) end }&lt;br /&gt;
	},&lt;br /&gt;
actor = { 	prec = function(squad, target) return has_alife_info(&amp;quot;sim_bandit_attack_harder&amp;quot;) and simulation_objects.sim_dist_to(squad, target) &amp;lt;= 150 end }&lt;br /&gt;
			&amp;lt;/code&amp;gt;&lt;br /&gt;
	&lt;br /&gt;
* '''squad''' — набор условий для вражды с другой фракцией.&lt;br /&gt;
**'''simulation_objects.sim_dist_to(squad, target) &amp;lt;= 150''' — проверка расстояния до отряда меньше требуемой.&lt;br /&gt;
* '''smart''' - набор условий для выбора того, или иного смарта.	&lt;br /&gt;
** '''base'''  — набор условий для возвращения на базу-смарт ('''default_base''') &amp;lt;br&amp;gt;&lt;br /&gt;
*** '''return in_time_interval(18,8) '''  — проверка находится ли отряд в данном отрезке времени &amp;lt;br&amp;gt;&lt;br /&gt;
*** '''xr_conditions.surge_started()'''  — проверка начала выброса &amp;lt;br&amp;gt;&lt;br /&gt;
*** '''travel_manager.check_squad_for_enemies(squad)'''  — проверка присутствия в отряде врагов. &amp;lt;br&amp;gt;&lt;br /&gt;
*** '''target:name() == &amp;quot;zat_stalker_base_smart&amp;quot; or target:name() == &amp;quot;jup_a6&amp;quot; or target:name() == &amp;quot;pri_a16&amp;quot; '''  — проверка наличия базы. &lt;br /&gt;
** '''surge''' — набор условий для поиска укрытия от выброса.&lt;br /&gt;
** '''territory''' — набор условий для начала поиска обычного смарта '''default'''. &lt;br /&gt;
** '''resource''' — набор условий для начала поиска смарта с аномалиями и добычи артефактов '''(default_resource)'''.&lt;br /&gt;
** '''lair''' — набор условий для поиска мутантом смарта-укрытия '''(default_lair)'''&lt;br /&gt;
* '''actor''' — набор условий для вражды с актором.&lt;br /&gt;
** '''has_alife_info(&amp;quot;sim_bandit_attack_harder&amp;quot;)''' — проверка присутствия инфопоршня&lt;br /&gt;
&lt;br /&gt;
=== Добавление смарта в общую симуляцию ===&lt;br /&gt;
В файле '''misc\travel_manager.ltx''' есть два раздела. &amp;lt;br&amp;gt;&lt;br /&gt;
* '''[locations]'''&lt;br /&gt;
Секция описание того куда направлются сталкеры. Текст добавляется в '''text\rus\st_dialog_manager.xml'''.&amp;lt;br&amp;gt;&lt;br /&gt;
Принцип: '''ваше_название_смарта''' = '''st_stalker_ваше_название_смарта'''. &amp;lt;br&amp;gt;&lt;br /&gt;
Например для смарта '''zat_sim_1''' которому соответствует стринг '''st_stalker_zat_sim_1''' НПС на вопрос &amp;quot;Куда вы направляетесь?&amp;quot;, ответит: ''&amp;quot;Иду в направлении аномалии «Котёл». Там рощица за ней - туда и иду.&amp;quot;''&lt;br /&gt;
* '''[traveler]'''&lt;br /&gt;
В файле уже все сказано: это перечень точек, куда проводники могут отвести за бабосы. Тут указываем наш смарт, затем создаем секцию:&lt;br /&gt;
&amp;lt;code&amp;gt;[ваше_название_смарта]&lt;br /&gt;
level = ваш_уровень&lt;br /&gt;
name = ваше_название_смарта &lt;br /&gt;
condlist = true&amp;lt;/code&amp;gt;&lt;br /&gt;
ваше_название_смарта указываем в файле '''text\rus\st_land_names.xml''' &amp;lt;br&amp;gt;&lt;br /&gt;
'''condlist''' - условия существования данной точки. Можно использовать стандартные проверки условий.&lt;br /&gt;
&lt;br /&gt;
=== Добавление базы в общую симуляцию ===&lt;br /&gt;
#В '''misc\simulation_objects_props.ltx''' назначаем вашему смарту класс '''default_base'''. &lt;br /&gt;
#В файле '''scripts\state_lib.script''' для нужной вам группировки в секции '''base''' дополняем своей проверкой '''target:name() == &amp;quot;ваше_название_смарта&amp;quot;'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
'''Написал и оформил''': Vast&amp;lt;br&amp;gt;&lt;br /&gt;
Большое количество фраз и информации было взято отсюда [http://www.stalker-modostroy.ru/publ/x_ray_sdk/x_ray_sdk_0_7/rabota_so_smart_terrain_v_stalker_zp_sozdanie_i_nastrojka_squad_ov_otrjadov/4-1-0-12], а также из статей умершего сайта '''stalker-2.com.ua''', поэтому линков никаих нет. &amp;lt;br&amp;gt;&lt;br /&gt;
Любые дополнения, критика, угрозы, все приветствуется.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
[[Category:A-Life]]&lt;/div&gt;</summary>
		<author><name>Vast</name></author>	</entry>

	<entry>
		<id>http://stalkerin.gameru.net/wiki/index.php?title=CoP._%D0%A1%D0%B8%D0%BC%D1%83%D0%BB%D1%8F%D1%86%D0%B8%D1%8F._%D0%9F%D0%B0%D1%80%D0%B0%D0%BC%D0%B5%D1%82%D1%80%D1%8B_%D1%81%D0%BC%D0%B0%D1%80%D1%82-%D1%82%D0%B5%D1%80%D1%80%D0%B5%D0%B9%D0%BD%D0%BE%D0%B2.</id>
		<title>CoP. Симуляция. Параметры смарт-террейнов.</title>
		<link rel="alternate" type="text/html" href="http://stalkerin.gameru.net/wiki/index.php?title=CoP._%D0%A1%D0%B8%D0%BC%D1%83%D0%BB%D1%8F%D1%86%D0%B8%D1%8F._%D0%9F%D0%B0%D1%80%D0%B0%D0%BC%D0%B5%D1%82%D1%80%D1%8B_%D1%81%D0%BC%D0%B0%D1%80%D1%82-%D1%82%D0%B5%D1%80%D1%80%D0%B5%D0%B9%D0%BD%D0%BE%D0%B2."/>
				<updated>2016-07-10T00:32:39Z</updated>
		
		<summary type="html">&lt;p&gt;Vast: /* Работа в смарт-террейнах */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Смарт-террейны ==&lt;br /&gt;
Смарт-террейн - это определенный скриптовый класс в игре, при помощи которого происходит заселение локаций. В смартах организуются работы для НПС, реализуется логика для отдельных эксклюзивных персонажей, происходит респавн НПС и монстров, а также организуются укрытия от выброса для НПС.&lt;br /&gt;
&lt;br /&gt;
===== Типы смарт-террейнов =====&lt;br /&gt;
{| class=&amp;quot;standard&amp;quot;&lt;br /&gt;
 !'''default'''&lt;br /&gt;
 |Обычный тип смарт-террейна.&lt;br /&gt;
 |-&lt;br /&gt;
 !'''default_resource'''&lt;br /&gt;
 |Смарты с наличием аномальных зон, в которых есть работа для НПС по поиску артефактов. &lt;br /&gt;
 |-&lt;br /&gt;
 !'''default_base'''&lt;br /&gt;
 |Главный смарт. Сюда идут все отряды с наступлением ночи.&lt;br /&gt;
 |-&lt;br /&gt;
 !'''default_lair'''&lt;br /&gt;
 |Смарт для монстров. Тем не менее сталкеры сюда тоже могут прийти.&lt;br /&gt;
 |-&lt;br /&gt;
 !'''default_squad'''&lt;br /&gt;
 |Не смарт. Класс, выделяющий в симуляции уникальные отряды и персонажей.&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
===== Параметры смарт-террейнов =====&lt;br /&gt;
* '''Необходимые параметры:'''&lt;br /&gt;
{|class=&amp;quot;standard&amp;quot;&lt;br /&gt;
 !Параметр&lt;br /&gt;
 !Описание&lt;br /&gt;
 !Пример&lt;br /&gt;
 |-&lt;br /&gt;
 !'''squad_id'''&lt;br /&gt;
 |Уникальный ID отряда. Никогда не должен повторятся. Для любой локации начинается с единицы.&lt;br /&gt;
 |squad_id = 1&lt;br /&gt;
 |-&lt;br /&gt;
 !'''max_population'''&lt;br /&gt;
 |Количество отрядов, которые может принять смарт. Определяет для скольких отрядов в симуляции тут найдется работа.&lt;br /&gt;
 |max_population = 1&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
* '''Дополнительные параметры: '''&lt;br /&gt;
{| class=&amp;quot;standard&amp;quot;&lt;br /&gt;
 !Параметр&lt;br /&gt;
 !Описание&lt;br /&gt;
 !Пример&lt;br /&gt;
 |-&lt;br /&gt;
 !respawn_only_smart&lt;br /&gt;
 |Могут ли из смарта удаляться отряды в симуляции.&lt;br /&gt;
 |respawn_only_smart = true&lt;br /&gt;
 |-&lt;br /&gt;
 !respawn_params&lt;br /&gt;
 |Ссылка на секцию респауна (параметры этой секции см. ниже).&lt;br /&gt;
 |respawn_params = respawn@base_smart&lt;br /&gt;
 |-&lt;br /&gt;
 !smart_control&lt;br /&gt;
 |Ссылка на секцию с параметрами контроля смарта.&lt;br /&gt;
 |smart_control = smart_control&lt;br /&gt;
 |-&lt;br /&gt;
 !def_restr&lt;br /&gt;
 |Определяет рестриктор, в пределах которой находится лагерь. &lt;br /&gt;
 |def_restr = pri_a16_sr_noweap&lt;br /&gt;
 |-&lt;br /&gt;
 !safe_restr &lt;br /&gt;
 |Определяет рестриктор, в пределах которой НПС бессмертны.&lt;br /&gt;
 |safe_restr = pri_surge_hide_a16&lt;br /&gt;
 |-&lt;br /&gt;
 !spawn_point &lt;br /&gt;
 |Имя вейпоинта, в котором происходит респаун. Может иметь значение ''self''.&lt;br /&gt;
 |spawn_point = zat_sim_16_spawn_point&lt;br /&gt;
 |-&lt;br /&gt;
 !arrive_dist&lt;br /&gt;
 |Определяет расстояние, на котором отряд считается прибывшим в смарт и регистрируется в нем.&lt;br /&gt;
 |arrive_dist = 100&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
* '''Параметры smart_control: '''&lt;br /&gt;
{| class=&amp;quot;standard&amp;quot;&lt;br /&gt;
 !Параметр&lt;br /&gt;
 !Описание&lt;br /&gt;
 !Пример&lt;br /&gt;
 |-&lt;br /&gt;
 !noweap_zone&lt;br /&gt;
 |Определяет рестриктор, в котором запрещается использовать оружие (в том числе актору).&lt;br /&gt;
 |noweap_zone = zat_a2_sr_noweap&lt;br /&gt;
 |-&lt;br /&gt;
 !ignore_zone&lt;br /&gt;
 |Определяет рестриктор, в котором НПС не реагируют на опасности даже если атакованы.&lt;br /&gt;
 |ignore_zone = zat_a2_sr_light&lt;br /&gt;
 |-&lt;br /&gt;
 !alarm_start_sound&lt;br /&gt;
 |Воспроизводит звук из script_sound_...ltx, если актор атаковал смарт.&lt;br /&gt;
 |alarm_start_sound = zat_a2_base_alarm&lt;br /&gt;
 |-&lt;br /&gt;
 !alarm_stop_sound&lt;br /&gt;
 |Воспроизводит звук из script_sound_...ltx, когда тревога закончилась.&lt;br /&gt;
 |alarm_start_sound = zat_a2_base_relax&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
* '''Параметры respawn_params'''&lt;br /&gt;
Данная секция представляет собой список ссылок на секции сквадов, которые будут спауниться в этом смарт-террейне.&amp;lt;br&amp;gt;&lt;br /&gt;
Пример секции: &lt;br /&gt;
&amp;lt;blockquote&amp;gt;'''&lt;br /&gt;
'''[respawn@base_smart]&amp;lt;br&amp;gt;&lt;br /&gt;
spawn_bandit@novice&amp;lt;br&amp;gt;&lt;br /&gt;
spawn_bandit@advanced&amp;lt;br&amp;gt;&lt;br /&gt;
spawn_bandit@master&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
: Каждая секция сквада имеет следующие параметры:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard&amp;quot;&lt;br /&gt;
 !Параметр&lt;br /&gt;
 !Описание&lt;br /&gt;
 !Пример&lt;br /&gt;
 |-&lt;br /&gt;
 !spawn_squads&lt;br /&gt;
 |Список имен сквадов из squad_descr_...ltx. Может иметь логические проверки условий.&lt;br /&gt;
 |spawn_squads = bandit_sim_squad_veteran, bandit_sim_squad_advanced&lt;br /&gt;
 |-&lt;br /&gt;
 !spawn_num&lt;br /&gt;
 |Количество отрядов, которые будут респаунится. Может иметь логические проверки условий. &lt;br /&gt;
 |spawn_num = {+infoportion} 2, 0&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Параметры секции [exclusive]'''&lt;br /&gt;
Секция позволяет задавать логику для уникальных персонажей, которые находятся в данном смарте. &amp;lt;br&amp;gt;Пример использования:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
'''[exclusive]'''&amp;lt;br&amp;gt;&lt;br /&gt;
zat_a2_stalker_barmen = zaton\zat_a2_stalker_barmen.ltx&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Параметры:&lt;br /&gt;
{| class=&amp;quot;standard&amp;quot;&lt;br /&gt;
 !zat_a2_stalker_barmen&lt;br /&gt;
 |Сharacter ID НПС&lt;br /&gt;
 |-&lt;br /&gt;
 !zaton\zat_a2_stalker_barmen.ltx&lt;br /&gt;
 |путь к файлу с логикой.&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
== Работа в смарт-террейнах ==&lt;br /&gt;
Под работой стоит понимать пути по которым ходят, стоят и отыгрывают анимации НПС при попадании в смарт. Каждый тип работы должен начинатся с единицы. Предположительно максимальное число каждого типа работ - '''20'''. Каждый тип работы имеет свой приоритет. Чем больше число тем больше вероятность, что НПС пойдет на эту работу. &lt;br /&gt;
&lt;br /&gt;
Имя каждой работы состоит из:&amp;lt;br&amp;gt;&lt;br /&gt;
# Имени смарта ''(esc_a1)''&lt;br /&gt;
# Типа работы ''(walker)''&lt;br /&gt;
# Номера работы ''(1,2,3..20)''&lt;br /&gt;
# Дополнительные параметры для вейпоинтов ''(walk,look)''&lt;br /&gt;
Пример:&amp;lt;br&amp;gt;&lt;br /&gt;
'''esc_a1_walker_1_walk''' &lt;br /&gt;
&lt;br /&gt;
'''Типы работ:'''&lt;br /&gt;
{| class=&amp;quot;standard&amp;quot;&lt;br /&gt;
 !Название&lt;br /&gt;
 !Приоритет&lt;br /&gt;
 !Описание&lt;br /&gt;
 !Пример&lt;br /&gt;
 |-&lt;br /&gt;
 !GENERIC POINT&lt;br /&gt;
 |3&lt;br /&gt;
 |При отсутствии каких-либо работ, сталкер идет в случайное место возле смарта и садится на корточки. &lt;br /&gt;
 |отсутствует&lt;br /&gt;
 |-&lt;br /&gt;
 !SLEEP&lt;br /&gt;
 |10&lt;br /&gt;
 |Вейпоинт, по которому пойдет сталкер спать ночью. &lt;br /&gt;
 |esc_a1_sleep_1_walk&lt;br /&gt;
 |-&lt;br /&gt;
 !WALKER&lt;br /&gt;
 |15&lt;br /&gt;
 |Обычный вейпоинт, по которому сталкер будет ходить. Предполагается, что имеет конечную цель и анимацию.&lt;br /&gt;
 |esc_a1_walker_1_walk&lt;br /&gt;
 |-&lt;br /&gt;
 !ANIMPOINT&lt;br /&gt;
 |15&lt;br /&gt;
 |Конечная точка с кастомной анимацией: НПС сидит, стоит за стойкой, или стоит, прислонившись к стене.&lt;br /&gt;
 |esc_a1_animpoint_1&lt;br /&gt;
 |-&lt;br /&gt;
 !PATROL&lt;br /&gt;
 |20&lt;br /&gt;
 |Вейпоинт, по которому будут ходить сталкер и выполнять функцию патруля. Должен быть зациклен. &lt;br /&gt;
 |esc_a1_patrol_1_walk&lt;br /&gt;
 |-&lt;br /&gt;
 !COLLECTOR&lt;br /&gt;
 |25&lt;br /&gt;
 |Вейпоинт, по которому пойдет сталкер отыгрывать анимацию собирания артефактов. &lt;br /&gt;
 |esc_a1_collector_1_walk&lt;br /&gt;
 |-&lt;br /&gt;
 !GUARD&lt;br /&gt;
 |25&lt;br /&gt;
 |Вейпоинт, по которому будут ходить сталкер и выполнять функцию охраны. Должен быть зациклен. &lt;br /&gt;
 |esc_a1_guard_1_walk&lt;br /&gt;
 |-&lt;br /&gt;
 !SNIPER&lt;br /&gt;
 |30&lt;br /&gt;
 |Вейпоинт, куда пойдет снайпер, если таковой имеется в скваде. Должен иметь две точки в вейпоинте look.&lt;br /&gt;
 |esc_a1_sniper_1_walk&lt;br /&gt;
 |-&lt;br /&gt;
 !CAMPER&lt;br /&gt;
 |45&lt;br /&gt;
 |Вейпоинт, куда пойдет НПС и будет выполнять роль кемпера. Предположительно ничего не будет делать.&lt;br /&gt;
 |esc_a1_camper_1_walk&lt;br /&gt;
 |-&lt;br /&gt;
 !SURGE&lt;br /&gt;
 |50&lt;br /&gt;
 |Вейпоинт, по которому пойдет сталкер в случае выброса. Должно быть разрешено в файле simulation_objects_props.ltx&lt;br /&gt;
 |esc_a1_surge_1_walk&lt;br /&gt;
 |-&lt;br /&gt;
 !MOB HOME&lt;br /&gt;
 |40&lt;br /&gt;
 |Вейпоинт, по которому будут двигаться мутанты в смарте. '''Только для мутантов!'''  &lt;br /&gt;
 |esc_a1_home_1_walk&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
Некоторые walk-вейпоинты, могут не иметь look-вейпоинтов. Для некоторых наличие look-вейпоинта обязательно. Для того, чтобы точка walk-вейпоинта работала с точкой look-вейпоинта, необходимо каждому из них задать одинаковый флаг. Некоторые анимации также стоит задавать в look-поинтах.&lt;br /&gt;
&lt;br /&gt;
'''Чтобы сталкеры могли сидеть возле костра необходимо:&lt;br /&gt;
# поставить walk-вейпоинт на место где они сядут и look-вейпоинт куда будут смотреть. &lt;br /&gt;
# установить общий флаг&lt;br /&gt;
# в параметрах '''look'''-вейпоинта (именно look) задать одну из этих анимаций:&lt;br /&gt;
#* sit&lt;br /&gt;
#* sit_knee&lt;br /&gt;
#* sit_ass&lt;br /&gt;
&lt;br /&gt;
Список остальных анимаций см. в файле '''scripts\state_lib.script'''.&lt;br /&gt;
&lt;br /&gt;
== Симуляция ==&lt;br /&gt;
=== Некоторые условия работы симуляции ===&lt;br /&gt;
В файле '''scripts\sim_board.script''' для каждой группировки заданы прекондишены:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
squad = {	stalker		= { prec = function(squad, target) return in_time_interval(6, 19) and simulation_objects.sim_dist_to(squad, target) &amp;lt;= 150 end },&lt;br /&gt;
		bandit		= { prec = function(squad, target) return in_time_interval(6, 19) and simulation_objects.sim_dist_to(squad, target) &amp;lt;= 150 end },&lt;br /&gt;
		dolg		= { prec = function(squad, target) return in_time_interval(6, 19) and simulation_objects.sim_dist_to(squad, target) &amp;lt;= 150 end },&lt;br /&gt;
		freedom		= { prec = function(squad, target) return in_time_interval(6, 19) and simulation_objects.sim_dist_to(squad, target) &amp;lt;= 150 end },&lt;br /&gt;
		killer		= { prec = function(squad, target) return in_time_interval(6, 19) and simulation_objects.sim_dist_to(squad, target) &amp;lt;= 150 end }&lt;br /&gt;
	},&lt;br /&gt;
smart = { 	base		= { prec = function(squad, target) return in_time_interval(18,8) and not xr_conditions.surge_started() and not	travel_manager.check_squad_for_enemies(squad) &lt;br /&gt;
												and (target:name() == &amp;quot;zat_stalker_base_smart&amp;quot; or target:name() == &amp;quot;jup_a6&amp;quot; or target:name() == &amp;quot;pri_a16&amp;quot;) end },&lt;br /&gt;
		surge		= { prec = function() return xr_conditions.surge_started() end },&lt;br /&gt;
		territory	= { prec = function() return in_time_interval(8,18) and not xr_conditions.surge_started() end },&lt;br /&gt;
		resource	= { prec = function(squad, target) return in_time_interval(8,18) and not xr_conditions.surge_started() end } -- and squad:has_detector() },&lt;br /&gt;
		lair	 	= { prec = function() return in_time_interval(6,19) end }&lt;br /&gt;
	},&lt;br /&gt;
actor = { 	prec = function(squad, target) return has_alife_info(&amp;quot;sim_bandit_attack_harder&amp;quot;) and simulation_objects.sim_dist_to(squad, target) &amp;lt;= 150 end }&lt;br /&gt;
			&amp;lt;/code&amp;gt;&lt;br /&gt;
	&lt;br /&gt;
* '''squad''' — набор условий для вражды с другой фракцией.&lt;br /&gt;
**'''simulation_objects.sim_dist_to(squad, target) &amp;lt;= 150''' — проверка расстояния до отряда меньше требуемой.&lt;br /&gt;
* '''smart''' - набор условий для выбора того, или иного смарта.	&lt;br /&gt;
** '''base'''  — набор условий для возвращения на базу-смарт ('''default_base''') &amp;lt;br&amp;gt;&lt;br /&gt;
*** '''return in_time_interval(18,8) '''  — проверка находится ли отряд в данном отрезке времени &amp;lt;br&amp;gt;&lt;br /&gt;
*** '''xr_conditions.surge_started()'''  — проверка начала выброса &amp;lt;br&amp;gt;&lt;br /&gt;
*** '''travel_manager.check_squad_for_enemies(squad)'''  — проверка присутствия в отряде врагов. &amp;lt;br&amp;gt;&lt;br /&gt;
*** '''target:name() == &amp;quot;zat_stalker_base_smart&amp;quot; or target:name() == &amp;quot;jup_a6&amp;quot; or target:name() == &amp;quot;pri_a16&amp;quot; '''  — проверка наличия базы. &lt;br /&gt;
** '''surge''' — набор условий для поиска укрытия от выброса.&lt;br /&gt;
** '''territory''' — набор условий для начала поиска обычного смарта '''default'''. &lt;br /&gt;
** '''resource''' — набор условий для начала поиска смарта с аномалиями и добычи артефактов '''(default_resource)'''.&lt;br /&gt;
** '''lair''' — набор условий для поиска мутантом смарта-укрытия '''(default_lair)'''&lt;br /&gt;
* '''actor''' — набор условий для вражды с актором.&lt;br /&gt;
** '''has_alife_info(&amp;quot;sim_bandit_attack_harder&amp;quot;)''' — проверка присутствия инфопоршня&lt;br /&gt;
&lt;br /&gt;
=== Добавление смарта в общую симуляцию ===&lt;br /&gt;
В файле '''misc\travel_manager.ltx''' есть два раздела. &amp;lt;br&amp;gt;&lt;br /&gt;
* '''[locations]'''&lt;br /&gt;
Секция описание того куда направлются сталкеры. Текст добавляется в '''text\rus\st_dialog_manager.xml'''.&amp;lt;br&amp;gt;&lt;br /&gt;
Принцип: '''ваше_название_смарта''' = '''st_stalker_ваше_название_смарта'''. &amp;lt;br&amp;gt;&lt;br /&gt;
Например для смарта '''zat_sim_1''' которому соответствует стринг '''st_stalker_zat_sim_1''' НПС на вопрос &amp;quot;Куда вы направляетесь?&amp;quot;, ответит: ''&amp;quot;Иду в направлении аномалии «Котёл». Там рощица за ней - туда и иду.&amp;quot;''&lt;br /&gt;
* '''[traveler]'''&lt;br /&gt;
В файле уже все сказано: это перечень точек, куда проводники могут отвести за бабосы. Тут указываем наш смарт, затем создаем секцию:&lt;br /&gt;
&amp;lt;code&amp;gt;[ваше_название_смарта]&lt;br /&gt;
level = ваш_уровень&lt;br /&gt;
name = ваше_название_смарта &lt;br /&gt;
condlist = true&amp;lt;/code&amp;gt;&lt;br /&gt;
ваше_название_смарта указываем в файле '''text\rus\st_land_names.xml''' &amp;lt;br&amp;gt;&lt;br /&gt;
'''condlist''' - условия существования данной точки. Можно использовать стандартные проверки условий.&lt;br /&gt;
&lt;br /&gt;
=== Добавление базы в общую симуляцию ===&lt;br /&gt;
#В '''misc\simulation_objects_props.ltx''' назначаем вашему смарту класс '''default_base'''. &lt;br /&gt;
#В файле '''scripts\state_lib.script''' для нужной вам группировки в секции '''base''' дополняем своей проверкой '''target:name() == &amp;quot;ваше_название_смарта&amp;quot;'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
'''Написал и оформил''': Vast&amp;lt;br&amp;gt;&lt;br /&gt;
Большое количество фраз и информации было взято отсюда [http://www.stalker-modostroy.ru/publ/x_ray_sdk/x_ray_sdk_0_7/rabota_so_smart_terrain_v_stalker_zp_sozdanie_i_nastrojka_squad_ov_otrjadov/4-1-0-12], а также из статей умершего сайта '''stalker-2.com.ua''', поэтому линков никаих нет. &amp;lt;br&amp;gt;&lt;br /&gt;
Любые дополнения, критика, угрозы, все приветствуется.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
[[Category:A-Life]]&lt;/div&gt;</summary>
		<author><name>Vast</name></author>	</entry>

	<entry>
		<id>http://stalkerin.gameru.net/wiki/index.php?title=CoP._%D0%A1%D0%B8%D0%BC%D1%83%D0%BB%D1%8F%D1%86%D0%B8%D1%8F._%D0%9F%D0%B0%D1%80%D0%B0%D0%BC%D0%B5%D1%82%D1%80%D1%8B_%D1%81%D0%BC%D0%B0%D1%80%D1%82-%D1%82%D0%B5%D1%80%D1%80%D0%B5%D0%B9%D0%BD%D0%BE%D0%B2.</id>
		<title>CoP. Симуляция. Параметры смарт-террейнов.</title>
		<link rel="alternate" type="text/html" href="http://stalkerin.gameru.net/wiki/index.php?title=CoP._%D0%A1%D0%B8%D0%BC%D1%83%D0%BB%D1%8F%D1%86%D0%B8%D1%8F._%D0%9F%D0%B0%D1%80%D0%B0%D0%BC%D0%B5%D1%82%D1%80%D1%8B_%D1%81%D0%BC%D0%B0%D1%80%D1%82-%D1%82%D0%B5%D1%80%D1%80%D0%B5%D0%B9%D0%BD%D0%BE%D0%B2."/>
				<updated>2016-07-09T23:20:22Z</updated>
		
		<summary type="html">&lt;p&gt;Vast: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Смарт-террейны ==&lt;br /&gt;
Смарт-террейн - это определенный скриптовый класс в игре, при помощи которого происходит заселение локаций. В смартах организуются работы для НПС, реализуется логика для отдельных эксклюзивных персонажей, происходит респавн НПС и монстров, а также организуются укрытия от выброса для НПС.&lt;br /&gt;
&lt;br /&gt;
===== Типы смарт-террейнов =====&lt;br /&gt;
{| class=&amp;quot;standard&amp;quot;&lt;br /&gt;
 !'''default'''&lt;br /&gt;
 |Обычный тип смарт-террейна.&lt;br /&gt;
 |-&lt;br /&gt;
 !'''default_resource'''&lt;br /&gt;
 |Смарты с наличием аномальных зон, в которых есть работа для НПС по поиску артефактов. &lt;br /&gt;
 |-&lt;br /&gt;
 !'''default_base'''&lt;br /&gt;
 |Главный смарт. Сюда идут все отряды с наступлением ночи.&lt;br /&gt;
 |-&lt;br /&gt;
 !'''default_lair'''&lt;br /&gt;
 |Смарт для монстров. Тем не менее сталкеры сюда тоже могут прийти.&lt;br /&gt;
 |-&lt;br /&gt;
 !'''default_squad'''&lt;br /&gt;
 |Не смарт. Класс, выделяющий в симуляции уникальные отряды и персонажей.&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
===== Параметры смарт-террейнов =====&lt;br /&gt;
* '''Необходимые параметры:'''&lt;br /&gt;
{|class=&amp;quot;standard&amp;quot;&lt;br /&gt;
 !Параметр&lt;br /&gt;
 !Описание&lt;br /&gt;
 !Пример&lt;br /&gt;
 |-&lt;br /&gt;
 !'''squad_id'''&lt;br /&gt;
 |Уникальный ID отряда. Никогда не должен повторятся. Для любой локации начинается с единицы.&lt;br /&gt;
 |squad_id = 1&lt;br /&gt;
 |-&lt;br /&gt;
 !'''max_population'''&lt;br /&gt;
 |Количество отрядов, которые может принять смарт. Определяет для скольких отрядов в симуляции тут найдется работа.&lt;br /&gt;
 |max_population = 1&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
* '''Дополнительные параметры: '''&lt;br /&gt;
{| class=&amp;quot;standard&amp;quot;&lt;br /&gt;
 !Параметр&lt;br /&gt;
 !Описание&lt;br /&gt;
 !Пример&lt;br /&gt;
 |-&lt;br /&gt;
 !respawn_only_smart&lt;br /&gt;
 |Могут ли из смарта удаляться отряды в симуляции.&lt;br /&gt;
 |respawn_only_smart = true&lt;br /&gt;
 |-&lt;br /&gt;
 !respawn_params&lt;br /&gt;
 |Ссылка на секцию респауна (параметры этой секции см. ниже).&lt;br /&gt;
 |respawn_params = respawn@base_smart&lt;br /&gt;
 |-&lt;br /&gt;
 !smart_control&lt;br /&gt;
 |Ссылка на секцию с параметрами контроля смарта.&lt;br /&gt;
 |smart_control = smart_control&lt;br /&gt;
 |-&lt;br /&gt;
 !def_restr&lt;br /&gt;
 |Определяет рестриктор, в пределах которой находится лагерь. &lt;br /&gt;
 |def_restr = pri_a16_sr_noweap&lt;br /&gt;
 |-&lt;br /&gt;
 !safe_restr &lt;br /&gt;
 |Определяет рестриктор, в пределах которой НПС бессмертны.&lt;br /&gt;
 |safe_restr = pri_surge_hide_a16&lt;br /&gt;
 |-&lt;br /&gt;
 !spawn_point &lt;br /&gt;
 |Имя вейпоинта, в котором происходит респаун. Может иметь значение ''self''.&lt;br /&gt;
 |spawn_point = zat_sim_16_spawn_point&lt;br /&gt;
 |-&lt;br /&gt;
 !arrive_dist&lt;br /&gt;
 |Определяет расстояние, на котором отряд считается прибывшим в смарт и регистрируется в нем.&lt;br /&gt;
 |arrive_dist = 100&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
* '''Параметры smart_control: '''&lt;br /&gt;
{| class=&amp;quot;standard&amp;quot;&lt;br /&gt;
 !Параметр&lt;br /&gt;
 !Описание&lt;br /&gt;
 !Пример&lt;br /&gt;
 |-&lt;br /&gt;
 !noweap_zone&lt;br /&gt;
 |Определяет рестриктор, в котором запрещается использовать оружие (в том числе актору).&lt;br /&gt;
 |noweap_zone = zat_a2_sr_noweap&lt;br /&gt;
 |-&lt;br /&gt;
 !ignore_zone&lt;br /&gt;
 |Определяет рестриктор, в котором НПС не реагируют на опасности даже если атакованы.&lt;br /&gt;
 |ignore_zone = zat_a2_sr_light&lt;br /&gt;
 |-&lt;br /&gt;
 !alarm_start_sound&lt;br /&gt;
 |Воспроизводит звук из script_sound_...ltx, если актор атаковал смарт.&lt;br /&gt;
 |alarm_start_sound = zat_a2_base_alarm&lt;br /&gt;
 |-&lt;br /&gt;
 !alarm_stop_sound&lt;br /&gt;
 |Воспроизводит звук из script_sound_...ltx, когда тревога закончилась.&lt;br /&gt;
 |alarm_start_sound = zat_a2_base_relax&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
* '''Параметры respawn_params'''&lt;br /&gt;
Данная секция представляет собой список ссылок на секции сквадов, которые будут спауниться в этом смарт-террейне.&amp;lt;br&amp;gt;&lt;br /&gt;
Пример секции: &lt;br /&gt;
&amp;lt;blockquote&amp;gt;'''&lt;br /&gt;
'''[respawn@base_smart]&amp;lt;br&amp;gt;&lt;br /&gt;
spawn_bandit@novice&amp;lt;br&amp;gt;&lt;br /&gt;
spawn_bandit@advanced&amp;lt;br&amp;gt;&lt;br /&gt;
spawn_bandit@master&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
: Каждая секция сквада имеет следующие параметры:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard&amp;quot;&lt;br /&gt;
 !Параметр&lt;br /&gt;
 !Описание&lt;br /&gt;
 !Пример&lt;br /&gt;
 |-&lt;br /&gt;
 !spawn_squads&lt;br /&gt;
 |Список имен сквадов из squad_descr_...ltx. Может иметь логические проверки условий.&lt;br /&gt;
 |spawn_squads = bandit_sim_squad_veteran, bandit_sim_squad_advanced&lt;br /&gt;
 |-&lt;br /&gt;
 !spawn_num&lt;br /&gt;
 |Количество отрядов, которые будут респаунится. Может иметь логические проверки условий. &lt;br /&gt;
 |spawn_num = {+infoportion} 2, 0&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Параметры секции [exclusive]'''&lt;br /&gt;
Секция позволяет задавать логику для уникальных персонажей, которые находятся в данном смарте. &amp;lt;br&amp;gt;Пример использования:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
'''[exclusive]'''&amp;lt;br&amp;gt;&lt;br /&gt;
zat_a2_stalker_barmen = zaton\zat_a2_stalker_barmen.ltx&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Параметры:&lt;br /&gt;
{| class=&amp;quot;standard&amp;quot;&lt;br /&gt;
 !zat_a2_stalker_barmen&lt;br /&gt;
 |Сharacter ID НПС&lt;br /&gt;
 |-&lt;br /&gt;
 !zaton\zat_a2_stalker_barmen.ltx&lt;br /&gt;
 |путь к файлу с логикой.&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
== Работа в смарт-террейнах ==&lt;br /&gt;
Под работой стоит понимать пути по которым ходят, стоят и отыгрывают анимации НПС при попадании в смарт. Каждый тип работы должен начинатся с единицы. Предположительно максимальное число каждого типа работ - '''20'''. Каждый тип работы имеет свой приоритет. Чем меньше число тем больше вероятность, что НПС пойдет на эту работу. &lt;br /&gt;
&lt;br /&gt;
Имя каждой работы состоит из:&amp;lt;br&amp;gt;&lt;br /&gt;
# Имени смарта ''(esc_a1)''&lt;br /&gt;
# Типа работы ''(walker)''&lt;br /&gt;
# Номера работы ''(1,2,3..20)''&lt;br /&gt;
# Дополнительные параметры для вейпоинтов ''(walk,look)''&lt;br /&gt;
Пример:&amp;lt;br&amp;gt;&lt;br /&gt;
'''esc_a1_walker_1_walk''' &lt;br /&gt;
&lt;br /&gt;
'''Типы работ:'''&lt;br /&gt;
{| class=&amp;quot;standard&amp;quot;&lt;br /&gt;
 !Название&lt;br /&gt;
 !Приоритет&lt;br /&gt;
 !Описание&lt;br /&gt;
 !Пример&lt;br /&gt;
 |-&lt;br /&gt;
 !SLEEP&lt;br /&gt;
 |10&lt;br /&gt;
 |Вейпоинт, по которому пойдет сталкер спать ночью. &lt;br /&gt;
 |esc_a1_sleep_1_walk&lt;br /&gt;
 |-&lt;br /&gt;
 !WALKER&lt;br /&gt;
 |15&lt;br /&gt;
 |Обычный вейпоинт, по которому сталкер будет ходить. Предполагается, что имеет конечную цель и анимацию.&lt;br /&gt;
 |esc_a1_walker_1_walk&lt;br /&gt;
 |-&lt;br /&gt;
 !ANIMPOINT&lt;br /&gt;
 |15&lt;br /&gt;
 |Конечная точка с кастомной анимацией: НПС сидит, стоит за стойкой, или стоит, прислонившись к стене.&lt;br /&gt;
 |esc_a1_animpoint_1&lt;br /&gt;
 |-&lt;br /&gt;
 !PATROL&lt;br /&gt;
 |20&lt;br /&gt;
 |Вейпоинт, по которому будут ходить сталкер и выполнять функцию патруля. Должен быть зациклен. &lt;br /&gt;
 |esc_a1_patrol_1_walk&lt;br /&gt;
 |-&lt;br /&gt;
 !COLLECTOR&lt;br /&gt;
 |25&lt;br /&gt;
 |Вейпоинт, по которому пойдет сталкер отыгрывать анимацию собирания артефактов. &lt;br /&gt;
 |esc_a1_collector_1_walk&lt;br /&gt;
 |-&lt;br /&gt;
 !GUARD&lt;br /&gt;
 |25&lt;br /&gt;
 |Вейпоинт, по которому будут ходить сталкер и выполнять функцию охраны. Должен быть зациклен. &lt;br /&gt;
 |esc_a1_guard_1_walk&lt;br /&gt;
 |-&lt;br /&gt;
 !SNIPER&lt;br /&gt;
 |30&lt;br /&gt;
 |Вейпоинт, куда пойдет снайпер, если таковой имеется в скваде. Должен иметь две точки в вейпоинте look.&lt;br /&gt;
 |esc_a1_sniper_1_walk&lt;br /&gt;
 |-&lt;br /&gt;
 !CAMPER&lt;br /&gt;
 |45&lt;br /&gt;
 |Вейпоинт, куда пойдет НПС и будет выполнять роль кемпера. Предположительно ничего не будет делать.&lt;br /&gt;
 |esc_a1_camper_1_walk&lt;br /&gt;
 |-&lt;br /&gt;
 !SURGE&lt;br /&gt;
 |50&lt;br /&gt;
 |Вейпоинт, по которому пойдет сталкер в случае выброса. Должно быть разрешено в файле simulation_objects_props.ltx&lt;br /&gt;
 |esc_a1_surge_1_walk&lt;br /&gt;
 |-&lt;br /&gt;
 !MOB HOME&lt;br /&gt;
 |40&lt;br /&gt;
 |Вейпоинт, по которому будут двигаться мутанты в смарте. '''Только для мутантов!'''  &lt;br /&gt;
 |esc_a1_home_1_walk&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
Некоторые walk-вейпоинты, могут не иметь look-вейпоинтов. Для некоторых наличие look-вейпоинта обязательно. Для того, чтобы точка walk-вейпоинта работала с точкой look-вейпоинта, необходимо каждому из них задать одинаковый флаг. Некоторые анимации также стоит задавать в look-поинтах.&lt;br /&gt;
&lt;br /&gt;
'''Чтобы сталкеры могли сидеть возле костра необходимо:&lt;br /&gt;
# поставить walk-вейпоинт на место где они сядут и look-вейпоинт куда будут смотреть. &lt;br /&gt;
# установить общий флаг&lt;br /&gt;
# в параметрах '''look'''-вейпоинта (именно look) задать одну из этих анимаций:&lt;br /&gt;
#* sit&lt;br /&gt;
#* sit_knee&lt;br /&gt;
#* sit_ass&lt;br /&gt;
&lt;br /&gt;
Список остальных анимаций см. в файле '''scripts\state_lib.script'''.&lt;br /&gt;
== Симуляция ==&lt;br /&gt;
=== Некоторые условия работы симуляции ===&lt;br /&gt;
В файле '''scripts\sim_board.script''' для каждой группировки заданы прекондишены:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
squad = {	stalker		= { prec = function(squad, target) return in_time_interval(6, 19) and simulation_objects.sim_dist_to(squad, target) &amp;lt;= 150 end },&lt;br /&gt;
		bandit		= { prec = function(squad, target) return in_time_interval(6, 19) and simulation_objects.sim_dist_to(squad, target) &amp;lt;= 150 end },&lt;br /&gt;
		dolg		= { prec = function(squad, target) return in_time_interval(6, 19) and simulation_objects.sim_dist_to(squad, target) &amp;lt;= 150 end },&lt;br /&gt;
		freedom		= { prec = function(squad, target) return in_time_interval(6, 19) and simulation_objects.sim_dist_to(squad, target) &amp;lt;= 150 end },&lt;br /&gt;
		killer		= { prec = function(squad, target) return in_time_interval(6, 19) and simulation_objects.sim_dist_to(squad, target) &amp;lt;= 150 end }&lt;br /&gt;
	},&lt;br /&gt;
smart = { 	base		= { prec = function(squad, target) return in_time_interval(18,8) and not xr_conditions.surge_started() and not	travel_manager.check_squad_for_enemies(squad) &lt;br /&gt;
												and (target:name() == &amp;quot;zat_stalker_base_smart&amp;quot; or target:name() == &amp;quot;jup_a6&amp;quot; or target:name() == &amp;quot;pri_a16&amp;quot;) end },&lt;br /&gt;
		surge		= { prec = function() return xr_conditions.surge_started() end },&lt;br /&gt;
		territory	= { prec = function() return in_time_interval(8,18) and not xr_conditions.surge_started() end },&lt;br /&gt;
		resource	= { prec = function(squad, target) return in_time_interval(8,18) and not xr_conditions.surge_started() end } -- and squad:has_detector() },&lt;br /&gt;
		lair	 	= { prec = function() return in_time_interval(6,19) end }&lt;br /&gt;
	},&lt;br /&gt;
actor = { 	prec = function(squad, target) return has_alife_info(&amp;quot;sim_bandit_attack_harder&amp;quot;) and simulation_objects.sim_dist_to(squad, target) &amp;lt;= 150 end }&lt;br /&gt;
			&amp;lt;/code&amp;gt;&lt;br /&gt;
	&lt;br /&gt;
* '''squad''' — набор условий для вражды с другой фракцией.&lt;br /&gt;
**'''simulation_objects.sim_dist_to(squad, target) &amp;lt;= 150''' — проверка расстояния до отряда меньше требуемой.&lt;br /&gt;
* '''smart''' - набор условий для выбора того, или иного смарта.	&lt;br /&gt;
** '''base'''  — набор условий для возвращения на базу-смарт ('''default_base''') &amp;lt;br&amp;gt;&lt;br /&gt;
*** '''return in_time_interval(18,8) '''  — проверка находится ли отряд в данном отрезке времени &amp;lt;br&amp;gt;&lt;br /&gt;
*** '''xr_conditions.surge_started()'''  — проверка начала выброса &amp;lt;br&amp;gt;&lt;br /&gt;
*** '''travel_manager.check_squad_for_enemies(squad)'''  — проверка присутствия в отряде врагов. &amp;lt;br&amp;gt;&lt;br /&gt;
*** '''target:name() == &amp;quot;zat_stalker_base_smart&amp;quot; or target:name() == &amp;quot;jup_a6&amp;quot; or target:name() == &amp;quot;pri_a16&amp;quot; '''  — проверка наличия базы. &lt;br /&gt;
** '''surge''' — набор условий для поиска укрытия от выброса.&lt;br /&gt;
** '''territory''' — набор условий для начала поиска обычного смарта '''default'''. &lt;br /&gt;
** '''resource''' — набор условий для начала поиска смарта с аномалиями и добычи артефактов '''(default_resource)'''.&lt;br /&gt;
** '''lair''' — набор условий для поиска мутантом смарта-укрытия '''(default_lair)'''&lt;br /&gt;
* '''actor''' — набор условий для вражды с актором.&lt;br /&gt;
** '''has_alife_info(&amp;quot;sim_bandit_attack_harder&amp;quot;)''' — проверка присутствия инфопоршня&lt;br /&gt;
&lt;br /&gt;
=== Добавление смарта в общую симуляцию ===&lt;br /&gt;
В файле '''misc\travel_manager.ltx''' есть два раздела. &amp;lt;br&amp;gt;&lt;br /&gt;
* '''[locations]'''&lt;br /&gt;
Секция описание того куда направлются сталкеры. Текст добавляется в '''text\rus\st_dialog_manager.xml'''.&amp;lt;br&amp;gt;&lt;br /&gt;
Принцип: '''ваше_название_смарта''' = '''st_stalker_ваше_название_смарта'''. &amp;lt;br&amp;gt;&lt;br /&gt;
Например для смарта '''zat_sim_1''' которому соответствует стринг '''st_stalker_zat_sim_1''' НПС на вопрос &amp;quot;Куда вы направляетесь?&amp;quot;, ответит: ''&amp;quot;Иду в направлении аномалии «Котёл». Там рощица за ней - туда и иду.&amp;quot;''&lt;br /&gt;
* '''[traveler]'''&lt;br /&gt;
В файле уже все сказано: это перечень точек, куда проводники могут отвести за бабосы. Тут указываем наш смарт, затем создаем секцию:&lt;br /&gt;
&amp;lt;code&amp;gt;[ваше_название_смарта]&lt;br /&gt;
level = ваш_уровень&lt;br /&gt;
name = ваше_название_смарта &lt;br /&gt;
condlist = true&amp;lt;/code&amp;gt;&lt;br /&gt;
ваше_название_смарта указываем в файле '''text\rus\st_land_names.xml''' &amp;lt;br&amp;gt;&lt;br /&gt;
'''condlist''' - условия существования данной точки. Можно использовать стандартные проверки условий.&lt;br /&gt;
&lt;br /&gt;
=== Добавление базы в общую симуляцию ===&lt;br /&gt;
#В '''misc\simulation_objects_props.ltx''' назначаем вашему смарту класс '''default_base'''. &lt;br /&gt;
#В файле '''scripts\state_lib.script''' для нужной вам группировки в секции '''base''' дополняем своей проверкой '''target:name() == &amp;quot;ваше_название_смарта&amp;quot;'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
'''Написал и оформил''': Vast&amp;lt;br&amp;gt;&lt;br /&gt;
Большое количество фраз и информации было взято отсюда [http://www.stalker-modostroy.ru/publ/x_ray_sdk/x_ray_sdk_0_7/rabota_so_smart_terrain_v_stalker_zp_sozdanie_i_nastrojka_squad_ov_otrjadov/4-1-0-12], а также из статей умершего сайта '''stalker-2.com.ua''', поэтому линков никаих нет. &amp;lt;br&amp;gt;&lt;br /&gt;
Любые дополнения, критика, угрозы, все приветствуется.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
[[Category:A-Life]]&lt;/div&gt;</summary>
		<author><name>Vast</name></author>	</entry>

	<entry>
		<id>http://stalkerin.gameru.net/wiki/index.php?title=CoP._%D0%A1%D0%B8%D0%BC%D1%83%D0%BB%D1%8F%D1%86%D0%B8%D1%8F._%D0%9F%D0%B0%D1%80%D0%B0%D0%BC%D0%B5%D1%82%D1%80%D1%8B_%D1%81%D0%BC%D0%B0%D1%80%D1%82-%D1%82%D0%B5%D1%80%D1%80%D0%B5%D0%B9%D0%BD%D0%BE%D0%B2.</id>
		<title>CoP. Симуляция. Параметры смарт-террейнов.</title>
		<link rel="alternate" type="text/html" href="http://stalkerin.gameru.net/wiki/index.php?title=CoP._%D0%A1%D0%B8%D0%BC%D1%83%D0%BB%D1%8F%D1%86%D0%B8%D1%8F._%D0%9F%D0%B0%D1%80%D0%B0%D0%BC%D0%B5%D1%82%D1%80%D1%8B_%D1%81%D0%BC%D0%B0%D1%80%D1%82-%D1%82%D0%B5%D1%80%D1%80%D0%B5%D0%B9%D0%BD%D0%BE%D0%B2."/>
				<updated>2016-07-09T19:15:46Z</updated>
		
		<summary type="html">&lt;p&gt;Vast: /* Добавление базы в общую симуляцию */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Смарт-террейны ==&lt;br /&gt;
Смарт-террейн - это определенный скриптовый класс в игре, при помощи которого происходит заселение локаций. В смартах организуются работы для НПС, реализуется логика для отдельных эксклюзивных персонажей, происходит респавн НПС и монстров, а также организуются укрытия от выброса для НПС.&lt;br /&gt;
&lt;br /&gt;
===== Типы смарт-террейнов =====&lt;br /&gt;
{| class=&amp;quot;standard&amp;quot;&lt;br /&gt;
 !'''default'''&lt;br /&gt;
 |Обычный тип смарт-террейна.&lt;br /&gt;
 |-&lt;br /&gt;
 !'''default_resource'''&lt;br /&gt;
 |Смарты с наличием аномальных зон, в которых есть работа для НПС по поиску артефактов. &lt;br /&gt;
 |-&lt;br /&gt;
 !'''default_base'''&lt;br /&gt;
 |Главный смарт. Сюда идут все отряды с наступлением ночи.&lt;br /&gt;
 |-&lt;br /&gt;
 !'''default_lair'''&lt;br /&gt;
 |Смарт для монстров. Тем не менее сталкеры сюда тоже могут прийти.&lt;br /&gt;
 |-&lt;br /&gt;
 !'''default_squad'''&lt;br /&gt;
 |Не смарт. Класс, выделяющий в симуляции уникальные отряды и персонажей.&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
===== Параметры смарт-террейнов =====&lt;br /&gt;
* '''Необходимые параметры:'''&lt;br /&gt;
{|class=&amp;quot;standard&amp;quot;&lt;br /&gt;
 !Параметр&lt;br /&gt;
 !Описание&lt;br /&gt;
 !Пример&lt;br /&gt;
 |-&lt;br /&gt;
 !'''squad_id'''&lt;br /&gt;
 |Уникальный ID отряда. Никогда не должен повторятся. Для любой локации начинается с единицы.&lt;br /&gt;
 |squad_id = 1&lt;br /&gt;
 |-&lt;br /&gt;
 !'''max_population'''&lt;br /&gt;
 |Количество отрядов, которые может принять смарт. Определяет для скольких отрядов в симуляции тут найдется работа.&lt;br /&gt;
 |max_population = 1&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
* '''Дополнительные параметры: '''&lt;br /&gt;
{| class=&amp;quot;standard&amp;quot;&lt;br /&gt;
 !Параметр&lt;br /&gt;
 !Описание&lt;br /&gt;
 !Пример&lt;br /&gt;
 |-&lt;br /&gt;
 !respawn_only_smart&lt;br /&gt;
 |Могут ли из смарта удаляться отряды в симуляции.&lt;br /&gt;
 |respawn_only_smart = true&lt;br /&gt;
 |-&lt;br /&gt;
 !respawn_params&lt;br /&gt;
 |Ссылка на секцию респауна (параметры этой секции см. ниже).&lt;br /&gt;
 |respawn_params = respawn@base_smart&lt;br /&gt;
 |-&lt;br /&gt;
 !smart_control&lt;br /&gt;
 |Ссылка на секцию с параметрами контроля смарта.&lt;br /&gt;
 |smart_control = smart_control&lt;br /&gt;
 |-&lt;br /&gt;
 !def_restr&lt;br /&gt;
 |Определяет рестриктор, в пределах которой находится лагерь. &lt;br /&gt;
 |def_restr = pri_a16_sr_noweap&lt;br /&gt;
 |-&lt;br /&gt;
 !safe_restr &lt;br /&gt;
 |Определяет рестриктор, в пределах которой НПС бессмертны.&lt;br /&gt;
 |safe_restr = pri_surge_hide_a16&lt;br /&gt;
 |-&lt;br /&gt;
 !spawn_point &lt;br /&gt;
 |Имя вейпоинта, в котором происходит респаун. Может иметь значение ''self''.&lt;br /&gt;
 |spawn_point = zat_sim_16_spawn_point&lt;br /&gt;
 |-&lt;br /&gt;
 !arrive_dist&lt;br /&gt;
 |Определяет расстояние, на котором отряд считается прибывшим в смарт и регистрируется в нем.&lt;br /&gt;
 |arrive_dist = 100&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
* '''Параметры smart_control: '''&lt;br /&gt;
{| class=&amp;quot;standard&amp;quot;&lt;br /&gt;
 !Параметр&lt;br /&gt;
 !Описание&lt;br /&gt;
 !Пример&lt;br /&gt;
 |-&lt;br /&gt;
 !noweap_zone&lt;br /&gt;
 |Определяет рестриктор, в котором запрещается использовать оружие (в том числе актору).&lt;br /&gt;
 |noweap_zone = zat_a2_sr_noweap&lt;br /&gt;
 |-&lt;br /&gt;
 !ignore_zone&lt;br /&gt;
 |Определяет рестриктор, в котором НПС не реагируют на опасности даже если атакованы.&lt;br /&gt;
 |ignore_zone = zat_a2_sr_light&lt;br /&gt;
 |-&lt;br /&gt;
 !alarm_start_sound&lt;br /&gt;
 |Воспроизводит звук из script_sound_...ltx, если актор атаковал смарт.&lt;br /&gt;
 |alarm_start_sound = zat_a2_base_alarm&lt;br /&gt;
 |-&lt;br /&gt;
 !alarm_stop_sound&lt;br /&gt;
 |Воспроизводит звук из script_sound_...ltx, когда тревога закончилась.&lt;br /&gt;
 |alarm_start_sound = zat_a2_base_relax&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
* '''Параметры respawn_params'''&lt;br /&gt;
Данная секция представляет собой список ссылок на секции сквадов, которые будут спауниться в этом смарт-террейне.&amp;lt;br&amp;gt;&lt;br /&gt;
Пример секции: &lt;br /&gt;
&amp;lt;blockquote&amp;gt;'''&lt;br /&gt;
'''[respawn@base_smart]&amp;lt;br&amp;gt;&lt;br /&gt;
spawn_bandit@novice&amp;lt;br&amp;gt;&lt;br /&gt;
spawn_bandit@advanced&amp;lt;br&amp;gt;&lt;br /&gt;
spawn_bandit@master&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
: Каждая секция сквада имеет следующие параметры:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard&amp;quot;&lt;br /&gt;
 !Параметр&lt;br /&gt;
 !Описание&lt;br /&gt;
 !Пример&lt;br /&gt;
 |-&lt;br /&gt;
 !spawn_squads&lt;br /&gt;
 |Список имен сквадов из squad_descr_...ltx. Может иметь логические проверки условий.&lt;br /&gt;
 |spawn_squads = bandit_sim_squad_veteran, bandit_sim_squad_advanced&lt;br /&gt;
 |-&lt;br /&gt;
 !spawn_num&lt;br /&gt;
 |Количество отрядов, которые будут респаунится. Может иметь логические проверки условий. &lt;br /&gt;
 |spawn_num = {+infoportion} 2, 0&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Параметры секции [exclusive]'''&lt;br /&gt;
Секция позволяет задавать логику для уникальных персонажей, которые находятся в данном смарте. &amp;lt;br&amp;gt;Пример использования:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
'''[exclusive]'''&amp;lt;br&amp;gt;&lt;br /&gt;
zat_a2_stalker_barmen = zaton\zat_a2_stalker_barmen.ltx&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Параметры:&lt;br /&gt;
{| class=&amp;quot;standard&amp;quot;&lt;br /&gt;
 !zat_a2_stalker_barmen&lt;br /&gt;
 |Сharacter ID НПС&lt;br /&gt;
 |-&lt;br /&gt;
 !zaton\zat_a2_stalker_barmen.ltx&lt;br /&gt;
 |путь к файлу с логикой.&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
== Работа в смарт-террейнах ==&lt;br /&gt;
Под работой стоит понимать пути по которым ходят, стоят и отыгрывают анимации НПС при попадании в смарт. Каждый тип работы должен начинатся с единицы. Предположительно максимальное число каждого типа работ - '''20'''. Каждый тип работы имеет свой приоритет. Чем меньше число тем больше вероятность, что НПС пойдет на эту работу. &lt;br /&gt;
&lt;br /&gt;
Имя каждой работы состоит из:&amp;lt;br&amp;gt;&lt;br /&gt;
# Имени смарта ''(esc_a1)''&lt;br /&gt;
# Типа работы ''(walker)''&lt;br /&gt;
# Номера работы ''(1,2,3..20)''&lt;br /&gt;
# Дополнительные параметры для вейпоинтов ''(walk,look)''&lt;br /&gt;
Пример:&amp;lt;br&amp;gt;&lt;br /&gt;
'''esc_a1_walker_1_walk''' &lt;br /&gt;
&lt;br /&gt;
'''Типы работ:'''&lt;br /&gt;
{| class=&amp;quot;standard&amp;quot;&lt;br /&gt;
 !Название&lt;br /&gt;
 !Приоритет&lt;br /&gt;
 !Описание&lt;br /&gt;
 !Пример&lt;br /&gt;
 |-&lt;br /&gt;
 !SLEEP&lt;br /&gt;
 |10&lt;br /&gt;
 |Вейпоинт, по которому пойдет сталкер спать ночью. &lt;br /&gt;
 |esc_a1_sleep_1_walk&lt;br /&gt;
 |-&lt;br /&gt;
 !WALKER&lt;br /&gt;
 |15&lt;br /&gt;
 |Обычный вейпоинт, по которому сталкер будет ходить. Предполагается, что имеет конечную цель и анимацию.&lt;br /&gt;
 |esc_a1_walker_1_walk&lt;br /&gt;
 |-&lt;br /&gt;
 !ANIMPOINT&lt;br /&gt;
 |15&lt;br /&gt;
 |Конечная точка с кастомной анимацией: НПС сидит, стоит за стойкой, или стоит, прислонившись к стене.&lt;br /&gt;
 |esc_a1_animpoint_1&lt;br /&gt;
 |-&lt;br /&gt;
 !PATROL&lt;br /&gt;
 |20&lt;br /&gt;
 |Вейпоинт, по которому будут ходить сталкер и выполнять функцию патруля. Должен быть зациклен. &lt;br /&gt;
 |esc_a1_patrol_1_walk&lt;br /&gt;
 |-&lt;br /&gt;
 !COLLECTOR&lt;br /&gt;
 |25&lt;br /&gt;
 |Вейпоинт, по которому пойдет сталкер отыгрывать анимацию собирания артефактов. &lt;br /&gt;
 |esc_a1_collector_1_walk&lt;br /&gt;
 |-&lt;br /&gt;
 !GUARD&lt;br /&gt;
 |25&lt;br /&gt;
 |Вейпоинт, по которому будут ходить сталкер и выполнять функцию охраны. Должен быть зациклен. &lt;br /&gt;
 |esc_a1_guard_1_walk&lt;br /&gt;
 |-&lt;br /&gt;
 !SNIPER&lt;br /&gt;
 |30&lt;br /&gt;
 |Вейпоинт, куда пойдет снайпер, если таковой имеется в скваде. Должен иметь две точки в вейпоинте look.&lt;br /&gt;
 |esc_a1_sniper_1_walk&lt;br /&gt;
 |-&lt;br /&gt;
 !CAMPER&lt;br /&gt;
 |45&lt;br /&gt;
 |Вейпоинт, куда пойдет НПС и будет выполнять роль кемпера. Предположительно ничего не будет делать.&lt;br /&gt;
 |esc_a1_camper_1_walk&lt;br /&gt;
 |-&lt;br /&gt;
 !SURGE&lt;br /&gt;
 |50&lt;br /&gt;
 |Вейпоинт, по которому пойдет сталкер в случае выброса. Должно быть разрешено в файле simulation_objects_props.ltx&lt;br /&gt;
 |esc_a1_surge_1_walk&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
Некоторые walk-вейпоинты, могут не иметь look-вейпоинтов. Для некоторых наличие look-вейпоинта обязательно. Для того, чтобы точка walk-вейпоинта работала с точкой look-вейпоинта, необходимо каждому из них задать одинаковый флаг. Некоторые анимации также стоит задавать в look-поинтах.&lt;br /&gt;
&lt;br /&gt;
'''Чтобы сталкеры могли сидеть возле костра необходимо:&lt;br /&gt;
# поставить walk-вейпоинт на место где они сядут и look-вейпоинт куда будут смотреть. &lt;br /&gt;
# установить общий флаг&lt;br /&gt;
# в параметрах '''look'''-вейпоинта (именно look) задать одну из этих анимаций:&lt;br /&gt;
#* sit&lt;br /&gt;
#* sit_knee&lt;br /&gt;
#* sit_ass&lt;br /&gt;
&lt;br /&gt;
Список остальных анимаций см. в файле '''scripts\state_lib.script'''.&lt;br /&gt;
== Симуляция ==&lt;br /&gt;
=== Некоторые условия работы симуляции ===&lt;br /&gt;
В файле '''scripts\sim_board.script''' для каждой группировки заданы прекондишены:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
squad = {	stalker		= { prec = function(squad, target) return in_time_interval(6, 19) and simulation_objects.sim_dist_to(squad, target) &amp;lt;= 150 end },&lt;br /&gt;
		bandit		= { prec = function(squad, target) return in_time_interval(6, 19) and simulation_objects.sim_dist_to(squad, target) &amp;lt;= 150 end },&lt;br /&gt;
		dolg		= { prec = function(squad, target) return in_time_interval(6, 19) and simulation_objects.sim_dist_to(squad, target) &amp;lt;= 150 end },&lt;br /&gt;
		freedom		= { prec = function(squad, target) return in_time_interval(6, 19) and simulation_objects.sim_dist_to(squad, target) &amp;lt;= 150 end },&lt;br /&gt;
		killer		= { prec = function(squad, target) return in_time_interval(6, 19) and simulation_objects.sim_dist_to(squad, target) &amp;lt;= 150 end }&lt;br /&gt;
	},&lt;br /&gt;
smart = { 	base		= { prec = function(squad, target) return in_time_interval(18,8) and not xr_conditions.surge_started() and not	travel_manager.check_squad_for_enemies(squad) &lt;br /&gt;
												and (target:name() == &amp;quot;zat_stalker_base_smart&amp;quot; or target:name() == &amp;quot;jup_a6&amp;quot; or target:name() == &amp;quot;pri_a16&amp;quot;) end },&lt;br /&gt;
		surge		= { prec = function() return xr_conditions.surge_started() end },&lt;br /&gt;
		territory	= { prec = function() return in_time_interval(8,18) and not xr_conditions.surge_started() end },&lt;br /&gt;
		resource	= { prec = function(squad, target) return in_time_interval(8,18) and not xr_conditions.surge_started() end } -- and squad:has_detector() },&lt;br /&gt;
		lair	 	= { prec = function() return in_time_interval(6,19) end }&lt;br /&gt;
	},&lt;br /&gt;
actor = { 	prec = function(squad, target) return has_alife_info(&amp;quot;sim_bandit_attack_harder&amp;quot;) and simulation_objects.sim_dist_to(squad, target) &amp;lt;= 150 end }&lt;br /&gt;
			&amp;lt;/code&amp;gt;&lt;br /&gt;
	&lt;br /&gt;
* '''squad''' — набор условий для вражды с другой фракцией.&lt;br /&gt;
**'''simulation_objects.sim_dist_to(squad, target) &amp;lt;= 150''' — проверка расстояния до отряда меньше требуемой.&lt;br /&gt;
* '''smart''' - набор условий для выбора того, или иного смарта.	&lt;br /&gt;
** '''base'''  — набор условий для возвращения на базу-смарт ('''default_base''') &amp;lt;br&amp;gt;&lt;br /&gt;
*** '''return in_time_interval(18,8) '''  — проверка находится ли отряд в данном отрезке времени &amp;lt;br&amp;gt;&lt;br /&gt;
*** '''xr_conditions.surge_started()'''  — проверка начала выброса &amp;lt;br&amp;gt;&lt;br /&gt;
*** '''travel_manager.check_squad_for_enemies(squad)'''  — проверка присутствия в отряде врагов. &amp;lt;br&amp;gt;&lt;br /&gt;
*** '''target:name() == &amp;quot;zat_stalker_base_smart&amp;quot; or target:name() == &amp;quot;jup_a6&amp;quot; or target:name() == &amp;quot;pri_a16&amp;quot; '''  — проверка наличия базы. &lt;br /&gt;
** '''surge''' — набор условий для поиска укрытия от выброса.&lt;br /&gt;
** '''territory''' — набор условий для начала поиска обычного смарта '''default'''. &lt;br /&gt;
** '''resource''' — набор условий для начала поиска смарта с аномалиями и добычи артефактов '''(default_resource)'''.&lt;br /&gt;
** '''lair''' — набор условий для поиска мутантом смарта-укрытия '''(default_lair)'''&lt;br /&gt;
* '''actor''' — набор условий для вражды с актором.&lt;br /&gt;
** '''has_alife_info(&amp;quot;sim_bandit_attack_harder&amp;quot;)''' — проверка присутствия инфопоршня&lt;br /&gt;
&lt;br /&gt;
=== Добавление смарта в общую симуляцию ===&lt;br /&gt;
В файле '''misc\travel_manager.ltx''' есть два раздела. &amp;lt;br&amp;gt;&lt;br /&gt;
* '''[locations]'''&lt;br /&gt;
Секция описание того куда направлются сталкеры. Текст добавляется в '''text\rus\st_dialog_manager.xml'''.&amp;lt;br&amp;gt;&lt;br /&gt;
Принцип: '''ваше_название_смарта''' = '''st_stalker_ваше_название_смарта'''. &amp;lt;br&amp;gt;&lt;br /&gt;
Например для смарта '''zat_sim_1''' которому соответствует стринг '''st_stalker_zat_sim_1''' НПС на вопрос &amp;quot;Куда вы направляетесь?&amp;quot;, ответит: ''&amp;quot;Иду в направлении аномалии «Котёл». Там рощица за ней - туда и иду.&amp;quot;''&lt;br /&gt;
* '''[traveler]'''&lt;br /&gt;
В файле уже все сказано: это перечень точек, куда проводники могут отвести за бабосы. Тут указываем наш смарт, затем создаем секцию:&lt;br /&gt;
&amp;lt;code&amp;gt;[ваше_название_смарта]&lt;br /&gt;
level = ваш_уровень&lt;br /&gt;
name = ваше_название_смарта &lt;br /&gt;
condlist = true&amp;lt;/code&amp;gt;&lt;br /&gt;
ваше_название_смарта указываем в файле '''text\rus\st_land_names.xml''' &amp;lt;br&amp;gt;&lt;br /&gt;
'''condlist''' - условия существования данной точки. Можно использовать стандартные проверки условий.&lt;br /&gt;
&lt;br /&gt;
=== Добавление базы в общую симуляцию ===&lt;br /&gt;
#В '''misc\simulation_objects_props.ltx''' назначаем вашему смарту класс '''default_base'''. &lt;br /&gt;
#В файле '''scripts\state_lib.script''' для нужной вам группировки в секции '''base''' дополняем своей проверкой '''target:name() == &amp;quot;ваше_название_смарта&amp;quot;'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
'''Написал и оформил''': Vast&amp;lt;br&amp;gt;&lt;br /&gt;
Большое количество фраз и информации было взято отсюда [http://www.stalker-modostroy.ru/publ/x_ray_sdk/x_ray_sdk_0_7/rabota_so_smart_terrain_v_stalker_zp_sozdanie_i_nastrojka_squad_ov_otrjadov/4-1-0-12], а также из статей умершего сайта '''stalker-2.com.ua''', поэтому линков никаих нет. &amp;lt;br&amp;gt;&lt;br /&gt;
Любые дополнения, критика, угрозы, все приветствуется.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
[[Category:A-Life]]&lt;/div&gt;</summary>
		<author><name>Vast</name></author>	</entry>

	<entry>
		<id>http://stalkerin.gameru.net/wiki/index.php?title=CoP._%D0%A1%D0%B8%D0%BC%D1%83%D0%BB%D1%8F%D1%86%D0%B8%D1%8F._%D0%9F%D0%B0%D1%80%D0%B0%D0%BC%D0%B5%D1%82%D1%80%D1%8B_%D1%81%D0%BC%D0%B0%D1%80%D1%82-%D1%82%D0%B5%D1%80%D1%80%D0%B5%D0%B9%D0%BD%D0%BE%D0%B2.</id>
		<title>CoP. Симуляция. Параметры смарт-террейнов.</title>
		<link rel="alternate" type="text/html" href="http://stalkerin.gameru.net/wiki/index.php?title=CoP._%D0%A1%D0%B8%D0%BC%D1%83%D0%BB%D1%8F%D1%86%D0%B8%D1%8F._%D0%9F%D0%B0%D1%80%D0%B0%D0%BC%D0%B5%D1%82%D1%80%D1%8B_%D1%81%D0%BC%D0%B0%D1%80%D1%82-%D1%82%D0%B5%D1%80%D1%80%D0%B5%D0%B9%D0%BD%D0%BE%D0%B2."/>
				<updated>2016-07-09T19:15:04Z</updated>
		
		<summary type="html">&lt;p&gt;Vast: /* Добавление смарта в общую симуляцию */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Смарт-террейны ==&lt;br /&gt;
Смарт-террейн - это определенный скриптовый класс в игре, при помощи которого происходит заселение локаций. В смартах организуются работы для НПС, реализуется логика для отдельных эксклюзивных персонажей, происходит респавн НПС и монстров, а также организуются укрытия от выброса для НПС.&lt;br /&gt;
&lt;br /&gt;
===== Типы смарт-террейнов =====&lt;br /&gt;
{| class=&amp;quot;standard&amp;quot;&lt;br /&gt;
 !'''default'''&lt;br /&gt;
 |Обычный тип смарт-террейна.&lt;br /&gt;
 |-&lt;br /&gt;
 !'''default_resource'''&lt;br /&gt;
 |Смарты с наличием аномальных зон, в которых есть работа для НПС по поиску артефактов. &lt;br /&gt;
 |-&lt;br /&gt;
 !'''default_base'''&lt;br /&gt;
 |Главный смарт. Сюда идут все отряды с наступлением ночи.&lt;br /&gt;
 |-&lt;br /&gt;
 !'''default_lair'''&lt;br /&gt;
 |Смарт для монстров. Тем не менее сталкеры сюда тоже могут прийти.&lt;br /&gt;
 |-&lt;br /&gt;
 !'''default_squad'''&lt;br /&gt;
 |Не смарт. Класс, выделяющий в симуляции уникальные отряды и персонажей.&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
===== Параметры смарт-террейнов =====&lt;br /&gt;
* '''Необходимые параметры:'''&lt;br /&gt;
{|class=&amp;quot;standard&amp;quot;&lt;br /&gt;
 !Параметр&lt;br /&gt;
 !Описание&lt;br /&gt;
 !Пример&lt;br /&gt;
 |-&lt;br /&gt;
 !'''squad_id'''&lt;br /&gt;
 |Уникальный ID отряда. Никогда не должен повторятся. Для любой локации начинается с единицы.&lt;br /&gt;
 |squad_id = 1&lt;br /&gt;
 |-&lt;br /&gt;
 !'''max_population'''&lt;br /&gt;
 |Количество отрядов, которые может принять смарт. Определяет для скольких отрядов в симуляции тут найдется работа.&lt;br /&gt;
 |max_population = 1&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
* '''Дополнительные параметры: '''&lt;br /&gt;
{| class=&amp;quot;standard&amp;quot;&lt;br /&gt;
 !Параметр&lt;br /&gt;
 !Описание&lt;br /&gt;
 !Пример&lt;br /&gt;
 |-&lt;br /&gt;
 !respawn_only_smart&lt;br /&gt;
 |Могут ли из смарта удаляться отряды в симуляции.&lt;br /&gt;
 |respawn_only_smart = true&lt;br /&gt;
 |-&lt;br /&gt;
 !respawn_params&lt;br /&gt;
 |Ссылка на секцию респауна (параметры этой секции см. ниже).&lt;br /&gt;
 |respawn_params = respawn@base_smart&lt;br /&gt;
 |-&lt;br /&gt;
 !smart_control&lt;br /&gt;
 |Ссылка на секцию с параметрами контроля смарта.&lt;br /&gt;
 |smart_control = smart_control&lt;br /&gt;
 |-&lt;br /&gt;
 !def_restr&lt;br /&gt;
 |Определяет рестриктор, в пределах которой находится лагерь. &lt;br /&gt;
 |def_restr = pri_a16_sr_noweap&lt;br /&gt;
 |-&lt;br /&gt;
 !safe_restr &lt;br /&gt;
 |Определяет рестриктор, в пределах которой НПС бессмертны.&lt;br /&gt;
 |safe_restr = pri_surge_hide_a16&lt;br /&gt;
 |-&lt;br /&gt;
 !spawn_point &lt;br /&gt;
 |Имя вейпоинта, в котором происходит респаун. Может иметь значение ''self''.&lt;br /&gt;
 |spawn_point = zat_sim_16_spawn_point&lt;br /&gt;
 |-&lt;br /&gt;
 !arrive_dist&lt;br /&gt;
 |Определяет расстояние, на котором отряд считается прибывшим в смарт и регистрируется в нем.&lt;br /&gt;
 |arrive_dist = 100&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
* '''Параметры smart_control: '''&lt;br /&gt;
{| class=&amp;quot;standard&amp;quot;&lt;br /&gt;
 !Параметр&lt;br /&gt;
 !Описание&lt;br /&gt;
 !Пример&lt;br /&gt;
 |-&lt;br /&gt;
 !noweap_zone&lt;br /&gt;
 |Определяет рестриктор, в котором запрещается использовать оружие (в том числе актору).&lt;br /&gt;
 |noweap_zone = zat_a2_sr_noweap&lt;br /&gt;
 |-&lt;br /&gt;
 !ignore_zone&lt;br /&gt;
 |Определяет рестриктор, в котором НПС не реагируют на опасности даже если атакованы.&lt;br /&gt;
 |ignore_zone = zat_a2_sr_light&lt;br /&gt;
 |-&lt;br /&gt;
 !alarm_start_sound&lt;br /&gt;
 |Воспроизводит звук из script_sound_...ltx, если актор атаковал смарт.&lt;br /&gt;
 |alarm_start_sound = zat_a2_base_alarm&lt;br /&gt;
 |-&lt;br /&gt;
 !alarm_stop_sound&lt;br /&gt;
 |Воспроизводит звук из script_sound_...ltx, когда тревога закончилась.&lt;br /&gt;
 |alarm_start_sound = zat_a2_base_relax&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
* '''Параметры respawn_params'''&lt;br /&gt;
Данная секция представляет собой список ссылок на секции сквадов, которые будут спауниться в этом смарт-террейне.&amp;lt;br&amp;gt;&lt;br /&gt;
Пример секции: &lt;br /&gt;
&amp;lt;blockquote&amp;gt;'''&lt;br /&gt;
'''[respawn@base_smart]&amp;lt;br&amp;gt;&lt;br /&gt;
spawn_bandit@novice&amp;lt;br&amp;gt;&lt;br /&gt;
spawn_bandit@advanced&amp;lt;br&amp;gt;&lt;br /&gt;
spawn_bandit@master&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
: Каждая секция сквада имеет следующие параметры:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard&amp;quot;&lt;br /&gt;
 !Параметр&lt;br /&gt;
 !Описание&lt;br /&gt;
 !Пример&lt;br /&gt;
 |-&lt;br /&gt;
 !spawn_squads&lt;br /&gt;
 |Список имен сквадов из squad_descr_...ltx. Может иметь логические проверки условий.&lt;br /&gt;
 |spawn_squads = bandit_sim_squad_veteran, bandit_sim_squad_advanced&lt;br /&gt;
 |-&lt;br /&gt;
 !spawn_num&lt;br /&gt;
 |Количество отрядов, которые будут респаунится. Может иметь логические проверки условий. &lt;br /&gt;
 |spawn_num = {+infoportion} 2, 0&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Параметры секции [exclusive]'''&lt;br /&gt;
Секция позволяет задавать логику для уникальных персонажей, которые находятся в данном смарте. &amp;lt;br&amp;gt;Пример использования:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
'''[exclusive]'''&amp;lt;br&amp;gt;&lt;br /&gt;
zat_a2_stalker_barmen = zaton\zat_a2_stalker_barmen.ltx&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Параметры:&lt;br /&gt;
{| class=&amp;quot;standard&amp;quot;&lt;br /&gt;
 !zat_a2_stalker_barmen&lt;br /&gt;
 |Сharacter ID НПС&lt;br /&gt;
 |-&lt;br /&gt;
 !zaton\zat_a2_stalker_barmen.ltx&lt;br /&gt;
 |путь к файлу с логикой.&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
== Работа в смарт-террейнах ==&lt;br /&gt;
Под работой стоит понимать пути по которым ходят, стоят и отыгрывают анимации НПС при попадании в смарт. Каждый тип работы должен начинатся с единицы. Предположительно максимальное число каждого типа работ - '''20'''. Каждый тип работы имеет свой приоритет. Чем меньше число тем больше вероятность, что НПС пойдет на эту работу. &lt;br /&gt;
&lt;br /&gt;
Имя каждой работы состоит из:&amp;lt;br&amp;gt;&lt;br /&gt;
# Имени смарта ''(esc_a1)''&lt;br /&gt;
# Типа работы ''(walker)''&lt;br /&gt;
# Номера работы ''(1,2,3..20)''&lt;br /&gt;
# Дополнительные параметры для вейпоинтов ''(walk,look)''&lt;br /&gt;
Пример:&amp;lt;br&amp;gt;&lt;br /&gt;
'''esc_a1_walker_1_walk''' &lt;br /&gt;
&lt;br /&gt;
'''Типы работ:'''&lt;br /&gt;
{| class=&amp;quot;standard&amp;quot;&lt;br /&gt;
 !Название&lt;br /&gt;
 !Приоритет&lt;br /&gt;
 !Описание&lt;br /&gt;
 !Пример&lt;br /&gt;
 |-&lt;br /&gt;
 !SLEEP&lt;br /&gt;
 |10&lt;br /&gt;
 |Вейпоинт, по которому пойдет сталкер спать ночью. &lt;br /&gt;
 |esc_a1_sleep_1_walk&lt;br /&gt;
 |-&lt;br /&gt;
 !WALKER&lt;br /&gt;
 |15&lt;br /&gt;
 |Обычный вейпоинт, по которому сталкер будет ходить. Предполагается, что имеет конечную цель и анимацию.&lt;br /&gt;
 |esc_a1_walker_1_walk&lt;br /&gt;
 |-&lt;br /&gt;
 !ANIMPOINT&lt;br /&gt;
 |15&lt;br /&gt;
 |Конечная точка с кастомной анимацией: НПС сидит, стоит за стойкой, или стоит, прислонившись к стене.&lt;br /&gt;
 |esc_a1_animpoint_1&lt;br /&gt;
 |-&lt;br /&gt;
 !PATROL&lt;br /&gt;
 |20&lt;br /&gt;
 |Вейпоинт, по которому будут ходить сталкер и выполнять функцию патруля. Должен быть зациклен. &lt;br /&gt;
 |esc_a1_patrol_1_walk&lt;br /&gt;
 |-&lt;br /&gt;
 !COLLECTOR&lt;br /&gt;
 |25&lt;br /&gt;
 |Вейпоинт, по которому пойдет сталкер отыгрывать анимацию собирания артефактов. &lt;br /&gt;
 |esc_a1_collector_1_walk&lt;br /&gt;
 |-&lt;br /&gt;
 !GUARD&lt;br /&gt;
 |25&lt;br /&gt;
 |Вейпоинт, по которому будут ходить сталкер и выполнять функцию охраны. Должен быть зациклен. &lt;br /&gt;
 |esc_a1_guard_1_walk&lt;br /&gt;
 |-&lt;br /&gt;
 !SNIPER&lt;br /&gt;
 |30&lt;br /&gt;
 |Вейпоинт, куда пойдет снайпер, если таковой имеется в скваде. Должен иметь две точки в вейпоинте look.&lt;br /&gt;
 |esc_a1_sniper_1_walk&lt;br /&gt;
 |-&lt;br /&gt;
 !CAMPER&lt;br /&gt;
 |45&lt;br /&gt;
 |Вейпоинт, куда пойдет НПС и будет выполнять роль кемпера. Предположительно ничего не будет делать.&lt;br /&gt;
 |esc_a1_camper_1_walk&lt;br /&gt;
 |-&lt;br /&gt;
 !SURGE&lt;br /&gt;
 |50&lt;br /&gt;
 |Вейпоинт, по которому пойдет сталкер в случае выброса. Должно быть разрешено в файле simulation_objects_props.ltx&lt;br /&gt;
 |esc_a1_surge_1_walk&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
Некоторые walk-вейпоинты, могут не иметь look-вейпоинтов. Для некоторых наличие look-вейпоинта обязательно. Для того, чтобы точка walk-вейпоинта работала с точкой look-вейпоинта, необходимо каждому из них задать одинаковый флаг. Некоторые анимации также стоит задавать в look-поинтах.&lt;br /&gt;
&lt;br /&gt;
'''Чтобы сталкеры могли сидеть возле костра необходимо:&lt;br /&gt;
# поставить walk-вейпоинт на место где они сядут и look-вейпоинт куда будут смотреть. &lt;br /&gt;
# установить общий флаг&lt;br /&gt;
# в параметрах '''look'''-вейпоинта (именно look) задать одну из этих анимаций:&lt;br /&gt;
#* sit&lt;br /&gt;
#* sit_knee&lt;br /&gt;
#* sit_ass&lt;br /&gt;
&lt;br /&gt;
Список остальных анимаций см. в файле '''scripts\state_lib.script'''.&lt;br /&gt;
== Симуляция ==&lt;br /&gt;
=== Некоторые условия работы симуляции ===&lt;br /&gt;
В файле '''scripts\sim_board.script''' для каждой группировки заданы прекондишены:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
squad = {	stalker		= { prec = function(squad, target) return in_time_interval(6, 19) and simulation_objects.sim_dist_to(squad, target) &amp;lt;= 150 end },&lt;br /&gt;
		bandit		= { prec = function(squad, target) return in_time_interval(6, 19) and simulation_objects.sim_dist_to(squad, target) &amp;lt;= 150 end },&lt;br /&gt;
		dolg		= { prec = function(squad, target) return in_time_interval(6, 19) and simulation_objects.sim_dist_to(squad, target) &amp;lt;= 150 end },&lt;br /&gt;
		freedom		= { prec = function(squad, target) return in_time_interval(6, 19) and simulation_objects.sim_dist_to(squad, target) &amp;lt;= 150 end },&lt;br /&gt;
		killer		= { prec = function(squad, target) return in_time_interval(6, 19) and simulation_objects.sim_dist_to(squad, target) &amp;lt;= 150 end }&lt;br /&gt;
	},&lt;br /&gt;
smart = { 	base		= { prec = function(squad, target) return in_time_interval(18,8) and not xr_conditions.surge_started() and not	travel_manager.check_squad_for_enemies(squad) &lt;br /&gt;
												and (target:name() == &amp;quot;zat_stalker_base_smart&amp;quot; or target:name() == &amp;quot;jup_a6&amp;quot; or target:name() == &amp;quot;pri_a16&amp;quot;) end },&lt;br /&gt;
		surge		= { prec = function() return xr_conditions.surge_started() end },&lt;br /&gt;
		territory	= { prec = function() return in_time_interval(8,18) and not xr_conditions.surge_started() end },&lt;br /&gt;
		resource	= { prec = function(squad, target) return in_time_interval(8,18) and not xr_conditions.surge_started() end } -- and squad:has_detector() },&lt;br /&gt;
		lair	 	= { prec = function() return in_time_interval(6,19) end }&lt;br /&gt;
	},&lt;br /&gt;
actor = { 	prec = function(squad, target) return has_alife_info(&amp;quot;sim_bandit_attack_harder&amp;quot;) and simulation_objects.sim_dist_to(squad, target) &amp;lt;= 150 end }&lt;br /&gt;
			&amp;lt;/code&amp;gt;&lt;br /&gt;
	&lt;br /&gt;
* '''squad''' — набор условий для вражды с другой фракцией.&lt;br /&gt;
**'''simulation_objects.sim_dist_to(squad, target) &amp;lt;= 150''' — проверка расстояния до отряда меньше требуемой.&lt;br /&gt;
* '''smart''' - набор условий для выбора того, или иного смарта.	&lt;br /&gt;
** '''base'''  — набор условий для возвращения на базу-смарт ('''default_base''') &amp;lt;br&amp;gt;&lt;br /&gt;
*** '''return in_time_interval(18,8) '''  — проверка находится ли отряд в данном отрезке времени &amp;lt;br&amp;gt;&lt;br /&gt;
*** '''xr_conditions.surge_started()'''  — проверка начала выброса &amp;lt;br&amp;gt;&lt;br /&gt;
*** '''travel_manager.check_squad_for_enemies(squad)'''  — проверка присутствия в отряде врагов. &amp;lt;br&amp;gt;&lt;br /&gt;
*** '''target:name() == &amp;quot;zat_stalker_base_smart&amp;quot; or target:name() == &amp;quot;jup_a6&amp;quot; or target:name() == &amp;quot;pri_a16&amp;quot; '''  — проверка наличия базы. &lt;br /&gt;
** '''surge''' — набор условий для поиска укрытия от выброса.&lt;br /&gt;
** '''territory''' — набор условий для начала поиска обычного смарта '''default'''. &lt;br /&gt;
** '''resource''' — набор условий для начала поиска смарта с аномалиями и добычи артефактов '''(default_resource)'''.&lt;br /&gt;
** '''lair''' — набор условий для поиска мутантом смарта-укрытия '''(default_lair)'''&lt;br /&gt;
* '''actor''' — набор условий для вражды с актором.&lt;br /&gt;
** '''has_alife_info(&amp;quot;sim_bandit_attack_harder&amp;quot;)''' — проверка присутствия инфопоршня&lt;br /&gt;
&lt;br /&gt;
=== Добавление смарта в общую симуляцию ===&lt;br /&gt;
В файле '''misc\travel_manager.ltx''' есть два раздела. &amp;lt;br&amp;gt;&lt;br /&gt;
* '''[locations]'''&lt;br /&gt;
Секция описание того куда направлются сталкеры. Текст добавляется в '''text\rus\st_dialog_manager.xml'''.&amp;lt;br&amp;gt;&lt;br /&gt;
Принцип: '''ваше_название_смарта''' = '''st_stalker_ваше_название_смарта'''. &amp;lt;br&amp;gt;&lt;br /&gt;
Например для смарта '''zat_sim_1''' которому соответствует стринг '''st_stalker_zat_sim_1''' НПС на вопрос &amp;quot;Куда вы направляетесь?&amp;quot;, ответит: ''&amp;quot;Иду в направлении аномалии «Котёл». Там рощица за ней - туда и иду.&amp;quot;''&lt;br /&gt;
* '''[traveler]'''&lt;br /&gt;
В файле уже все сказано: это перечень точек, куда проводники могут отвести за бабосы. Тут указываем наш смарт, затем создаем секцию:&lt;br /&gt;
&amp;lt;code&amp;gt;[ваше_название_смарта]&lt;br /&gt;
level = ваш_уровень&lt;br /&gt;
name = ваше_название_смарта &lt;br /&gt;
condlist = true&amp;lt;/code&amp;gt;&lt;br /&gt;
ваше_название_смарта указываем в файле '''text\rus\st_land_names.xml''' &amp;lt;br&amp;gt;&lt;br /&gt;
'''condlist''' - условия существования данной точки. Можно использовать стандартные проверки условий.&lt;br /&gt;
&lt;br /&gt;
=== Добавление базы в общую симуляцию ===&lt;br /&gt;
#В '''misc\simulation_objects_props.ltx''' назначаем вашему смарту класс '''default_base'''. &lt;br /&gt;
#В файле '''scripts\state_lib.script''' для нужной вам группировки в секции '''base''' дополняем своей проверкой '''target:name() == &amp;quot;ваше_название_смарта&amp;quot;'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
'''Написал и оформил''': Vast&amp;lt;br&amp;gt;&lt;br /&gt;
Большое количество фраз и информации было взято отсюда [http://www.stalker-modostroy.ru/publ/x_ray_sdk/x_ray_sdk_0_7/rabota_so_smart_terrain_v_stalker_zp_sozdanie_i_nastrojka_squad_ov_otrjadov/4-1-0-12], а также из статьей умершего сайта '''stalker-2.com.ua''', поэтому линков никаих нет. &amp;lt;br&amp;gt;&lt;br /&gt;
Любые дополнения, критика, угрозы, все приветствуется.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
[[Category:A-Life]]&lt;/div&gt;</summary>
		<author><name>Vast</name></author>	</entry>

	<entry>
		<id>http://stalkerin.gameru.net/wiki/index.php?title=CoP._%D0%A1%D0%B8%D0%BC%D1%83%D0%BB%D1%8F%D1%86%D0%B8%D1%8F._%D0%9F%D0%B0%D1%80%D0%B0%D0%BC%D0%B5%D1%82%D1%80%D1%8B_%D1%81%D0%BC%D0%B0%D1%80%D1%82-%D1%82%D0%B5%D1%80%D1%80%D0%B5%D0%B9%D0%BD%D0%BE%D0%B2.</id>
		<title>CoP. Симуляция. Параметры смарт-террейнов.</title>
		<link rel="alternate" type="text/html" href="http://stalkerin.gameru.net/wiki/index.php?title=CoP._%D0%A1%D0%B8%D0%BC%D1%83%D0%BB%D1%8F%D1%86%D0%B8%D1%8F._%D0%9F%D0%B0%D1%80%D0%B0%D0%BC%D0%B5%D1%82%D1%80%D1%8B_%D1%81%D0%BC%D0%B0%D1%80%D1%82-%D1%82%D0%B5%D1%80%D1%80%D0%B5%D0%B9%D0%BD%D0%BE%D0%B2."/>
				<updated>2016-07-09T19:14:34Z</updated>
		
		<summary type="html">&lt;p&gt;Vast: /* Некоторые условия работы симуляции */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Смарт-террейны ==&lt;br /&gt;
Смарт-террейн - это определенный скриптовый класс в игре, при помощи которого происходит заселение локаций. В смартах организуются работы для НПС, реализуется логика для отдельных эксклюзивных персонажей, происходит респавн НПС и монстров, а также организуются укрытия от выброса для НПС.&lt;br /&gt;
&lt;br /&gt;
===== Типы смарт-террейнов =====&lt;br /&gt;
{| class=&amp;quot;standard&amp;quot;&lt;br /&gt;
 !'''default'''&lt;br /&gt;
 |Обычный тип смарт-террейна.&lt;br /&gt;
 |-&lt;br /&gt;
 !'''default_resource'''&lt;br /&gt;
 |Смарты с наличием аномальных зон, в которых есть работа для НПС по поиску артефактов. &lt;br /&gt;
 |-&lt;br /&gt;
 !'''default_base'''&lt;br /&gt;
 |Главный смарт. Сюда идут все отряды с наступлением ночи.&lt;br /&gt;
 |-&lt;br /&gt;
 !'''default_lair'''&lt;br /&gt;
 |Смарт для монстров. Тем не менее сталкеры сюда тоже могут прийти.&lt;br /&gt;
 |-&lt;br /&gt;
 !'''default_squad'''&lt;br /&gt;
 |Не смарт. Класс, выделяющий в симуляции уникальные отряды и персонажей.&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
===== Параметры смарт-террейнов =====&lt;br /&gt;
* '''Необходимые параметры:'''&lt;br /&gt;
{|class=&amp;quot;standard&amp;quot;&lt;br /&gt;
 !Параметр&lt;br /&gt;
 !Описание&lt;br /&gt;
 !Пример&lt;br /&gt;
 |-&lt;br /&gt;
 !'''squad_id'''&lt;br /&gt;
 |Уникальный ID отряда. Никогда не должен повторятся. Для любой локации начинается с единицы.&lt;br /&gt;
 |squad_id = 1&lt;br /&gt;
 |-&lt;br /&gt;
 !'''max_population'''&lt;br /&gt;
 |Количество отрядов, которые может принять смарт. Определяет для скольких отрядов в симуляции тут найдется работа.&lt;br /&gt;
 |max_population = 1&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
* '''Дополнительные параметры: '''&lt;br /&gt;
{| class=&amp;quot;standard&amp;quot;&lt;br /&gt;
 !Параметр&lt;br /&gt;
 !Описание&lt;br /&gt;
 !Пример&lt;br /&gt;
 |-&lt;br /&gt;
 !respawn_only_smart&lt;br /&gt;
 |Могут ли из смарта удаляться отряды в симуляции.&lt;br /&gt;
 |respawn_only_smart = true&lt;br /&gt;
 |-&lt;br /&gt;
 !respawn_params&lt;br /&gt;
 |Ссылка на секцию респауна (параметры этой секции см. ниже).&lt;br /&gt;
 |respawn_params = respawn@base_smart&lt;br /&gt;
 |-&lt;br /&gt;
 !smart_control&lt;br /&gt;
 |Ссылка на секцию с параметрами контроля смарта.&lt;br /&gt;
 |smart_control = smart_control&lt;br /&gt;
 |-&lt;br /&gt;
 !def_restr&lt;br /&gt;
 |Определяет рестриктор, в пределах которой находится лагерь. &lt;br /&gt;
 |def_restr = pri_a16_sr_noweap&lt;br /&gt;
 |-&lt;br /&gt;
 !safe_restr &lt;br /&gt;
 |Определяет рестриктор, в пределах которой НПС бессмертны.&lt;br /&gt;
 |safe_restr = pri_surge_hide_a16&lt;br /&gt;
 |-&lt;br /&gt;
 !spawn_point &lt;br /&gt;
 |Имя вейпоинта, в котором происходит респаун. Может иметь значение ''self''.&lt;br /&gt;
 |spawn_point = zat_sim_16_spawn_point&lt;br /&gt;
 |-&lt;br /&gt;
 !arrive_dist&lt;br /&gt;
 |Определяет расстояние, на котором отряд считается прибывшим в смарт и регистрируется в нем.&lt;br /&gt;
 |arrive_dist = 100&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
* '''Параметры smart_control: '''&lt;br /&gt;
{| class=&amp;quot;standard&amp;quot;&lt;br /&gt;
 !Параметр&lt;br /&gt;
 !Описание&lt;br /&gt;
 !Пример&lt;br /&gt;
 |-&lt;br /&gt;
 !noweap_zone&lt;br /&gt;
 |Определяет рестриктор, в котором запрещается использовать оружие (в том числе актору).&lt;br /&gt;
 |noweap_zone = zat_a2_sr_noweap&lt;br /&gt;
 |-&lt;br /&gt;
 !ignore_zone&lt;br /&gt;
 |Определяет рестриктор, в котором НПС не реагируют на опасности даже если атакованы.&lt;br /&gt;
 |ignore_zone = zat_a2_sr_light&lt;br /&gt;
 |-&lt;br /&gt;
 !alarm_start_sound&lt;br /&gt;
 |Воспроизводит звук из script_sound_...ltx, если актор атаковал смарт.&lt;br /&gt;
 |alarm_start_sound = zat_a2_base_alarm&lt;br /&gt;
 |-&lt;br /&gt;
 !alarm_stop_sound&lt;br /&gt;
 |Воспроизводит звук из script_sound_...ltx, когда тревога закончилась.&lt;br /&gt;
 |alarm_start_sound = zat_a2_base_relax&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
* '''Параметры respawn_params'''&lt;br /&gt;
Данная секция представляет собой список ссылок на секции сквадов, которые будут спауниться в этом смарт-террейне.&amp;lt;br&amp;gt;&lt;br /&gt;
Пример секции: &lt;br /&gt;
&amp;lt;blockquote&amp;gt;'''&lt;br /&gt;
'''[respawn@base_smart]&amp;lt;br&amp;gt;&lt;br /&gt;
spawn_bandit@novice&amp;lt;br&amp;gt;&lt;br /&gt;
spawn_bandit@advanced&amp;lt;br&amp;gt;&lt;br /&gt;
spawn_bandit@master&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
: Каждая секция сквада имеет следующие параметры:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard&amp;quot;&lt;br /&gt;
 !Параметр&lt;br /&gt;
 !Описание&lt;br /&gt;
 !Пример&lt;br /&gt;
 |-&lt;br /&gt;
 !spawn_squads&lt;br /&gt;
 |Список имен сквадов из squad_descr_...ltx. Может иметь логические проверки условий.&lt;br /&gt;
 |spawn_squads = bandit_sim_squad_veteran, bandit_sim_squad_advanced&lt;br /&gt;
 |-&lt;br /&gt;
 !spawn_num&lt;br /&gt;
 |Количество отрядов, которые будут респаунится. Может иметь логические проверки условий. &lt;br /&gt;
 |spawn_num = {+infoportion} 2, 0&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Параметры секции [exclusive]'''&lt;br /&gt;
Секция позволяет задавать логику для уникальных персонажей, которые находятся в данном смарте. &amp;lt;br&amp;gt;Пример использования:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
'''[exclusive]'''&amp;lt;br&amp;gt;&lt;br /&gt;
zat_a2_stalker_barmen = zaton\zat_a2_stalker_barmen.ltx&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Параметры:&lt;br /&gt;
{| class=&amp;quot;standard&amp;quot;&lt;br /&gt;
 !zat_a2_stalker_barmen&lt;br /&gt;
 |Сharacter ID НПС&lt;br /&gt;
 |-&lt;br /&gt;
 !zaton\zat_a2_stalker_barmen.ltx&lt;br /&gt;
 |путь к файлу с логикой.&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
== Работа в смарт-террейнах ==&lt;br /&gt;
Под работой стоит понимать пути по которым ходят, стоят и отыгрывают анимации НПС при попадании в смарт. Каждый тип работы должен начинатся с единицы. Предположительно максимальное число каждого типа работ - '''20'''. Каждый тип работы имеет свой приоритет. Чем меньше число тем больше вероятность, что НПС пойдет на эту работу. &lt;br /&gt;
&lt;br /&gt;
Имя каждой работы состоит из:&amp;lt;br&amp;gt;&lt;br /&gt;
# Имени смарта ''(esc_a1)''&lt;br /&gt;
# Типа работы ''(walker)''&lt;br /&gt;
# Номера работы ''(1,2,3..20)''&lt;br /&gt;
# Дополнительные параметры для вейпоинтов ''(walk,look)''&lt;br /&gt;
Пример:&amp;lt;br&amp;gt;&lt;br /&gt;
'''esc_a1_walker_1_walk''' &lt;br /&gt;
&lt;br /&gt;
'''Типы работ:'''&lt;br /&gt;
{| class=&amp;quot;standard&amp;quot;&lt;br /&gt;
 !Название&lt;br /&gt;
 !Приоритет&lt;br /&gt;
 !Описание&lt;br /&gt;
 !Пример&lt;br /&gt;
 |-&lt;br /&gt;
 !SLEEP&lt;br /&gt;
 |10&lt;br /&gt;
 |Вейпоинт, по которому пойдет сталкер спать ночью. &lt;br /&gt;
 |esc_a1_sleep_1_walk&lt;br /&gt;
 |-&lt;br /&gt;
 !WALKER&lt;br /&gt;
 |15&lt;br /&gt;
 |Обычный вейпоинт, по которому сталкер будет ходить. Предполагается, что имеет конечную цель и анимацию.&lt;br /&gt;
 |esc_a1_walker_1_walk&lt;br /&gt;
 |-&lt;br /&gt;
 !ANIMPOINT&lt;br /&gt;
 |15&lt;br /&gt;
 |Конечная точка с кастомной анимацией: НПС сидит, стоит за стойкой, или стоит, прислонившись к стене.&lt;br /&gt;
 |esc_a1_animpoint_1&lt;br /&gt;
 |-&lt;br /&gt;
 !PATROL&lt;br /&gt;
 |20&lt;br /&gt;
 |Вейпоинт, по которому будут ходить сталкер и выполнять функцию патруля. Должен быть зациклен. &lt;br /&gt;
 |esc_a1_patrol_1_walk&lt;br /&gt;
 |-&lt;br /&gt;
 !COLLECTOR&lt;br /&gt;
 |25&lt;br /&gt;
 |Вейпоинт, по которому пойдет сталкер отыгрывать анимацию собирания артефактов. &lt;br /&gt;
 |esc_a1_collector_1_walk&lt;br /&gt;
 |-&lt;br /&gt;
 !GUARD&lt;br /&gt;
 |25&lt;br /&gt;
 |Вейпоинт, по которому будут ходить сталкер и выполнять функцию охраны. Должен быть зациклен. &lt;br /&gt;
 |esc_a1_guard_1_walk&lt;br /&gt;
 |-&lt;br /&gt;
 !SNIPER&lt;br /&gt;
 |30&lt;br /&gt;
 |Вейпоинт, куда пойдет снайпер, если таковой имеется в скваде. Должен иметь две точки в вейпоинте look.&lt;br /&gt;
 |esc_a1_sniper_1_walk&lt;br /&gt;
 |-&lt;br /&gt;
 !CAMPER&lt;br /&gt;
 |45&lt;br /&gt;
 |Вейпоинт, куда пойдет НПС и будет выполнять роль кемпера. Предположительно ничего не будет делать.&lt;br /&gt;
 |esc_a1_camper_1_walk&lt;br /&gt;
 |-&lt;br /&gt;
 !SURGE&lt;br /&gt;
 |50&lt;br /&gt;
 |Вейпоинт, по которому пойдет сталкер в случае выброса. Должно быть разрешено в файле simulation_objects_props.ltx&lt;br /&gt;
 |esc_a1_surge_1_walk&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
Некоторые walk-вейпоинты, могут не иметь look-вейпоинтов. Для некоторых наличие look-вейпоинта обязательно. Для того, чтобы точка walk-вейпоинта работала с точкой look-вейпоинта, необходимо каждому из них задать одинаковый флаг. Некоторые анимации также стоит задавать в look-поинтах.&lt;br /&gt;
&lt;br /&gt;
'''Чтобы сталкеры могли сидеть возле костра необходимо:&lt;br /&gt;
# поставить walk-вейпоинт на место где они сядут и look-вейпоинт куда будут смотреть. &lt;br /&gt;
# установить общий флаг&lt;br /&gt;
# в параметрах '''look'''-вейпоинта (именно look) задать одну из этих анимаций:&lt;br /&gt;
#* sit&lt;br /&gt;
#* sit_knee&lt;br /&gt;
#* sit_ass&lt;br /&gt;
&lt;br /&gt;
Список остальных анимаций см. в файле '''scripts\state_lib.script'''.&lt;br /&gt;
== Симуляция ==&lt;br /&gt;
=== Некоторые условия работы симуляции ===&lt;br /&gt;
В файле '''scripts\sim_board.script''' для каждой группировки заданы прекондишены:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
squad = {	stalker		= { prec = function(squad, target) return in_time_interval(6, 19) and simulation_objects.sim_dist_to(squad, target) &amp;lt;= 150 end },&lt;br /&gt;
		bandit		= { prec = function(squad, target) return in_time_interval(6, 19) and simulation_objects.sim_dist_to(squad, target) &amp;lt;= 150 end },&lt;br /&gt;
		dolg		= { prec = function(squad, target) return in_time_interval(6, 19) and simulation_objects.sim_dist_to(squad, target) &amp;lt;= 150 end },&lt;br /&gt;
		freedom		= { prec = function(squad, target) return in_time_interval(6, 19) and simulation_objects.sim_dist_to(squad, target) &amp;lt;= 150 end },&lt;br /&gt;
		killer		= { prec = function(squad, target) return in_time_interval(6, 19) and simulation_objects.sim_dist_to(squad, target) &amp;lt;= 150 end }&lt;br /&gt;
	},&lt;br /&gt;
smart = { 	base		= { prec = function(squad, target) return in_time_interval(18,8) and not xr_conditions.surge_started() and not	travel_manager.check_squad_for_enemies(squad) &lt;br /&gt;
												and (target:name() == &amp;quot;zat_stalker_base_smart&amp;quot; or target:name() == &amp;quot;jup_a6&amp;quot; or target:name() == &amp;quot;pri_a16&amp;quot;) end },&lt;br /&gt;
		surge		= { prec = function() return xr_conditions.surge_started() end },&lt;br /&gt;
		territory	= { prec = function() return in_time_interval(8,18) and not xr_conditions.surge_started() end },&lt;br /&gt;
		resource	= { prec = function(squad, target) return in_time_interval(8,18) and not xr_conditions.surge_started() end } -- and squad:has_detector() },&lt;br /&gt;
		lair	 	= { prec = function() return in_time_interval(6,19) end }&lt;br /&gt;
	},&lt;br /&gt;
actor = { 	prec = function(squad, target) return has_alife_info(&amp;quot;sim_bandit_attack_harder&amp;quot;) and simulation_objects.sim_dist_to(squad, target) &amp;lt;= 150 end }&lt;br /&gt;
			&amp;lt;/code&amp;gt;&lt;br /&gt;
	&lt;br /&gt;
* '''squad''' — набор условий для вражды с другой фракцией.&lt;br /&gt;
**'''simulation_objects.sim_dist_to(squad, target) &amp;lt;= 150''' — проверка расстояния до отряда меньше требуемой.&lt;br /&gt;
* '''smart''' - набор условий для выбора того, или иного смарта.	&lt;br /&gt;
** '''base'''  — набор условий для возвращения на базу-смарт ('''default_base''') &amp;lt;br&amp;gt;&lt;br /&gt;
*** '''return in_time_interval(18,8) '''  — проверка находится ли отряд в данном отрезке времени &amp;lt;br&amp;gt;&lt;br /&gt;
*** '''xr_conditions.surge_started()'''  — проверка начала выброса &amp;lt;br&amp;gt;&lt;br /&gt;
*** '''travel_manager.check_squad_for_enemies(squad)'''  — проверка присутствия в отряде врагов. &amp;lt;br&amp;gt;&lt;br /&gt;
*** '''target:name() == &amp;quot;zat_stalker_base_smart&amp;quot; or target:name() == &amp;quot;jup_a6&amp;quot; or target:name() == &amp;quot;pri_a16&amp;quot; '''  — проверка наличия базы. &lt;br /&gt;
** '''surge''' — набор условий для поиска укрытия от выброса.&lt;br /&gt;
** '''territory''' — набор условий для начала поиска обычного смарта '''default'''. &lt;br /&gt;
** '''resource''' — набор условий для начала поиска смарта с аномалиями и добычи артефактов '''(default_resource)'''.&lt;br /&gt;
** '''lair''' — набор условий для поиска мутантом смарта-укрытия '''(default_lair)'''&lt;br /&gt;
* '''actor''' — набор условий для вражды с актором.&lt;br /&gt;
** '''has_alife_info(&amp;quot;sim_bandit_attack_harder&amp;quot;)''' — проверка присутствия инфопоршня&lt;br /&gt;
&lt;br /&gt;
=== Добавление смарта в общую симуляцию ===&lt;br /&gt;
В файле '''misc\travel_manager.ltx''' есть два раздела. &amp;lt;br&amp;gt;&lt;br /&gt;
* '''[locations]'''&lt;br /&gt;
Секция описание того куда направлются сталкеры. Текст добавляется в '''text\rus\st_dialog_manager.xml'''.&amp;lt;br&amp;gt;&lt;br /&gt;
Принцип: '''ваше_название_смарта''' = '''st_stalker_ваше_название_смарта'''. &amp;lt;br&amp;gt;&lt;br /&gt;
Например для смарта '''zat_sim_1''' которому соответствует стринг '''st_stalker_zat_sim_1''' НПС на вопрос &amp;quot;Куда вы направляетесь?&amp;quot;, ответит: ''&amp;quot;Иду в направлении аномалии «Котёл». Там рощица за ней - туда и иду.&amp;quot;''&lt;br /&gt;
* '''[traveler]'''&lt;br /&gt;
В файле уже все сказано: это перечень точек, куда проводники могут отвести за бабосы. Тут указываем наш смарт, затем создаем секцию:&lt;br /&gt;
&amp;lt;code&amp;gt;[ваше_название_смарта]&lt;br /&gt;
level = ваш_уровень&lt;br /&gt;
name = ваше_название_смарта &lt;br /&gt;
condlist = true&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
ваше_название_смарта указываем в файле '''text\rus\st_land_names.xml'''&lt;br /&gt;
'''condlist''' - условия существования данной точки. Можно использовать стандартные проверки условий.&lt;br /&gt;
&lt;br /&gt;
=== Добавление базы в общую симуляцию ===&lt;br /&gt;
#В '''misc\simulation_objects_props.ltx''' назначаем вашему смарту класс '''default_base'''. &lt;br /&gt;
#В файле '''scripts\state_lib.script''' для нужной вам группировки в секции '''base''' дополняем своей проверкой '''target:name() == &amp;quot;ваше_название_смарта&amp;quot;'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
'''Написал и оформил''': Vast&amp;lt;br&amp;gt;&lt;br /&gt;
Большое количество фраз и информации было взято отсюда [http://www.stalker-modostroy.ru/publ/x_ray_sdk/x_ray_sdk_0_7/rabota_so_smart_terrain_v_stalker_zp_sozdanie_i_nastrojka_squad_ov_otrjadov/4-1-0-12], а также из статьей умершего сайта '''stalker-2.com.ua''', поэтому линков никаих нет. &amp;lt;br&amp;gt;&lt;br /&gt;
Любые дополнения, критика, угрозы, все приветствуется.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
[[Category:A-Life]]&lt;/div&gt;</summary>
		<author><name>Vast</name></author>	</entry>

	<entry>
		<id>http://stalkerin.gameru.net/wiki/index.php?title=CoP._%D0%A1%D0%B8%D0%BC%D1%83%D0%BB%D1%8F%D1%86%D0%B8%D1%8F._%D0%9F%D0%B0%D1%80%D0%B0%D0%BC%D0%B5%D1%82%D1%80%D1%8B_%D1%81%D0%BC%D0%B0%D1%80%D1%82-%D1%82%D0%B5%D1%80%D1%80%D0%B5%D0%B9%D0%BD%D0%BE%D0%B2.</id>
		<title>CoP. Симуляция. Параметры смарт-террейнов.</title>
		<link rel="alternate" type="text/html" href="http://stalkerin.gameru.net/wiki/index.php?title=CoP._%D0%A1%D0%B8%D0%BC%D1%83%D0%BB%D1%8F%D1%86%D0%B8%D1%8F._%D0%9F%D0%B0%D1%80%D0%B0%D0%BC%D0%B5%D1%82%D1%80%D1%8B_%D1%81%D0%BC%D0%B0%D1%80%D1%82-%D1%82%D0%B5%D1%80%D1%80%D0%B5%D0%B9%D0%BD%D0%BE%D0%B2."/>
				<updated>2016-07-09T19:13:54Z</updated>
		
		<summary type="html">&lt;p&gt;Vast: /* Некоторые условия работы симуляции */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Смарт-террейны ==&lt;br /&gt;
Смарт-террейн - это определенный скриптовый класс в игре, при помощи которого происходит заселение локаций. В смартах организуются работы для НПС, реализуется логика для отдельных эксклюзивных персонажей, происходит респавн НПС и монстров, а также организуются укрытия от выброса для НПС.&lt;br /&gt;
&lt;br /&gt;
===== Типы смарт-террейнов =====&lt;br /&gt;
{| class=&amp;quot;standard&amp;quot;&lt;br /&gt;
 !'''default'''&lt;br /&gt;
 |Обычный тип смарт-террейна.&lt;br /&gt;
 |-&lt;br /&gt;
 !'''default_resource'''&lt;br /&gt;
 |Смарты с наличием аномальных зон, в которых есть работа для НПС по поиску артефактов. &lt;br /&gt;
 |-&lt;br /&gt;
 !'''default_base'''&lt;br /&gt;
 |Главный смарт. Сюда идут все отряды с наступлением ночи.&lt;br /&gt;
 |-&lt;br /&gt;
 !'''default_lair'''&lt;br /&gt;
 |Смарт для монстров. Тем не менее сталкеры сюда тоже могут прийти.&lt;br /&gt;
 |-&lt;br /&gt;
 !'''default_squad'''&lt;br /&gt;
 |Не смарт. Класс, выделяющий в симуляции уникальные отряды и персонажей.&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
===== Параметры смарт-террейнов =====&lt;br /&gt;
* '''Необходимые параметры:'''&lt;br /&gt;
{|class=&amp;quot;standard&amp;quot;&lt;br /&gt;
 !Параметр&lt;br /&gt;
 !Описание&lt;br /&gt;
 !Пример&lt;br /&gt;
 |-&lt;br /&gt;
 !'''squad_id'''&lt;br /&gt;
 |Уникальный ID отряда. Никогда не должен повторятся. Для любой локации начинается с единицы.&lt;br /&gt;
 |squad_id = 1&lt;br /&gt;
 |-&lt;br /&gt;
 !'''max_population'''&lt;br /&gt;
 |Количество отрядов, которые может принять смарт. Определяет для скольких отрядов в симуляции тут найдется работа.&lt;br /&gt;
 |max_population = 1&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
* '''Дополнительные параметры: '''&lt;br /&gt;
{| class=&amp;quot;standard&amp;quot;&lt;br /&gt;
 !Параметр&lt;br /&gt;
 !Описание&lt;br /&gt;
 !Пример&lt;br /&gt;
 |-&lt;br /&gt;
 !respawn_only_smart&lt;br /&gt;
 |Могут ли из смарта удаляться отряды в симуляции.&lt;br /&gt;
 |respawn_only_smart = true&lt;br /&gt;
 |-&lt;br /&gt;
 !respawn_params&lt;br /&gt;
 |Ссылка на секцию респауна (параметры этой секции см. ниже).&lt;br /&gt;
 |respawn_params = respawn@base_smart&lt;br /&gt;
 |-&lt;br /&gt;
 !smart_control&lt;br /&gt;
 |Ссылка на секцию с параметрами контроля смарта.&lt;br /&gt;
 |smart_control = smart_control&lt;br /&gt;
 |-&lt;br /&gt;
 !def_restr&lt;br /&gt;
 |Определяет рестриктор, в пределах которой находится лагерь. &lt;br /&gt;
 |def_restr = pri_a16_sr_noweap&lt;br /&gt;
 |-&lt;br /&gt;
 !safe_restr &lt;br /&gt;
 |Определяет рестриктор, в пределах которой НПС бессмертны.&lt;br /&gt;
 |safe_restr = pri_surge_hide_a16&lt;br /&gt;
 |-&lt;br /&gt;
 !spawn_point &lt;br /&gt;
 |Имя вейпоинта, в котором происходит респаун. Может иметь значение ''self''.&lt;br /&gt;
 |spawn_point = zat_sim_16_spawn_point&lt;br /&gt;
 |-&lt;br /&gt;
 !arrive_dist&lt;br /&gt;
 |Определяет расстояние, на котором отряд считается прибывшим в смарт и регистрируется в нем.&lt;br /&gt;
 |arrive_dist = 100&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
* '''Параметры smart_control: '''&lt;br /&gt;
{| class=&amp;quot;standard&amp;quot;&lt;br /&gt;
 !Параметр&lt;br /&gt;
 !Описание&lt;br /&gt;
 !Пример&lt;br /&gt;
 |-&lt;br /&gt;
 !noweap_zone&lt;br /&gt;
 |Определяет рестриктор, в котором запрещается использовать оружие (в том числе актору).&lt;br /&gt;
 |noweap_zone = zat_a2_sr_noweap&lt;br /&gt;
 |-&lt;br /&gt;
 !ignore_zone&lt;br /&gt;
 |Определяет рестриктор, в котором НПС не реагируют на опасности даже если атакованы.&lt;br /&gt;
 |ignore_zone = zat_a2_sr_light&lt;br /&gt;
 |-&lt;br /&gt;
 !alarm_start_sound&lt;br /&gt;
 |Воспроизводит звук из script_sound_...ltx, если актор атаковал смарт.&lt;br /&gt;
 |alarm_start_sound = zat_a2_base_alarm&lt;br /&gt;
 |-&lt;br /&gt;
 !alarm_stop_sound&lt;br /&gt;
 |Воспроизводит звук из script_sound_...ltx, когда тревога закончилась.&lt;br /&gt;
 |alarm_start_sound = zat_a2_base_relax&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
* '''Параметры respawn_params'''&lt;br /&gt;
Данная секция представляет собой список ссылок на секции сквадов, которые будут спауниться в этом смарт-террейне.&amp;lt;br&amp;gt;&lt;br /&gt;
Пример секции: &lt;br /&gt;
&amp;lt;blockquote&amp;gt;'''&lt;br /&gt;
'''[respawn@base_smart]&amp;lt;br&amp;gt;&lt;br /&gt;
spawn_bandit@novice&amp;lt;br&amp;gt;&lt;br /&gt;
spawn_bandit@advanced&amp;lt;br&amp;gt;&lt;br /&gt;
spawn_bandit@master&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
: Каждая секция сквада имеет следующие параметры:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard&amp;quot;&lt;br /&gt;
 !Параметр&lt;br /&gt;
 !Описание&lt;br /&gt;
 !Пример&lt;br /&gt;
 |-&lt;br /&gt;
 !spawn_squads&lt;br /&gt;
 |Список имен сквадов из squad_descr_...ltx. Может иметь логические проверки условий.&lt;br /&gt;
 |spawn_squads = bandit_sim_squad_veteran, bandit_sim_squad_advanced&lt;br /&gt;
 |-&lt;br /&gt;
 !spawn_num&lt;br /&gt;
 |Количество отрядов, которые будут респаунится. Может иметь логические проверки условий. &lt;br /&gt;
 |spawn_num = {+infoportion} 2, 0&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Параметры секции [exclusive]'''&lt;br /&gt;
Секция позволяет задавать логику для уникальных персонажей, которые находятся в данном смарте. &amp;lt;br&amp;gt;Пример использования:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
'''[exclusive]'''&amp;lt;br&amp;gt;&lt;br /&gt;
zat_a2_stalker_barmen = zaton\zat_a2_stalker_barmen.ltx&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Параметры:&lt;br /&gt;
{| class=&amp;quot;standard&amp;quot;&lt;br /&gt;
 !zat_a2_stalker_barmen&lt;br /&gt;
 |Сharacter ID НПС&lt;br /&gt;
 |-&lt;br /&gt;
 !zaton\zat_a2_stalker_barmen.ltx&lt;br /&gt;
 |путь к файлу с логикой.&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
== Работа в смарт-террейнах ==&lt;br /&gt;
Под работой стоит понимать пути по которым ходят, стоят и отыгрывают анимации НПС при попадании в смарт. Каждый тип работы должен начинатся с единицы. Предположительно максимальное число каждого типа работ - '''20'''. Каждый тип работы имеет свой приоритет. Чем меньше число тем больше вероятность, что НПС пойдет на эту работу. &lt;br /&gt;
&lt;br /&gt;
Имя каждой работы состоит из:&amp;lt;br&amp;gt;&lt;br /&gt;
# Имени смарта ''(esc_a1)''&lt;br /&gt;
# Типа работы ''(walker)''&lt;br /&gt;
# Номера работы ''(1,2,3..20)''&lt;br /&gt;
# Дополнительные параметры для вейпоинтов ''(walk,look)''&lt;br /&gt;
Пример:&amp;lt;br&amp;gt;&lt;br /&gt;
'''esc_a1_walker_1_walk''' &lt;br /&gt;
&lt;br /&gt;
'''Типы работ:'''&lt;br /&gt;
{| class=&amp;quot;standard&amp;quot;&lt;br /&gt;
 !Название&lt;br /&gt;
 !Приоритет&lt;br /&gt;
 !Описание&lt;br /&gt;
 !Пример&lt;br /&gt;
 |-&lt;br /&gt;
 !SLEEP&lt;br /&gt;
 |10&lt;br /&gt;
 |Вейпоинт, по которому пойдет сталкер спать ночью. &lt;br /&gt;
 |esc_a1_sleep_1_walk&lt;br /&gt;
 |-&lt;br /&gt;
 !WALKER&lt;br /&gt;
 |15&lt;br /&gt;
 |Обычный вейпоинт, по которому сталкер будет ходить. Предполагается, что имеет конечную цель и анимацию.&lt;br /&gt;
 |esc_a1_walker_1_walk&lt;br /&gt;
 |-&lt;br /&gt;
 !ANIMPOINT&lt;br /&gt;
 |15&lt;br /&gt;
 |Конечная точка с кастомной анимацией: НПС сидит, стоит за стойкой, или стоит, прислонившись к стене.&lt;br /&gt;
 |esc_a1_animpoint_1&lt;br /&gt;
 |-&lt;br /&gt;
 !PATROL&lt;br /&gt;
 |20&lt;br /&gt;
 |Вейпоинт, по которому будут ходить сталкер и выполнять функцию патруля. Должен быть зациклен. &lt;br /&gt;
 |esc_a1_patrol_1_walk&lt;br /&gt;
 |-&lt;br /&gt;
 !COLLECTOR&lt;br /&gt;
 |25&lt;br /&gt;
 |Вейпоинт, по которому пойдет сталкер отыгрывать анимацию собирания артефактов. &lt;br /&gt;
 |esc_a1_collector_1_walk&lt;br /&gt;
 |-&lt;br /&gt;
 !GUARD&lt;br /&gt;
 |25&lt;br /&gt;
 |Вейпоинт, по которому будут ходить сталкер и выполнять функцию охраны. Должен быть зациклен. &lt;br /&gt;
 |esc_a1_guard_1_walk&lt;br /&gt;
 |-&lt;br /&gt;
 !SNIPER&lt;br /&gt;
 |30&lt;br /&gt;
 |Вейпоинт, куда пойдет снайпер, если таковой имеется в скваде. Должен иметь две точки в вейпоинте look.&lt;br /&gt;
 |esc_a1_sniper_1_walk&lt;br /&gt;
 |-&lt;br /&gt;
 !CAMPER&lt;br /&gt;
 |45&lt;br /&gt;
 |Вейпоинт, куда пойдет НПС и будет выполнять роль кемпера. Предположительно ничего не будет делать.&lt;br /&gt;
 |esc_a1_camper_1_walk&lt;br /&gt;
 |-&lt;br /&gt;
 !SURGE&lt;br /&gt;
 |50&lt;br /&gt;
 |Вейпоинт, по которому пойдет сталкер в случае выброса. Должно быть разрешено в файле simulation_objects_props.ltx&lt;br /&gt;
 |esc_a1_surge_1_walk&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
Некоторые walk-вейпоинты, могут не иметь look-вейпоинтов. Для некоторых наличие look-вейпоинта обязательно. Для того, чтобы точка walk-вейпоинта работала с точкой look-вейпоинта, необходимо каждому из них задать одинаковый флаг. Некоторые анимации также стоит задавать в look-поинтах.&lt;br /&gt;
&lt;br /&gt;
'''Чтобы сталкеры могли сидеть возле костра необходимо:&lt;br /&gt;
# поставить walk-вейпоинт на место где они сядут и look-вейпоинт куда будут смотреть. &lt;br /&gt;
# установить общий флаг&lt;br /&gt;
# в параметрах '''look'''-вейпоинта (именно look) задать одну из этих анимаций:&lt;br /&gt;
#* sit&lt;br /&gt;
#* sit_knee&lt;br /&gt;
#* sit_ass&lt;br /&gt;
&lt;br /&gt;
Список остальных анимаций см. в файле '''scripts\state_lib.script'''.&lt;br /&gt;
== Симуляция ==&lt;br /&gt;
=== Некоторые условия работы симуляции ===&lt;br /&gt;
В файле '''scripts\sim_board.script''' для каждой группировки заданы прекондишены:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
squad = {	stalker		= { prec = function(squad, target) return in_time_interval(6, 19) and simulation_objects.sim_dist_to(squad, target) &amp;lt;= 150 end },&lt;br /&gt;
		bandit		= { prec = function(squad, target) return in_time_interval(6, 19) and simulation_objects.sim_dist_to(squad, target) &amp;lt;= 150 end },&lt;br /&gt;
		dolg		= { prec = function(squad, target) return in_time_interval(6, 19) and simulation_objects.sim_dist_to(squad, target) &amp;lt;= 150 end },&lt;br /&gt;
		freedom		= { prec = function(squad, target) return in_time_interval(6, 19) and simulation_objects.sim_dist_to(squad, target) &amp;lt;= 150 end },&lt;br /&gt;
		killer		= { prec = function(squad, target) return in_time_interval(6, 19) and simulation_objects.sim_dist_to(squad, target) &amp;lt;= 150 end }&lt;br /&gt;
	},&lt;br /&gt;
smart = { 	base		= { prec = function(squad, target) return in_time_interval(18,8) and not xr_conditions.surge_started() and not	travel_manager.check_squad_for_enemies(squad) &lt;br /&gt;
												and (target:name() == &amp;quot;zat_stalker_base_smart&amp;quot; or target:name() == &amp;quot;jup_a6&amp;quot; or target:name() == &amp;quot;pri_a16&amp;quot;) end },&lt;br /&gt;
		surge		= { prec = function() return xr_conditions.surge_started() end },&lt;br /&gt;
		territory	= { prec = function() return in_time_interval(8,18) and not xr_conditions.surge_started() end },&lt;br /&gt;
		resource	= { prec = function(squad, target) return in_time_interval(8,18) and not xr_conditions.surge_started() end } -- and squad:has_detector() },&lt;br /&gt;
		lair	 	= { prec = function() return in_time_interval(6,19) end }&lt;br /&gt;
	},&lt;br /&gt;
actor = { 	prec = function(squad, target) return has_alife_info(&amp;quot;sim_bandit_attack_harder&amp;quot;) and simulation_objects.sim_dist_to(squad, target) &amp;lt;= 150 end }&lt;br /&gt;
			&amp;lt;/code&amp;gt;&lt;br /&gt;
	&lt;br /&gt;
* '''squad''' — набор условий для вражды с другой фракцией.&lt;br /&gt;
**'''simulation_objects.sim_dist_to(squad, target) &amp;lt;= 150''' — проверка расстояния до отряда меньше требуемой.&lt;br /&gt;
* '''smart''' - набор условий для выбора того, или иного смарта.	&lt;br /&gt;
** '''base'''  — набор условий для возвращения на базу-смарт ('''default_base''') &amp;lt;br&amp;gt;&lt;br /&gt;
*** '''return in_time_interval(18,8) '''  — проверка находится ли отряд в данном отрезке времени &amp;lt;br&amp;gt;&lt;br /&gt;
*** '''not xr_conditions.surge_started()'''  — проверка отсутствия выброса &amp;lt;br&amp;gt;&lt;br /&gt;
*** '''not travel_manager.check_squad_for_enemies(squad)'''  — проверка отсутвия в отряде врагов. &amp;lt;br&amp;gt;&lt;br /&gt;
*** '''target:name() == &amp;quot;zat_stalker_base_smart&amp;quot; or target:name() == &amp;quot;jup_a6&amp;quot; or target:name() == &amp;quot;pri_a16&amp;quot; '''  — проверка наличия базы. &lt;br /&gt;
** '''surge''' — набор условий для поиска укрытия от выброса.&lt;br /&gt;
** '''territory''' — набор условий для начала поиска обычного смарта '''default'''. &lt;br /&gt;
** '''resource''' — набор условий для начала поиска смарта с аномалиями и добычи артефактов '''(default_resource)'''.&lt;br /&gt;
** '''lair''' — набор условий для поиска мутантом смарта-укрытия '''(default_lair)'''&lt;br /&gt;
* '''actor''' — набор условий для вражды с актором.&lt;br /&gt;
** '''has_alife_info(&amp;quot;sim_bandit_attack_harder&amp;quot;)''' — проверка присутствия инфопоршня&lt;br /&gt;
&lt;br /&gt;
=== Добавление смарта в общую симуляцию ===&lt;br /&gt;
В файле '''misc\travel_manager.ltx''' есть два раздела. &amp;lt;br&amp;gt;&lt;br /&gt;
* '''[locations]'''&lt;br /&gt;
Секция описание того куда направлются сталкеры. Текст добавляется в '''text\rus\st_dialog_manager.xml'''.&amp;lt;br&amp;gt;&lt;br /&gt;
Принцип: '''ваше_название_смарта''' = '''st_stalker_ваше_название_смарта'''. &amp;lt;br&amp;gt;&lt;br /&gt;
Например для смарта '''zat_sim_1''' которому соответствует стринг '''st_stalker_zat_sim_1''' НПС на вопрос &amp;quot;Куда вы направляетесь?&amp;quot;, ответит: ''&amp;quot;Иду в направлении аномалии «Котёл». Там рощица за ней - туда и иду.&amp;quot;''&lt;br /&gt;
* '''[traveler]'''&lt;br /&gt;
В файле уже все сказано: это перечень точек, куда проводники могут отвести за бабосы. Тут указываем наш смарт, затем создаем секцию:&lt;br /&gt;
&amp;lt;code&amp;gt;[ваше_название_смарта]&lt;br /&gt;
level = ваш_уровень&lt;br /&gt;
name = ваше_название_смарта &lt;br /&gt;
condlist = true&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
ваше_название_смарта указываем в файле '''text\rus\st_land_names.xml'''&lt;br /&gt;
'''condlist''' - условия существования данной точки. Можно использовать стандартные проверки условий.&lt;br /&gt;
&lt;br /&gt;
=== Добавление базы в общую симуляцию ===&lt;br /&gt;
#В '''misc\simulation_objects_props.ltx''' назначаем вашему смарту класс '''default_base'''. &lt;br /&gt;
#В файле '''scripts\state_lib.script''' для нужной вам группировки в секции '''base''' дополняем своей проверкой '''target:name() == &amp;quot;ваше_название_смарта&amp;quot;'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
'''Написал и оформил''': Vast&amp;lt;br&amp;gt;&lt;br /&gt;
Большое количество фраз и информации было взято отсюда [http://www.stalker-modostroy.ru/publ/x_ray_sdk/x_ray_sdk_0_7/rabota_so_smart_terrain_v_stalker_zp_sozdanie_i_nastrojka_squad_ov_otrjadov/4-1-0-12], а также из статьей умершего сайта '''stalker-2.com.ua''', поэтому линков никаих нет. &amp;lt;br&amp;gt;&lt;br /&gt;
Любые дополнения, критика, угрозы, все приветствуется.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
[[Category:A-Life]]&lt;/div&gt;</summary>
		<author><name>Vast</name></author>	</entry>

	<entry>
		<id>http://stalkerin.gameru.net/wiki/index.php?title=CoP._%D0%A1%D0%B8%D0%BC%D1%83%D0%BB%D1%8F%D1%86%D0%B8%D1%8F._%D0%9F%D0%B0%D1%80%D0%B0%D0%BC%D0%B5%D1%82%D1%80%D1%8B_%D1%81%D0%BC%D0%B0%D1%80%D1%82-%D1%82%D0%B5%D1%80%D1%80%D0%B5%D0%B9%D0%BD%D0%BE%D0%B2.</id>
		<title>CoP. Симуляция. Параметры смарт-террейнов.</title>
		<link rel="alternate" type="text/html" href="http://stalkerin.gameru.net/wiki/index.php?title=CoP._%D0%A1%D0%B8%D0%BC%D1%83%D0%BB%D1%8F%D1%86%D0%B8%D1%8F._%D0%9F%D0%B0%D1%80%D0%B0%D0%BC%D0%B5%D1%82%D1%80%D1%8B_%D1%81%D0%BC%D0%B0%D1%80%D1%82-%D1%82%D0%B5%D1%80%D1%80%D0%B5%D0%B9%D0%BD%D0%BE%D0%B2."/>
				<updated>2016-07-09T19:13:25Z</updated>
		
		<summary type="html">&lt;p&gt;Vast: /* Некоторые условия работы симуляции */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Смарт-террейны ==&lt;br /&gt;
Смарт-террейн - это определенный скриптовый класс в игре, при помощи которого происходит заселение локаций. В смартах организуются работы для НПС, реализуется логика для отдельных эксклюзивных персонажей, происходит респавн НПС и монстров, а также организуются укрытия от выброса для НПС.&lt;br /&gt;
&lt;br /&gt;
===== Типы смарт-террейнов =====&lt;br /&gt;
{| class=&amp;quot;standard&amp;quot;&lt;br /&gt;
 !'''default'''&lt;br /&gt;
 |Обычный тип смарт-террейна.&lt;br /&gt;
 |-&lt;br /&gt;
 !'''default_resource'''&lt;br /&gt;
 |Смарты с наличием аномальных зон, в которых есть работа для НПС по поиску артефактов. &lt;br /&gt;
 |-&lt;br /&gt;
 !'''default_base'''&lt;br /&gt;
 |Главный смарт. Сюда идут все отряды с наступлением ночи.&lt;br /&gt;
 |-&lt;br /&gt;
 !'''default_lair'''&lt;br /&gt;
 |Смарт для монстров. Тем не менее сталкеры сюда тоже могут прийти.&lt;br /&gt;
 |-&lt;br /&gt;
 !'''default_squad'''&lt;br /&gt;
 |Не смарт. Класс, выделяющий в симуляции уникальные отряды и персонажей.&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
===== Параметры смарт-террейнов =====&lt;br /&gt;
* '''Необходимые параметры:'''&lt;br /&gt;
{|class=&amp;quot;standard&amp;quot;&lt;br /&gt;
 !Параметр&lt;br /&gt;
 !Описание&lt;br /&gt;
 !Пример&lt;br /&gt;
 |-&lt;br /&gt;
 !'''squad_id'''&lt;br /&gt;
 |Уникальный ID отряда. Никогда не должен повторятся. Для любой локации начинается с единицы.&lt;br /&gt;
 |squad_id = 1&lt;br /&gt;
 |-&lt;br /&gt;
 !'''max_population'''&lt;br /&gt;
 |Количество отрядов, которые может принять смарт. Определяет для скольких отрядов в симуляции тут найдется работа.&lt;br /&gt;
 |max_population = 1&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
* '''Дополнительные параметры: '''&lt;br /&gt;
{| class=&amp;quot;standard&amp;quot;&lt;br /&gt;
 !Параметр&lt;br /&gt;
 !Описание&lt;br /&gt;
 !Пример&lt;br /&gt;
 |-&lt;br /&gt;
 !respawn_only_smart&lt;br /&gt;
 |Могут ли из смарта удаляться отряды в симуляции.&lt;br /&gt;
 |respawn_only_smart = true&lt;br /&gt;
 |-&lt;br /&gt;
 !respawn_params&lt;br /&gt;
 |Ссылка на секцию респауна (параметры этой секции см. ниже).&lt;br /&gt;
 |respawn_params = respawn@base_smart&lt;br /&gt;
 |-&lt;br /&gt;
 !smart_control&lt;br /&gt;
 |Ссылка на секцию с параметрами контроля смарта.&lt;br /&gt;
 |smart_control = smart_control&lt;br /&gt;
 |-&lt;br /&gt;
 !def_restr&lt;br /&gt;
 |Определяет рестриктор, в пределах которой находится лагерь. &lt;br /&gt;
 |def_restr = pri_a16_sr_noweap&lt;br /&gt;
 |-&lt;br /&gt;
 !safe_restr &lt;br /&gt;
 |Определяет рестриктор, в пределах которой НПС бессмертны.&lt;br /&gt;
 |safe_restr = pri_surge_hide_a16&lt;br /&gt;
 |-&lt;br /&gt;
 !spawn_point &lt;br /&gt;
 |Имя вейпоинта, в котором происходит респаун. Может иметь значение ''self''.&lt;br /&gt;
 |spawn_point = zat_sim_16_spawn_point&lt;br /&gt;
 |-&lt;br /&gt;
 !arrive_dist&lt;br /&gt;
 |Определяет расстояние, на котором отряд считается прибывшим в смарт и регистрируется в нем.&lt;br /&gt;
 |arrive_dist = 100&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
* '''Параметры smart_control: '''&lt;br /&gt;
{| class=&amp;quot;standard&amp;quot;&lt;br /&gt;
 !Параметр&lt;br /&gt;
 !Описание&lt;br /&gt;
 !Пример&lt;br /&gt;
 |-&lt;br /&gt;
 !noweap_zone&lt;br /&gt;
 |Определяет рестриктор, в котором запрещается использовать оружие (в том числе актору).&lt;br /&gt;
 |noweap_zone = zat_a2_sr_noweap&lt;br /&gt;
 |-&lt;br /&gt;
 !ignore_zone&lt;br /&gt;
 |Определяет рестриктор, в котором НПС не реагируют на опасности даже если атакованы.&lt;br /&gt;
 |ignore_zone = zat_a2_sr_light&lt;br /&gt;
 |-&lt;br /&gt;
 !alarm_start_sound&lt;br /&gt;
 |Воспроизводит звук из script_sound_...ltx, если актор атаковал смарт.&lt;br /&gt;
 |alarm_start_sound = zat_a2_base_alarm&lt;br /&gt;
 |-&lt;br /&gt;
 !alarm_stop_sound&lt;br /&gt;
 |Воспроизводит звук из script_sound_...ltx, когда тревога закончилась.&lt;br /&gt;
 |alarm_start_sound = zat_a2_base_relax&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
* '''Параметры respawn_params'''&lt;br /&gt;
Данная секция представляет собой список ссылок на секции сквадов, которые будут спауниться в этом смарт-террейне.&amp;lt;br&amp;gt;&lt;br /&gt;
Пример секции: &lt;br /&gt;
&amp;lt;blockquote&amp;gt;'''&lt;br /&gt;
'''[respawn@base_smart]&amp;lt;br&amp;gt;&lt;br /&gt;
spawn_bandit@novice&amp;lt;br&amp;gt;&lt;br /&gt;
spawn_bandit@advanced&amp;lt;br&amp;gt;&lt;br /&gt;
spawn_bandit@master&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
: Каждая секция сквада имеет следующие параметры:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard&amp;quot;&lt;br /&gt;
 !Параметр&lt;br /&gt;
 !Описание&lt;br /&gt;
 !Пример&lt;br /&gt;
 |-&lt;br /&gt;
 !spawn_squads&lt;br /&gt;
 |Список имен сквадов из squad_descr_...ltx. Может иметь логические проверки условий.&lt;br /&gt;
 |spawn_squads = bandit_sim_squad_veteran, bandit_sim_squad_advanced&lt;br /&gt;
 |-&lt;br /&gt;
 !spawn_num&lt;br /&gt;
 |Количество отрядов, которые будут респаунится. Может иметь логические проверки условий. &lt;br /&gt;
 |spawn_num = {+infoportion} 2, 0&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Параметры секции [exclusive]'''&lt;br /&gt;
Секция позволяет задавать логику для уникальных персонажей, которые находятся в данном смарте. &amp;lt;br&amp;gt;Пример использования:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
'''[exclusive]'''&amp;lt;br&amp;gt;&lt;br /&gt;
zat_a2_stalker_barmen = zaton\zat_a2_stalker_barmen.ltx&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Параметры:&lt;br /&gt;
{| class=&amp;quot;standard&amp;quot;&lt;br /&gt;
 !zat_a2_stalker_barmen&lt;br /&gt;
 |Сharacter ID НПС&lt;br /&gt;
 |-&lt;br /&gt;
 !zaton\zat_a2_stalker_barmen.ltx&lt;br /&gt;
 |путь к файлу с логикой.&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
== Работа в смарт-террейнах ==&lt;br /&gt;
Под работой стоит понимать пути по которым ходят, стоят и отыгрывают анимации НПС при попадании в смарт. Каждый тип работы должен начинатся с единицы. Предположительно максимальное число каждого типа работ - '''20'''. Каждый тип работы имеет свой приоритет. Чем меньше число тем больше вероятность, что НПС пойдет на эту работу. &lt;br /&gt;
&lt;br /&gt;
Имя каждой работы состоит из:&amp;lt;br&amp;gt;&lt;br /&gt;
# Имени смарта ''(esc_a1)''&lt;br /&gt;
# Типа работы ''(walker)''&lt;br /&gt;
# Номера работы ''(1,2,3..20)''&lt;br /&gt;
# Дополнительные параметры для вейпоинтов ''(walk,look)''&lt;br /&gt;
Пример:&amp;lt;br&amp;gt;&lt;br /&gt;
'''esc_a1_walker_1_walk''' &lt;br /&gt;
&lt;br /&gt;
'''Типы работ:'''&lt;br /&gt;
{| class=&amp;quot;standard&amp;quot;&lt;br /&gt;
 !Название&lt;br /&gt;
 !Приоритет&lt;br /&gt;
 !Описание&lt;br /&gt;
 !Пример&lt;br /&gt;
 |-&lt;br /&gt;
 !SLEEP&lt;br /&gt;
 |10&lt;br /&gt;
 |Вейпоинт, по которому пойдет сталкер спать ночью. &lt;br /&gt;
 |esc_a1_sleep_1_walk&lt;br /&gt;
 |-&lt;br /&gt;
 !WALKER&lt;br /&gt;
 |15&lt;br /&gt;
 |Обычный вейпоинт, по которому сталкер будет ходить. Предполагается, что имеет конечную цель и анимацию.&lt;br /&gt;
 |esc_a1_walker_1_walk&lt;br /&gt;
 |-&lt;br /&gt;
 !ANIMPOINT&lt;br /&gt;
 |15&lt;br /&gt;
 |Конечная точка с кастомной анимацией: НПС сидит, стоит за стойкой, или стоит, прислонившись к стене.&lt;br /&gt;
 |esc_a1_animpoint_1&lt;br /&gt;
 |-&lt;br /&gt;
 !PATROL&lt;br /&gt;
 |20&lt;br /&gt;
 |Вейпоинт, по которому будут ходить сталкер и выполнять функцию патруля. Должен быть зациклен. &lt;br /&gt;
 |esc_a1_patrol_1_walk&lt;br /&gt;
 |-&lt;br /&gt;
 !COLLECTOR&lt;br /&gt;
 |25&lt;br /&gt;
 |Вейпоинт, по которому пойдет сталкер отыгрывать анимацию собирания артефактов. &lt;br /&gt;
 |esc_a1_collector_1_walk&lt;br /&gt;
 |-&lt;br /&gt;
 !GUARD&lt;br /&gt;
 |25&lt;br /&gt;
 |Вейпоинт, по которому будут ходить сталкер и выполнять функцию охраны. Должен быть зациклен. &lt;br /&gt;
 |esc_a1_guard_1_walk&lt;br /&gt;
 |-&lt;br /&gt;
 !SNIPER&lt;br /&gt;
 |30&lt;br /&gt;
 |Вейпоинт, куда пойдет снайпер, если таковой имеется в скваде. Должен иметь две точки в вейпоинте look.&lt;br /&gt;
 |esc_a1_sniper_1_walk&lt;br /&gt;
 |-&lt;br /&gt;
 !CAMPER&lt;br /&gt;
 |45&lt;br /&gt;
 |Вейпоинт, куда пойдет НПС и будет выполнять роль кемпера. Предположительно ничего не будет делать.&lt;br /&gt;
 |esc_a1_camper_1_walk&lt;br /&gt;
 |-&lt;br /&gt;
 !SURGE&lt;br /&gt;
 |50&lt;br /&gt;
 |Вейпоинт, по которому пойдет сталкер в случае выброса. Должно быть разрешено в файле simulation_objects_props.ltx&lt;br /&gt;
 |esc_a1_surge_1_walk&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
Некоторые walk-вейпоинты, могут не иметь look-вейпоинтов. Для некоторых наличие look-вейпоинта обязательно. Для того, чтобы точка walk-вейпоинта работала с точкой look-вейпоинта, необходимо каждому из них задать одинаковый флаг. Некоторые анимации также стоит задавать в look-поинтах.&lt;br /&gt;
&lt;br /&gt;
'''Чтобы сталкеры могли сидеть возле костра необходимо:&lt;br /&gt;
# поставить walk-вейпоинт на место где они сядут и look-вейпоинт куда будут смотреть. &lt;br /&gt;
# установить общий флаг&lt;br /&gt;
# в параметрах '''look'''-вейпоинта (именно look) задать одну из этих анимаций:&lt;br /&gt;
#* sit&lt;br /&gt;
#* sit_knee&lt;br /&gt;
#* sit_ass&lt;br /&gt;
&lt;br /&gt;
Список остальных анимаций см. в файле '''scripts\state_lib.script'''.&lt;br /&gt;
== Симуляция ==&lt;br /&gt;
=== Некоторые условия работы симуляции ===&lt;br /&gt;
В файле '''scripts\sim_board.script''' для каждой группировки заданы прекондишены:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
squad = {	stalker		= { prec = function(squad, target) return in_time_interval(6, 19) and simulation_objects.sim_dist_to(squad, target) &amp;lt;= 150 end },&lt;br /&gt;
		bandit		= { prec = function(squad, target) return in_time_interval(6, 19) and simulation_objects.sim_dist_to(squad, target) &amp;lt;= 150 end },&lt;br /&gt;
		dolg		= { prec = function(squad, target) return in_time_interval(6, 19) and simulation_objects.sim_dist_to(squad, target) &amp;lt;= 150 end },&lt;br /&gt;
		freedom		= { prec = function(squad, target) return in_time_interval(6, 19) and simulation_objects.sim_dist_to(squad, target) &amp;lt;= 150 end },&lt;br /&gt;
		killer		= { prec = function(squad, target) return in_time_interval(6, 19) and simulation_objects.sim_dist_to(squad, target) &amp;lt;= 150 end }&lt;br /&gt;
	},&lt;br /&gt;
smart = { 	base		= { prec = function(squad, target) return in_time_interval(18,8) and not xr_conditions.surge_started() and not	travel_manager.check_squad_for_enemies(squad) &lt;br /&gt;
												and (target:name() == &amp;quot;zat_stalker_base_smart&amp;quot; or target:name() == &amp;quot;jup_a6&amp;quot; or target:name() == &amp;quot;pri_a16&amp;quot;) end },&lt;br /&gt;
		surge		= { prec = function() return xr_conditions.surge_started() end },&lt;br /&gt;
		territory	= { prec = function() return in_time_interval(8,18) and not xr_conditions.surge_started() end },&lt;br /&gt;
		resource	= { prec = function(squad, target) return in_time_interval(8,18) and not xr_conditions.surge_started() end } -- and squad:has_detector() },&lt;br /&gt;
		lair	 	= { prec = function() return in_time_interval(6,19) end }&lt;br /&gt;
	},&lt;br /&gt;
actor = { 	prec = function(squad, target) return has_alife_info(&amp;quot;sim_bandit_attack_harder&amp;quot;) and simulation_objects.sim_dist_to(squad, target) &amp;lt;= 150 end }&lt;br /&gt;
			&amp;lt;/code&amp;gt;&lt;br /&gt;
	&lt;br /&gt;
* '''squad''' — набор условий для вражды с другой фракцией.&lt;br /&gt;
**'''simulation_objects.sim_dist_to(squad, target) &amp;lt;= 150''' — проверка расстояния до отряда меньше требуемой.&lt;br /&gt;
* '''smart''' - набор условий для выбора того, или иного смарта.	&lt;br /&gt;
** '''base'''  — набор условий для возвращения на базу-смарт ('''default_base''') &amp;lt;br&amp;gt;&lt;br /&gt;
*** '''return in_time_interval(18,8) '''  — проверка наступило ли время для возвращения. &amp;lt;br&amp;gt;&lt;br /&gt;
*** '''not xr_conditions.surge_started()'''  — проверка отсутствия выброса &amp;lt;br&amp;gt;&lt;br /&gt;
*** '''not travel_manager.check_squad_for_enemies(squad)'''  — проверка отсутвия в отряде врагов. &amp;lt;br&amp;gt;&lt;br /&gt;
*** '''target:name() == &amp;quot;zat_stalker_base_smart&amp;quot; or target:name() == &amp;quot;jup_a6&amp;quot; or target:name() == &amp;quot;pri_a16&amp;quot; '''  — проверка наличия базы. &lt;br /&gt;
** '''surge''' — набор условий для поиска укрытия от выброса.&lt;br /&gt;
** '''territory''' — набор условий для начала поиска обычного смарта '''default'''. &lt;br /&gt;
** '''resource''' — набор условий для начала поиска смарта с аномалиями и добычи артефактов '''(default_resource)'''.&lt;br /&gt;
** '''lair''' — набор условий для поиска мутантом смарта-укрытия '''(default_lair)'''&lt;br /&gt;
* '''actor''' — набор условий для вражды с актором.&lt;br /&gt;
** '''has_alife_info(&amp;quot;sim_bandit_attack_harder&amp;quot;)''' — проверка присутствия инфопоршня&lt;br /&gt;
&lt;br /&gt;
=== Добавление смарта в общую симуляцию ===&lt;br /&gt;
В файле '''misc\travel_manager.ltx''' есть два раздела. &amp;lt;br&amp;gt;&lt;br /&gt;
* '''[locations]'''&lt;br /&gt;
Секция описание того куда направлются сталкеры. Текст добавляется в '''text\rus\st_dialog_manager.xml'''.&amp;lt;br&amp;gt;&lt;br /&gt;
Принцип: '''ваше_название_смарта''' = '''st_stalker_ваше_название_смарта'''. &amp;lt;br&amp;gt;&lt;br /&gt;
Например для смарта '''zat_sim_1''' которому соответствует стринг '''st_stalker_zat_sim_1''' НПС на вопрос &amp;quot;Куда вы направляетесь?&amp;quot;, ответит: ''&amp;quot;Иду в направлении аномалии «Котёл». Там рощица за ней - туда и иду.&amp;quot;''&lt;br /&gt;
* '''[traveler]'''&lt;br /&gt;
В файле уже все сказано: это перечень точек, куда проводники могут отвести за бабосы. Тут указываем наш смарт, затем создаем секцию:&lt;br /&gt;
&amp;lt;code&amp;gt;[ваше_название_смарта]&lt;br /&gt;
level = ваш_уровень&lt;br /&gt;
name = ваше_название_смарта &lt;br /&gt;
condlist = true&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
ваше_название_смарта указываем в файле '''text\rus\st_land_names.xml'''&lt;br /&gt;
'''condlist''' - условия существования данной точки. Можно использовать стандартные проверки условий.&lt;br /&gt;
&lt;br /&gt;
=== Добавление базы в общую симуляцию ===&lt;br /&gt;
#В '''misc\simulation_objects_props.ltx''' назначаем вашему смарту класс '''default_base'''. &lt;br /&gt;
#В файле '''scripts\state_lib.script''' для нужной вам группировки в секции '''base''' дополняем своей проверкой '''target:name() == &amp;quot;ваше_название_смарта&amp;quot;'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
'''Написал и оформил''': Vast&amp;lt;br&amp;gt;&lt;br /&gt;
Большое количество фраз и информации было взято отсюда [http://www.stalker-modostroy.ru/publ/x_ray_sdk/x_ray_sdk_0_7/rabota_so_smart_terrain_v_stalker_zp_sozdanie_i_nastrojka_squad_ov_otrjadov/4-1-0-12], а также из статьей умершего сайта '''stalker-2.com.ua''', поэтому линков никаих нет. &amp;lt;br&amp;gt;&lt;br /&gt;
Любые дополнения, критика, угрозы, все приветствуется.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
[[Category:A-Life]]&lt;/div&gt;</summary>
		<author><name>Vast</name></author>	</entry>

	<entry>
		<id>http://stalkerin.gameru.net/wiki/index.php?title=CoP._%D0%A1%D0%B8%D0%BC%D1%83%D0%BB%D1%8F%D1%86%D0%B8%D1%8F._%D0%9F%D0%B0%D1%80%D0%B0%D0%BC%D0%B5%D1%82%D1%80%D1%8B_%D1%81%D0%BC%D0%B0%D1%80%D1%82-%D1%82%D0%B5%D1%80%D1%80%D0%B5%D0%B9%D0%BD%D0%BE%D0%B2.</id>
		<title>CoP. Симуляция. Параметры смарт-террейнов.</title>
		<link rel="alternate" type="text/html" href="http://stalkerin.gameru.net/wiki/index.php?title=CoP._%D0%A1%D0%B8%D0%BC%D1%83%D0%BB%D1%8F%D1%86%D0%B8%D1%8F._%D0%9F%D0%B0%D1%80%D0%B0%D0%BC%D0%B5%D1%82%D1%80%D1%8B_%D1%81%D0%BC%D0%B0%D1%80%D1%82-%D1%82%D0%B5%D1%80%D1%80%D0%B5%D0%B9%D0%BD%D0%BE%D0%B2."/>
				<updated>2016-07-09T19:13:06Z</updated>
		
		<summary type="html">&lt;p&gt;Vast: /* Некоторые условия работы симуляции */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Смарт-террейны ==&lt;br /&gt;
Смарт-террейн - это определенный скриптовый класс в игре, при помощи которого происходит заселение локаций. В смартах организуются работы для НПС, реализуется логика для отдельных эксклюзивных персонажей, происходит респавн НПС и монстров, а также организуются укрытия от выброса для НПС.&lt;br /&gt;
&lt;br /&gt;
===== Типы смарт-террейнов =====&lt;br /&gt;
{| class=&amp;quot;standard&amp;quot;&lt;br /&gt;
 !'''default'''&lt;br /&gt;
 |Обычный тип смарт-террейна.&lt;br /&gt;
 |-&lt;br /&gt;
 !'''default_resource'''&lt;br /&gt;
 |Смарты с наличием аномальных зон, в которых есть работа для НПС по поиску артефактов. &lt;br /&gt;
 |-&lt;br /&gt;
 !'''default_base'''&lt;br /&gt;
 |Главный смарт. Сюда идут все отряды с наступлением ночи.&lt;br /&gt;
 |-&lt;br /&gt;
 !'''default_lair'''&lt;br /&gt;
 |Смарт для монстров. Тем не менее сталкеры сюда тоже могут прийти.&lt;br /&gt;
 |-&lt;br /&gt;
 !'''default_squad'''&lt;br /&gt;
 |Не смарт. Класс, выделяющий в симуляции уникальные отряды и персонажей.&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
===== Параметры смарт-террейнов =====&lt;br /&gt;
* '''Необходимые параметры:'''&lt;br /&gt;
{|class=&amp;quot;standard&amp;quot;&lt;br /&gt;
 !Параметр&lt;br /&gt;
 !Описание&lt;br /&gt;
 !Пример&lt;br /&gt;
 |-&lt;br /&gt;
 !'''squad_id'''&lt;br /&gt;
 |Уникальный ID отряда. Никогда не должен повторятся. Для любой локации начинается с единицы.&lt;br /&gt;
 |squad_id = 1&lt;br /&gt;
 |-&lt;br /&gt;
 !'''max_population'''&lt;br /&gt;
 |Количество отрядов, которые может принять смарт. Определяет для скольких отрядов в симуляции тут найдется работа.&lt;br /&gt;
 |max_population = 1&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
* '''Дополнительные параметры: '''&lt;br /&gt;
{| class=&amp;quot;standard&amp;quot;&lt;br /&gt;
 !Параметр&lt;br /&gt;
 !Описание&lt;br /&gt;
 !Пример&lt;br /&gt;
 |-&lt;br /&gt;
 !respawn_only_smart&lt;br /&gt;
 |Могут ли из смарта удаляться отряды в симуляции.&lt;br /&gt;
 |respawn_only_smart = true&lt;br /&gt;
 |-&lt;br /&gt;
 !respawn_params&lt;br /&gt;
 |Ссылка на секцию респауна (параметры этой секции см. ниже).&lt;br /&gt;
 |respawn_params = respawn@base_smart&lt;br /&gt;
 |-&lt;br /&gt;
 !smart_control&lt;br /&gt;
 |Ссылка на секцию с параметрами контроля смарта.&lt;br /&gt;
 |smart_control = smart_control&lt;br /&gt;
 |-&lt;br /&gt;
 !def_restr&lt;br /&gt;
 |Определяет рестриктор, в пределах которой находится лагерь. &lt;br /&gt;
 |def_restr = pri_a16_sr_noweap&lt;br /&gt;
 |-&lt;br /&gt;
 !safe_restr &lt;br /&gt;
 |Определяет рестриктор, в пределах которой НПС бессмертны.&lt;br /&gt;
 |safe_restr = pri_surge_hide_a16&lt;br /&gt;
 |-&lt;br /&gt;
 !spawn_point &lt;br /&gt;
 |Имя вейпоинта, в котором происходит респаун. Может иметь значение ''self''.&lt;br /&gt;
 |spawn_point = zat_sim_16_spawn_point&lt;br /&gt;
 |-&lt;br /&gt;
 !arrive_dist&lt;br /&gt;
 |Определяет расстояние, на котором отряд считается прибывшим в смарт и регистрируется в нем.&lt;br /&gt;
 |arrive_dist = 100&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
* '''Параметры smart_control: '''&lt;br /&gt;
{| class=&amp;quot;standard&amp;quot;&lt;br /&gt;
 !Параметр&lt;br /&gt;
 !Описание&lt;br /&gt;
 !Пример&lt;br /&gt;
 |-&lt;br /&gt;
 !noweap_zone&lt;br /&gt;
 |Определяет рестриктор, в котором запрещается использовать оружие (в том числе актору).&lt;br /&gt;
 |noweap_zone = zat_a2_sr_noweap&lt;br /&gt;
 |-&lt;br /&gt;
 !ignore_zone&lt;br /&gt;
 |Определяет рестриктор, в котором НПС не реагируют на опасности даже если атакованы.&lt;br /&gt;
 |ignore_zone = zat_a2_sr_light&lt;br /&gt;
 |-&lt;br /&gt;
 !alarm_start_sound&lt;br /&gt;
 |Воспроизводит звук из script_sound_...ltx, если актор атаковал смарт.&lt;br /&gt;
 |alarm_start_sound = zat_a2_base_alarm&lt;br /&gt;
 |-&lt;br /&gt;
 !alarm_stop_sound&lt;br /&gt;
 |Воспроизводит звук из script_sound_...ltx, когда тревога закончилась.&lt;br /&gt;
 |alarm_start_sound = zat_a2_base_relax&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
* '''Параметры respawn_params'''&lt;br /&gt;
Данная секция представляет собой список ссылок на секции сквадов, которые будут спауниться в этом смарт-террейне.&amp;lt;br&amp;gt;&lt;br /&gt;
Пример секции: &lt;br /&gt;
&amp;lt;blockquote&amp;gt;'''&lt;br /&gt;
'''[respawn@base_smart]&amp;lt;br&amp;gt;&lt;br /&gt;
spawn_bandit@novice&amp;lt;br&amp;gt;&lt;br /&gt;
spawn_bandit@advanced&amp;lt;br&amp;gt;&lt;br /&gt;
spawn_bandit@master&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
: Каждая секция сквада имеет следующие параметры:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard&amp;quot;&lt;br /&gt;
 !Параметр&lt;br /&gt;
 !Описание&lt;br /&gt;
 !Пример&lt;br /&gt;
 |-&lt;br /&gt;
 !spawn_squads&lt;br /&gt;
 |Список имен сквадов из squad_descr_...ltx. Может иметь логические проверки условий.&lt;br /&gt;
 |spawn_squads = bandit_sim_squad_veteran, bandit_sim_squad_advanced&lt;br /&gt;
 |-&lt;br /&gt;
 !spawn_num&lt;br /&gt;
 |Количество отрядов, которые будут респаунится. Может иметь логические проверки условий. &lt;br /&gt;
 |spawn_num = {+infoportion} 2, 0&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Параметры секции [exclusive]'''&lt;br /&gt;
Секция позволяет задавать логику для уникальных персонажей, которые находятся в данном смарте. &amp;lt;br&amp;gt;Пример использования:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
'''[exclusive]'''&amp;lt;br&amp;gt;&lt;br /&gt;
zat_a2_stalker_barmen = zaton\zat_a2_stalker_barmen.ltx&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Параметры:&lt;br /&gt;
{| class=&amp;quot;standard&amp;quot;&lt;br /&gt;
 !zat_a2_stalker_barmen&lt;br /&gt;
 |Сharacter ID НПС&lt;br /&gt;
 |-&lt;br /&gt;
 !zaton\zat_a2_stalker_barmen.ltx&lt;br /&gt;
 |путь к файлу с логикой.&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
== Работа в смарт-террейнах ==&lt;br /&gt;
Под работой стоит понимать пути по которым ходят, стоят и отыгрывают анимации НПС при попадании в смарт. Каждый тип работы должен начинатся с единицы. Предположительно максимальное число каждого типа работ - '''20'''. Каждый тип работы имеет свой приоритет. Чем меньше число тем больше вероятность, что НПС пойдет на эту работу. &lt;br /&gt;
&lt;br /&gt;
Имя каждой работы состоит из:&amp;lt;br&amp;gt;&lt;br /&gt;
# Имени смарта ''(esc_a1)''&lt;br /&gt;
# Типа работы ''(walker)''&lt;br /&gt;
# Номера работы ''(1,2,3..20)''&lt;br /&gt;
# Дополнительные параметры для вейпоинтов ''(walk,look)''&lt;br /&gt;
Пример:&amp;lt;br&amp;gt;&lt;br /&gt;
'''esc_a1_walker_1_walk''' &lt;br /&gt;
&lt;br /&gt;
'''Типы работ:'''&lt;br /&gt;
{| class=&amp;quot;standard&amp;quot;&lt;br /&gt;
 !Название&lt;br /&gt;
 !Приоритет&lt;br /&gt;
 !Описание&lt;br /&gt;
 !Пример&lt;br /&gt;
 |-&lt;br /&gt;
 !SLEEP&lt;br /&gt;
 |10&lt;br /&gt;
 |Вейпоинт, по которому пойдет сталкер спать ночью. &lt;br /&gt;
 |esc_a1_sleep_1_walk&lt;br /&gt;
 |-&lt;br /&gt;
 !WALKER&lt;br /&gt;
 |15&lt;br /&gt;
 |Обычный вейпоинт, по которому сталкер будет ходить. Предполагается, что имеет конечную цель и анимацию.&lt;br /&gt;
 |esc_a1_walker_1_walk&lt;br /&gt;
 |-&lt;br /&gt;
 !ANIMPOINT&lt;br /&gt;
 |15&lt;br /&gt;
 |Конечная точка с кастомной анимацией: НПС сидит, стоит за стойкой, или стоит, прислонившись к стене.&lt;br /&gt;
 |esc_a1_animpoint_1&lt;br /&gt;
 |-&lt;br /&gt;
 !PATROL&lt;br /&gt;
 |20&lt;br /&gt;
 |Вейпоинт, по которому будут ходить сталкер и выполнять функцию патруля. Должен быть зациклен. &lt;br /&gt;
 |esc_a1_patrol_1_walk&lt;br /&gt;
 |-&lt;br /&gt;
 !COLLECTOR&lt;br /&gt;
 |25&lt;br /&gt;
 |Вейпоинт, по которому пойдет сталкер отыгрывать анимацию собирания артефактов. &lt;br /&gt;
 |esc_a1_collector_1_walk&lt;br /&gt;
 |-&lt;br /&gt;
 !GUARD&lt;br /&gt;
 |25&lt;br /&gt;
 |Вейпоинт, по которому будут ходить сталкер и выполнять функцию охраны. Должен быть зациклен. &lt;br /&gt;
 |esc_a1_guard_1_walk&lt;br /&gt;
 |-&lt;br /&gt;
 !SNIPER&lt;br /&gt;
 |30&lt;br /&gt;
 |Вейпоинт, куда пойдет снайпер, если таковой имеется в скваде. Должен иметь две точки в вейпоинте look.&lt;br /&gt;
 |esc_a1_sniper_1_walk&lt;br /&gt;
 |-&lt;br /&gt;
 !CAMPER&lt;br /&gt;
 |45&lt;br /&gt;
 |Вейпоинт, куда пойдет НПС и будет выполнять роль кемпера. Предположительно ничего не будет делать.&lt;br /&gt;
 |esc_a1_camper_1_walk&lt;br /&gt;
 |-&lt;br /&gt;
 !SURGE&lt;br /&gt;
 |50&lt;br /&gt;
 |Вейпоинт, по которому пойдет сталкер в случае выброса. Должно быть разрешено в файле simulation_objects_props.ltx&lt;br /&gt;
 |esc_a1_surge_1_walk&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
Некоторые walk-вейпоинты, могут не иметь look-вейпоинтов. Для некоторых наличие look-вейпоинта обязательно. Для того, чтобы точка walk-вейпоинта работала с точкой look-вейпоинта, необходимо каждому из них задать одинаковый флаг. Некоторые анимации также стоит задавать в look-поинтах.&lt;br /&gt;
&lt;br /&gt;
'''Чтобы сталкеры могли сидеть возле костра необходимо:&lt;br /&gt;
# поставить walk-вейпоинт на место где они сядут и look-вейпоинт куда будут смотреть. &lt;br /&gt;
# установить общий флаг&lt;br /&gt;
# в параметрах '''look'''-вейпоинта (именно look) задать одну из этих анимаций:&lt;br /&gt;
#* sit&lt;br /&gt;
#* sit_knee&lt;br /&gt;
#* sit_ass&lt;br /&gt;
&lt;br /&gt;
Список остальных анимаций см. в файле '''scripts\state_lib.script'''.&lt;br /&gt;
== Симуляция ==&lt;br /&gt;
=== Некоторые условия работы симуляции ===&lt;br /&gt;
В файле '''scripts\sim_board.script''' для каждой группировки заданы прекондишены для перехода в тот или иной смарт.&lt;br /&gt;
*''' &amp;lt;big&amp;gt;Пример:&amp;lt;/big&amp;gt; '''&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
squad = {	stalker		= { prec = function(squad, target) return in_time_interval(6, 19) and simulation_objects.sim_dist_to(squad, target) &amp;lt;= 150 end },&lt;br /&gt;
		bandit		= { prec = function(squad, target) return in_time_interval(6, 19) and simulation_objects.sim_dist_to(squad, target) &amp;lt;= 150 end },&lt;br /&gt;
		dolg		= { prec = function(squad, target) return in_time_interval(6, 19) and simulation_objects.sim_dist_to(squad, target) &amp;lt;= 150 end },&lt;br /&gt;
		freedom		= { prec = function(squad, target) return in_time_interval(6, 19) and simulation_objects.sim_dist_to(squad, target) &amp;lt;= 150 end },&lt;br /&gt;
		killer		= { prec = function(squad, target) return in_time_interval(6, 19) and simulation_objects.sim_dist_to(squad, target) &amp;lt;= 150 end }&lt;br /&gt;
	},&lt;br /&gt;
smart = { 	base		= { prec = function(squad, target) return in_time_interval(18,8) and not xr_conditions.surge_started() and not	travel_manager.check_squad_for_enemies(squad) &lt;br /&gt;
												and (target:name() == &amp;quot;zat_stalker_base_smart&amp;quot; or target:name() == &amp;quot;jup_a6&amp;quot; or target:name() == &amp;quot;pri_a16&amp;quot;) end },&lt;br /&gt;
		surge		= { prec = function() return xr_conditions.surge_started() end },&lt;br /&gt;
		territory	= { prec = function() return in_time_interval(8,18) and not xr_conditions.surge_started() end },&lt;br /&gt;
		resource	= { prec = function(squad, target) return in_time_interval(8,18) and not xr_conditions.surge_started() end } -- and squad:has_detector() },&lt;br /&gt;
		lair	 	= { prec = function() return in_time_interval(6,19) end }&lt;br /&gt;
	},&lt;br /&gt;
actor = { 	prec = function(squad, target) return has_alife_info(&amp;quot;sim_bandit_attack_harder&amp;quot;) and simulation_objects.sim_dist_to(squad, target) &amp;lt;= 150 end }&lt;br /&gt;
			&amp;lt;/code&amp;gt;&lt;br /&gt;
	&lt;br /&gt;
* '''squad''' — набор условий для вражды с другой фракцией.&lt;br /&gt;
**'''simulation_objects.sim_dist_to(squad, target) &amp;lt;= 150''' — проверка расстояния до отряда меньше требуемой.&lt;br /&gt;
* '''smart''' - набор условий для выбора того, или иного смарта.	&lt;br /&gt;
** '''base'''  — набор условий для возвращения на базу-смарт ('''default_base''') &amp;lt;br&amp;gt;&lt;br /&gt;
*** '''return in_time_interval(18,8) '''  — проверка наступило ли время для возвращения. &amp;lt;br&amp;gt;&lt;br /&gt;
*** '''not xr_conditions.surge_started()'''  — проверка отсутствия выброса &amp;lt;br&amp;gt;&lt;br /&gt;
*** '''not travel_manager.check_squad_for_enemies(squad)'''  — проверка отсутвия в отряде врагов. &amp;lt;br&amp;gt;&lt;br /&gt;
*** '''target:name() == &amp;quot;zat_stalker_base_smart&amp;quot; or target:name() == &amp;quot;jup_a6&amp;quot; or target:name() == &amp;quot;pri_a16&amp;quot; '''  — проверка наличия базы. &lt;br /&gt;
** '''surge''' — набор условий для поиска укрытия от выброса.&lt;br /&gt;
** '''territory''' — набор условий для начала поиска обычного смарта '''default'''. &lt;br /&gt;
** '''resource''' — набор условий для начала поиска смарта с аномалиями и добычи артефактов '''(default_resource)'''.&lt;br /&gt;
** '''lair''' — набор условий для поиска мутантом смарта-укрытия '''(default_lair)'''&lt;br /&gt;
* '''actor''' — набор условий для вражды с актором.&lt;br /&gt;
** '''has_alife_info(&amp;quot;sim_bandit_attack_harder&amp;quot;)''' — проверка присутствия инфопоршня&lt;br /&gt;
&lt;br /&gt;
=== Добавление смарта в общую симуляцию ===&lt;br /&gt;
В файле '''misc\travel_manager.ltx''' есть два раздела. &amp;lt;br&amp;gt;&lt;br /&gt;
* '''[locations]'''&lt;br /&gt;
Секция описание того куда направлются сталкеры. Текст добавляется в '''text\rus\st_dialog_manager.xml'''.&amp;lt;br&amp;gt;&lt;br /&gt;
Принцип: '''ваше_название_смарта''' = '''st_stalker_ваше_название_смарта'''. &amp;lt;br&amp;gt;&lt;br /&gt;
Например для смарта '''zat_sim_1''' которому соответствует стринг '''st_stalker_zat_sim_1''' НПС на вопрос &amp;quot;Куда вы направляетесь?&amp;quot;, ответит: ''&amp;quot;Иду в направлении аномалии «Котёл». Там рощица за ней - туда и иду.&amp;quot;''&lt;br /&gt;
* '''[traveler]'''&lt;br /&gt;
В файле уже все сказано: это перечень точек, куда проводники могут отвести за бабосы. Тут указываем наш смарт, затем создаем секцию:&lt;br /&gt;
&amp;lt;code&amp;gt;[ваше_название_смарта]&lt;br /&gt;
level = ваш_уровень&lt;br /&gt;
name = ваше_название_смарта &lt;br /&gt;
condlist = true&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
ваше_название_смарта указываем в файле '''text\rus\st_land_names.xml'''&lt;br /&gt;
'''condlist''' - условия существования данной точки. Можно использовать стандартные проверки условий.&lt;br /&gt;
&lt;br /&gt;
=== Добавление базы в общую симуляцию ===&lt;br /&gt;
#В '''misc\simulation_objects_props.ltx''' назначаем вашему смарту класс '''default_base'''. &lt;br /&gt;
#В файле '''scripts\state_lib.script''' для нужной вам группировки в секции '''base''' дополняем своей проверкой '''target:name() == &amp;quot;ваше_название_смарта&amp;quot;'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
'''Написал и оформил''': Vast&amp;lt;br&amp;gt;&lt;br /&gt;
Большое количество фраз и информации было взято отсюда [http://www.stalker-modostroy.ru/publ/x_ray_sdk/x_ray_sdk_0_7/rabota_so_smart_terrain_v_stalker_zp_sozdanie_i_nastrojka_squad_ov_otrjadov/4-1-0-12], а также из статьей умершего сайта '''stalker-2.com.ua''', поэтому линков никаих нет. &amp;lt;br&amp;gt;&lt;br /&gt;
Любые дополнения, критика, угрозы, все приветствуется.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
[[Category:A-Life]]&lt;/div&gt;</summary>
		<author><name>Vast</name></author>	</entry>

	<entry>
		<id>http://stalkerin.gameru.net/wiki/index.php?title=CoP._%D0%A1%D0%B8%D0%BC%D1%83%D0%BB%D1%8F%D1%86%D0%B8%D1%8F._%D0%9F%D0%B0%D1%80%D0%B0%D0%BC%D0%B5%D1%82%D1%80%D1%8B_%D1%81%D0%BC%D0%B0%D1%80%D1%82-%D1%82%D0%B5%D1%80%D1%80%D0%B5%D0%B9%D0%BD%D0%BE%D0%B2.</id>
		<title>CoP. Симуляция. Параметры смарт-террейнов.</title>
		<link rel="alternate" type="text/html" href="http://stalkerin.gameru.net/wiki/index.php?title=CoP._%D0%A1%D0%B8%D0%BC%D1%83%D0%BB%D1%8F%D1%86%D0%B8%D1%8F._%D0%9F%D0%B0%D1%80%D0%B0%D0%BC%D0%B5%D1%82%D1%80%D1%8B_%D1%81%D0%BC%D0%B0%D1%80%D1%82-%D1%82%D0%B5%D1%80%D1%80%D0%B5%D0%B9%D0%BD%D0%BE%D0%B2."/>
				<updated>2016-07-09T19:11:33Z</updated>
		
		<summary type="html">&lt;p&gt;Vast: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Смарт-террейны ==&lt;br /&gt;
Смарт-террейн - это определенный скриптовый класс в игре, при помощи которого происходит заселение локаций. В смартах организуются работы для НПС, реализуется логика для отдельных эксклюзивных персонажей, происходит респавн НПС и монстров, а также организуются укрытия от выброса для НПС.&lt;br /&gt;
&lt;br /&gt;
===== Типы смарт-террейнов =====&lt;br /&gt;
{| class=&amp;quot;standard&amp;quot;&lt;br /&gt;
 !'''default'''&lt;br /&gt;
 |Обычный тип смарт-террейна.&lt;br /&gt;
 |-&lt;br /&gt;
 !'''default_resource'''&lt;br /&gt;
 |Смарты с наличием аномальных зон, в которых есть работа для НПС по поиску артефактов. &lt;br /&gt;
 |-&lt;br /&gt;
 !'''default_base'''&lt;br /&gt;
 |Главный смарт. Сюда идут все отряды с наступлением ночи.&lt;br /&gt;
 |-&lt;br /&gt;
 !'''default_lair'''&lt;br /&gt;
 |Смарт для монстров. Тем не менее сталкеры сюда тоже могут прийти.&lt;br /&gt;
 |-&lt;br /&gt;
 !'''default_squad'''&lt;br /&gt;
 |Не смарт. Класс, выделяющий в симуляции уникальные отряды и персонажей.&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
===== Параметры смарт-террейнов =====&lt;br /&gt;
* '''Необходимые параметры:'''&lt;br /&gt;
{|class=&amp;quot;standard&amp;quot;&lt;br /&gt;
 !Параметр&lt;br /&gt;
 !Описание&lt;br /&gt;
 !Пример&lt;br /&gt;
 |-&lt;br /&gt;
 !'''squad_id'''&lt;br /&gt;
 |Уникальный ID отряда. Никогда не должен повторятся. Для любой локации начинается с единицы.&lt;br /&gt;
 |squad_id = 1&lt;br /&gt;
 |-&lt;br /&gt;
 !'''max_population'''&lt;br /&gt;
 |Количество отрядов, которые может принять смарт. Определяет для скольких отрядов в симуляции тут найдется работа.&lt;br /&gt;
 |max_population = 1&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
* '''Дополнительные параметры: '''&lt;br /&gt;
{| class=&amp;quot;standard&amp;quot;&lt;br /&gt;
 !Параметр&lt;br /&gt;
 !Описание&lt;br /&gt;
 !Пример&lt;br /&gt;
 |-&lt;br /&gt;
 !respawn_only_smart&lt;br /&gt;
 |Могут ли из смарта удаляться отряды в симуляции.&lt;br /&gt;
 |respawn_only_smart = true&lt;br /&gt;
 |-&lt;br /&gt;
 !respawn_params&lt;br /&gt;
 |Ссылка на секцию респауна (параметры этой секции см. ниже).&lt;br /&gt;
 |respawn_params = respawn@base_smart&lt;br /&gt;
 |-&lt;br /&gt;
 !smart_control&lt;br /&gt;
 |Ссылка на секцию с параметрами контроля смарта.&lt;br /&gt;
 |smart_control = smart_control&lt;br /&gt;
 |-&lt;br /&gt;
 !def_restr&lt;br /&gt;
 |Определяет рестриктор, в пределах которой находится лагерь. &lt;br /&gt;
 |def_restr = pri_a16_sr_noweap&lt;br /&gt;
 |-&lt;br /&gt;
 !safe_restr &lt;br /&gt;
 |Определяет рестриктор, в пределах которой НПС бессмертны.&lt;br /&gt;
 |safe_restr = pri_surge_hide_a16&lt;br /&gt;
 |-&lt;br /&gt;
 !spawn_point &lt;br /&gt;
 |Имя вейпоинта, в котором происходит респаун. Может иметь значение ''self''.&lt;br /&gt;
 |spawn_point = zat_sim_16_spawn_point&lt;br /&gt;
 |-&lt;br /&gt;
 !arrive_dist&lt;br /&gt;
 |Определяет расстояние, на котором отряд считается прибывшим в смарт и регистрируется в нем.&lt;br /&gt;
 |arrive_dist = 100&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
* '''Параметры smart_control: '''&lt;br /&gt;
{| class=&amp;quot;standard&amp;quot;&lt;br /&gt;
 !Параметр&lt;br /&gt;
 !Описание&lt;br /&gt;
 !Пример&lt;br /&gt;
 |-&lt;br /&gt;
 !noweap_zone&lt;br /&gt;
 |Определяет рестриктор, в котором запрещается использовать оружие (в том числе актору).&lt;br /&gt;
 |noweap_zone = zat_a2_sr_noweap&lt;br /&gt;
 |-&lt;br /&gt;
 !ignore_zone&lt;br /&gt;
 |Определяет рестриктор, в котором НПС не реагируют на опасности даже если атакованы.&lt;br /&gt;
 |ignore_zone = zat_a2_sr_light&lt;br /&gt;
 |-&lt;br /&gt;
 !alarm_start_sound&lt;br /&gt;
 |Воспроизводит звук из script_sound_...ltx, если актор атаковал смарт.&lt;br /&gt;
 |alarm_start_sound = zat_a2_base_alarm&lt;br /&gt;
 |-&lt;br /&gt;
 !alarm_stop_sound&lt;br /&gt;
 |Воспроизводит звук из script_sound_...ltx, когда тревога закончилась.&lt;br /&gt;
 |alarm_start_sound = zat_a2_base_relax&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
* '''Параметры respawn_params'''&lt;br /&gt;
Данная секция представляет собой список ссылок на секции сквадов, которые будут спауниться в этом смарт-террейне.&amp;lt;br&amp;gt;&lt;br /&gt;
Пример секции: &lt;br /&gt;
&amp;lt;blockquote&amp;gt;'''&lt;br /&gt;
'''[respawn@base_smart]&amp;lt;br&amp;gt;&lt;br /&gt;
spawn_bandit@novice&amp;lt;br&amp;gt;&lt;br /&gt;
spawn_bandit@advanced&amp;lt;br&amp;gt;&lt;br /&gt;
spawn_bandit@master&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
: Каждая секция сквада имеет следующие параметры:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard&amp;quot;&lt;br /&gt;
 !Параметр&lt;br /&gt;
 !Описание&lt;br /&gt;
 !Пример&lt;br /&gt;
 |-&lt;br /&gt;
 !spawn_squads&lt;br /&gt;
 |Список имен сквадов из squad_descr_...ltx. Может иметь логические проверки условий.&lt;br /&gt;
 |spawn_squads = bandit_sim_squad_veteran, bandit_sim_squad_advanced&lt;br /&gt;
 |-&lt;br /&gt;
 !spawn_num&lt;br /&gt;
 |Количество отрядов, которые будут респаунится. Может иметь логические проверки условий. &lt;br /&gt;
 |spawn_num = {+infoportion} 2, 0&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Параметры секции [exclusive]'''&lt;br /&gt;
Секция позволяет задавать логику для уникальных персонажей, которые находятся в данном смарте. &amp;lt;br&amp;gt;Пример использования:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
'''[exclusive]'''&amp;lt;br&amp;gt;&lt;br /&gt;
zat_a2_stalker_barmen = zaton\zat_a2_stalker_barmen.ltx&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Параметры:&lt;br /&gt;
{| class=&amp;quot;standard&amp;quot;&lt;br /&gt;
 !zat_a2_stalker_barmen&lt;br /&gt;
 |Сharacter ID НПС&lt;br /&gt;
 |-&lt;br /&gt;
 !zaton\zat_a2_stalker_barmen.ltx&lt;br /&gt;
 |путь к файлу с логикой.&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
== Работа в смарт-террейнах ==&lt;br /&gt;
Под работой стоит понимать пути по которым ходят, стоят и отыгрывают анимации НПС при попадании в смарт. Каждый тип работы должен начинатся с единицы. Предположительно максимальное число каждого типа работ - '''20'''. Каждый тип работы имеет свой приоритет. Чем меньше число тем больше вероятность, что НПС пойдет на эту работу. &lt;br /&gt;
&lt;br /&gt;
Имя каждой работы состоит из:&amp;lt;br&amp;gt;&lt;br /&gt;
# Имени смарта ''(esc_a1)''&lt;br /&gt;
# Типа работы ''(walker)''&lt;br /&gt;
# Номера работы ''(1,2,3..20)''&lt;br /&gt;
# Дополнительные параметры для вейпоинтов ''(walk,look)''&lt;br /&gt;
Пример:&amp;lt;br&amp;gt;&lt;br /&gt;
'''esc_a1_walker_1_walk''' &lt;br /&gt;
&lt;br /&gt;
'''Типы работ:'''&lt;br /&gt;
{| class=&amp;quot;standard&amp;quot;&lt;br /&gt;
 !Название&lt;br /&gt;
 !Приоритет&lt;br /&gt;
 !Описание&lt;br /&gt;
 !Пример&lt;br /&gt;
 |-&lt;br /&gt;
 !SLEEP&lt;br /&gt;
 |10&lt;br /&gt;
 |Вейпоинт, по которому пойдет сталкер спать ночью. &lt;br /&gt;
 |esc_a1_sleep_1_walk&lt;br /&gt;
 |-&lt;br /&gt;
 !WALKER&lt;br /&gt;
 |15&lt;br /&gt;
 |Обычный вейпоинт, по которому сталкер будет ходить. Предполагается, что имеет конечную цель и анимацию.&lt;br /&gt;
 |esc_a1_walker_1_walk&lt;br /&gt;
 |-&lt;br /&gt;
 !ANIMPOINT&lt;br /&gt;
 |15&lt;br /&gt;
 |Конечная точка с кастомной анимацией: НПС сидит, стоит за стойкой, или стоит, прислонившись к стене.&lt;br /&gt;
 |esc_a1_animpoint_1&lt;br /&gt;
 |-&lt;br /&gt;
 !PATROL&lt;br /&gt;
 |20&lt;br /&gt;
 |Вейпоинт, по которому будут ходить сталкер и выполнять функцию патруля. Должен быть зациклен. &lt;br /&gt;
 |esc_a1_patrol_1_walk&lt;br /&gt;
 |-&lt;br /&gt;
 !COLLECTOR&lt;br /&gt;
 |25&lt;br /&gt;
 |Вейпоинт, по которому пойдет сталкер отыгрывать анимацию собирания артефактов. &lt;br /&gt;
 |esc_a1_collector_1_walk&lt;br /&gt;
 |-&lt;br /&gt;
 !GUARD&lt;br /&gt;
 |25&lt;br /&gt;
 |Вейпоинт, по которому будут ходить сталкер и выполнять функцию охраны. Должен быть зациклен. &lt;br /&gt;
 |esc_a1_guard_1_walk&lt;br /&gt;
 |-&lt;br /&gt;
 !SNIPER&lt;br /&gt;
 |30&lt;br /&gt;
 |Вейпоинт, куда пойдет снайпер, если таковой имеется в скваде. Должен иметь две точки в вейпоинте look.&lt;br /&gt;
 |esc_a1_sniper_1_walk&lt;br /&gt;
 |-&lt;br /&gt;
 !CAMPER&lt;br /&gt;
 |45&lt;br /&gt;
 |Вейпоинт, куда пойдет НПС и будет выполнять роль кемпера. Предположительно ничего не будет делать.&lt;br /&gt;
 |esc_a1_camper_1_walk&lt;br /&gt;
 |-&lt;br /&gt;
 !SURGE&lt;br /&gt;
 |50&lt;br /&gt;
 |Вейпоинт, по которому пойдет сталкер в случае выброса. Должно быть разрешено в файле simulation_objects_props.ltx&lt;br /&gt;
 |esc_a1_surge_1_walk&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
Некоторые walk-вейпоинты, могут не иметь look-вейпоинтов. Для некоторых наличие look-вейпоинта обязательно. Для того, чтобы точка walk-вейпоинта работала с точкой look-вейпоинта, необходимо каждому из них задать одинаковый флаг. Некоторые анимации также стоит задавать в look-поинтах.&lt;br /&gt;
&lt;br /&gt;
'''Чтобы сталкеры могли сидеть возле костра необходимо:&lt;br /&gt;
# поставить walk-вейпоинт на место где они сядут и look-вейпоинт куда будут смотреть. &lt;br /&gt;
# установить общий флаг&lt;br /&gt;
# в параметрах '''look'''-вейпоинта (именно look) задать одну из этих анимаций:&lt;br /&gt;
#* sit&lt;br /&gt;
#* sit_knee&lt;br /&gt;
#* sit_ass&lt;br /&gt;
&lt;br /&gt;
Список остальных анимаций см. в файле '''scripts\state_lib.script'''.&lt;br /&gt;
== Симуляция ==&lt;br /&gt;
=== Некоторые условия работы симуляции ===&lt;br /&gt;
В файле '''scripts\sim_board.script''' для каждой группировки заданы прекондишены для перехода в тот или иной смарт.&lt;br /&gt;
*''' &amp;lt;big&amp;gt;Пример:&amp;lt;/big&amp;gt; '''&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
squad = {	stalker		= { prec = function(squad, target) return in_time_interval(6, 19) and simulation_objects.sim_dist_to(squad, target) &amp;lt;= 150 end },&lt;br /&gt;
		bandit		= { prec = function(squad, target) return in_time_interval(6, 19) and simulation_objects.sim_dist_to(squad, target) &amp;lt;= 150 end },&lt;br /&gt;
		dolg		= { prec = function(squad, target) return in_time_interval(6, 19) and simulation_objects.sim_dist_to(squad, target) &amp;lt;= 150 end },&lt;br /&gt;
		freedom		= { prec = function(squad, target) return in_time_interval(6, 19) and simulation_objects.sim_dist_to(squad, target) &amp;lt;= 150 end },&lt;br /&gt;
		killer		= { prec = function(squad, target) return in_time_interval(6, 19) and simulation_objects.sim_dist_to(squad, target) &amp;lt;= 150 end }&lt;br /&gt;
					},&lt;br /&gt;
smart = { 	base		= { prec = function(squad, target) return in_time_interval(18,8) and not xr_conditions.surge_started() and not	travel_manager.check_squad_for_enemies(squad) &lt;br /&gt;
												and (target:name() == &amp;quot;zat_stalker_base_smart&amp;quot; or target:name() == &amp;quot;jup_a6&amp;quot; or target:name() == &amp;quot;pri_a16&amp;quot;) end },&lt;br /&gt;
		surge		= { prec = function() return xr_conditions.surge_started() end },&lt;br /&gt;
		territory	= { prec = function() return in_time_interval(8,18) and not xr_conditions.surge_started() end },&lt;br /&gt;
		resource	= { prec = function(squad, target) return in_time_interval(8,18) and not xr_conditions.surge_started() end } -- and squad:has_detector() },&lt;br /&gt;
		lair	 	= { prec = function() return in_time_interval(6,19) end }&lt;br /&gt;
					},&lt;br /&gt;
actor = { 	prec = function(squad, target) return has_alife_info(&amp;quot;sim_bandit_attack_harder&amp;quot;) and simulation_objects.sim_dist_to(squad, target) &amp;lt;= 150 end }&lt;br /&gt;
			&amp;lt;/code&amp;gt;&lt;br /&gt;
	&lt;br /&gt;
* '''squad''' — набор условий для вражды с другой фракцией.&lt;br /&gt;
**'''simulation_objects.sim_dist_to(squad, target) &amp;lt;= 150''' — проверка расстояния до отряда меньше требуемой.&lt;br /&gt;
* '''smart''' - набор условий для выбора того, или иного смарта.	&lt;br /&gt;
** '''base'''  — набор условий для возвращения на базу-смарт ('''default_base''') &amp;lt;br&amp;gt;&lt;br /&gt;
*** '''return in_time_interval(18,8) '''  — проверка наступило ли время для возвращения. &amp;lt;br&amp;gt;&lt;br /&gt;
*** '''not xr_conditions.surge_started()'''  — проверка отсутствия выброса &amp;lt;br&amp;gt;&lt;br /&gt;
*** '''not travel_manager.check_squad_for_enemies(squad)'''  — проверка отсутвия в отряде врагов. &amp;lt;br&amp;gt;&lt;br /&gt;
*** '''target:name() == &amp;quot;zat_stalker_base_smart&amp;quot; or target:name() == &amp;quot;jup_a6&amp;quot; or target:name() == &amp;quot;pri_a16&amp;quot; '''  — проверка наличия базы. &lt;br /&gt;
** '''surge''' — набор условий для поиска укрытия от выброса.&lt;br /&gt;
** '''territory''' — набор условий для начала поиска обычного смарта '''default'''. &lt;br /&gt;
** '''resource''' — набор условий для начала поиска смарта с аномалиями и добычи артефактов '''(default_resource)'''.&lt;br /&gt;
** '''lair''' — набор условий для поиска мутантом смарта-укрытия '''(default_lair)'''&lt;br /&gt;
* '''actor''' — набор условий для вражды с актором.&lt;br /&gt;
** '''has_alife_info(&amp;quot;sim_bandit_attack_harder&amp;quot;)''' — проверка присутствия инфопоршня&lt;br /&gt;
&lt;br /&gt;
=== Добавление смарта в общую симуляцию ===&lt;br /&gt;
В файле '''misc\travel_manager.ltx''' есть два раздела. &amp;lt;br&amp;gt;&lt;br /&gt;
* '''[locations]'''&lt;br /&gt;
Секция описание того куда направлются сталкеры. Текст добавляется в '''text\rus\st_dialog_manager.xml'''.&amp;lt;br&amp;gt;&lt;br /&gt;
Принцип: '''ваше_название_смарта''' = '''st_stalker_ваше_название_смарта'''. &amp;lt;br&amp;gt;&lt;br /&gt;
Например для смарта '''zat_sim_1''' которому соответствует стринг '''st_stalker_zat_sim_1''' НПС на вопрос &amp;quot;Куда вы направляетесь?&amp;quot;, ответит: ''&amp;quot;Иду в направлении аномалии «Котёл». Там рощица за ней - туда и иду.&amp;quot;''&lt;br /&gt;
* '''[traveler]'''&lt;br /&gt;
В файле уже все сказано: это перечень точек, куда проводники могут отвести за бабосы. Тут указываем наш смарт, затем создаем секцию:&lt;br /&gt;
&amp;lt;code&amp;gt;[ваше_название_смарта]&lt;br /&gt;
level = ваш_уровень&lt;br /&gt;
name = ваше_название_смарта &lt;br /&gt;
condlist = true&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
ваше_название_смарта указываем в файле '''text\rus\st_land_names.xml'''&lt;br /&gt;
'''condlist''' - условия существования данной точки. Можно использовать стандартные проверки условий.&lt;br /&gt;
&lt;br /&gt;
=== Добавление базы в общую симуляцию ===&lt;br /&gt;
#В '''misc\simulation_objects_props.ltx''' назначаем вашему смарту класс '''default_base'''. &lt;br /&gt;
#В файле '''scripts\state_lib.script''' для нужной вам группировки в секции '''base''' дополняем своей проверкой '''target:name() == &amp;quot;ваше_название_смарта&amp;quot;'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
'''Написал и оформил''': Vast&amp;lt;br&amp;gt;&lt;br /&gt;
Большое количество фраз и информации было взято отсюда [http://www.stalker-modostroy.ru/publ/x_ray_sdk/x_ray_sdk_0_7/rabota_so_smart_terrain_v_stalker_zp_sozdanie_i_nastrojka_squad_ov_otrjadov/4-1-0-12], а также из статьей умершего сайта '''stalker-2.com.ua''', поэтому линков никаих нет. &amp;lt;br&amp;gt;&lt;br /&gt;
Любые дополнения, критика, угрозы, все приветствуется.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
[[Category:A-Life]]&lt;/div&gt;</summary>
		<author><name>Vast</name></author>	</entry>

	<entry>
		<id>http://stalkerin.gameru.net/wiki/index.php?title=CoP._%D0%A1%D0%B8%D0%BC%D1%83%D0%BB%D1%8F%D1%86%D0%B8%D1%8F._%D0%9F%D0%B0%D1%80%D0%B0%D0%BC%D0%B5%D1%82%D1%80%D1%8B_%D1%81%D0%BC%D0%B0%D1%80%D1%82-%D1%82%D0%B5%D1%80%D1%80%D0%B5%D0%B9%D0%BD%D0%BE%D0%B2.</id>
		<title>CoP. Симуляция. Параметры смарт-террейнов.</title>
		<link rel="alternate" type="text/html" href="http://stalkerin.gameru.net/wiki/index.php?title=CoP._%D0%A1%D0%B8%D0%BC%D1%83%D0%BB%D1%8F%D1%86%D0%B8%D1%8F._%D0%9F%D0%B0%D1%80%D0%B0%D0%BC%D0%B5%D1%82%D1%80%D1%8B_%D1%81%D0%BC%D0%B0%D1%80%D1%82-%D1%82%D0%B5%D1%80%D1%80%D0%B5%D0%B9%D0%BD%D0%BE%D0%B2."/>
				<updated>2016-07-09T19:11:09Z</updated>
		
		<summary type="html">&lt;p&gt;Vast: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Смарт-террейны ==&lt;br /&gt;
Смарт-террейн - это определенный скриптовый класс в игре, при помощи которого происходит заселение локаций. В смартах организуются работы для НПС, реализуется логика для отдельных эксклюзивных персонажей, происходит респавн НПС и монстров, а также организуются укрытия от выброса для НПС.&lt;br /&gt;
&lt;br /&gt;
===== Типы смарт-террейнов =====&lt;br /&gt;
{| class=&amp;quot;standard&amp;quot;&lt;br /&gt;
 !'''default'''&lt;br /&gt;
 |Обычный тип смарт-террейна.&lt;br /&gt;
 |-&lt;br /&gt;
 !'''default_resource'''&lt;br /&gt;
 |Смарты с наличием аномальных зон, в которых есть работа для НПС по поиску артефактов. &lt;br /&gt;
 |-&lt;br /&gt;
 !'''default_base'''&lt;br /&gt;
 |Главный смарт. Сюда идут все отряды с наступлением ночи.&lt;br /&gt;
 |-&lt;br /&gt;
 !'''default_lair'''&lt;br /&gt;
 |Смарт для монстров. Тем не менее сталкеры сюда тоже могут прийти.&lt;br /&gt;
 |-&lt;br /&gt;
 !'''default_squad'''&lt;br /&gt;
 |Не смарт. Класс, выделяющий в симуляции уникальные отряды и персонажей.&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
===== Параметры смарт-террейнов =====&lt;br /&gt;
* '''Необходимые параметры:'''&lt;br /&gt;
{|class=&amp;quot;standard&amp;quot;&lt;br /&gt;
 !Параметр&lt;br /&gt;
 !Описание&lt;br /&gt;
 !Пример&lt;br /&gt;
 |-&lt;br /&gt;
 !'''squad_id'''&lt;br /&gt;
 |Уникальный ID отряда. Никогда не должен повторятся. Для любой локации начинается с единицы.&lt;br /&gt;
 |squad_id = 1&lt;br /&gt;
 |-&lt;br /&gt;
 !'''max_population'''&lt;br /&gt;
 |Количество отрядов, которые может принять смарт. Определяет для скольких отрядов в симуляции тут найдется работа.&lt;br /&gt;
 |max_population = 1&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
* '''Дополнительные параметры: '''&lt;br /&gt;
{| class=&amp;quot;standard&amp;quot;&lt;br /&gt;
 !Параметр&lt;br /&gt;
 !Описание&lt;br /&gt;
 !Пример&lt;br /&gt;
 |-&lt;br /&gt;
 !respawn_only_smart&lt;br /&gt;
 |Могут ли из смарта удаляться отряды в симуляции.&lt;br /&gt;
 |respawn_only_smart = true&lt;br /&gt;
 |-&lt;br /&gt;
 !respawn_params&lt;br /&gt;
 |Ссылка на секцию респауна (параметры этой секции см. ниже).&lt;br /&gt;
 |respawn_params = respawn@base_smart&lt;br /&gt;
 |-&lt;br /&gt;
 !smart_control&lt;br /&gt;
 |Ссылка на секцию с параметрами контроля смарта.&lt;br /&gt;
 |smart_control = smart_control&lt;br /&gt;
 |-&lt;br /&gt;
 !def_restr&lt;br /&gt;
 |Определяет рестриктор, в пределах которой находится лагерь. &lt;br /&gt;
 |def_restr = pri_a16_sr_noweap&lt;br /&gt;
 |-&lt;br /&gt;
 !safe_restr &lt;br /&gt;
 |Определяет рестриктор, в пределах которой НПС бессмертны.&lt;br /&gt;
 |safe_restr = pri_surge_hide_a16&lt;br /&gt;
 |-&lt;br /&gt;
 !spawn_point &lt;br /&gt;
 |Имя вейпоинта, в котором происходит респаун. Может иметь значение ''self''.&lt;br /&gt;
 |spawn_point = zat_sim_16_spawn_point&lt;br /&gt;
 |-&lt;br /&gt;
 !arrive_dist&lt;br /&gt;
 |Определяет расстояние, на котором отряд считается прибывшим в смарт и регистрируется в нем.&lt;br /&gt;
 |arrive_dist = 100&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
* '''Параметры smart_control: '''&lt;br /&gt;
{| class=&amp;quot;standard&amp;quot;&lt;br /&gt;
 !Параметр&lt;br /&gt;
 !Описание&lt;br /&gt;
 !Пример&lt;br /&gt;
 |-&lt;br /&gt;
 !noweap_zone&lt;br /&gt;
 |Определяет рестриктор, в котором запрещается использовать оружие (в том числе актору).&lt;br /&gt;
 |noweap_zone = zat_a2_sr_noweap&lt;br /&gt;
 |-&lt;br /&gt;
 !ignore_zone&lt;br /&gt;
 |Определяет рестриктор, в котором НПС не реагируют на опасности даже если атакованы.&lt;br /&gt;
 |ignore_zone = zat_a2_sr_light&lt;br /&gt;
 |-&lt;br /&gt;
 !alarm_start_sound&lt;br /&gt;
 |Воспроизводит звук из script_sound_...ltx, если актор атаковал смарт.&lt;br /&gt;
 |alarm_start_sound = zat_a2_base_alarm&lt;br /&gt;
 |-&lt;br /&gt;
 !alarm_stop_sound&lt;br /&gt;
 |Воспроизводит звук из script_sound_...ltx, когда тревога закончилась.&lt;br /&gt;
 |alarm_start_sound = zat_a2_base_relax&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
* '''Параметры respawn_params'''&lt;br /&gt;
Данная секция представляет собой список ссылок на секции сквадов, которые будут спауниться в этом смарт-террейне.&amp;lt;br&amp;gt;&lt;br /&gt;
Пример секции: &lt;br /&gt;
&amp;lt;blockquote&amp;gt;'''&lt;br /&gt;
'''[respawn@base_smart]&amp;lt;br&amp;gt;&lt;br /&gt;
spawn_bandit@novice&amp;lt;br&amp;gt;&lt;br /&gt;
spawn_bandit@advanced&amp;lt;br&amp;gt;&lt;br /&gt;
spawn_bandit@master&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
: Каждая секция сквада имеет следующие параметры:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard&amp;quot;&lt;br /&gt;
 !Параметр&lt;br /&gt;
 !Описание&lt;br /&gt;
 !Пример&lt;br /&gt;
 |-&lt;br /&gt;
 !spawn_squads&lt;br /&gt;
 |Список имен сквадов из squad_descr_...ltx. Может иметь логические проверки условий.&lt;br /&gt;
 |spawn_squads = bandit_sim_squad_veteran, bandit_sim_squad_advanced&lt;br /&gt;
 |-&lt;br /&gt;
 !spawn_num&lt;br /&gt;
 |Количество отрядов, которые будут респаунится. Может иметь логические проверки условий. &lt;br /&gt;
 |spawn_num = {+infoportion} 2, 0&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Параметры секции [exclusive]'''&lt;br /&gt;
Секция позволяет задавать логику для уникальных персонажей, которые находятся в данном смарте. &amp;lt;br&amp;gt;Пример использования:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
'''[exclusive]'''&amp;lt;br&amp;gt;&lt;br /&gt;
zat_a2_stalker_barmen = zaton\zat_a2_stalker_barmen.ltx&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Параметры:&lt;br /&gt;
{| class=&amp;quot;standard&amp;quot;&lt;br /&gt;
 !zat_a2_stalker_barmen&lt;br /&gt;
 |Сharacter ID НПС&lt;br /&gt;
 |-&lt;br /&gt;
 !zaton\zat_a2_stalker_barmen.ltx&lt;br /&gt;
 |путь к файлу с логикой.&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
== Работа в смарт-террейнах ==&lt;br /&gt;
Под работой стоит понимать пути по которым ходят, стоят и отыгрывают анимации НПС при попадании в смарт. Каждый тип работы должен начинатся с единицы. Предположительно максимальное число каждого типа работ - '''20'''. Каждый тип работы имеет свой приоритет. Чем меньше число тем больше вероятность, что НПС пойдет на эту работу. &lt;br /&gt;
&lt;br /&gt;
Имя каждой работы состоит из:&amp;lt;br&amp;gt;&lt;br /&gt;
# Имени смарта ''(esc_a1)''&lt;br /&gt;
# Типа работы ''(walker)''&lt;br /&gt;
# Номера работы ''(1,2,3..20)''&lt;br /&gt;
# Дополнительные параметры для вейпоинтов ''(walk,look)''&lt;br /&gt;
Пример:&amp;lt;br&amp;gt;&lt;br /&gt;
'''esc_a1_walker_1_walk''' &lt;br /&gt;
&lt;br /&gt;
'''Типы работ:'''&lt;br /&gt;
{| class=&amp;quot;standard&amp;quot;&lt;br /&gt;
 !Название&lt;br /&gt;
 !Приоритет&lt;br /&gt;
 !Описание&lt;br /&gt;
 !Пример&lt;br /&gt;
 |-&lt;br /&gt;
 !SLEEP&lt;br /&gt;
 |10&lt;br /&gt;
 |Вейпоинт, по которому пойдет сталкер спать ночью. &lt;br /&gt;
 |esc_a1_sleep_1_walk&lt;br /&gt;
 |-&lt;br /&gt;
 !WALKER&lt;br /&gt;
 |15&lt;br /&gt;
 |Обычный вейпоинт, по которому сталкер будет ходить. Предполагается, что имеет конечную цель и анимацию.&lt;br /&gt;
 |esc_a1_walker_1_walk&lt;br /&gt;
 |-&lt;br /&gt;
 !ANIMPOINT&lt;br /&gt;
 |15&lt;br /&gt;
 |Конечная точка с кастомной анимацией: НПС сидит, стоит за стойкой, или стоит, прислонившись к стене.&lt;br /&gt;
 |esc_a1_animpoint_1&lt;br /&gt;
 |-&lt;br /&gt;
 !PATROL&lt;br /&gt;
 |20&lt;br /&gt;
 |Вейпоинт, по которому будут ходить сталкер и выполнять функцию патруля. Должен быть зациклен. &lt;br /&gt;
 |esc_a1_patrol_1_walk&lt;br /&gt;
 |-&lt;br /&gt;
 !COLLECTOR&lt;br /&gt;
 |25&lt;br /&gt;
 |Вейпоинт, по которому пойдет сталкер отыгрывать анимацию собирания артефактов. &lt;br /&gt;
 |esc_a1_collector_1_walk&lt;br /&gt;
 |-&lt;br /&gt;
 !GUARD&lt;br /&gt;
 |25&lt;br /&gt;
 |Вейпоинт, по которому будут ходить сталкер и выполнять функцию охраны. Должен быть зациклен. &lt;br /&gt;
 |esc_a1_guard_1_walk&lt;br /&gt;
 |-&lt;br /&gt;
 !SNIPER&lt;br /&gt;
 |30&lt;br /&gt;
 |Вейпоинт, куда пойдет снайпер, если таковой имеется в скваде. Должен иметь две точки в вейпоинте look.&lt;br /&gt;
 |esc_a1_sniper_1_walk&lt;br /&gt;
 |-&lt;br /&gt;
 !CAMPER&lt;br /&gt;
 |45&lt;br /&gt;
 |Вейпоинт, куда пойдет НПС и будет выполнять роль кемпера. Предположительно ничего не будет делать.&lt;br /&gt;
 |esc_a1_camper_1_walk&lt;br /&gt;
 |-&lt;br /&gt;
 !SURGE&lt;br /&gt;
 |50&lt;br /&gt;
 |Вейпоинт, по которому пойдет сталкер в случае выброса. Должно быть разрешено в файле simulation_objects_props.ltx&lt;br /&gt;
 |esc_a1_surge_1_walk&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
Некоторые walk-вейпоинты, могут не иметь look-вейпоинтов. Для некоторых наличие look-вейпоинта обязательно. Для того, чтобы точка walk-вейпоинта работала с точкой look-вейпоинта, необходимо каждому из них задать одинаковый флаг. Некоторые анимации также стоит задавать в look-поинтах.&lt;br /&gt;
&lt;br /&gt;
'''Чтобы сталкеры могли сидеть возле костра необходимо:&lt;br /&gt;
# поставить walk-вейпоинт на место где они сядут и look-вейпоинт куда будут смотреть. &lt;br /&gt;
# установить общий флаг&lt;br /&gt;
# в параметрах '''look'''-вейпоинта (именно look) задать одну из этих анимаций:&lt;br /&gt;
#* sit&lt;br /&gt;
#* sit_knee&lt;br /&gt;
#* sit_ass&lt;br /&gt;
&lt;br /&gt;
Список остальных анимаций см. в файле '''scripts\state_lib.script'''.&lt;br /&gt;
== Симуляция ==&lt;br /&gt;
=== Некоторые условия работы симуляции ===&lt;br /&gt;
В файле '''scripts\sim_board.script''' для каждой группировки заданы прекондишены для перехода в тот или иной смарт.&lt;br /&gt;
*''' &amp;lt;big&amp;gt;Пример:&amp;lt;/big&amp;gt; '''&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
squad = {	stalker		= { prec = function(squad, target) return in_time_interval(6, 19) and simulation_objects.sim_dist_to(squad, target) &amp;lt;= 150 end },&lt;br /&gt;
		bandit		= { prec = function(squad, target) return in_time_interval(6, 19) and simulation_objects.sim_dist_to(squad, target) &amp;lt;= 150 end },&lt;br /&gt;
		dolg		= { prec = function(squad, target) return in_time_interval(6, 19) and simulation_objects.sim_dist_to(squad, target) &amp;lt;= 150 end },&lt;br /&gt;
		freedom		= { prec = function(squad, target) return in_time_interval(6, 19) and simulation_objects.sim_dist_to(squad, target) &amp;lt;= 150 end },&lt;br /&gt;
		killer		= { prec = function(squad, target) return in_time_interval(6, 19) and simulation_objects.sim_dist_to(squad, target) &amp;lt;= 150 end }&lt;br /&gt;
					},&lt;br /&gt;
smart = { 	base		= { prec = function(squad, target) return in_time_interval(18,8) and not xr_conditions.surge_started() and not	travel_manager.check_squad_for_enemies(squad) &lt;br /&gt;
												and (target:name() == &amp;quot;zat_stalker_base_smart&amp;quot; or target:name() == &amp;quot;jup_a6&amp;quot; or target:name() == &amp;quot;pri_a16&amp;quot;) end },&lt;br /&gt;
		surge		= { prec = function() return xr_conditions.surge_started() end },&lt;br /&gt;
		territory	= { prec = function() return in_time_interval(8,18) and not xr_conditions.surge_started() end },&lt;br /&gt;
		resource	= { prec = function(squad, target) return in_time_interval(8,18) and not xr_conditions.surge_started() end } -- and squad:has_detector() },&lt;br /&gt;
		lair	 	= { prec = function() return in_time_interval(6,19) end }&lt;br /&gt;
					},&lt;br /&gt;
actor = { 	prec = function(squad, target) return has_alife_info(&amp;quot;sim_bandit_attack_harder&amp;quot;) and simulation_objects.sim_dist_to(squad, target) &amp;lt;= 150 end }&lt;br /&gt;
			&amp;lt;/code&amp;gt;&lt;br /&gt;
	&lt;br /&gt;
* '''squad''' — набор условий для вражды с другой фракцией.&lt;br /&gt;
**'''simulation_objects.sim_dist_to(squad, target) &amp;lt;= 150''' — проверка расстояния до отряда меньше требуемой.&lt;br /&gt;
* '''smart''' - набор условий для выбора того, или иного смарта.	&lt;br /&gt;
** '''base'''  — набор условий для возвращения на базу-смарт ('''default_base''') &amp;lt;br&amp;gt;&lt;br /&gt;
*** '''return in_time_interval(18,8) '''  — проверка наступило ли время для возвращения. &amp;lt;br&amp;gt;&lt;br /&gt;
*** '''not xr_conditions.surge_started()'''  — проверка отсутствия выброса &amp;lt;br&amp;gt;&lt;br /&gt;
*** '''not travel_manager.check_squad_for_enemies(squad)'''  — проверка отсутвия в отряде врагов. &amp;lt;br&amp;gt;&lt;br /&gt;
*** '''target:name() == &amp;quot;zat_stalker_base_smart&amp;quot; or target:name() == &amp;quot;jup_a6&amp;quot; or target:name() == &amp;quot;pri_a16&amp;quot; '''  — проверка наличия базы. &lt;br /&gt;
** '''surge''' — набор условий для поиска укрытия от выброса.&lt;br /&gt;
** '''territory''' — набор условий для начала поиска обычного смарта '''default'''. &lt;br /&gt;
** '''resource''' — набор условий для начала поиска смарта с аномалиями и добычи артефактов '''(default_resource)'''.&lt;br /&gt;
** '''lair''' — набор условий для поиска мутантом смарта-укрытия '''(default_lair)'''&lt;br /&gt;
* '''actor''' — набор условий для вражды с актором.&lt;br /&gt;
** '''has_alife_info(&amp;quot;sim_bandit_attack_harder&amp;quot;)''' — проверка присутствия инфопоршня&lt;br /&gt;
&lt;br /&gt;
=== Добавление смарта в общую симуляцию ===&lt;br /&gt;
В файле '''misc\travel_manager.ltx''' есть два раздела. &amp;lt;br&amp;gt;&lt;br /&gt;
* '''[locations]'''&lt;br /&gt;
Секция описание того куда направлются сталкеры. Текст добавляется в '''text\rus\st_dialog_manager.xml'''.&amp;lt;br&amp;gt;&lt;br /&gt;
Принцип: '''ваше_название_смарта''' = '''st_stalker_ваше_название_смарта'''. &amp;lt;br&amp;gt;&lt;br /&gt;
Например для смарта '''zat_sim_1''' которому соответствует стринг '''st_stalker_zat_sim_1''' НПС на вопрос &amp;quot;Куда вы направляетесь?&amp;quot;, ответит: ''&amp;quot;Иду в направлении аномалии «Котёл». Там рощица за ней - туда и иду.&amp;quot;''&lt;br /&gt;
* '''[traveler]'''&lt;br /&gt;
В файле уже все сказано: это перечень точек, куда проводники могут отвести за бабосы. Тут указываем наш смарт, затем создаем секцию:&lt;br /&gt;
&amp;lt;code&amp;gt;[ваше_название_смарта]&lt;br /&gt;
level = ваш_уровень&lt;br /&gt;
name = ваше_название_смарта &lt;br /&gt;
condlist = true&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
ваше_название_смарта указываем в файле '''text\rus\st_land_names.xml'''&lt;br /&gt;
'''condlist''' - условия существования данной точки. Можно использовать стандартные проверки условий.&lt;br /&gt;
&lt;br /&gt;
=== Добавление базы в общую симуляцию ===&lt;br /&gt;
#В '''misc\simulation_objects_props.ltx''' назначаем вашему смарту класс '''default_base'''. &lt;br /&gt;
#В файле '''scripts\state_lib.script''' для нужной вам группировки в секции '''base''' дополняем своей проверкой '''target:name() == &amp;quot;ваше_название_смарта&amp;quot;'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
'''Написал и оформил''': Vast&amp;lt;br&amp;gt;&lt;br /&gt;
Большое количество фраз и информации было взято отсюда [http://www.stalker-modostroy.ru/publ/x_ray_sdk/x_ray_sdk_0_7/rabota_so_smart_terrain_v_stalker_zp_sozdanie_i_nastrojka_squad_ov_otrjadov/4-1-0-12], а также из статьей умершего сайта '''stalker-2.com.ua''', поэтому линков никаих нет. &amp;lt;br&amp;gt;&lt;br /&gt;
Любые дополнения, критика, угрозы, все приветствуется.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
[[Category:A-life]]&lt;/div&gt;</summary>
		<author><name>Vast</name></author>	</entry>

	<entry>
		<id>http://stalkerin.gameru.net/wiki/index.php?title=CoP._%D0%A1%D0%B8%D0%BC%D1%83%D0%BB%D1%8F%D1%86%D0%B8%D1%8F._%D0%9F%D0%B0%D1%80%D0%B0%D0%BC%D0%B5%D1%82%D1%80%D1%8B_%D1%81%D0%BC%D0%B0%D1%80%D1%82-%D1%82%D0%B5%D1%80%D1%80%D0%B5%D0%B9%D0%BD%D0%BE%D0%B2.</id>
		<title>CoP. Симуляция. Параметры смарт-террейнов.</title>
		<link rel="alternate" type="text/html" href="http://stalkerin.gameru.net/wiki/index.php?title=CoP._%D0%A1%D0%B8%D0%BC%D1%83%D0%BB%D1%8F%D1%86%D0%B8%D1%8F._%D0%9F%D0%B0%D1%80%D0%B0%D0%BC%D0%B5%D1%82%D1%80%D1%8B_%D1%81%D0%BC%D0%B0%D1%80%D1%82-%D1%82%D0%B5%D1%80%D1%80%D0%B5%D0%B9%D0%BD%D0%BE%D0%B2."/>
				<updated>2016-07-09T19:08:22Z</updated>
		
		<summary type="html">&lt;p&gt;Vast: Новая страница: « == Смарт-террейны == Смарт-террейн - это определенный скриптовый класс в игре, при помощи к…»&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Смарт-террейны ==&lt;br /&gt;
Смарт-террейн - это определенный скриптовый класс в игре, при помощи которого происходит заселение локаций. В смартах организуются работы для НПС, реализуется логика для отдельных эксклюзивных персонажей, происходит респавн НПС и монстров, а также организуются укрытия от выброса для НПС.&lt;br /&gt;
&lt;br /&gt;
===== Типы смарт-террейнов =====&lt;br /&gt;
{| class=&amp;quot;standard&amp;quot;&lt;br /&gt;
 !'''default'''&lt;br /&gt;
 |Обычный тип смарт-террейна.&lt;br /&gt;
 |-&lt;br /&gt;
 !'''default_resource'''&lt;br /&gt;
 |Смарты с наличием аномальных зон, в которых есть работа для НПС по поиску артефактов. &lt;br /&gt;
 |-&lt;br /&gt;
 !'''default_base'''&lt;br /&gt;
 |Главный смарт. Сюда идут все отряды с наступлением ночи.&lt;br /&gt;
 |-&lt;br /&gt;
 !'''default_lair'''&lt;br /&gt;
 |Смарт для монстров. Тем не менее сталкеры сюда тоже могут прийти.&lt;br /&gt;
 |-&lt;br /&gt;
 !'''default_squad'''&lt;br /&gt;
 |Не смарт. Класс, выделяющий в симуляции уникальные отряды и персонажей.&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
===== Параметры смарт-террейнов =====&lt;br /&gt;
* '''Необходимые параметры:'''&lt;br /&gt;
{|class=&amp;quot;standard&amp;quot;&lt;br /&gt;
 !Параметр&lt;br /&gt;
 !Описание&lt;br /&gt;
 !Пример&lt;br /&gt;
 |-&lt;br /&gt;
 !'''squad_id'''&lt;br /&gt;
 |Уникальный ID отряда. Никогда не должен повторятся. Для любой локации начинается с единицы.&lt;br /&gt;
 |squad_id = 1&lt;br /&gt;
 |-&lt;br /&gt;
 !'''max_population'''&lt;br /&gt;
 |Количество отрядов, которые может принять смарт. Определяет для скольких отрядов в симуляции тут найдется работа.&lt;br /&gt;
 |max_population = 1&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
* '''Дополнительные параметры: '''&lt;br /&gt;
{| class=&amp;quot;standard&amp;quot;&lt;br /&gt;
 !Параметр&lt;br /&gt;
 !Описание&lt;br /&gt;
 !Пример&lt;br /&gt;
 |-&lt;br /&gt;
 !respawn_only_smart&lt;br /&gt;
 |Могут ли из смарта удаляться отряды в симуляции.&lt;br /&gt;
 |respawn_only_smart = true&lt;br /&gt;
 |-&lt;br /&gt;
 !respawn_params&lt;br /&gt;
 |Ссылка на секцию респауна (параметры этой секции см. ниже).&lt;br /&gt;
 |respawn_params = respawn@base_smart&lt;br /&gt;
 |-&lt;br /&gt;
 !smart_control&lt;br /&gt;
 |Ссылка на секцию с параметрами контроля смарта.&lt;br /&gt;
 |smart_control = smart_control&lt;br /&gt;
 |-&lt;br /&gt;
 !def_restr&lt;br /&gt;
 |Определяет рестриктор, в пределах которой находится лагерь. &lt;br /&gt;
 |def_restr = pri_a16_sr_noweap&lt;br /&gt;
 |-&lt;br /&gt;
 !safe_restr &lt;br /&gt;
 |Определяет рестриктор, в пределах которой НПС бессмертны.&lt;br /&gt;
 |safe_restr = pri_surge_hide_a16&lt;br /&gt;
 |-&lt;br /&gt;
 !spawn_point &lt;br /&gt;
 |Имя вейпоинта, в котором происходит респаун. Может иметь значение ''self''.&lt;br /&gt;
 |spawn_point = zat_sim_16_spawn_point&lt;br /&gt;
 |-&lt;br /&gt;
 !arrive_dist&lt;br /&gt;
 |Определяет расстояние, на котором отряд считается прибывшим в смарт и регистрируется в нем.&lt;br /&gt;
 |arrive_dist = 100&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
* '''Параметры smart_control: '''&lt;br /&gt;
{| class=&amp;quot;standard&amp;quot;&lt;br /&gt;
 !Параметр&lt;br /&gt;
 !Описание&lt;br /&gt;
 !Пример&lt;br /&gt;
 |-&lt;br /&gt;
 !noweap_zone&lt;br /&gt;
 |Определяет рестриктор, в котором запрещается использовать оружие (в том числе актору).&lt;br /&gt;
 |noweap_zone = zat_a2_sr_noweap&lt;br /&gt;
 |-&lt;br /&gt;
 !ignore_zone&lt;br /&gt;
 |Определяет рестриктор, в котором НПС не реагируют на опасности даже если атакованы.&lt;br /&gt;
 |ignore_zone = zat_a2_sr_light&lt;br /&gt;
 |-&lt;br /&gt;
 !alarm_start_sound&lt;br /&gt;
 |Воспроизводит звук из script_sound_...ltx, если актор атаковал смарт.&lt;br /&gt;
 |alarm_start_sound = zat_a2_base_alarm&lt;br /&gt;
 |-&lt;br /&gt;
 !alarm_stop_sound&lt;br /&gt;
 |Воспроизводит звук из script_sound_...ltx, когда тревога закончилась.&lt;br /&gt;
 |alarm_start_sound = zat_a2_base_relax&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
* '''Параметры respawn_params'''&lt;br /&gt;
Данная секция представляет собой список ссылок на секции сквадов, которые будут спауниться в этом смарт-террейне.&amp;lt;br&amp;gt;&lt;br /&gt;
Пример секции: &lt;br /&gt;
&amp;lt;blockquote&amp;gt;'''&lt;br /&gt;
'''[respawn@base_smart]&amp;lt;br&amp;gt;&lt;br /&gt;
spawn_bandit@novice&amp;lt;br&amp;gt;&lt;br /&gt;
spawn_bandit@advanced&amp;lt;br&amp;gt;&lt;br /&gt;
spawn_bandit@master&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
: Каждая секция сквада имеет следующие параметры:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard&amp;quot;&lt;br /&gt;
 !Параметр&lt;br /&gt;
 !Описание&lt;br /&gt;
 !Пример&lt;br /&gt;
 |-&lt;br /&gt;
 !spawn_squads&lt;br /&gt;
 |Список имен сквадов из squad_descr_...ltx. Может иметь логические проверки условий.&lt;br /&gt;
 |spawn_squads = bandit_sim_squad_veteran, bandit_sim_squad_advanced&lt;br /&gt;
 |-&lt;br /&gt;
 !spawn_num&lt;br /&gt;
 |Количество отрядов, которые будут респаунится. Может иметь логические проверки условий. &lt;br /&gt;
 |spawn_num = {+infoportion} 2, 0&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Параметры секции [exclusive]'''&lt;br /&gt;
Секция позволяет задавать логику для уникальных персонажей, которые находятся в данном смарте. &amp;lt;br&amp;gt;Пример использования:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
'''[exclusive]'''&amp;lt;br&amp;gt;&lt;br /&gt;
zat_a2_stalker_barmen = zaton\zat_a2_stalker_barmen.ltx&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Параметры:&lt;br /&gt;
{| class=&amp;quot;standard&amp;quot;&lt;br /&gt;
 !zat_a2_stalker_barmen&lt;br /&gt;
 |Сharacter ID НПС&lt;br /&gt;
 |-&lt;br /&gt;
 !zaton\zat_a2_stalker_barmen.ltx&lt;br /&gt;
 |путь к файлу с логикой.&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
== Работа в смарт-террейнах ==&lt;br /&gt;
Под работой стоит понимать пути по которым ходят, стоят и отыгрывают анимации НПС при попадании в смарт. Каждый тип работы должен начинатся с единицы. Предположительно максимальное число каждого типа работ - '''20'''. Каждый тип работы имеет свой приоритет. Чем меньше число тем больше вероятность, что НПС пойдет на эту работу. &lt;br /&gt;
&lt;br /&gt;
Имя каждой работы состоит из:&amp;lt;br&amp;gt;&lt;br /&gt;
# Имени смарта ''(esc_a1)''&lt;br /&gt;
# Типа работы ''(walker)''&lt;br /&gt;
# Номера работы ''(1,2,3..20)''&lt;br /&gt;
# Дополнительные параметры для вейпоинтов ''(walk,look)''&lt;br /&gt;
Пример:&amp;lt;br&amp;gt;&lt;br /&gt;
'''esc_a1_walker_1_walk''' &lt;br /&gt;
&lt;br /&gt;
'''Типы работ:'''&lt;br /&gt;
{| class=&amp;quot;standard&amp;quot;&lt;br /&gt;
 !Название&lt;br /&gt;
 !Приоритет&lt;br /&gt;
 !Описание&lt;br /&gt;
 !Пример&lt;br /&gt;
 |-&lt;br /&gt;
 !SLEEP&lt;br /&gt;
 |10&lt;br /&gt;
 |Вейпоинт, по которому пойдет сталкер спать ночью. &lt;br /&gt;
 |esc_a1_sleep_1_walk&lt;br /&gt;
 |-&lt;br /&gt;
 !WALKER&lt;br /&gt;
 |15&lt;br /&gt;
 |Обычный вейпоинт, по которому сталкер будет ходить. Предполагается, что имеет конечную цель и анимацию.&lt;br /&gt;
 |esc_a1_walker_1_walk&lt;br /&gt;
 |-&lt;br /&gt;
 !ANIMPOINT&lt;br /&gt;
 |15&lt;br /&gt;
 |Конечная точка с кастомной анимацией: НПС сидит, стоит за стойкой, или стоит, прислонившись к стене.&lt;br /&gt;
 |esc_a1_animpoint_1&lt;br /&gt;
 |-&lt;br /&gt;
 !PATROL&lt;br /&gt;
 |20&lt;br /&gt;
 |Вейпоинт, по которому будут ходить сталкер и выполнять функцию патруля. Должен быть зациклен. &lt;br /&gt;
 |esc_a1_patrol_1_walk&lt;br /&gt;
 |-&lt;br /&gt;
 !COLLECTOR&lt;br /&gt;
 |25&lt;br /&gt;
 |Вейпоинт, по которому пойдет сталкер отыгрывать анимацию собирания артефактов. &lt;br /&gt;
 |esc_a1_collector_1_walk&lt;br /&gt;
 |-&lt;br /&gt;
 !GUARD&lt;br /&gt;
 |25&lt;br /&gt;
 |Вейпоинт, по которому будут ходить сталкер и выполнять функцию охраны. Должен быть зациклен. &lt;br /&gt;
 |esc_a1_guard_1_walk&lt;br /&gt;
 |-&lt;br /&gt;
 !SNIPER&lt;br /&gt;
 |30&lt;br /&gt;
 |Вейпоинт, куда пойдет снайпер, если таковой имеется в скваде. Должен иметь две точки в вейпоинте look.&lt;br /&gt;
 |esc_a1_sniper_1_walk&lt;br /&gt;
 |-&lt;br /&gt;
 !CAMPER&lt;br /&gt;
 |45&lt;br /&gt;
 |Вейпоинт, куда пойдет НПС и будет выполнять роль кемпера. Предположительно ничего не будет делать.&lt;br /&gt;
 |esc_a1_camper_1_walk&lt;br /&gt;
 |-&lt;br /&gt;
 !SURGE&lt;br /&gt;
 |50&lt;br /&gt;
 |Вейпоинт, по которому пойдет сталкер в случае выброса. Должно быть разрешено в файле simulation_objects_props.ltx&lt;br /&gt;
 |esc_a1_surge_1_walk&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
Некоторые walk-вейпоинты, могут не иметь look-вейпоинтов. Для некоторых наличие look-вейпоинта обязательно. Для того, чтобы точка walk-вейпоинта работала с точкой look-вейпоинта, необходимо каждому из них задать одинаковый флаг. Некоторые анимации также стоит задавать в look-поинтах.&lt;br /&gt;
&lt;br /&gt;
'''Чтобы сталкеры могли сидеть возле костра необходимо:&lt;br /&gt;
# поставить walk-вейпоинт на место где они сядут и look-вейпоинт куда будут смотреть. &lt;br /&gt;
# установить общий флаг&lt;br /&gt;
# в параметрах '''look'''-вейпоинта (именно look) задать одну из этих анимаций:&lt;br /&gt;
#* sit&lt;br /&gt;
#* sit_knee&lt;br /&gt;
#* sit_ass&lt;br /&gt;
&lt;br /&gt;
Список остальных анимаций см. в файле '''scripts\state_lib.script'''.&lt;br /&gt;
== Симуляция ==&lt;br /&gt;
=== Некоторые условия работы симуляции ===&lt;br /&gt;
В файле '''scripts\sim_board.script''' для каждой группировки заданы прекондишены для перехода в тот или иной смарт.&lt;br /&gt;
*''' &amp;lt;big&amp;gt;Пример:&amp;lt;/big&amp;gt; '''&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
squad = {	stalker		= { prec = function(squad, target) return in_time_interval(6, 19) and simulation_objects.sim_dist_to(squad, target) &amp;lt;= 150 end },&lt;br /&gt;
		bandit		= { prec = function(squad, target) return in_time_interval(6, 19) and simulation_objects.sim_dist_to(squad, target) &amp;lt;= 150 end },&lt;br /&gt;
		dolg		= { prec = function(squad, target) return in_time_interval(6, 19) and simulation_objects.sim_dist_to(squad, target) &amp;lt;= 150 end },&lt;br /&gt;
		freedom		= { prec = function(squad, target) return in_time_interval(6, 19) and simulation_objects.sim_dist_to(squad, target) &amp;lt;= 150 end },&lt;br /&gt;
		killer		= { prec = function(squad, target) return in_time_interval(6, 19) and simulation_objects.sim_dist_to(squad, target) &amp;lt;= 150 end }&lt;br /&gt;
					},&lt;br /&gt;
smart = { 	base		= { prec = function(squad, target) return in_time_interval(18,8) and not xr_conditions.surge_started() and not	travel_manager.check_squad_for_enemies(squad) &lt;br /&gt;
												and (target:name() == &amp;quot;zat_stalker_base_smart&amp;quot; or target:name() == &amp;quot;jup_a6&amp;quot; or target:name() == &amp;quot;pri_a16&amp;quot;) end },&lt;br /&gt;
		surge		= { prec = function() return xr_conditions.surge_started() end },&lt;br /&gt;
		territory	= { prec = function() return in_time_interval(8,18) and not xr_conditions.surge_started() end },&lt;br /&gt;
		resource	= { prec = function(squad, target) return in_time_interval(8,18) and not xr_conditions.surge_started() end } -- and squad:has_detector() },&lt;br /&gt;
		lair	 	= { prec = function() return in_time_interval(6,19) end }&lt;br /&gt;
					},&lt;br /&gt;
actor = { 	prec = function(squad, target) return has_alife_info(&amp;quot;sim_bandit_attack_harder&amp;quot;) and simulation_objects.sim_dist_to(squad, target) &amp;lt;= 150 end }&lt;br /&gt;
			&amp;lt;/code&amp;gt;&lt;br /&gt;
	&lt;br /&gt;
* '''squad''' — набор условий для вражды с другой фракцией.&lt;br /&gt;
**'''simulation_objects.sim_dist_to(squad, target) &amp;lt;= 150''' — проверка расстояния до отряда меньше требуемой.&lt;br /&gt;
* '''smart''' - набор условий для выбора того, или иного смарта.	&lt;br /&gt;
** '''base'''  — набор условий для возвращения на базу-смарт ('''default_base''') &amp;lt;br&amp;gt;&lt;br /&gt;
*** '''return in_time_interval(18,8) '''  — проверка наступило ли время для возвращения. &amp;lt;br&amp;gt;&lt;br /&gt;
*** '''not xr_conditions.surge_started()'''  — проверка отсутствия выброса &amp;lt;br&amp;gt;&lt;br /&gt;
*** '''not travel_manager.check_squad_for_enemies(squad)'''  — проверка отсутвия в отряде врагов. &amp;lt;br&amp;gt;&lt;br /&gt;
*** '''target:name() == &amp;quot;zat_stalker_base_smart&amp;quot; or target:name() == &amp;quot;jup_a6&amp;quot; or target:name() == &amp;quot;pri_a16&amp;quot; '''  — проверка наличия базы. &lt;br /&gt;
** '''surge''' — набор условий для поиска укрытия от выброса.&lt;br /&gt;
** '''territory''' — набор условий для начала поиска обычного смарта '''default'''. &lt;br /&gt;
** '''resource''' — набор условий для начала поиска смарта с аномалиями и добычи артефактов '''(default_resource)'''.&lt;br /&gt;
** '''lair''' — набор условий для поиска мутантом смарта-укрытия '''(default_lair)'''&lt;br /&gt;
* '''actor''' — набор условий для вражды с актором.&lt;br /&gt;
** '''has_alife_info(&amp;quot;sim_bandit_attack_harder&amp;quot;)''' — проверка присутствия инфопоршня&lt;br /&gt;
&lt;br /&gt;
=== Добавление смарта в общую симуляцию ===&lt;br /&gt;
В файле '''misc\travel_manager.ltx''' есть два раздела. &amp;lt;br&amp;gt;&lt;br /&gt;
* '''[locations]'''&lt;br /&gt;
Секция описание того куда направлются сталкеры. Текст добавляется в '''text\rus\st_dialog_manager.xml'''.&amp;lt;br&amp;gt;&lt;br /&gt;
Принцип: '''ваше_название_смарта''' = '''st_stalker_ваше_название_смарта'''. &amp;lt;br&amp;gt;&lt;br /&gt;
Например для смарта '''zat_sim_1''' которому соответствует стринг '''st_stalker_zat_sim_1''' НПС на вопрос &amp;quot;Куда вы направляетесь?&amp;quot;, ответит: ''&amp;quot;Иду в направлении аномалии «Котёл». Там рощица за ней - туда и иду.&amp;quot;''&lt;br /&gt;
* '''[traveler]'''&lt;br /&gt;
В файле уже все сказано: это перечень точек, куда проводники могут отвести за бабосы. Тут указываем наш смарт, затем создаем секцию:&lt;br /&gt;
&amp;lt;code&amp;gt;[ваше_название_смарта]&lt;br /&gt;
level = ваш_уровень&lt;br /&gt;
name = ваше_название_смарта &lt;br /&gt;
condlist = true&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
ваше_название_смарта указываем в файле '''text\rus\st_land_names.xml'''&lt;br /&gt;
'''condlist''' - условия существования данной точки. Можно использовать стандартные проверки условий.&lt;br /&gt;
&lt;br /&gt;
=== Добавление базы в общую симуляцию ===&lt;br /&gt;
#В '''misc\simulation_objects_props.ltx''' назначаем вашему смарту класс '''default_base'''. &lt;br /&gt;
#В файле '''scripts\state_lib.script''' для нужной вам группировки в секции '''base''' дополняем своей проверкой '''target:name() == &amp;quot;ваше_название_смарта&amp;quot;'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
'''Написал и оформил''': Vast&amp;lt;br&amp;gt;&lt;br /&gt;
Большое количество фраз и информации было взято отсюда [http://www.stalker-modostroy.ru/publ/x_ray_sdk/x_ray_sdk_0_7/rabota_so_smart_terrain_v_stalker_zp_sozdanie_i_nastrojka_squad_ov_otrjadov/4-1-0-12], а также из статьей умершего сайта '''stalker-2.com.ua''', поэтому линков никаих нет. &amp;lt;br&amp;gt;&lt;br /&gt;
Любые дополнения, критика, угрозы, все приветствуется.&lt;/div&gt;</summary>
		<author><name>Vast</name></author>	</entry>

	<entry>
		<id>http://stalkerin.gameru.net/wiki/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:Smart_sdk_tutorial_1.png</id>
		<title>Файл:Smart sdk tutorial 1.png</title>
		<link rel="alternate" type="text/html" href="http://stalkerin.gameru.net/wiki/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:Smart_sdk_tutorial_1.png"/>
				<updated>2016-07-09T17:27:27Z</updated>
		
		<summary type="html">&lt;p&gt;Vast: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Vast</name></author>	</entry>

	</feed>