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() ).
ПЕРЕЛІК НАЛАШТУВАННЯ ЛОГІКИ ПО ЧАСТИНАМ:
Частина 0: https://stalker-news.info/forum/kvesty-ta-lohika-tch/nalashtuvannia-lohiky-chastyna-0/
Частина 1: https://stalker-news.info/forum/kvesty-ta-lohika-pp/nalashtuvannia-lohiky-chastyna-1/
Частина 2: https://stalker-news.info/forum/kvesty-ta-lohika-pp/nalashtuvannia-lohiky-chastyna-2/
Частина 3: https://stalker-news.info/forum/kvesty-ta-lohika-pp/nalashtuvannia-lohiky-chastyna-3/
Частина 4: https://stalker-news.info/forum/kvesty-ta-lohika-pp/nalashtuvannia-lohiky-chastyna-4/