Лагерь (smart terrain) — различия между версиями

Материал из xrWiki
Перейти к: навигация, поиск
(Добавление лагеря)
 
(Работы универсальных лагерей)
Строка 47: Строка 47:
 
Также каждому лагерю необходимо добавить работы. Для этого нужно расставить соответствующие пути работ. Более подробную информацию можно получить из раздела  
 
Также каждому лагерю необходимо добавить работы. Для этого нужно расставить соответствующие пути работ. Более подробную информацию можно получить из раздела  
 
[[#Работы универсальных лагерей]].
 
[[#Работы универсальных лагерей]].
 +
 +
=={{Якорь|Работы универсальных лагерей}}Работы универсальных лагерей==
 +
У каждого универсального лагеря есть 4 состояния:
 +
#День (6:00 – 21:00)
 +
#Ночь (21:00 – 6:00)
 +
#Атака (контролируется менеджером симуляции)
 +
#Оборона (контролируется менеджером симуляции)
 +
Атака и защита являются более приоритетными состояниями, т.е. если нет атаки или защиты, то действует правило день/ночь.
 +
{| class="wikitable" style="color: #black; background-color: #efffef; width: 80%;"
 +
|-
 +
!style="background-color: #efffef"|Дневные работы||style="background-color: #efffef"|Ночные работы||style="background-color: #efffef"|Атака||style="background-color: #efffef"|Оборона
 +
|-
 +
|kamp ||sleep ||ranger ||camper
 +
|-
 +
|walker ||walker ||assault ||defender
 +
|-
 +
|patrol ||patrol ||sneak ||sniper
 +
|-
 +
|guard ||quard ||patrol (атака) ||
 +
|-
 +
|sniper ||sniper || ||
 +
|}
 +
Если нужно добавить эксклюзивные работы, нужно в кастом дате смарт террейна в секции [exclusive] вписать строчки:
 +
<syntaxhighlight lang="ini">[exclusive]
 +
первое_имя_работы = первое_имя_файла_настройки.ltx
 +
второе_имя_работы = второе_имя_файла_настройки.ltx
 +
…</syntaxhighlight>
 +
Путь к файлу настроек пишется относительно папки '''\gamedata\configs\scripts\'''
 +
 +
В файле настроек писать стандартную логику как в кастом дате сталкера, со следующими дополнительными параметрами:
 +
#Имя секции [logic] должно выглядеть как [logic@соответствующее_имя_работы]
 +
#В секции [logic@имя_работы] можно прописать ключ suitable. Его значение — кондлист, который определяет, может ли занять эту эксклюзивную работу определённый npc. Если этот ключ не указан — работу может занять любой npc.
 +
#Есть возможность сделать так, чтобы npc на уникальной работе, всегда находился в online. Для этого, нужно прописать ключ: job_online = true
 +
#Можно задать приоритет экслюзивной работы prior = 70. Чем больше число тем выше приоритет работы. Обычно, не эксклюзивные работы имеют приоритет ниже 70.
 +
 +
Эксклюзивные работы не зависят от состояния смарт террейна.
 +
 +
Пример кастом даты смарт террейна:
 +
<syntaxhighlight lang="ini">[smart_terrain]
 +
targets =
 +
 +
[exclusive]
 +
genatsvale = aul\aul_genatsvale.ltx</syntaxhighlight>
 +
Пример файла настройки:
 +
<syntaxhighlight lang="ini">[logic@genatsvale]
 +
suitable = {=check_npc_name(givi_zurabovich)}
 +
 +
job_online = true
 +
active = walker
 +
prior = 70
 +
 +
[walker]
 +
…</syntaxhighlight>
 +
Также работает старая система:
 +
<syntaxhighlight lang="ini">[smart_terrain]
 +
work1 = имя_файла_настройки1.ltx
 +
work2 = имя_файла_настройки2.ltx
 +
…</syntaxhighlight>
 +
 +
  
  
=={{Якорь|Работы универсальных лагерей}}Работы универсальных лагерей==
 
  
  
[[Категория:A-Life]][[Категория:LevelEditor]]
+
[[Категория:A-Life]][[Категория:LevelEditor]][[Категория:Чистое небо]]

Версия 08:41, 5 декабря 2016

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

Для добавления лагеря необходимо поставить объект 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