что такое смарт террейны
S.T.A.L.K.E.R|Модостроение
Меню навигации
Пользовательские ссылки
Объявление
Информация о пользователе
Создание смарт торрейна (smart_terrain)
Сообщений 1 страница 1 из 1
Поделиться12011-11-22 03:41:45
Распаковываем all.spawn и открываем любой alife_. ltx
Добавляем секцию:
[131] ;номер по порядку.
; cse_abstract properties
section_name = smart_terrain
name = a10_sv_terrain ;уникальное имя.
position = 69.4, 6.4, 491.4 ;координаты.
direction = 0, 0, 0
id = 65535
version = 128
script_version = 12
spawn_id = 5783
; cse_alife_object properties
game_vertex_id = 151 ;координаты.
distance = 11.9
level_vertex_id = 794119 ;координаты.
object_flags = 0xffffff3e
custom_data = dikobraz = test_logic.ltx
dog = test_logic.ltx
Сама логика (test_logic.ltx) по адресу: gamedata\configs\scripts
Основные моменты для НПС:
[walker]
path_walk = dikobraz_walk ;здесь он стоит.
path_look = dikobraz_look ;в эту сторону смотрит.
[a10_sv_terrain_dikobraz_walk] ;сначала имя смарта, потом название.
points = p0
p0:name = wp00
p0:flags = 0x1 ;флаги для синхронизации.
p0:position = 46.5, 6.5, 475.2
p0:game_vertex_id = 66
p0:level_vertex_id = 740117
[a10_sv_terrain_dikobraz_look] ;сначала имя смарта, потом название.
points = p0
p0:name = wp00
p0:flags = 0x1 ;флаги для синхронизации.
p0:position = 45.1, 6.2, 472.3
p0:game_vertex_id = 66
p0:level_vertex_id = 736705
[logic@ dog ] ;то же имя.
suitable = <=target_squad_name(b2_dog_hunter_squad)>true ;принадлежность одного члена этого сквада к этой логике (для других пишется отдельно аналогично).
prior = 100
active = mob_home@dog ;популярная логика для сквада.
monster_job = true
on_death = death@dog ;эту же схему можно прописать и НПС.
on_hit = hit@dog ;эту же схему можно прописать и НПС.
[hit@all]
on_info = %+b2_dog_hunter_hit% ;инфопоршень при хите.
[death@dog]
on_info = %+b2_dog_hunter_dead% ;инфопоршень при смерти мутанта.
[mob_home@dog] ;то есть ясно, что это значит «дом»: мутанты торчат на одной местности смарта.
path_home = dog_home ;так же прописывается, как и у НПС.
Ссылки на похожие статьи:
О сайте
Шутки из Зоны
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 POINT | 3 | При отсутствии каких-либо работ, сталкер идет в случайное место радиусом от 3 до 8 метров от смарта и садится на корточки. | отсутствует |
SLEEP | 10 | Схема сидящего и спящего NPC. Необходимо поставить путь минимум из двух поинтов. Спящий будет садиться спать в нулевой точке пути, и разворачиваться при этом в сторону первой точки. | esc_a1_sleep_1_walk |
WALKER | 15 | Перемещается по пути (path_walk), останавливается в определенных точках и выполняет соответствующие действия. Для корректной работы желательно наличие look-вейпоинта. | esc_a1_walker_1_walk |
ANIMPOINT | 15 | Конечная точка с кастомной анимацией. Доступны следующие анимации: НПС сидит, стоит за стойкой, стоит прислонившись к стене. | esc_a1_animpoint_1 |
PATROL | 20 | Вейпоинт, по которому будут ходить сталкер и выполнять функцию патруля. Должен быть зациклен. | esc_a1_patrol_1_walk |
COLLECTOR | 25 | Вейпоинт, по которому пойдет сталкер отыгрывать анимацию собирания артефактов. | esc_a1_collector_1_walk |
GUARD | 25 | Вейпоинт, по которому будут ходить сталкер и выполнять функцию охраны. Должен быть зациклен. | esc_a1_guard_1_walk |
SNIPER | 30 | Разновидность кемпера. Отличаются тем, что стреляют только одиночными выстрелами и не смотрят по точкам патрульного пути, а сканируют пространство между ними. Скорость сканирования от точки к точке фиксирована и равна 20 сек. Необходимо ставить снайперу только 2 точки look. | esc_a1_sniper_1_walk |
CAMPER | 45 | Кемпер стоит на точке и смотрит в направлении, куда Вы его поставили в редакторе или передигается по патрульным путям. Переключаются на универсальный комбат, только если видят врага ближе чем в 30 метрах. Если он выжил, он возращается в состояние кемпера. В любых других случаях действуют по собственной скриптовой схеме. | esc_a1_camper_1_walk |
SURGE | 50 | Вейпоинт, по которому пойдет сталкер в случае выброса. Должно быть разрешено в файле simulation_objects_props.ltx | esc_a1_surge_1_walk |
MOB HOME | 40 | Вейпоинт, по которому будут двигаться мутанты в смарте. Только для мутантов! | esc_a1_home_1_walk |
Некоторые walk-вейпоинты, могут не иметь look-вейпоинтов. Для некоторых наличие look-вейпоинта обязательно.
Чтобы сталкеры могли сидеть возле костра необходимо:
Список остальных анимаций см. в файле scripts\state_lib.script.
Симуляция
Некоторые условия работы симуляции
В файле scripts\sim_board.script для каждой группировки заданы прекондишены:
В файле misc\travel_manager.ltx есть два раздела.
В файле уже все сказано: это перечень точек, куда проводники могут отвести за бабосы. Тут указываем наш смарт, затем создаем секцию:
Лагерь (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_restr | Space restrictor, за пределы которого не могут выйти бойцы, атакующие этот лагерь. Должен включать в свои пределы каверы для атакующих, но не давать им забиваться в дальние углы. |
def_restr | Space 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 состояния:
Атака и защита являются более приоритетными состояниями, т.е. если нет атаки или защиты, то действует правило день/ночь.
Дневные работы | Ночные работы | Атака | Оборона |
---|---|---|---|
kamp | sleep | ranger | camper |
walker | walker | assault | defender |
patrol | patrol | sneak | sniper |
guard | quard | patrol (атака) | |
sniper | sniper |
Если нужно добавить эксклюзивные работы, нужно в кастом дате смарт террейна в секции [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=имя_рестриктора
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 нужны заранее расставленые точки путей для него.