Настройка логики. Часть 0 — различия между версиями
Материал из S.T.A.L.K.E.R. Inside Wiki
Строка 12: | Строка 12: | ||
Гулаг - средство объединения нескольких сталкеров под централизованным управлением. | Гулаг - средство объединения нескольких сталкеров под централизованным управлением. | ||
− | Основные особенности: | + | Основные особенности:<br> |
− | + | * есть список работ гулага. Работа - настроенная схема поведения (или цепочка схем поведения);<br> | |
− | + | * работы имеют приоритеты;<br> | |
− | + | * гулаг назначает на работы сталкеров начиная с работ с наивысшим приоритетом;<br> | |
− | + | * гулаг имеет состояния. Состояние - набор работ;<br> | |
==2.1.2. Как добавить новый тип гулага== | ==2.1.2. Как добавить новый тип гулага== | ||
− | 1. Установка на уровне. | + | ===1. Установка на уровне.=== |
− | + | - Необходимо установить зону smart_terrain, которая бы накрывала место захвата свежих душ (место спауна сталкеров). Необходимо помнить, что название зоны будет являться префиксом для патрульных путей, относящихся к этому гулагу. В custom_data зоны необходимо прописать настройку гулага: <br> | |
− | [gulag1] | + | [gulag1] <br> |
− | type = <тип гулага> | + | type = <тип гулага> <br> |
− | squad = <squad> | + | squad = <squad> <br> |
− | groups = <groups> | + | groups = <groups> <br> |
− | capacity = <capacity> | + | capacity = <capacity> <br> |
− | idle = min[, max] ;время бездействия после роспуска гулага. умолчание=0 | + | idle = min[, max] ;время бездействия после роспуска гулага. умолчание=0 <br> |
− | stay = min[, max] ;время, на которое сталкер останется. умолчание=навсегда | + | stay = min[, max] ;время, на которое сталкер останется. умолчание=навсегда <br> |
− | duration = min[, max] ; вермя существования данного типа гулага. умолчание=всегда | + | duration = min[, max] ; вермя существования данного типа гулага. умолчание=всегда <br> |
− | preconditions = info1[, info2, ...] ; чтоб данный тип гулага образовался, нужно присутствие всех infoportions | + | preconditions = info1[, info2, ...] ; чтоб данный тип гулага образовался, нужно присутствие всех infoportions <br> |
− | p = вероятность попадания сталкера под смарт терейн в процентах | + | p = вероятность попадания сталкера под смарт терейн в процентах <br> |
− | offline = true/false ; может ли данный гулаг образоваться в офлайне | + | offline = true/false ; может ли данный гулаг образоваться в офлайне <br> |
+ | <br> | ||
+ | времена задаются в часах игрового времени и могут быть дробными<br> | ||
− | + | где:<br> | |
− | где: | + | <тип гулага> - от него зависит набор и настройка работ.<br> |
− | <тип гулага> - от него зависит набор и настройка работ. | + | <squad> - все люди в гулаге будут иметь данный сквад. При отпускании на волю им будет восстанавливаться их родной сквад из редактора.<br> |
− | <squad> - все люди в гулаге будут иметь данный сквад. При отпускании на волю им будет восстанавливаться их родной сквад из редактора. | + | <groups> - перечень групп, которые будут сетиться для той или иной работы. Задается строкой чисел, разделенных запятыми.<br> |
− | <groups> - перечень групп, которые будут сетиться для той или иной работы. Задается строкой чисел, разделенных запятыми. | + | <capacity> - максимальная вместимость гулага. Если количество человек в гулаге достигает этого значения, то больше в гулаг никто не принимается. Количество работ в гулаге в любой момент времени должно быть больше либо равно вместимости. Таким образом количество людей в гулаге гарантированно будет меньше либо равно количеству работ в любой момент времени.<br> |
− | <capacity> - максимальная вместимость гулага. Если количество человек в гулаге достигает этого значения, то больше в гулаг никто не принимается. Количество работ в гулаге в любой момент времени должно быть больше либо равно вместимости. Таким образом количество людей в гулаге гарантированно будет меньше либо равно количеству работ в любой момент времени. | + | |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
+ | === 2. Установка в коде. === | ||
+ | <br> | ||
+ | - необходимо в gulag_tasks.script внести настройку работ для данного типа гулага <br> | ||
+ | <code> | ||
t = { section = "kamp1@gar_bandits", | t = { section = "kamp1@gar_bandits", | ||
idle = 0, | idle = 0, | ||
prior = 1, state = {0}, group = groups[0] | prior = 1, state = {0}, group = groups[0] | ||
in_rest = "", out_rest = "" | in_rest = "", out_rest = "" | ||
− | } | + | } </code> |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | Idle – время в мс между запусками работы. Если оно отлично от 0, то работа может сетится только раз в заданное время. Если работа просечена – то обнуляться она не будет. Нужно для того чтобы раз в интервал отправлять патрули и другие конечные работы<br> | |
− | + | Prior – приоритет. Сперва заполняются работы с более высоким приоритетом.<br> | |
− | + | State - таблица с перечнем состояний гулага, в которых доступна данная работа.<br> | |
+ | Group – группа для текущей работы, из перечисленных в кастом дате зоны.<br> | ||
+ | In_rest, out_rest - In и out рестрикторы для персонажа на текущей работе.<br> | ||
+ | <br> | ||
+ | - необходимо в gulag_tasks.script добавить функцию просчета состояния для данного типа гулага (см пример в коде. Функция loadStates())<br> | ||
+ | - в файле gulag_tasks.ltx создать описание каждой работы. Пример смотри в данном файле. Каждая работа должна описываться отдельной секцией(за исключением работ, которые кушают один и те же настройки, например kamp). Имена секций следует давать в соответствии с соглашением([walker1@имя зоны])<br> | ||
+ | - в файле xr_gulag.script добавить функцию проверки на допустимость персонажа к гулагу (см пример в коде check_npc())<br> | ||
[[Категория:Скрипты]] | [[Категория:Скрипты]] |
Версия 09:34, 10 марта 2010
Содержание
1. Changes Log
<NULL>
2. Скрипты
Скрипты, которые можно использовать при конструировании игровых сцен: ScriptList
Настройка смарттеррейнов: ScriptGulag
2.1. ГУЛАГ
2.1.1. Что это такое? Особенности
Гулаг - средство объединения нескольких сталкеров под централизованным управлением.
Основные особенности:
- есть список работ гулага. Работа - настроенная схема поведения (или цепочка схем поведения);
- работы имеют приоритеты;
- гулаг назначает на работы сталкеров начиная с работ с наивысшим приоритетом;
- гулаг имеет состояния. Состояние - набор работ;
2.1.2. Как добавить новый тип гулага
1. Установка на уровне.
- Необходимо установить зону 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 = вероятность попадания сталкера под смарт терейн в процентах
offline = true/false ; может ли данный гулаг образоваться в офлайне
времена задаются в часах игрового времени и могут быть дробными
где:
<тип гулага> - от него зависит набор и настройка работ.
<squad> - все люди в гулаге будут иметь данный сквад. При отпускании на волю им будет восстанавливаться их родной сквад из редактора.
<groups> - перечень групп, которые будут сетиться для той или иной работы. Задается строкой чисел, разделенных запятыми.
<capacity> - максимальная вместимость гулага. Если количество человек в гулаге достигает этого значения, то больше в гулаг никто не принимается. Количество работ в гулаге в любой момент времени должно быть больше либо равно вместимости. Таким образом количество людей в гулаге гарантированно будет меньше либо равно количеству работ в любой момент времени.
2. Установка в коде.
- необходимо в 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())