Настройка логики. Часть 0 — S.T.A.L.K.E.R. Inside Wiki

Настройка логики. Часть 0

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

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

Настройка логики. Часть 0
Настройка логики. Часть 1
Настройка логики. Часть 2
Настройка логики. Часть 3
Настройка логики. Часть 4

GSC GameWorld


1. Changes Log

<NULL>


2. Скрипты

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

Настройка смарттеррейнов: ScriptGulag.


2.1. ГУЛАГ

2.1.1. Что это такое? Особенности

Гулаг - средство объединения нескольких сталкеров под централизованным управлением.

Основные особенности:

  • есть список работ гулага. Работа - настроенная схема поведения (или цепочка схем поведения);
  • работы имеют приоритеты;
  • гулаг назначает на работы сталкеров начиная с работ с наивысшим приоритетом;
  • гулаг имеет состояния. Состояние - набор работ;


2.1.2. Как добавить новый тип гулага

Установка на уровне

  • Необходимо установить зону smart_terrain, которая бы накрывала место захвата свежих душ (место спауна сталкеров). Необходимо помнить, что название зоны будет являться префиксом для патрульных путей, относящихся к этому гулагу.
  • В custom_data зоны необходимо прописать настройку гулага:
[gulag1]
type = <тип_гулага>
squad = <squad>
groups = <groups>
capacity = <capacity>
idle = min[, max]                   ;время бездействия после роспуска гулага, умолчание=0
stay = min[, max]                   ;время, на которое сталкер останется, умолчание=навсегда
duration = min[, max]               ;время существования данного типа гулага, умолчание=всегда
preconditions = info1[, info2, ...] ;чтобы данный тип гулага образовался, нужно присутствие всех infoportions
p = number                          ;вероятность попадания сталкера под смарт терейн в процентах
offline = true/false                ; может ли данный гулаг образоваться в офлайне
Параметр Описание
<тип_гулага> От него зависит набор и настройка работ.
<squad> Все люди в гулаге будут иметь данный сквад. При отпускании на волю им будет восстанавливаться их родной сквад из редактора.
<groups> Перечень групп, которые будут сетиться для той или иной работы. Задается строкой чисел, разделенных запятыми.
<capacity> Максимальная вместимость гулага. Если количество человек в гулаге достигает этого значения, то больше в гулаг никто не принимается. Количество работ в гулаге в любой момент времени должно быть больше либо равно вместимости. Таким образом количество людей в гулаге гарантированно будет меньше либо равно количеству работ в любой момент времени.


Времена задаются в часах игрового времени и могут быть дробными.

Установка в коде

  • Необходимо в gulag_tasks.script внести настройку работ для данного типа гулага:
 
t = { section = "kamp1@gar_bandits", 
        idle = 0,
        prior = 1, state = {0}, group = groups[0]
        in_rest = "", out_rest = ""
}
 
Параметр Описание
idle Время в мс. между запусками работы. Если оно отлично от 0, то работа может сетится только раз в заданное время. Если работа просечена – то обнуляться она не будет. Нужно для того чтобы раз в интервал отправлять патрули и другие конечные работы.
prior Приоритет. Сперва заполняются работы с более высоким приоритетом.
state Таблица с перечнем состояний гулага, в которых доступна данная работа.
group Группа для текущей работы, из перечисленных в кастом дате зоны.
in_rest, out_rest in и out рестрикторы для персонажа на текущей работе.


  • Необходимо в gulag_tasks.script добавить функцию просчета состояния для данного типа гулага (см пример в коде - функция loadStates()).
  • В файле gulag_tasks.ltx создать описание каждой работы. Пример смотри в данном файле. Каждая работа должна описываться отдельной секцией (за исключением работ, которые кушают один и те же настройки, например kamp). Имена секций следует давать в соответствии с соглашением ([walker1@имя зоны]).
  • В файле xr_gulag.script добавить функцию проверки на допустимость персонажа к гулагу (см пример в коде - check_npc()).


Часть 1

Другие места
LANGUAGE