Сообщение от команды GM:

Предисловие. Я недолго над ним думал, а если честно, то этот текст — чистая импровизация. Я не знаю, что сказать. Финал. Финал всего: финал AMXBans, финал его форка в виде Gm-версии, финал… Gm'а.

Измененные файлы

Веб
include/
amxx_langs.inc.php
config.inc.php
GeoIP.dat
admin/
admin_ban_add.php
admin_ban_add_online.php
user/
user_bd.php
language/
*
templates/
darkgold/
css/
paginator.css
style.css
js/
amxbans.js.php
admin_in.tpl
admin_sv.tpl
ban_list.tpl
main_footer.tpl
motd.tpl
search.tpl
user_bd.tpl

default/
css/
style.css
js/
amxbans.js.php
admin_in.tpl
admin_sv.tpl
main_footer.tpl
motd.tpl

Плагины
configs/
amxbans.cfg
amxbans.ini [+]
data/lang/
amxbans.txt
amxbans_ssban.txt [+]
scripting/
*

Список изменений
Огромен.

Список изменений
Глобальные изменения
- Убраны пустые переменные которые встречаются почти после всех SQL запросов.
- Расставлены все ArrayDestroy() и SQL_FreeHandle().
- Общая косметика кода для лучшей читабельности.

amxbans_core.sma
const -> define
temp[1024] @ 293 строка. Убрано, т.к. не используется.
prepare_prefix -> replace_all. Супер костыли?
SQL_Execute -> SQL_ThreadQuery

amxbans_flagged.sma
Теперь сообщение показывается ТОЛЬКО один раз при входе флагнутого игрока
sizeof() -> charsmax() (-1 забыли добавить)
SteamID в сообщении заменено на IP

amxbans_main.sma
const -> define
Убраны лишние переменные из delayed_kick()
Изменен код логов ошибок SQL
Добавлены оффсеты к set_task()'ам
Перемещены запуски проверок prebanned() и flagged(), что должно решить трабл с "Thread worker unable to start"
Добавлен квар для принудительного выбора типа бана
Добавлен квар и возможность автоматически делать скрин перед баном
Добавлен квар оффсета разницы во времени между базой данных и игровым сервером
Убрано get_modname() из plugin_init()

check_flag.inl
Исправлены небольшие непонятки с отпревлением оставшегося времени флага через форвард

check_player.inl
Проверка игрока теперь идет на 0.25 секунд позже (чтобы дать отработать остальным плагинам в client_authorized() и зря не проводить проверку)
Добавлен IP игрока в сообщении о количестве предыдущих банов
Исправлен трабл с русским текстом в консоли игрока
Кик теперь сразу после проверки (вспомним трабл с редиректом, когда некоторым выдавало "Вы забанены" при частых попытках войти на сервер)

cmd_ban.inl
Анти дабл-бан теперь работает корректно
Исправлены нестыковки в размерах переменных
Чистка хостнейма от "левых" символов снова рабочая
Исправлено обрезание причин от античитов
Убрана функция insert_ban_cmd() (нигде не используется)

color_chat.inl
Добавлена возможность задавать цвета !g — зеленый !t — цвет команды !y — нормальный

global_vars.inl
const -> define

init_functions.inl
Теперь русские хостнейм и причины отображаются нормально без вмешательства в конфиг MySQL
Убран id который тащился через все функции и который ниразу небыл использован
timestamp теперь задает MySQL
Добавлен инклюд reason_checker.inl
Позволяет вырезать части причнин (к примеру от античитов)
Позволяет изменять ник админа в зависимости от причины (только для серверных банов)
См. amxbans.ini

amxbans.txt
Исправлен русский язык
Добавлен отсутсвующий ключ FLAGGED_PLAYER в английский и русский

28.03.2011 15:41
Re-check и доработка.

amxbans_core.sma
Передача форварда инициализации sql перенесена на окончание кеширования админов

amxbans_main.sma
Исправлен срач в хранении данных юзеров
Вместе с этим привязка данных с "admin id -> (player id, player ip, reason...)" изменена на "(admin_id -> player_id) + (player id + admin id -> (reason, time...))"
В client_disconnect() добавлены некоторые remove_task()
Полное исправление русских причин банов
Расставлены проверки дабл-бана во избежание изменения информации в процессе обработки игрока
Все булы (bool) и состояния пользователя заменены на битсумму
Все индентификаторы и состояния пользователя обновляются только по надобности
get_cvar_*() -> get_pcvar_*()
Добавлен квар отключающий флаг-меню и проверку флагов
Добавлен квар отключающий меню истории банов
Условия в функциях расставлены в нужном порядке

