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

Настройка логики. Часть 0 — различия между версиями

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

Перейти к: навигация, поиск
(Установка на уровне)
 
(не показаны 11 промежуточные версии 3 участников)
Строка 1: Строка 1:
==1. Changes Log==
+
{{Шаблон:Настройка логики}}
  
<NULL>
+
'''GSC GameWorld'''
 +
__NOTOC__
  
==2. Скрипты==
+
=1. Скрипты=
Скрипты, которые можно использовать при конструировании игровых сцен: ScriptList
+
  
Настройка смарттеррейнов: ScriptGulag
+
Скрипты, которые можно использовать при конструировании игровых сцен: '''ScriptList'''.
 +
 
 +
Настройка смарттеррейнов: '''ScriptGulag'''.
 +
 
 +
 
 +
==1.1. ГУЛАГ==
 +
 
 +
 
 +
==1.1.1. Что это такое? Особенности==
  
==2.1. ГУЛАГ==
 
==2.1.1. Что это такое? Особенности==
 
 
Гулаг - средство объединения нескольких сталкеров под централизованным управлением.
 
Гулаг - средство объединения нескольких сталкеров под централизованным управлением.
  
Основные особенности:<br>
+
Основные особенности:
 +
 
 +
* есть список работ гулага. Работа - настроенная схема поведения (или цепочка схем  поведения);
 +
* работы имеют приоритеты;
 +
* гулаг назначает на работы сталкеров начиная с работ с наивысшим приоритетом;
 +
* гулаг имеет состояния. Состояние - набор работ;
 +
 
 +
 
 +
==1.1.2. Как добавить новый тип гулага==
 +
 
 +
 
 +
===Установка на уровне===
 +
 
 +
*Необходимо установить зону '''smart_terrain''', которая бы накрывала место захвата свежих душ (место спауна сталкеров). Необходимо помнить, что название зоны будет являться префиксом для патрульных путей, относящихся к этому гулагу.
 +
 
 +
*В '''custom_data''' зоны необходимо прописать настройку гулага:
 +
 
 +
<ini>[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                ;может ли данный гулаг образоваться в офлайне</ini>
 +
 
 +
{| class="standard highlight"
 +
|-
 +
!Параметр||Описание
 +
|-
 +
|'''<тип_гулага>'''||От него зависит набор и настройка работ.
 +
|-
 +
|'''<squad>'''||Все люди в гулаге будут иметь данный сквад. При отпускании на волю им будет восстанавливаться их родной сквад из редактора.
 +
|-
 +
|'''<groups>'''||Перечень групп, которые будут сетиться для той или иной работы. Задается строкой чисел, разделенных запятыми.
 +
|-
 +
|'''<capacity>'''||Максимальная вместимость гулага. Если количество человек в гулаге достигает этого значения, то больше в гулаг никто не принимается. Количество работ в гулаге в любой момент времени должно быть больше либо равно вместимости. Таким образом количество людей в гулаге гарантированно будет меньше либо равно количеству работ в любой момент времени.
 +
|}
 +
 
 +
Параметр stay можно подсмотреть в файле \config\misc\smart_terrain
 +
Времена задаются в часах игрового времени и могут быть дробными.
 +
 
 +
===Установка в коде===
 +
 
 +
*Необходимо в ''gulag_tasks.script'' внести настройку работ для данного типа гулага:
  
* есть список работ гулага. Работа - настроенная схема поведения (или цепочка схем  поведения);<br>
+
<lua>t = { section  = "kamp1@gar_bandits",
* работы имеют приоритеты;<br>
+
      idle    = 0,
* гулаг назначает на работы сталкеров начиная с работ с наивысшим приоритетом;<br>
+
      prior    = 1,
* гулаг имеет состояния. Состояние - набор работ;<br>
+
      state    = {0},
 +
      group    = groups[0]
 +
      in_rest  = "",
 +
      out_rest = ""
 +
    }</lua>
  
==2.1.2. Как добавить новый тип гулага==
+
{| 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'''||Устанавливается время в течение которого данная работа будет недоступна после её освобождения .
 +
|}
  
===1. Установка на уровне.===
 
  
- Необходимо установить зону smart_terrain, которая бы накрывала место захвата свежих душ (место спауна сталкеров). Необходимо помнить, что название зоны будет являться префиксом для патрульных путей, относящихся к этому гулагу. В custom_data зоны необходимо прописать настройку гулага: <br>
+
*Необходимо в ''gulag_tasks.script'' добавить функцию просчета состояния для данного типа гулага (см пример в коде - функция '''''loadStates()''''').
  
[gulag1] <br>
+
*В файле ''gulag_tasks.ltx'' создать описание каждой работы. Пример смотри в данном файле. Каждая работа должна описываться отдельной секцией (за исключением работ, которые кушают один и те же настройки, например '''''kamp'''''). Имена секций следует давать в соответствии с соглашением ('''''[walker1@имя зоны]''''').
type = <тип гулага> <br>
+
squad = <squad> <br>
+
groups = <groups> <br>
+
capacity = <capacity> <br>
+
idle = min[, max] ;время бездействия после роспуска гулага. умолчание=0 <br>
+
stay = min[, max] ;время, на которое сталкер останется. умолчание=навсегда <br>
+
duration = min[, max] ; вермя существования данного типа гулага. умолчание=всегда <br>
+
preconditions = info1[, info2, ...] ; чтоб данный тип гулага образовался, нужно присутствие всех infoportions <br>
+
p = вероятность попадания сталкера под смарт терейн в процентах <br>
+
offline = true/false ; может ли данный гулаг образоваться в офлайне <br>
+
<br>
+
времена задаются в часах игрового времени и могут быть дробными<br>
+
  
где:<br>
+
*В файле ''xr_gulag.script'' добавить функцию проверки на допустимость персонажа к гулагу (см пример в коде - '''''check_npc()''''').
<тип гулага> - от него зависит набор и настройка работ.<br>
+
<squad> - все люди в гулаге будут иметь данный сквад. При отпускании на волю им будет восстанавливаться их родной сквад из редактора.<br>
+
<groups> - перечень групп, которые будут сетиться для той или иной работы. Задается строкой чисел, разделенных запятыми.<br>
+
<capacity> - максимальная вместимость гулага. Если количество человек в гулаге достигает этого значения, то больше в гулаг никто не принимается. Количество работ в гулаге в любой момент времени должно быть больше либо равно вместимости. Таким образом количество людей в гулаге гарантированно будет меньше либо равно количеству работ в любой момент времени.<br>
+
  
=== 2. Установка в коде. ===
+
----
<br>
+
- необходимо в gulag_tasks.script внести настройку работ для данного типа гулага <br>
+
<code>
+
t = { section = "kamp1@gar_bandits",
+
        idle = 0,
+
        prior = 1, state = {0}, group = groups[0]
+
        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>
 
  
 +
<font size = 5>[[Часть 1]]</font>
  
[[Категория:Скрипты]]
+
[[Категория:A-Life]][[Категория:Скрипты]]

Текущая версия на 21:51, 10 июня 2012

Содержание

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

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()).


Часть 1

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