Сповіщення
Очистити все

Налаштування логіки. Частина 0


Ранг:
Майстер
Роль:
Гість
Записи:
752
Приєднався:
2 роки тому
 

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 Група для поточної роботи з перерахованих в кастому дати зони. Масив індексується починаючи з першого.
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() ).

   
Цитата
Ранг:
Майстер
Роль:
Гість
Записи:
752
Приєднався:
2 роки тому

   
ВідповіcтиЦитата