check_player.inl
Теперь проверка на бан не осуществляется если на игроке иммунитет

amxbans_ssban.sma
Добавление скрин-меню в amxmodmenu перенесено в соответствующий плагин

web
Немного исправлен русский ланг
Добавлен отсутствующий ключ "ru"
02.04.2011 20:29

amxbans_main.sma
Избавился от трёхмерных массивов
Минимизировал возможность утрату данных в процессе бана
Исправлена ошибка с причиной бана, когда игрок выходил в процессе бана
03.04.2011 04:09
Исправление ошибок, найденых во время тестирования

amxbans_core.sma
Добавлен дефайн SYNC_SQL, закомментировав который будет использован отложенный запрос в базу

amxbans_main.sma
Добавлена возможность автоматически проверять разницу во времени между сервером и MySQL
Фикс обновления ника игрока

menu_stocks.inl
Исправлен небольшой фейл с недоступными игроками

cmd_unban.inl
Исправлена вероятность ошибки при записи анбана в лог

amxbans_ssban.sma
Добавлен мульти-ланг amxbans_ssban.txt

Web
Исправлен подсчет нарушений
Исправлена дата в MOTD
Обновил GeoIP
Изменено название типа бана "SteamID и/или IP" на "IP" чтобы соответсвовало действительности
Исправлен украинский язык

24.04.2011 14:12
Багрепорты

cmd_ban.inl
Исправлена проверка на существующий бан

Небольшая информация:
Перед установкой/обновлением рекомендуем прочесть.

Перед компилированием плагинов:

Для использования отложенных запросов - закомментируйте #define SYNC_SQL в amxbans_core.sma. Это увеличит время загрузки админов из базы, однако не будет прирывать игровую синхронизацию. Если вам не важна очень быстрая загрузка админов из базы рекуомендую закомментировать.
Если вы хотите, чтобы при использовании команды amx_unban бан полностью улялся из базы - расскоментируйте #define UNBAN_GAME_DEL в amxbans_main.sma
Если у вас нормально отображались русские причины банов в ранних версиях - закомментируйте #define SET_NAMES_UTF8 в amxbans_main.sma

Известные баги с #define SET_NAMES_UTF8:

После редактирования бана с русской причиной из веб-части, причина у игрока в консоли может отображатся как "?????"
При добавлении бана из веб-части с русской причиной, причина у игрока в консоли может отображатся как "?????"

Обновление:

Игровая часть

Сохранить свой текущий конфиг addons/amxmodx/configs/amxbans.cfg.
Закинуть файлы из папки Plugin в директорию /addons/amxmodx с заменой.
Скомпилировать плагины.
Настроить конфиг amxbans.cfg в соответствии с вашими старыми настройками, в противном случае будет проблема с чтением настроек.

Веб:

Закинуть файлы из папки Update в корень амхбанса.
Запустить /upgrade.php, укажите ваши данные от базы данных
"Профит" уже звучит пошло, вульгарно, но тем не менее, это он.

Благодарности:
@xPaw FTW!
@Sho0ter FTW! Ну а если серьезно, Шутер переписал всю игровую часть, ченджлог на 128 строчек — его работа :3
@Misaka за помощь с переводом файлов. А еще @Shidla за самый первый перевод, который используется по сей день :3
AMXX.pl Team за огромную помощь в поддержке. Парни, простите, что не включили ваш скрипт импорта — банально не было времени протестировать.

Постскриптум:
В начале новости я сказал «конец… Gm'a». Так вот, это была не шутка, мы на самом деле… "закрываем" джиэм. Почему в кавычках? Потому что я не могу подобрать другого слова, ведь проект остается жить, но мы будем уделять меньше внимания ему. Потому что все силы будут брошены на разработку Larte.
Кстати, о Ларте. Многие уже заметили (если установили/обновились), что везде вместо GmStaff используется Larte Team. Larte — это наш новый проект. Нет, не в плане форума, серверов и т.д. Это наш новый проект в плане дистрибутива — ну… GmBans был рабочим названием, теперь же мы определились с названием. Да, именно Larte.
Мы везде в копирайтах писали Larte Team, потому что форк AMXBans'а в виде Gm-версии уже не полностью наш продукт. Как минимум тут участвовали @xPaw, @Sho0ter, а они состоят в команде разработки Larte, поэтому уместно и компактнее было написать именно так

Всем спасибо. За достойный финал

Источник: http://gm-community.net