Admin Loader для CS Donat

Основа: Admin Loader 3.5, автор neygomon. Авторство, исходные комментарии и история сохранены в .sma.
Версия совместимых исправлений: 3.5-csd.3. Это отдельное дополнение для игрового сервера; сайт не устанавливает его автоматически.

Исправления:
- Успешный SQL-запрос без администраторов очищает права и резервный users.ini. Отключение или удаление последней привилегии больше не восстанавливает её из старого кеша.
- Истёкшие права снимаются у подключённого игрока в течение секунды, без смены карты и переподключения. Истёкшие записи не применяются при новом входе.
- При реальной ошибке SQL сохраняется загрузка действующих записей из users.ini. Их срок также проверяется; резервный режим не продлевает привилегию.

- Бессрочные записи days=0 сохраняют бессрочность, даже если в старой БД заполнено поле expired.
- Значения native admin_expired и forward amxx_admin_access относятся к успешно авторизованному игроку.
- Отложенный кик проверяет userid: повторное занятие освободившегося слота не кикает другого игрока.
- Кеш записывается через временный файл и заменяется только после успешной записи. Маркер users.ini.csdonat-pending запрещает загрузку старой копии после ошибки, в том числе после смены карты. При ошибке кеша сохраняется последний успешный снимок в памяти с проверкой срока; на новом запуске без достоверного кеша права не выдаются.

Установка на игровой сервер:
1. Сохраните копии существующего загрузчика, plugins.ini и users.ini внутри резервного каталога этого сервера.
2. Скопируйте amxmodx/plugins/admin_loader_csdonat.amxx в cstrike/addons/amxmodx/plugins/.
3. В cstrike/addons/amxmodx/configs/plugins.ini замените строку прежнего Admin Loader на admin_loader_csdonat.amxx. Оставьте только один загрузчик администраторов. Не включайте одновременно стандартные admin.amxx/admin_sql.amxx или другой Loader. FreshBans оставьте включённым.
4. Сохраните существующие настройки подключения FreshBans в configs/fb/main.cfg (или Lite Bans в configs/LB/main.cfg). Не заменяйте их демонстрационными настройками.
5. Смените карту или перезапустите сервер. Проверьте amxx plugins: Admin Loader версии 3.5-csd.3 должен иметь статус running.
6. При доступной БД выполните amx_reloadadmins. Убедитесь, что загрузчик прочитал именно серверные записи из MySQL. Затем проверьте покупку, отключение последней привилегии и повторный вход игрока.

При обновлении важно один раз успешно прочитать БД: до этого резервный users.ini может содержать записи, оставшиеся от предыдущего загрузчика. При ошибке подключения сначала исправьте доступ к БД и повторите amx_reloadadmins. В резервном режиме сервер не может узнать об отключении ещё не истёкшей записи, сделанном во время отсутствия БД; после восстановления связи повторите обновление администраторов.

При ошибке записи кеша проверьте свободное место и права на каталог configs. После устранения причины обязательно выполните успешный amx_reloadadmins при доступной БД: только после этого резервный кеш снова актуален. Не удаляйте users.ini.csdonat-pending вручную, чтобы обойти проверку. Если каталог целиком не допускает запись маркера, резервная загрузка также запрещена; после ручного исправления прав и перезапуска старый users.ini не становится актуальным сам по себе.

Сборка:
Готовый .amxx собран компилятором AMX Mod X 1.9.0.5294 для AMXX 1.9. Используются стандартные модули MySQL и Fakemeta; ReAPI для готового файла не требуется. Исходник лежит в amxmodx/scripting/admin_loader_csdonat.sma. При самостоятельной сборке опция CSDONAT_USE_REAPI необязательна и требует совместимых с вашим сервером заголовков ReAPI.

Проверено с FreshBans 1.3.8b, ReHLDS, AMXX 1.9.0.5303 и двумя реальными сетевыми клиентами CS Tester. Дополнение не заменяет FreshBans и не обновляет его версию.
