что такое смарты в сталкере

SoC. Смартеррейны и гулаги

Материал из S.T.A.L.K.E.R. Inside Wiki

В последнее время люди постоянно меня спрашивали как создать скрипт гулага для смартеррейнов. Чтобы постоянно не отвечать на каждое отдельное письмо, я решил написать небольшой тутор. Прежде чем начать, хотелось бы предупредить, что не являюсь экспертом в подобного рода вещах и некоторые моменты мне всё еще не ясны до конца, так что вероятно я не смогу объяснить всё правильно. Также я буду использовать ST как абревиатуру смартеррейна. Этот тутор посвящен НПС в ST, но он также сгодится и для мутантов. Предполагаю что вы знакомы с:

— луа программированием
— редактированием all.spawn
— работа с вейпоинтами(патрульными путями)
— утилитами аи

В первую очередить подумайте о своём ST, где бы его заспавнить, сколько нпс/мутантов будут в нем выполнять определенную «работу», когда ST должен активироваться/отключаться, сколько и какие состояния будет у вашего ST и тд. Думаю, наиболее эффективный способ объяснить вам как это работает на примере. Давайте предположим.. мы хотим поставить ST(smart terrain) на Кордоне для 3х бандитов.

Эта наиболее важная часть:

2. Спавн нпс/мутантов и назначение(биндинг) их к нашему ST: для этого мы должны добавить каждому мутанту/нпс определенную логику:

Если таковых нпс не обнаружится то гулаг выберет себе население из числа заспавнившихся в Зоне нпс с подходящими параметрами. Даже если они на другой локации.

3. Добавляем «работу» (логика) для каждого нпс/мутанта из нашего ST(для каждого состояния). Предположии у ST их два: состояние 0 (описывает какие нпс/мутанты «работают» днем) и состояние 1 (ночью). У нас 3 бандита, определяемся:

