Что нового в 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