Перейти к содержимому

Разработка плагинов

Примеры плагинов

В каждой загрузке сервера рядом с программой есть папка 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 добавляет правила, которые вы выберете. Пока вы их не зададите, все выключены:

[config]
deleteIdleAfterSeconds = 600
deleteOnSpawnerDisconnect = true
maxWorldVehicles = 20

includeUnicycles решает, считаются ли пешеходы, checkIntervalMs — как часто проверять правила.

Экспериментальному захвату узлов нужны две вещи: [experimental] node_grab = true в server.toml и ресурс, который отвечает «да» на vehicleNodeGrabRequest. Без обработчика любой захват запрещён. nodegrab-allow и есть такой обработчик; поменяйте его правила, чтобы разрешать захват только некоторым игрокам или машинам.

Собираются из исходников, в архив не входят

Заголовок раздела «Собираются из исходников, в архив не входят»

Некоторые плагины — нативные модули, они поставляются исходниками и собираются через CMake:

Плагин Что это
js-host Запускает ресурсы на JavaScript (Ресурсы на JavaScript).
beammp-compat Запускает плагины, написанные для BeamMP, без изменений (Переход с других платформ).
dimensions Параллельные миры: игроки из разных измерений не видят друг друга.
plugin-example Самый маленький законченный нативный модуль, от него удобно начинать свой.

Модуль базы данных db собирается так же, но идёт вместе с сервером в modules/ (Модуль db).