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
)
- При заходе на сервер игрок появится в башне за класс "Обучение", ему показывается broadcast про ивент.
- После смерти игрок не остаётся в спектаторах, а появляется в башне за класс "Обучение", ему показывается соответствующий broadcast.
- Научные сотрудники не могут брать CrossVec, пулемёт МОГ, MTFE!11SR, AK, Logicer, Дробовик, A7, COM45, MicroHID.
- Рабочие не могут брать: CrossVec, пулемёт МОГ, MTFE!11SR, AK, Logicer, Дробовик, A7, COM45, FSP9.
- Все игровые классы, кроме ЭВС и БУО, не могут брать Logicer, пулемёт МОГ и MicroHID.
- В Зелёный/Изумрудный код трупы очищаются при появлении.
- Если ClassD поднимет оружие в Зелёный/Изумрудный код - объявляется Синий.
- SCP-035 не может выкинуть свой револьвер.
- SCP-035 не может брать: Medkit/Painkillers + оружие, кроме: револьвер/пистолеты/jailbird/дробовик
- SCP-035 имеет автозаполнение патрон на револьвер (стрельба без перезарядки)
- SCP-035 не получает эффекты от использования: SCP-207, SCP-207?, SCP-500
- SCP-008-2 получает мут при спавне, размут при смерти.
Команды (админские, управление игрой)
roledistr
- спавнит людей по двум башням (военные и не-военные классы) согласно их ролям в БД. Для получения ролей из БД делает GET-запрос на поднятый HTTP-сервер.code <CODE>
- ставит игровой код (состояние раунда). Принимает параметрыgreen
,emerald
,blue
,orange
,yellow
,red
.lunch
- запускает обед, кидает CASSIE о начале. Через 5 минут кидается CASSIE об окончании обеда.redoors
- закрывает все двери, кидает CASSIE об этом.\allowspawn
- позволяет игрокам использовать.classd
.lock173gate
- блокирует ворота 173 в ТЗС (на этаже 049).lock049gate
- блокирует ворота 049 в ТЗС (на этаже 049).checkcode
- выводит текущий код.gocm <ID> [ID] ...
- отправляет на поверхность комплекса выбранных игроков с cassie прибытия персоналаvudclear
- очищает вещи на карте, кроме тех, что перечислены в конфиге. (MedKit / Micro H.I.D. / MTF-E11-SR / COM-15 / Radio / Все патроны / SCP-500 / SCP-1853 / SCP-244)vudsupply <тип поставки> <тип предмета (для scp)> <количество (для scp/food)>
- поставляет запасы для комплекса. 11.1. Типы поставок -med
,scp
,food
,security
. 11.2. Типы предметов -500
,1853
,207
.breach244
- открывает все вазы (SCP-244 A/B). НУС SCP-244.recontain244
- закрывает все вазы (SCP-244 A/B). ВОУС SCP-244.
Команды (админские, спавн стажёров, которых нет в БД)
Всем заспавнившимся кидается broadcast с кратким описанием игрового класса. У всех перечисленных ниже классов инвентарь и hp изменяются в конфиге.
vudclassd <ID> [ID] ...
- спавнит Испытуемого(ых), телепортирует в камеру и связывает.vudworker <ID> [ID] ...
- спавнит Рабочего(их).vudscience <ID> [ID] ...
- спавнит Научного Сотрудника(ов).vudguard <ID> [ID] ...
- спавнит Охранника(ов).spawnbuo <ID> [ID] ...
- спавнит бойцов БУО.
Команды (админские, спавн SCP)
У всех перечисленных ниже классов характеристики изменяются в конфиге.
spawn035 <ID>
- спавнит SCP-035.spawn035-2 <ID>
- спавнит 035-2.spawn049 <ID>
- спавнит SCP-049.spawn076-2 <ID>
- спавнит SCP-076-2.spawn372 <ID>
- спавнит SCP-372.spawn966 <ID>
- спавнит SCP-966.spawn682 <ID>
- спавнит SCP-682-MT. Постфикс MT означает нашу модификацию объекта.spawn999 <ID>
- спавнит SCP-999.
Команды (пользовательские)
.classd
- позволяет игрокам из Обучения появиться за Испытуемых. Спавнит людей раз в 5 минут (отсчёт идёт с момента включения плагина), не больше 3х за раз, всего заспавненных самостоятельно не более 5. Заспавненные черезvudclassd
не учитываются в цифре 5..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
:
СБ
:Стажёр
,Рядовой
,Сержант
,Лейтенант
,Глава
.ЭВС
:Боец
,Джаггернаут
,Экзобоец
,Глава
.Агентство
:Младший агент
,Старший агент
.НС
:Стажёр
,Психолог
,Инженер
,Исследователь
,Медик
,Научный руководитель
,Глава
.Рабочие
:Рабочий
,Старший рабочий
.Испытуемые
:Испытуемый
.Административный персонал
:Менеджер зоны
,Директор зоны
.
Мы использовали дискорд-бота для того, чтобы удобно работать с базой данных (потому в БД и используется поле discord
), но вы можете придумать своё решение.
Чтобы плагин корректно работал с БД, вам надо поднять HTTP-сервер с подключением к БД, который будет отвечать на GET-запросы по пути /get_user/<steamid>
JSON-ом с полями из БД:
[steamid, custominfo, name, department, role]