— bandit1: walker (состояние 0) и kamp (состояние 1)
— bandit2: guard (состояние 0) и sleeper (состояние 1)
— bandit3: walker (состояние 0 и 1 function load_job(. )

Еще один момент о состояниях ST, всё зависит от того сколько у вас их в ST. Еще одна важной вещью является добавление логики для каждого состояния. Например в вашем ST такие состояния:

К сведению, меня не прет заполнять такое большое количество таблиц, так что обычно я использую эту функцию:

Используя функцию выше, мы можем загружать логику наподобие этой:

Так же существуют универсальные гулаги General_lager для сталкеров. Они считаются упрощенными гулагами.

Пример, создаем смарт:

General_lager автоматически соберет все точки путей на уровне начинающиеся на имя смарта(в нашем случае esc_gen_lager) и разделит их названия таким образом: (имя_смарта)_(аи схема)_(номер если требуется,напрмер если 2 walkerа то 1 и 2 соответственно)_(поднастройка схемы)_(состояние гулага 1 или 0,день или ночь) пример: esc_gen_lager _walker _1 _walk _1 (walk то же что и path_walk,look это path_look соответственно)

Пришедший на general_lager сталкер рандомно примет любую свободную работу работой считается комбинация схем с одним номером. например esc_gen_lager_walker_1_walk_1 и esc_gen_lager_walker_1_look_1 это схема дневной работы одного персонажа из гулага.

Так что для каждого general_lager нужны заранее расставленые точки путей для него.

Источник

Создание Смарт террэйна на основе схемы General Lager

Материал из S.T.A.L.K.E.R. Inside Wiki

Итак, вы хотите создать смарт, но не охота копошится в скриптах и конфигах и создавать свои скрипты для смарта? тогда этот способ именно для вас. Генерал лагер это универсальный смарт, с его помощью можно заселить локации или переобустроить ПЫСовские. Начнем с простенького.

Создадим смарт для мутантов.

[Имя уровня] boar = weak, normal, strong bloodsucker = weak, normal, strong flesh = weak, normal, strong dog = weak, normal, strong pseudodog = weak, normal, strong giant = weak, normal, strong zombie = weak, normal, strong burer = weak, normal, strong controller = weak, normal, strong poltergeist = weak, normal, strong snork = weak, normal, strong tushkano = weak, normal, strong

и в тои же папке в smart_terrain_presets добавить

[Имя уровня] stalker = novice, experienced, veteran, master monolith = novice, experienced, veteran, master military = novice, experienced, veteran, master killer = novice, experienced, veteran, master ecolog = novice, experienced, veteran, master dolg = novice, experienced, veteran, master freedom = novice, experienced, veteran, master bandit = novice, experienced, veteran, master zombied = novice, experienced, veteran, master

boar = weak, normal, strong bloodsucker = weak, normal, strong flesh = weak, normal, strong dog = weak, normal, strong pseudodog = weak, normal, strong giant = weak, normal, strong zombie = weak, normal, strong burer = weak, normal, strong controller = weak, normal, strong poltergeist = weak, normal, strong snork = weak, normal, strong tushkano = weak, normal, strong

Создадим смарт для НПС

И так, повторяем действия сделанные выше Открываем сдк, жмем spawn element>ai>smart terrains, шлепаем сие на локацию, затем переходим в shape>sphere(можно и box по желанию) и снова вставляем сие на локацию, увеличиваем до нужных размеров (не сильно больших), переходим обратно в режим spawn element, жмем кнопку attach object и кликаем на созданной нами сфере. открываем properties правым щелчком мыши или eneter по умолчанию. открываем custom data и пишем в ней [smart_terrain] type = general_lager capacity = 5 что такое capacity вы уже знаете. Создаем пути для НПС (Работы для НПС) вот примеры путей

smart_name_kamp_1 имя_гулага_kamp_коментарии типа [esc2_tunnel3_home_1] причем вместо 1 может быть все что угодно

Источник

Лагерь (smart terrain)

Содержание

Добавление лагеря

ПараметрОписание
targetsИмена smart terrain’ов, которые можно атаковать из этого лагеря, через запятую. Желательно создавать симметричную связь между лагерями, то есть если у лагеря A в targets есть лагерь B, то у лагеря B в targets должен быть лагерь A.
sim_typeТип лагеря. Может быть: territory (важные точки, например, перехода на другой уровень, и ключевые точки, например, базы группировок; захват этих точек приводит к появлению дополнительных отрядов), resource (точки, которые увеличивают ресурсы группировки, что приводит к появлению более крутых бойцов), base (база группировки. ), default (все остальные лагеря).
sim_valueУстаревший параметр, в 10 патче не используется. Можно удалять из настроек.
important_point. Ставится для смартов типа base.
squad_capacityКоличество отрядов, которые могут разместиться в этом лагере. Чем больше лагерь – тем больше в нём должно быть отрядов. Количество работ в лагере (см. ниже) должно быть равным или более [количество_человек_в_отряде] * [squad_capacity]. На данный момент в каждом отряде пять человек.
mutant_lair.
group_idУникальный (для соответствующего уровня) номер smart terrain’а. Этот номер будет являться номером group’ы отрядов, находящихся в этом лагере. На одном уровне не должно быть двух лагерей с одинаковыми group_id.
spawn_pointПатрульный путь, в нулевой точке которого будут появляться новые отряды.
att_restrSpace restrictor, за пределы которого не могут выйти бойцы, атакующие этот лагерь. Должен включать в свои пределы каверы для атакующих, но не давать им забиваться в дальние углы.
def_restrSpace restrictor, за пределы которого не могут выйти бойцы, защищающие этот лагерь. Должен включать в свои пределы каверы для обороняющихся, но не давать им забиваться в дальние углы.
sim_availЧерез запятую указываются значения, которые, в зависимости от условий, определяют доступность (true) или недоступность (false) лагеря для симуляции.
respawn_sectorЗначение, разрешающее (true) или запрещающее (false) подспаун новых отрядов группировки в этом лагере (при условии, что игрок находится достаточно далеко). Иначе можно задать имя группировки, например, stalker, bandit, army, monster и т.д.
no_mutantЗначение, разрешающее (true) или запрещающее (false) монстрам заходить в данный лагерь. Если не указано, то считается true.
respawnИмя ящика с припасами, например, esc_equipment_box_02_base_5_7
surge_hide_avaliableМожно ли использовать этот смарт как укрытие для выброса.
actor_hidesПеречень рестрикторов, используемых как укрытие от выброса применительно к данному смарту.

Также каждому лагерю необходимо добавить работы. Для этого нужно расставить соответствующие пути работ. Более подробную информацию можно получить из раздела #Работы универсальных лагерей.

Работы универсальных лагерей

У каждого универсального лагеря есть 4 состояния:

Атака и защита являются более приоритетными состояниями, т.е. если нет атаки или защиты, то действует правило день/ночь.

Дневные работыНочные работыАтакаОборона
kampsleeprangercamper
walkerwalkerassaultdefender
patrolpatrolsneaksniper
guardquardpatrol (атака)
snipersniper

Если нужно добавить эксклюзивные работы, нужно в кастом дате смарт террейна в секции [exclusive] вписать строчки:

Путь к файлу настроек пишется относительно папки \gamedata\configs\scripts\

В файле настроек писать стандартную логику как в кастом дате сталкера, со следующими дополнительными параметрами:

Эксклюзивные работы не зависят от состояния смарт террейна.

Пример кастом даты смарт террейна:

Пример файла настройки:

Также работает старая система:

kamp — только днём

Работает как для монстров, так и для сталкеров. Сталкеры сидят в центре лагеря возле костра, монстры живут вокруг точки в определённом радиусе.

Ставится точка патрульного пути с именем: [имя_смарттеррейна]_kamp_[номер_кемпа]

Нумерация кемпов должна начинаться с 1, то есть если нужно поставить 3 кемпа в гулаге с именем test_gulag, мы в LevelEditor ставим way point‘ы:

По умолчанию каждый кемп имеет в себе 5 мест, это количество можно менять, задавая флаг в нулевой точке этого пути.
Для сталкеров: name00|count = количество_мест
Для монстров: name00|mcount = количество_мест

Монстрам можно задавать минимальный радиус (по входу противника в который они будут нападать):
name00|max = радиус_в_метрах
И максимальный радиус (до границ которого они будут преследовать противника):
name00|min = радиус_в_метрах

sleep — только ночью

Сталкеры спят в укромном месте, недалеко от центра лагеря.

Ставится точка патрульного пути с именем:
[имя_смарттеррейна]_sleep_[номер_работы]

walker — днём и ночью

Сталкер тыняется по лагерю без особой цели.

Ставится патрульный путь с именем:
[имя_смарттеррейна]_walker_[номер_работы]_walk

Можно поставить патрульный путь с точками look (опционально), в том случае, если путь walk содержит в себе только одну вершину:
[имя_смарттеррейна]_walker_[номер_работы]_look

patrol — днём и ночью

Сталкеры патрулируют периметр лагеря.

Ставится патрульный путь с именем:
[имя_смарттеррейна]_patrol_[номер_работы]_walk

Можно поставить патрульный путь с точками look(опционально), в том случае, если путь walk содержит в себе только одну вершину:
[имя_смарттеррейна]_patrol_[номер_работы]_look

Каждый патрульный путь по умолчанию содержит в себе 5 работ, т.е. в патруль могут выйти 5 сталкеров. Это количество можно менять, задавая флаг в нулевой точке этого пути:
name00|count = количество_человек_в_патруле

guard — днём и ночью

Сталкеры стоят в точках по краям лагеря, охраняют.

Ставится патрульный путь с именем:
[имя_смарттеррейна]_guard_[номер_работы]_walk

В этой работе обязательно нужно указывать патрульный путь с точками look:
[имя_смарттеррейна]_guard_[номер_работы]_look

sniper — днём, ночью и в состоянии обороны

Ставится точка патрульного пути с именем:
[имя_смарттеррейна]_sniper_[номер_работы]_walk

В этой работе обязательно нужно указывать патрульный путь с точками look:
[имя_смарттеррейна]_sniper_[номер_работы]_look

ranger — только в состоянии атаки

Обстрел с большого расстояния, при приближении противника переход в универсальный комбат.

Ставится патрульный путь с именем:
[имя_смарттеррейна]_to_[имя_смарттеррейна_на_который будем_нападать]_ranger_[номер_работы]_walk

Можно поставить патрульный путь с точками look (опционально), в том случае если путь walk содержит в себе только одну вершину: [имя_смарттеррейна]_to_[имя_смарттеррейна_на_который будем_нападать]_ranger_[номер_работы]_look

Также нужно указать точку, в которой боец перейдёт в состояние ожидания. Для этого нужно в имени одной из точек пути walk указать:
_точки|sig=arrive_to_wait

В состоянии ожидания боец некоторое время будет отыгрывать анимацию подготовки к бою. Можно указать точку, в которой он это будет делать. Для этого нужно поставить патрульный путь (из одной точки) с именем:
[имя_смарттеррейна]_to_[имя_смарттеррейна_на_который будем_нападать]_ranger_[номер_работы]_wait_walk

Можно поставить патрульный путь с точкой look (опционально):
[имя_смарттеррейна]_to_[имя_смарттеррейна_на_который будем_нападать]_ranger_[номер_работы]_wait_look

Если точка перехода в состояние ожидания ближе к целевому смарту, чем 30 метров, то боец перейдёт в состояние ожидания за 30 метров до этого смарта. Если путь ожидания не поставлен — боец будет отыгрывать анимацию подготовки к бою в той точке, в которой он перешёл в состояние ожидания.

assault — только в состоянии атаки

Сталкеры ломятся толпой в атаку в универсальном комбате.

Ставится патрульный путь с именем:
[имя_смарттеррейна]_to_[имя_смарттеррейна_на_который будем_нападать]_assault_[номер_работы]_walk

Можно поставить патрульный путь с точками look(опционально), в том случае если путь walk содержит в себе только одну вершину:
[имя_смарттеррейна]_to_[имя_смарттеррейна_на_который будем_нападать]_assault_[номер_работы]_look

Также нужно указать точку, в которой боец перейдёт в состояние ожидания. Для этого нужно в имени одной из точек пути walk указать:
имя_точки|sig=arrive_to_wait

В состоянии ожидания боец некоторое время будет отыгрывать анимацию подготовки к бою. Можно указать точку, в которой он это будет делать. Для этого нужно поставить патрульный путь (из одной точки) с именем:
[имя_смарттеррейна]_to_[имя_смарттеррейна_на_который будем_нападать]_assault_[номер_работы]_wait_walk

Можно поставить патрульный путь с точкой look (опционально):
[имя_смарттеррейна]_to_[имя_смарттеррейна_на_который будем_нападать]_assault_[номер_работы]_wait_look

Если точка перехода в состояние ожидания ближе к целевому смарту, чем 30 метров, то боец перейдёт в состояние ожидания за 30 метров до этого смарта. Если путь ожидания не поставлен – боец будет отыгрывать анимацию подготовки к бою в той точке, в которой он перешёл в состояние ожидания.

sneak — только в состоянии атаки

Чуваки подкрадываются на максимально близкое расстояние к вражескому лагерю и синхронно переходят в универсальный комбат.

Ставится патрульный путь с именем:
[имя_смарттеррейна]_to_[имя_смарттеррейна_на_который будем_нападать]_sneak_[номер_работы]_walk

Можно поставить патрульный путь с точками look(опционально), в том случае если путь walk содержит в себе только одну вершину:
[имя_смарттеррейна]_to_[имя_смарттеррейна_на_который будем_нападать]_sneak_[номер_работы]_look

Также нужно указать точку, в которой боец перейдёт в состояние ожидания. Для этого нужно в имени одной из точек пути walk указать:
имя_точки|sig=arrive_to_wait

В состоянии ожидания боец некоторое время будет отыгрывать анимацию подготовки к бою. Можно указать точку, в которой он это будет делать. Для этого нужно поставить патрульный путь (из одной точки) с именем:
[имя_смарттеррейна]_to_[имя_смарттеррейна_на_который будем_нападать]_sneak_[номер_работы]_wait_walk

Можно поставить патрульный путь с точкой look (опционально):
[имя_смарттеррейна]_to_[имя_смарттеррейна_на_который будем_нападать]_sneak_[номер_работы]_wait_look

Если точка перехода в состояние ожидания ближе к целевому смарту, чем 30 метров, то боец перейдёт в состояние ожидания за 30 метров до этого смарта. Если путь ожидания не поставлен – боец будет отыгрывать анимацию подготовки к бою в той точке, в которой он перешёл в состояние ожидания.

patrol (атака) — только в состоянии атаки

Идут к лагерю в патруле, если там пусто, или нападают в рейде, если там враги.

Ставится патрульный путь с именем:
[имя_смарттеррейна]_to_[имя_смарттеррейна_на_который будем_нападать]_patrol_[номер_работы]_walk

Можно поставить патрульный путь с точками look(опционально), в том случае если путь walk содержит в себе только одну вершину:
[имя_смарттеррейна]_to_[имя_смарттеррейна_на_который будем_нападать]_patrol_[номер_работы]_look

Каждый патрульный путь по умолчанию содержит в себе 5 работ, т.е. в патруль могут выйти 5 сталкеров. Это количество можно менять, задавая флаг в нулевой точке этого пути:
name00|count = количество_человек_в_патруле

В каждой точке walk можно задавать анимацию, в которой сталкеры будут идти до следующей точки, иначе они будут идти в состоянии по умолчанию (патруль/рейд).

Также нужно указать точку, в которой бойцы перейдут в состояние ожидания. Для этого нужно в имени одной из точек пути walk указать:
имя_точки|sig=arrive_to_wait

В состоянии ожидания бойцы некоторое время будут готовиться к бою. Для каждого бойца можно указать смарт-кавер, в котором он это будет делать. Для этого нужно поставить смарт-кавер с именем:
[имя_смарттеррейна]_to_[имя_смарттеррейна_на_который будем_нападать]_patrol_[номер_работы]_wait_[номер_бойца]_smartcover

Если точка перехода в состояние ожидания ближе к целевому смарту, чем 30 метров, то бойцы перейдут в состояние ожидания за 30 метров до этого смарта. Если смарт-кавер ожидания не поставлен – бойцы будут отыгрывать remark подготовки к бою в той точке, в которой они перешли в состояние ожидания.

По окончанию ожидания бойцы снова встанут на путь патруля, по которому дойдут до вражеского лагеря. Желательно, чтобы последняя точка патрульного пути находилась в центре вражеского смарта.

camper — только в состоянии обороны

По поднятию тревоги занимают позицию для обороны, кемперят, переходят в универсальный комбат при сильном приближении противника

Ставится точка патрульного пути с именем:
[имя_смарттеррейна]_camper_[номер_работы]_walk

В этой работе обязательно нужно указывать патрульный путь с точками look:
[имя_смарттеррейна]_camper_[номер_работы]_look

По умолчанию кемпер на точке пути находится в сидячем состоянии, т.е. если перед ним кавер, то он присядет и будет тупить, чтобы указать ему стоячее состояние ведения боя, нужно в нулевой вершине патрульного пути указать флажок:
name00|state=stand

defender — только в состоянии обороны

По поднятию тревоги занимают позицию для обороны, переходят в универсальный комбат, сидят в out-рестрикторе, в лагере.

Ставится точка патрульного пути с именем:
[имя_смарттеррейна]_defender_[номер_работы]_walk

Можно поставить патрульный путь с точками look(опционально), в том случае, если путь walk содержит в себе только одну вершину:
[имя_смарттеррейна]_defender_[номер_работы]_look

В этой схеме можно указать сталкеру out_restrictor, чтобы он держался в нем во время универсального комбата. Для этого в нулевой точке пути задаем флаг: name00|out_restr=имя_рестриктора

Источник

CoP. Симуляция. Параметры смарт-террейнов.

Материал из S.T.A.L.K.E.R. Inside Wiki

Содержание

Смарт-террейны

Типы смарт-террейнов
defaultОбычный тип смарт-террейна.
default_resourceСмарты с наличием аномальных зон, в которых есть работа для НПС по поиску артефактов.
default_baseГлавный смарт. Сюда идут все отряды с наступлением ночи.
default_lairСмарт для монстров. Тем не менее сталкеры сюда тоже могут прийти.
default_squadНе смарт. Класс, выделяющий в симуляции уникальные отряды и персонажей.
Параметры смарт-террейнов

Данная секция представляет собой список ссылок на секции сквадов, которые будут спауниться в этом смарт-террейне.
Пример секции:

[respawn@base_smart]
spawn_bandit@novice
spawn_bandit@advanced
spawn_bandit@master

Каждая секция сквада имеет следующие параметры:

ПараметрОписаниеПример
spawn_squadsСписок имен сквадов из squad_descr_. ltx. Может иметь логические проверки условий.spawn_squads = bandit_sim_squad_veteran, bandit_sim_squad_advanced
spawn_numКоличество отрядов, которые будут респаунится. Может иметь логические проверки условий.spawn_num = <+infoportion>2, 0

Секция позволяет задавать логику для уникальных персонажей, которые находятся в данном смарте.
Пример использования:

[exclusive]
zat_a2_stalker_barmen = zaton\zat_a2_stalker_barmen.ltx

zat_a2_stalker_barmenСharacter ID НПС
zaton\zat_a2_stalker_barmen.ltxпуть к файлу с логикой.

Работа в смарт-террейнах

Имя каждой работы состоит из:

НазваниеПриоритетОписаниеПример
GENERIC POINT3При отсутствии каких-либо работ, сталкер идет в случайное место радиусом от 3 до 8 метров от смарта и садится на корточки.отсутствует
SLEEP10Схема сидящего и спящего NPC. Необходимо поставить путь минимум из двух поинтов.
Спящий будет садиться спать в нулевой точке пути, и разворачиваться при этом в сторону первой точки.
esc_a1_sleep_1_walk
WALKER15Перемещается по пути (path_walk), останавливается в определенных точках и выполняет соответствующие действия. Для корректной работы желательно наличие look-вейпоинта.esc_a1_walker_1_walk
ANIMPOINT15Конечная точка с кастомной анимацией. Доступны следующие анимации: НПС сидит, стоит за стойкой, стоит прислонившись к стене.esc_a1_animpoint_1
PATROL20Вейпоинт, по которому будут ходить сталкер и выполнять функцию патруля. Должен быть зациклен.esc_a1_patrol_1_walk
COLLECTOR25Вейпоинт, по которому пойдет сталкер отыгрывать анимацию собирания артефактов.esc_a1_collector_1_walk
GUARD25Вейпоинт, по которому будут ходить сталкер и выполнять функцию охраны. Должен быть зациклен.esc_a1_guard_1_walk
SNIPER30Разновидность кемпера. Отличаются тем, что стреляют только одиночными выстрелами и не смотрят по точкам патрульного пути, а сканируют пространство между ними.
Скорость сканирования от точки к точке фиксирована и равна 20 сек. Необходимо ставить снайперу только 2 точки look.
esc_a1_sniper_1_walk
CAMPER45Кемпер стоит на точке и смотрит в направлении, куда Вы его поставили в редакторе или передигается по патрульным путям. Переключаются на универсальный комбат,
только если видят врага ближе чем в 30 метрах. Если он выжил, он возращается в состояние кемпера. В любых других случаях действуют по собственной скриптовой схеме.
esc_a1_camper_1_walk
SURGE50Вейпоинт, по которому пойдет сталкер в случае выброса. Должно быть разрешено в файле simulation_objects_props.ltxesc_a1_surge_1_walk
MOB HOME40Вейпоинт, по которому будут двигаться мутанты в смарте. Только для мутантов!esc_a1_home_1_walk

Некоторые walk-вейпоинты, могут не иметь look-вейпоинтов. Для некоторых наличие look-вейпоинта обязательно.

Чтобы сталкеры могли сидеть возле костра необходимо:

Список остальных анимаций см. в файле scripts\state_lib.script.

Симуляция

Некоторые условия работы симуляции

В файле scripts\sim_board.script для каждой группировки заданы прекондишены:

В файле misc\travel_manager.ltx есть два раздела.

В файле уже все сказано: это перечень точек, куда проводники могут отвести за бабосы. Тут указываем наш смарт, затем создаем секцию:

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *