Следуйте инструкциям в видео ниже, чтобы узнать, как установить наш сайт как веб-приложение на главный экран вашего устройства.
Примечание: Эта функция может быть недоступна в некоторых браузерах.
Перед обновлением
- ABI модулей 1.0.0. Модули, собранные под 2.x, нужно пересобрать.
Дальше будет проще: новые функции добавляются только в конец таблиц, и модуль 1.x загружается на любом Authum 1.x.- Новая раскладка модулей. У каждого модуля своя папка addons/authum/modules/<имя>/: <имя>.so, configs/, lang/, data/, logs/. Перенесите туда модули и их конфиги.
- Логи переделаны. Файл addons/authum/authum.log больше не пишется — смотрите addons/authum/logs/ и logs/ в папке каждого модуля.
Для администраторов
- Модуль ставится и удаляется папкой. Обновление модуля заменяет только .so и lang/ — ваши configs/, data/ и logs/ не трогаются. Без modules.list загружаются все папки из modules/, со списком — только перечисленные.
- Логи по дням. Каждый модуль пишет modules/<имя>/logs/ГГГГ-ММ-ДД.log; строки самого Authum, а также предупреждения и ошибки всех модулей (с пометкой [модуль]) — в addons/authum/logs/.
- Один конфиг addons/authum/configs/authum.cfg(идёт в архиве с комментариями):
Конфиг перечитывается при каждой смене карты.
- log_level — общий уровень, <модуль>.log_level — для отдельного модуля;
- log_console — что выводить ещё и в консоль сервера / лог HLDS;
- log_keep_days — сколько дней хранить логи (по умолчанию 30, старые удаляются).
- Отдельные журналы модулей, например logs/bans/, со своим уровнем (<модуль>.bans.log_level).
- Логи не тормозят сервер: строки копятся и пишутся раз в кадр, ошибки — сразу.
- Исправлено: на 32-битных серверах с XFS, btrfs и сетевыми дисками папка modules/ читалась пустой, и модули не загружались.
Для разработчиков модулей
- Движок без HLSDK — через authum_host_* / authum_engine_*:
- игроки по индексу: имя, SteamID, IP, info, пинг и потери, жив ли, бот ли, userid;
- вывод в консоль, центр экрана и чат, цветной чат через SayText;
- свои серверные cvar модуля, чтение и запись любых cvar, запрос cvar у клиента;
- user messages (MessageBegin … MessageEnd), precache моделей и звуков (вне окна precache — 0 вместо Host_Error).
- Сущности без HLSDK: поиск по classname; health, armor, frags, gravity, скорость, флаги, кнопки, оружие, origin, velocity, углы, размеры.
- Новые события:
- authum.message.<Имя> — любое игровое сообщение (DeathMsg, SayText, …): прочитать, изменить аргументы или заблокировать;
- authum.server.log — каждая строка лога HLDS (убийства, раунды, команды — то, на чём строится статистика);
- authum.client.kill — можно запретить команду kill;
- authum.server.precache и authum.server.shutdown.
- Таймеры на кадрах сервера: authum_timer_add(host, delay, interval, fn, user) — переживают смену карты и удаляются вместе с модулем.
- Логгер в одну строку: authum_logger_init(&log, host) и authum_logger_info(…) — куда и на каком уровне писать, решает Authum.
- 11 примеров-шаблонов в examples/, по одной теме на модуль: skeleton, hello, welcome, chatfilter, cvarguard, settings, stats (SQLite), scores + scoreboard (два модуля через шину событий), deathnotice, announcer. Все собираются с -Wall -Wextra без предупреждений и проверяются тестом.
- Что поменять в коде модуля: сохранять хост через authum_host_copy(&g_host, host) вместо g_host = *host; экспорт authum_module_api обязателен; AUTHUM_TRUE / AUTHUM_FALSE заменены на authum_bool_true / authum_bool_false.
- Учтите: если модуль подписан на игровое сообщение, другие Metamod-плагины, которые тоже перехватывают сообщения, увидят его дважды.
Сборка и исправления
- Authum собирается и на 32-битном Windows (MSYS2 MinGW); в проекте есть CMake-пресеты linux32 и windows-mingw32.
- Если компилятор не умеет собирать 32-битный код (-m32), CMake сразу говорит об этом с подсказкой.
- authum_net_ipv4_internal / _external теперь работают и на Windows (раньше возвращали пустой список).
Полный список изменений — в CHANGELOG.md.
Что нового в 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