CoP. Симуляция. Параметры смарт-террейнов. — различия между версиями
Материал из S.T.A.L.K.E.R. Inside Wiki
Vast (обсуждение | вклад) (→Добавление базы в общую симуляцию) |
Vast (обсуждение | вклад) (→Работа в смарт-террейнах) |
||
Строка 212: | Строка 212: | ||
|} | |} | ||
− | Некоторые walk-вейпоинты, могут не иметь look-вейпоинтов. Для некоторых наличие look-вейпоинта обязательно | + | Некоторые walk-вейпоинты, могут не иметь look-вейпоинтов. Для некоторых наличие look-вейпоинта обязательно. |
'''Чтобы сталкеры могли сидеть возле костра необходимо: | '''Чтобы сталкеры могли сидеть возле костра необходимо: | ||
# поставить walk-вейпоинт на место где они сядут и look-вейпоинт куда будут смотреть. | # поставить walk-вейпоинт на место где они сядут и look-вейпоинт куда будут смотреть. | ||
# установить общий флаг | # установить общий флаг | ||
− | # в параметрах '''look'''-вейпоинта | + | # в параметрах '''look'''-вейпоинта задать одну из этих анимаций: |
#* sit | #* sit | ||
#* sit_knee | #* sit_knee |
Текущая версия на 17:35, 10 июля 2016
Содержание
Смарт-террейны
Смарт-террейн - это определенный скриптовый класс в игре, при помощи которого происходит заселение локаций. В смартах организуются работы для НПС, реализуется логика для отдельных эксклюзивных персонажей, происходит респавн НПС и монстров, а также организуются укрытия от выброса для НПС.
Типы смарт-террейнов
default | Обычный тип смарт-террейна. |
---|---|
default_resource | Смарты с наличием аномальных зон, в которых есть работа для НПС по поиску артефактов. |
default_base | Главный смарт. Сюда идут все отряды с наступлением ночи. |
default_lair | Смарт для монстров. Тем не менее сталкеры сюда тоже могут прийти. |
default_squad | Не смарт. Класс, выделяющий в симуляции уникальные отряды и персонажей. |
Параметры смарт-террейнов
- Необходимые параметры:
Параметр | Описание | Пример |
---|---|---|
squad_id | Уникальный ID отряда. Никогда не должен повторятся. Для любой локации начинается с единицы. | squad_id = 1 |
max_population | Количество отрядов, которые может принять смарт. Определяет для скольких отрядов в симуляции тут найдется работа. | max_population = 1 |
- Дополнительные параметры:
Параметр | Описание | Пример |
---|---|---|
respawn_only_smart | Могут ли из смарта удаляться отряды в симуляции. | respawn_only_smart = true |
respawn_params | Ссылка на секцию респауна (параметры этой секции см. ниже). | respawn_params = respawn@base_smart |
smart_control | Ссылка на секцию с параметрами контроля смарта. | smart_control = smart_control |
def_restr | Определяет рестриктор, в пределах которой находится лагерь. | def_restr = pri_a16_sr_noweap |
safe_restr | Определяет рестриктор, в пределах которой НПС бессмертны. | safe_restr = pri_surge_hide_a16 |
spawn_point | Имя вейпоинта, в котором происходит респаун. Может иметь значение self. | spawn_point = zat_sim_16_spawn_point |
arrive_dist | Определяет расстояние, на котором отряд считается прибывшим в смарт и регистрируется в нем. | arrive_dist = 100 |
- Параметры smart_control:
Параметр | Описание | Пример |
---|---|---|
noweap_zone | Определяет рестриктор, в котором запрещается использовать оружие (в том числе актору). | noweap_zone = zat_a2_sr_noweap |
ignore_zone | Определяет рестриктор, в котором НПС не реагируют на опасности даже если атакованы. | ignore_zone = zat_a2_sr_light |
alarm_start_sound | Воспроизводит звук из script_sound_...ltx, если актор атаковал смарт. | alarm_start_sound = zat_a2_base_alarm |
alarm_stop_sound | Воспроизводит звук из script_sound_...ltx, когда тревога закончилась. | alarm_start_sound = zat_a2_base_relax |
- Параметры respawn_params
Данная секция представляет собой список ссылок на секции сквадов, которые будут спауниться в этом смарт-террейне.
Пример секции:
[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]
Секция позволяет задавать логику для уникальных персонажей, которые находятся в данном смарте.
Пример использования:
[exclusive]
zat_a2_stalker_barmen = zaton\zat_a2_stalker_barmen.ltx
Параметры:
zat_a2_stalker_barmen | Сharacter ID НПС |
---|---|
zaton\zat_a2_stalker_barmen.ltx | путь к файлу с логикой. |
Работа в смарт-террейнах
Под работой стоит понимать пути по которым ходят, стоят и отыгрывают анимации НПС при попадании в смарт. Каждый тип работы должен начинатся с единицы. Предположительно максимальное число каждого типа работ - 20. Каждый тип работы имеет свой приоритет. Чем больше число тем больше вероятность, что НПС пойдет на эту работу.
Имя каждой работы состоит из:
- Имени смарта (esc_a1)
- Типа работы (walker)
- Номера работы (1,2,3..20)
- Дополнительные параметры для вейпоинтов (walk,look)
Пример:
esc_a1_walker_1_walk
Типы работ:
Название | Приоритет | Описание | Пример |
---|---|---|---|
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-вейпоинта обязательно.
Чтобы сталкеры могли сидеть возле костра необходимо:
- поставить walk-вейпоинт на место где они сядут и look-вейпоинт куда будут смотреть.
- установить общий флаг
- в параметрах look-вейпоинта задать одну из этих анимаций:
- sit
- sit_knee
- sit_ass
Список остальных анимаций см. в файле scripts\state_lib.script.
Симуляция
Некоторые условия работы симуляции
В файле scripts\sim_board.script для каждой группировки заданы прекондишены:
squad = { stalker = { prec = function(squad, target) return in_time_interval(6, 19) and simulation_objects.sim_dist_to(squad, target) <= 150 end },
bandit = { prec = function(squad, target) return in_time_interval(6, 19) and simulation_objects.sim_dist_to(squad, target) <= 150 end },
dolg = { prec = function(squad, target) return in_time_interval(6, 19) and simulation_objects.sim_dist_to(squad, target) <= 150 end },
freedom = { prec = function(squad, target) return in_time_interval(6, 19) and simulation_objects.sim_dist_to(squad, target) <= 150 end },
killer = { prec = function(squad, target) return in_time_interval(6, 19) and simulation_objects.sim_dist_to(squad, target) <= 150 end }
},
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)
and (target:name() == "zat_stalker_base_smart" or target:name() == "jup_a6" or target:name() == "pri_a16") end },
surge = { prec = function() return xr_conditions.surge_started() end },
territory = { prec = function() return in_time_interval(8,18) and not xr_conditions.surge_started() end },
resource = { prec = function(squad, target) return in_time_interval(8,18) and not xr_conditions.surge_started() end } -- and squad:has_detector() },
lair = { prec = function() return in_time_interval(6,19) end }
},
actor = { prec = function(squad, target) return has_alife_info("sim_bandit_attack_harder") and simulation_objects.sim_dist_to(squad, target) <= 150 end }
- squad — набор условий для вражды с другой фракцией.
- simulation_objects.sim_dist_to(squad, target) <= 150 — проверка расстояния до отряда меньше требуемой.
- smart - набор условий для выбора того, или иного смарта.
- base — набор условий для возвращения на базу-смарт (default_base)
- return in_time_interval(18,8) — проверка находится ли отряд в данном отрезке времени
- xr_conditions.surge_started() — проверка начала выброса
- travel_manager.check_squad_for_enemies(squad) — проверка присутствия в отряде врагов.
- target:name() == "zat_stalker_base_smart" or target:name() == "jup_a6" or target:name() == "pri_a16" — проверка наличия базы.
- return in_time_interval(18,8) — проверка находится ли отряд в данном отрезке времени
- surge — набор условий для поиска укрытия от выброса.
- territory — набор условий для начала поиска обычного смарта default.
- resource — набор условий для начала поиска смарта с аномалиями и добычи артефактов (default_resource).
- lair — набор условий для поиска мутантом смарта-укрытия (default_lair)
- base — набор условий для возвращения на базу-смарт (default_base)
- actor — набор условий для вражды с актором.
- has_alife_info("sim_bandit_attack_harder") — проверка присутствия инфопоршня
Добавление смарта в общую симуляцию
В файле misc\travel_manager.ltx есть два раздела.
- [locations]
Секция описание того куда направлются сталкеры. Текст добавляется в text\rus\st_dialog_manager.xml.
Принцип: ваше_название_смарта = st_stalker_ваше_название_смарта.
Например для смарта zat_sim_1 которому соответствует стринг st_stalker_zat_sim_1 НПС на вопрос "Куда вы направляетесь?", ответит: "Иду в направлении аномалии «Котёл». Там рощица за ней - туда и иду."
- [traveler]
В файле уже все сказано: это перечень точек, куда проводники могут отвести за бабосы. Тут указываем наш смарт, затем создаем секцию:
[ваше_название_смарта]
level = ваш_уровень
name = ваше_название_смарта
condlist = true
ваше_название_смарта указываем в файле text\rus\st_land_names.xml
condlist - условия существования данной точки. Можно использовать стандартные проверки условий.
Добавление базы в общую симуляцию
- В misc\simulation_objects_props.ltx назначаем вашему смарту класс default_base.
- В файле scripts\state_lib.script для нужной вам группировки в секции base дополняем своей проверкой target:name() == "ваше_название_смарта"
Написал и оформил: Vast
Большое количество фраз и информации было взято отсюда [1], из файла logic_setup.pdf, а также из статей умершего сайта stalker-2.com.ua, поэтому линков никаих нет.
Любые дополнения, критика, угрозы, все приветствуется.