Настройка логики. Часть 0 — различия между версиями — S.T.A.L.K.E.R. Inside Wiki

Настройка логики. Часть 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 зоны необходимо прописать настройку гулага:  
+
- Необходимо установить зону 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. Установка в коде.
+
 
+
      - необходимо в gulag_tasks.script внести настройку работ для данного типа гулага
+
  
 +
=== 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, то работа может сетится только раз  в заданное время. Если работа просечена – то обнуляться она не будет. Нужно для того чтобы раз в интервал отправлять патрули и другие конечные работы
+
Prior – приоритет. Сперва заполняются работы с более высоким приоритетом.
+
State - таблица с перечнем состояний гулага, в которых доступна данная работа.
+
Group – группа для текущей работы, из перечисленных в кастом дате зоны.
+
In_rest, out_rest - In и out рестрикторы для персонажа на текущей работе.
+
  
      - необходимо в gulag_tasks.script добавить функцию просчета состояния для данного типа гулага (см пример в коде. Функция loadStates())
+
Idle – время в мс между запусками работы. Если оно отлично от 0, то работа может сетится только раз  в заданное время. Если работа просечена – то обнуляться она не будет. Нужно для того чтобы раз в интервал отправлять патрули и другие конечные работы<br>
      - в файле gulag_tasks.ltx создать описание каждой работы. Пример смотри в данном файле. Каждая работа должна описываться отдельной секцией(за исключением работ, которые кушают один и те же настройки, например kamp). Имена секций следует давать в соответствии с соглашением([walker1@имя зоны])
+
Prior – приоритет. Сперва заполняются работы с более высоким приоритетом.<br>
      - в файле xr_gulag.script добавить функцию проверки на допустимость персонажа к гулагу (см пример в коде check_npc())
+
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())

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