Resource icon

Plugin GameTimeBonus-CS2 v1.0.4

No permission to download
Version Release date Downloads Rating
v1.0.4 0 0.00 star(s) 0 ratings
v1.0.3 1 0.00 star(s) 0 ratings
v1.0.2 2 0.00 star(s) 0 ratings

Добавлено​

  • Штатная загрузка конфигурации CounterStrikeSharp: плагин теперь корректно использует IPluginConfig<PluginConfig> и получает готовый объект конфигурации через OnConfigParsed.
  • Встроенная локализация CounterStrikeSharp: сообщения перенесены на штатный Localizer, без ручного чтения lang-файлов внутри кода.
  • Файлы локализации: добавлены отдельные переводы для ru, en и uk.
  • Настраиваемое имя таблицы ЛК: таблица базы данных теперь задаётся через параметр Database.Table, по умолчанию используется lk.
  • Пул MySQL-подключений: в строку подключения добавлен Pooling, а также параметры минимального/максимального размера пула и таймауты.

Изменено​

  • Обновлена версия плагина до 1.0.4.
  • Упрощена работа с конфигом: удалены лишние ручные загрузчики и костыли с путями.
  • Для путей плагина используется ModuleDirectory, который уже указывает на директорию модуля.
  • Сообщение о начислении бонуса теперь берётся из локализации, а не из поля BonusMessage в конфиге.
  • Работа с MySQL переработана: подключение открывается на каждый запрос и возвращается в пул после выполнения.
  • Начисление бонуса оптимизировано: вместо отдельной проверки SELECT используется один UPDATE, а отсутствие игрока определяется по affected rows.
  • Игровые действия после async-запроса выполняются через Server.NextFrame, чтобы не обращаться к API игры из фонового потока.

Исправлено​

  • Исправлена ошибка, из-за которой Config мог не быть присвоен, так как OnConfigParsed был пустым.
  • Устранён риск зависания/отвала бонусов после простоя MySQL-соединения.
  • Убрана зависимость от ручного парсинга Server.GameDirectory.
  • Убрано дублирование логики локализации и конфигурации, которую уже предоставляет CounterStrikeSharp.
  • Исправлено потенциально небезопасное обращение к игроку после асинхронной операции с базой данных.

Технические детали​

  • Конфигурация загружается через IPluginConfig<PluginConfig> и BasePluginConfig.
  • Локализация использует встроенный Localizer.
  • Подключение к базе создаётся через MySqlConnectionStringBuilder.
  • Для начисления используется запрос вида:
    UPDATE {table} SET cash = cash + @amount WHERE auth = @auth
  • Если запрос обновил 0 строк, игрок считается отсутствующим в таблице ЛК.
🔧 Что исправлено и улучшено
Конфигурация
Плагин теперь использует встроенный механизм BasePluginConfig + IPluginConfig.
Ручной парсинг GameTimeBonus.json и проверки Contains("csgo") удалены. Конфиг создаётся и загружается автоматически.

Пути к файлам
Вместо Server.GameDirectory с костылями используется ModuleDirectory. Логи теперь лежат в {ModuleDirectory}/logs/.

Локализация
Убрана зависимость от Localizer, вызывавшая конфликты версий Microsoft.Extensions.Localization.Abstractions.
Текст сообщения о бонусе теперь задаётся прямо в конфиге: Settings.BonusMessage с поддержкой {amount}.

Подключение к MySQL
Соединение больше не висит бесконечно. Каждый запрос использует новое подключение из пула (пулинг включён).
Добавлены Pooling=true, MinimumPoolSize, MaximumPoolSize, ConnectionIdleTimeout.
Кодировка задаётся через CharacterSet = "utf8mb4".

Асинхронность
Начисление бонуса переведено в async Task с await using. Таймер не блокируется.

Совместимость
Исправлены ошибки компиляции:

добавлен обязательный метод OnConfigParsed

заменено Charset → CharacterSet

удалены ссылки на ILogger и Localizer
Back
Top