Skip to content

Latest commit

 

History

History
119 lines (91 loc) · 10.9 KB

README.md

File metadata and controls

119 lines (91 loc) · 10.9 KB

VeryUsualDay

Warning

Плагин находится в стадии рефакторинга, я переписываю код, который писал год назад, скоро всё станет лучше. Документация в README.md может быть неактуальной.

Это - плагин для проведения закрытого RolePlay-ивента "Foundation-X".

Старая версия плагина была предназначена для закрытого RolePlay-ивента "Слишком обычный день" (VUD), который был придуман и проводился на сервере SCP:SL AmSerg Events с июня 2023 по июнь 2024 года. Старая версия плагина находится в ветке vud.

Исходный код лицензирован под Apache License 2.0, текст лицензии находится в файле LICENSE.

Автор ивента версии VUD - Kennie (@kennie4482 / @KennieSerg). Автор ивента версии FX - koldun212.

В случае, если этот репозиторий - публичный, вы можете свободно использовать плагин, если хотите проводить этот ивент, однако вам стоит учесть, что помимо плагина вам потребуется поднять БД и веб-сервер, их структура описана в одном из разделов ниже.

Суть ивента

Ивент заключается в полной отыгровке рабочего дня персонала одного из комплексов (Зоны-02) SCP Foundation. Ивент проводится в режиме FULL RP со свободой отыгрыша, администраторы по сути своей лишь контролируют рп-процесс, не вмешиваясь в него слишком сильно.

Если вы хотите узнать больше - напишите Автору ивента, либо вернитесь на эту страницу, когда полное описание ивента будет добавлено сюда.

Возможности плагина

Главный рычаг

Командой-переключателем является vudmode. Эта команда включает и выключает плагин, с выключенным плагином все его функции перестанут работать. При выключении плагина все его параметры (количество прибывших бойцов БУО, информация об утечке SCP-008) сбрасываются к параметрам по умолчанию.

Возможности по умолчанию (работает пассивно, активируется после команды vudmode)

  1. При заходе на сервер игрок появится в башне за класс "Обучение", ему показывается broadcast про ивент.
  2. После смерти игрок не остаётся в спектаторах, а появляется в башне за класс "Обучение", ему показывается соответствующий broadcast.
  3. Научные сотрудники не могут брать CrossVec, пулемёт МОГ, MTFE!11SR, AK, Logicer, Дробовик, A7, COM45, MicroHID.
  4. Рабочие не могут брать: CrossVec, пулемёт МОГ, MTFE!11SR, AK, Logicer, Дробовик, A7, COM45, FSP9.
  5. Все игровые классы, кроме ЭВС и БУО, не могут брать Logicer, пулемёт МОГ и MicroHID.
  6. В Зелёный/Изумрудный код трупы очищаются при появлении.
  7. Если ClassD поднимет оружие в Зелёный/Изумрудный код - объявляется Синий.
  8. SCP-035 не может выкинуть свой револьвер.
  9. SCP-035 не может брать: Medkit/Painkillers + оружие, кроме: револьвер/пистолеты/jailbird/дробовик
  10. SCP-035 имеет автозаполнение патрон на револьвер (стрельба без перезарядки)
  11. SCP-035 не получает эффекты от использования: SCP-207, SCP-207?, SCP-500
  12. SCP-008-2 получает мут при спавне, размут при смерти.

Команды (админские, управление игрой)

  1. roledistr - спавнит людей по двум башням (военные и не-военные классы) согласно их ролям в БД. Для получения ролей из БД делает GET-запрос на поднятый HTTP-сервер.
  2. code <CODE> - ставит игровой код (состояние раунда). Принимает параметры green, emerald, blue, orange, yellow, red.
  3. lunch - запускает обед, кидает CASSIE о начале. Через 5 минут кидается CASSIE об окончании обеда.
  4. redoors - закрывает все двери, кидает CASSIE об этом.\
  5. allowspawn - позволяет игрокам использовать .classd.
  6. lock173gate - блокирует ворота 173 в ТЗС (на этаже 049).
  7. lock049gate - блокирует ворота 049 в ТЗС (на этаже 049).
  8. checkcode - выводит текущий код.
  9. gocm <ID> [ID] ... - отправляет на поверхность комплекса выбранных игроков с cassie прибытия персонала
  10. vudclear - очищает вещи на карте, кроме тех, что перечислены в конфиге. (MedKit / Micro H.I.D. / MTF-E11-SR / COM-15 / Radio / Все патроны / SCP-500 / SCP-1853 / SCP-244)
  11. vudsupply <тип поставки> <тип предмета (для scp)> <количество (для scp/food)> - поставляет запасы для комплекса. 11.1. Типы поставок - med, scp, food, security. 11.2. Типы предметов - 500, 1853, 207.
  12. breach244 - открывает все вазы (SCP-244 A/B). НУС SCP-244.
  13. recontain244 - закрывает все вазы (SCP-244 A/B). ВОУС SCP-244.

