Разработка плагинов
Примеры плагинов
В каждой загрузке сервера рядом с программой есть папка examples/. Каждая папка в ней — готовый
ресурс: скопируйте её в resources/, перезапустите сервер, и он заработает. Копию можно менять как
угодно, обновление сервера её не тронет. Список есть и в examples/README.txt.
Что в папке
Заголовок раздела «Что в папке»| Пример | Что показывает | Зачем читать |
|---|---|---|
demo-numbers |
Самый маленький ресурс с обеими частями: клиент раз в секунду шлёт число, сервер пишет его в лог. | Проверить, что клиентские скрипты доходят до игроков и отвечают. |
chat-commands |
/help, /me и /pm: роутер команд на chatMessageRequest. |
Начать свои команды. |
freeroam-example |
Приветствия, событие клиента с ответом сервера, таймеры. | Небольшой ресурс обычного вида. |
vehicle-cleanup |
Удаление машин, которыми никто не пользуется: простаивающих, брошенных хозяином, сверх общего лимита. | Правила из [config]. |
gatekeeper-example |
Отказ во входе, спавне, посадке и правке, каждый с причиной. | Все виды запросов в одном файле. |
seat-demo |
Посадка игроков по команде сервера: посадить, высадить, поменять местами. | player:seat, player:unseat, player:swapWith. |
nodegrab-allow |
Разрешение экспериментального захвата узлов, который без плагина запрещён. | Запрос, закрытый по умолчанию. |
devapi-example |
Обзор API, по одной возможности на событие клиента. | Увидеть вызов в деле, прежде чем читать справочник. |
session-report |
Кто играл, сколько и на чём; отчёт в JSON. Написан на JavaScript. | Готовый ресурс на JavaScript. Нужен js-host. |
Как попробовать
Заголовок раздела «Как попробовать»examples/demo-numbers → resources/demo-numbersСкопируйте папку, перезапустите сервер и найдите строку о загрузке:
demo-numbers v1.0 loaded — lua · server 1 file · 1 client fileБольшинство примеров берут настройки из таблицы [config] своего resource.toml; какие именно —
написано в комментариях в начале resource.toml и server/main.lua.
vehicle-cleanup в двух словах
Заголовок раздела «vehicle-cleanup в двух словах»Сам сервер машины игроков не удаляет: когда игрок уходит, его машины остаются в мире.
vehicle-cleanup добавляет правила, которые вы выберете. Пока вы их не зададите, все выключены:
[config]deleteIdleAfterSeconds = 600deleteOnSpawnerDisconnect = truemaxWorldVehicles = 20includeUnicycles решает, считаются ли пешеходы, checkIntervalMs — как часто проверять правила.
nodegrab-allow и захват узлов
Заголовок раздела «nodegrab-allow и захват узлов»Экспериментальному захвату узлов нужны две вещи: [experimental] node_grab = true в server.toml и
ресурс, который отвечает «да» на vehicleNodeGrabRequest. Без обработчика любой захват запрещён.
nodegrab-allow и есть такой обработчик; поменяйте его правила, чтобы разрешать захват только
некоторым игрокам или машинам.
Собираются из исходников, в архив не входят
Заголовок раздела «Собираются из исходников, в архив не входят»Некоторые плагины — нативные модули, они поставляются исходниками и собираются через CMake:
| Плагин | Что это |
|---|---|
js-host |
Запускает ресурсы на JavaScript (Ресурсы на JavaScript). |
beammp-compat |
Запускает плагины, написанные для BeamMP, без изменений (Переход с других платформ). |
dimensions |
Параллельные миры: игроки из разных измерений не видят друг друга. |
plugin-example |
Самый маленький законченный нативный модуль, от него удобно начинать свой. |
Модуль базы данных db собирается так же, но идёт вместе с сервером в modules/
(Модуль db).