Authum — загрузчик модулей для Metamod-P (HLDS)

Authum — загрузчик модулей для Metamod-P (HLDS) 2.0.1

Версия Дата выпуска Скачивания Рейтинг  
2.0.1 13 0,00 звёзд Оценок: 0 Скачать
2.0.0 5 0,00 звёзд Оценок: 0 Скачать
1.0.0 13 0,00 звёзд Оценок: 0 Скачать
Что нового в 2.0.1 по сравнению с 2.0.0

Обновление совместимое: ABI модулей не изменился (0.3.0), модули, собранные под 2.0.0, работают без пересборки. Достаточно заменить authum_mm.so.

Для администраторов серверов
  • MySQL стал надёжнее — знак ? внутри кавычек, имён в обратных кавычках и комментариев больше не подменяется параметром. Сняты ограничения в 255 байт на текст и 2048 байт на запрос. Ошибки сервера сохраняются на каждом шаге, соединение работает в utf8mb4 (эмодзи и любые символы в никах).
  • JSON разбирается строго по стандарту — ключ внутри строкового значения больше не принимается за поле, все escape-последовательности (включая \uXXXX) декодируются, дробное число не читается как целое (1.5 раньше становилось 1).
  • SQLite 3.46.1 обновлён и теперь входит в библиотеку lh. Для сервера ничего не меняется.

Для разработчиков модулей
  • Новые события от Authum— модулю по-прежнему не нужны свои хуки Metamod:
    • authum.client.command — любая команда игрока (say, menuselect и т.д.) с аргументами; обработчик может заблокировать команду, и игра её не увидит.
    • authum.client.cvar_value — ответ клиента на запрос значения его cvar (QueryClientCvarValue2).
    • authum.server.activate / deactivate — карта загружена / смена карты; в событии имя карты и maxplayers.
    • authum.server.frame — каждый кадр сервера.
  • Ed25519 — генерация ключей, подпись и проверка подписи (RFC 8032, на основе Monocypher 4.0.2). Подходит для проверки лицензий, токенов и ответов вашего API.
  • Хуки движка — <authum/symbol.h> находит адрес функции или переменной в уже загруженной библиотеке, включая внутренние символы, которые движок 10211 не экспортирует. <authum/detour.h> ставит 5-байтовый jmp-хук на x86 с attach / detach / suspend / resume. Раньше этот код жил внутри qproto, теперь одна копия на все модули.
  • IP сервера — <authum/net.h> отдаёт внешние и внутренние IPv4-адреса машины. Пригодится, когда HLDS запущен без +ip и сам знает только 0.0.0.0. Пока только Linux.
  • 64-битные числа в SQL — authum_sql_stmt_bind_i64 / column_i64 для SteamID64 и id строк.
  • authum_float_t — свой тип для дробных чисел, как остальные базовые типы Authum.

Всё перечисленное для разработчиков реализовано в библиотеке authum_client, которую модуль линкует к себе. Модулю, использующему новые функции, достаточно пересобраться с 2.0.1, а authum_mm на сервере может оставаться любой версии 2.0.x. Исключение — новые события: их публикует сам authum_mm, поэтому для них нужен 2.0.1 на сервере.

Полный список изменений: релиз v2.0.1
Что нового в 2.0.0 по сравнению с 1.0.0

В 1.0.0 Authum умел одно: загрузить модули из modules.list и показать их список. В 2.0.0 он стал полноценной платформой для модулей: модули общаются между собой, получают события игроков, регистрируют свои команды, работают с базой данных и выгружаются без перезапуска сервера.

Для администраторов серверов
  • Управление модулями без рестарта — как в Metamod:
    authum status, authum info <модуль>, authum load, authum unload, authum reload. Модуль можно выключить и включить на живом сервере, его команды и подписки снимаются и возвращаются сами.
  • Одна консольная команда на всё: authum <модуль> <команда> [аргументы]. Есть встроенные authum help и authum version. Модули больше не регистрируют свои серверные команды, поэтому нет конфликтов с AMX Mod X и «висящих» команд после выгрузки модуля.
  • Работает через RCON — вывод команды authum теперь идёт в консоль сервера, а не только в лог.
  • Свой лог у каждого модуля — одним файлом или отдельным файлом на каждый запуск (папка logs/).
  • Готовый архив для Metamod — в релизе лежит zip со структурой addons/authum/ (authum_mm.so, modules.list, инструкция по установке). Распаковал в папку игры, добавил строку в plugins.ini — готово.

Для разработчиков модулей
  • Шина событий — модули общаются только через события, без прямых вызовов друг друга. Authum сам публикует события игроков: authum.client.connect (подключение можно отклонить со своей причиной), put_in_server, info_changed, disconnect. Модулю больше не нужны собственные хуки Metamod.
  • Песочница памяти — у каждого модуля своя память, Authum освобождает её целиком при выгрузке. Утечки после unload исключены. Есть вложенные песочницы, деструкторы и динамический массив.
  • SQL — SQLite встроен, MySQL/MariaDB подключаются через клиентскую библиотеку сервера. Модуль не тянет sqlite3.h / mysql.h.
  • JSON — разбор ответов внешних API.
  • Конфиги — простой формат key = value: значения по умолчанию плюс таблица ключей.
  • Пути — готовые папки игры, addons, моделей, самого модуля.
  • Безопасный кик — authum_host_kick очищает причину от кавычек и ;, поэтому через неё нельзя подсунуть команду.
  • Модуль без lh — модуль подключает один заголовок <authum/client.h> и линкуется с authum_client.
  • Пример модуля examples/hello, тесты, документация в docs/ и HTML-справочник API (Doxygen).

Важно при обновлении
  • Модули, собранные под 1.0.0, нужно пересобрать: ABI модулей изменился (0.3.0). Загрузчик откажется загружать старые модули и напишет об этом в лог.
  • qproto больше не входит в Authum — это отдельный модуль, который кладётся в modules/.

Полный список изменений: CHANGELOG.md
Назад
Верх