Команды (админские, спавн стажёров, которых нет в БД)

Всем заспавнившимся кидается broadcast с кратким описанием игрового класса. У всех перечисленных ниже классов инвентарь и hp изменяются в конфиге.

  1. vudclassd <ID> [ID] ... - спавнит Испытуемого(ых), телепортирует в камеру и связывает.
  2. vudworker <ID> [ID] ... - спавнит Рабочего(их).
  3. vudscience <ID> [ID] ... - спавнит Научного Сотрудника(ов).
  4. vudguard <ID> [ID] ... - спавнит Охранника(ов).
  5. spawnbuo <ID> [ID] ... - спавнит бойцов БУО.

Команды (админские, спавн SCP)

У всех перечисленных ниже классов характеристики изменяются в конфиге.

  1. spawn035 <ID> - спавнит SCP-035.
  2. spawn035-2 <ID> - спавнит 035-2.
  3. spawn049 <ID> - спавнит SCP-049.
  4. spawn076-2 <ID> - спавнит SCP-076-2.
  5. spawn372 <ID> - спавнит SCP-372.
  6. spawn966 <ID> - спавнит SCP-966.
  7. spawn682 <ID> - спавнит SCP-682-MT. Постфикс MT означает нашу модификацию объекта.
  8. spawn999 <ID> - спавнит SCP-999.

Команды (пользовательские)

  1. .classd - позволяет игрокам из Обучения появиться за Испытуемых. Спавнит людей раз в 5 минут (отсчёт идёт с момента включения плагина), не больше 3х за раз, всего заспавненных самостоятельно не более 5. Заспавненные через vudclassd не учитываются в цифре 5.
  2. .code - показывает код и статус обеда

База данных

С самого начала, одной из ключевых фишек СОДа была лёгкость при старте: плагин сам поддерживал нужный режим игры и сам спавнил игроков за нужные роли. Эти роли + другие метаданные о игроках должны храниться в Базе Данных. Я использовал MariaDB в качестве СУБД. Ниже описана структура таблицы metalrp.

CREATE TABLE `metalrp` (
  `discord` bigint(20) NOT NULL,
  `steamid` text DEFAULT NULL,
  `custominfo` text DEFAULT NULL,
  `name` text DEFAULT NULL,
  `role` text DEFAULT NULL,
  `department` text DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;

Возможные значения для department - СБ, ЭВС, Агентство, НС, Рабочие, Испытуемые, Административный персонал.

Возможные значения для role:

  1. СБ: Стажёр, Рядовой, Сержант, Лейтенант, Глава.
  2. ЭВС: Боец, Джаггернаут, Экзобоец, Глава.
  3. Агентство: Младший агент, Старший агент.
  4. НС: Стажёр, Психолог, Инженер, Исследователь, Медик, Научный руководитель, Глава.
  5. Рабочие: Рабочий, Старший рабочий.
  6. Испытуемые: Испытуемый.
  7. Административный персонал: Менеджер зоны, Директор зоны.

Мы использовали дискорд-бота для того, чтобы удобно работать с базой данных (потому в БД и используется поле discord), но вы можете придумать своё решение.

Чтобы плагин корректно работал с БД, вам надо поднять HTTP-сервер с подключением к БД, который будет отвечать на GET-запросы по пути /get_user/<steamid> JSON-ом с полями из БД:

[steamid, custominfo, name, department, role]