Лагерь (smart terrain)

Материал из xrWiki
Версия от 08:41, 5 декабря 2016; RedPython (обсуждение | вклад) (Работы универсальных лагерей)

Перейти к: навигация, поиск

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

Для добавления лагеря необходимо поставить объект Spawn Element -> ai -> smart_terrain. В его Properties -> Custom data нужно прописать следующее:

[smart_terrain]
targets = имя_соседнего_smart_terrain, имя_соседнего_smart_terrain, имя_соседнего_smart_terrain...
sim_type = тип_лагеря
squad_capacity = количество_отрядов
group_id = уникальный_номер
spawn_point = точка_спауна
att_restr = space_restrictor_атакующих
def_restr = space_restrictor_обороняющихся
sim_avail = {условие} false/true, {условие} false/true...
respawn_sector = true/false
Параметр Описание
targets Имена smart terrain’ов, которые можно атаковать из этого лагеря, через запятую. Желательно создавать симметричную связь между лагерями, то есть если у лагеря A в targets есть лагерь B, то у лагеря B в targets должен быть лагерь A.
sim_type Тип лагеря. Может быть: territory (важные точки, например, перехода на другой уровень, и ключевые точки, например, базы группировок; захват этих точек приводит к появлению дополнительных отрядов), resource (точки, которые увеличивают ресурсы группировки, что приводит к появлению более крутых бойцов), default (все остальные лагеря).
squad_capacity Количество отрядов, которые могут разместиться в этом лагере. Чем больше лагерь – тем больше в нём должно быть отрядов. Количество работ в лагере (см. ниже) должно быть равным или более [количество_человек_в_отряде] * [squad_capacity]. На данный момент в каждом отряде пять человек.
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) подспаун новых отрядов группировки в этом лагере (при условии, что игрок находится достаточно далеко).

Необходимо ставить точку графа Spawn Element -> ai -> graph point в центре каждого smart_terrain’а и на середине пути от него к лагерями, которые указаны в его targets. Это делается для того, чтобы в оффлайне передвижение отрядов хорошо смотрелось на карте.

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

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

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

  1. День (6:00 – 21:00)
  2. Ночь (21:00 – 6:00)
  3. Атака (контролируется менеджером симуляции)
  4. Оборона (контролируется менеджером симуляции)

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

Дневные работы Ночные работы Атака Оборона
kamp sleep ranger camper
walker walker assault defender
patrol patrol sneak sniper
guard quard patrol (атака)
sniper sniper

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

[exclusive]
первое_имя_работы = первое_имя_файла_настройки.ltx
второе_имя_работы = второе_имя_файла_настройки.ltx

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

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

  1. Имя секции [logic] должно выглядеть как [logic@соответствующее_имя_работы]
  2. В секции [logic@имя_работы] можно прописать ключ suitable. Его значение — кондлист, который определяет, может ли занять эту эксклюзивную работу определённый npc. Если этот ключ не указан — работу может занять любой npc.
  3. Есть возможность сделать так, чтобы npc на уникальной работе, всегда находился в online. Для этого, нужно прописать ключ: job_online = true
  4. Можно задать приоритет экслюзивной работы prior = 70. Чем больше число тем выше приоритет работы. Обычно, не эксклюзивные работы имеют приоритет ниже 70.

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

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

[smart_terrain]
targets =

[exclusive]
genatsvale = aul\aul_genatsvale.ltx

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

[logic@genatsvale]
suitable = {=check_npc_name(givi_zurabovich)}

job_online = true
active = walker
prior = 70

[walker]

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

[smart_terrain]
work1 = имя_файла_настройки1.ltx
work2 = имя_файла_настройки2.ltx