Настройка логики. Часть 0 — различия между версиями
Материал из S.T.A.L.K.E.R. Inside Wiki
Sine (обсуждение | вклад) (→Установка на уровне) |
|||
(не показаны 14 промежуточные версии 3 участников) | |||
Строка 1: | Строка 1: | ||
− | + | {{Шаблон:Настройка логики}} | |
− | + | '''GSC GameWorld''' | |
+ | __NOTOC__ | ||
− | + | =1. Скрипты= | |
− | + | ||
− | Настройка смарттеррейнов: ScriptGulag | + | Скрипты, которые можно использовать при конструировании игровых сцен: '''ScriptList'''. |
+ | |||
+ | Настройка смарттеррейнов: '''ScriptGulag'''. | ||
+ | |||
+ | |||
+ | ==1.1. ГУЛАГ== | ||
+ | |||
+ | |||
+ | ==1.1.1. Что это такое? Особенности== | ||
− | |||
− | |||
Гулаг - средство объединения нескольких сталкеров под централизованным управлением. | Гулаг - средство объединения нескольких сталкеров под централизованным управлением. | ||
Основные особенности: | Основные особенности: | ||
− | + | * есть список работ гулага. Работа - настроенная схема поведения (или цепочка схем поведения); | |
− | + | * работы имеют приоритеты; | |
− | + | * гулаг назначает на работы сталкеров начиная с работ с наивысшим приоритетом; | |
− | + | * гулаг имеет состояния. Состояние - набор работ; | |
− | |||
− | 1. | + | ==1.1.2. Как добавить новый тип гулага== |
− | |||
− | [gulag1] | + | ===Установка на уровне=== |
− | type = < | + | |
+ | *Необходимо установить зону '''smart_terrain''', которая бы накрывала место захвата свежих душ (место спауна сталкеров). Необходимо помнить, что название зоны будет являться префиксом для патрульных путей, относящихся к этому гулагу. | ||
+ | |||
+ | *В '''custom_data''' зоны необходимо прописать настройку гулага: | ||
+ | |||
+ | <ini>[gulag1] | ||
+ | type = <тип_гулага> | ||
squad = <squad> | squad = <squad> | ||
groups = <groups> | groups = <groups> | ||
capacity = <capacity> | capacity = <capacity> | ||
− | idle = min[, max] ;время бездействия после роспуска гулага | + | idle = min[, max] ;время бездействия после роспуска гулага, умолчание=0 |
− | stay = min[, max] ;время, на которое сталкер останется | + | stay = min[, max] ;время, на которое сталкер останется, умолчание=навсегда |
− | duration = min[, max] ; | + | duration = min[, max] ;время существования данного типа гулага, умолчание=всегда |
− | preconditions = info1[, info2, ...] ; | + | preconditions = info1[, info2, ...] ;чтобы данный тип гулага образовался, нужно присутствие всех infoportions |
− | p = вероятность попадания сталкера под смарт терейн в процентах | + | p = number ;вероятность попадания сталкера под смарт терейн в процентах |
− | offline = true/false ; может ли данный гулаг образоваться в офлайне | + | offline = true/false ;может ли данный гулаг образоваться в офлайне</ini> |
+ | |||
+ | {| class="standard highlight" | ||
+ | |- | ||
+ | !Параметр||Описание | ||
+ | |- | ||
+ | |'''<тип_гулага>'''||От него зависит набор и настройка работ. | ||
+ | |- | ||
+ | |'''<squad>'''||Все люди в гулаге будут иметь данный сквад. При отпускании на волю им будет восстанавливаться их родной сквад из редактора. | ||
+ | |- | ||
+ | |'''<groups>'''||Перечень групп, которые будут сетиться для той или иной работы. Задается строкой чисел, разделенных запятыми. | ||
+ | |- | ||
+ | |'''<capacity>'''||Максимальная вместимость гулага. Если количество человек в гулаге достигает этого значения, то больше в гулаг никто не принимается. Количество работ в гулаге в любой момент времени должно быть больше либо равно вместимости. Таким образом количество людей в гулаге гарантированно будет меньше либо равно количеству работ в любой момент времени. | ||
+ | |} | ||
+ | |||
+ | Параметр stay можно подсмотреть в файле \config\misc\smart_terrain | ||
+ | Времена задаются в часах игрового времени и могут быть дробными. | ||
+ | |||
+ | ===Установка в коде=== | ||
+ | |||
+ | *Необходимо в ''gulag_tasks.script'' внести настройку работ для данного типа гулага: | ||
+ | |||
+ | <lua>t = { section = "kamp1@gar_bandits", | ||
+ | idle = 0, | ||
+ | prior = 1, | ||
+ | state = {0}, | ||
+ | group = groups[0] | ||
+ | in_rest = "", | ||
+ | out_rest = "" | ||
+ | }</lua> | ||
+ | |||
+ | {| class="standard highlight" | ||
+ | |- | ||
+ | !Возможные параметры||Описание | ||
+ | |- | ||
+ | |'''section'''||секция логики в файле ''config\misc\gulag_название_уровня.ltx''. | ||
+ | |- | ||
+ | |'''idle'''||Время в мс. между запусками работы. Если оно отлично от 0, то работа может сетится только раз в заданное время. Если работа просечена – то обнуляться она не будет. Нужно для того чтобы раз в интервал отправлять патрули и другие конечные работы. | ||
+ | |- | ||
+ | |'''prior'''||Приоритет. Сперва заполняются работы с более высоким приоритетом. | ||
+ | |- | ||
+ | |'''state'''||Таблица с перечнем состояний гулага, в которых доступна данная работа. | ||
+ | |- | ||
+ | |'''group'''||Группа для текущей работы, из перечисленных в кастом дате зоны. Массив индексируется начиная с 1. | ||
+ | |- | ||
+ | |'''in_rest''', '''out_rest'''||Установленные рестрикторы для персонажа на текущей работе. '''''in''''' - рестрикторы из которых запрещено выходить и '''''out''''' - рестрикторы в которые запрещено входить. | ||
+ | |- | ||
+ | |'''info_rest'''||Устанавливаются рестрикторы, вне зоны которых, персонаж на текущей работе будет игнорировать раздражитель. | ||
+ | |- | ||
+ | |'''position_threshold'''||Расстояние до места работы при котором персонаж в онлайне считается достигшим места работы. | ||
+ | |- | ||
+ | |'''timeout'''||Время, которым задается длительность выполнения работы. | ||
+ | |- | ||
+ | |'''online'''||Возможность выполнять работу только в онлайне | ||
+ | |- | ||
+ | |'''idle_after_death'''||Устанавливается время в течение которого данная работа будет недоступна после её освобождения . | ||
+ | |} | ||
+ | |||
+ | |||
+ | *Необходимо в ''gulag_tasks.script'' добавить функцию просчета состояния для данного типа гулага (см пример в коде - функция '''''loadStates()'''''). | ||
− | + | *В файле ''gulag_tasks.ltx'' создать описание каждой работы. Пример смотри в данном файле. Каждая работа должна описываться отдельной секцией (за исключением работ, которые кушают один и те же настройки, например '''''kamp'''''). Имена секций следует давать в соответствии с соглашением ('''''[walker1@имя зоны]'''''). | |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | *В файле ''xr_gulag.script'' добавить функцию проверки на допустимость персонажа к гулагу (см пример в коде - '''''check_npc()'''''). | |
− | + | ---- | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | + | <font size = 5>[[Часть 1]]</font> | |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | [[Категория:A-Life]][[Категория:Скрипты]] | |
− | + | ||
− | + |
Текущая версия на 21:51, 10 июня 2012
Содержание |
---|
Настройка логики. Часть 0 |
GSC GameWorld
1. Скрипты
Скрипты, которые можно использовать при конструировании игровых сцен: ScriptList.
Настройка смарттеррейнов: ScriptGulag.
1.1. ГУЛАГ
1.1.1. Что это такое? Особенности
Гулаг - средство объединения нескольких сталкеров под централизованным управлением.
Основные особенности:
- есть список работ гулага. Работа - настроенная схема поведения (или цепочка схем поведения);
- работы имеют приоритеты;
- гулаг назначает на работы сталкеров начиная с работ с наивысшим приоритетом;
- гулаг имеет состояния. Состояние - набор работ;
1.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> | Максимальная вместимость гулага. Если количество человек в гулаге достигает этого значения, то больше в гулаг никто не принимается. Количество работ в гулаге в любой момент времени должно быть больше либо равно вместимости. Таким образом количество людей в гулаге гарантированно будет меньше либо равно количеству работ в любой момент времени. |
Параметр stay можно подсмотреть в файле \config\misc\smart_terrain Времена задаются в часах игрового времени и могут быть дробными.
Установка в коде
- Необходимо в gulag_tasks.script внести настройку работ для данного типа гулага:
t = { section = "kamp1@gar_bandits", idle = 0, prior = 1, state = {0}, group = groups[0] in_rest = "", out_rest = "" }
Возможные параметры | Описание |
---|---|
section | секция логики в файле config\misc\gulag_название_уровня.ltx. |
idle | Время в мс. между запусками работы. Если оно отлично от 0, то работа может сетится только раз в заданное время. Если работа просечена – то обнуляться она не будет. Нужно для того чтобы раз в интервал отправлять патрули и другие конечные работы. |
prior | Приоритет. Сперва заполняются работы с более высоким приоритетом. |
state | Таблица с перечнем состояний гулага, в которых доступна данная работа. |
group | Группа для текущей работы, из перечисленных в кастом дате зоны. Массив индексируется начиная с 1. |
in_rest, out_rest | Установленные рестрикторы для персонажа на текущей работе. in - рестрикторы из которых запрещено выходить и out - рестрикторы в которые запрещено входить. |
info_rest | Устанавливаются рестрикторы, вне зоны которых, персонаж на текущей работе будет игнорировать раздражитель. |
position_threshold | Расстояние до места работы при котором персонаж в онлайне считается достигшим места работы. |
timeout | Время, которым задается длительность выполнения работы. |
online | Возможность выполнять работу только в онлайне |
idle_after_death | Устанавливается время в течение которого данная работа будет недоступна после её освобождения . |
- Необходимо в gulag_tasks.script добавить функцию просчета состояния для данного типа гулага (см пример в коде - функция loadStates()).
- В файле gulag_tasks.ltx создать описание каждой работы. Пример смотри в данном файле. Каждая работа должна описываться отдельной секцией (за исключением работ, которые кушают один и те же настройки, например kamp). Имена секций следует давать в соответствии с соглашением ([walker1@имя зоны]).
- В файле xr_gulag.script добавить функцию проверки на допустимость персонажа к гулагу (см пример в коде - check_npc()).