1. Соблюдайте Правила форума и проявляйте уважение к другим участникам беседы.

Info Срок банов в ghost++

Тема в разделе 'Кодинг/Собственные решения', создана пользователем MuP, 31 июл 2012.

  1. MuP .

    Сообщения:
    653
    Спасибы:
    202
    Сборка бота GHost:
    Ghost++ rev 579
    Дата начала использования бота:
    00.00.0000
    Внимание - только для бота ghost++!
    Предистория: Т.к. использую ghost++, то срока давности бана мы не имеем, баны выдаются навсегда или пока админ не разблокирует. Пару дней назад, когда разбирался со списком банов, посетила идея.
    Идея простая, но на практике не проверялась и пока это только идея! Путем редактирования 1 строчки в исходниках бота, позволяет установить некий срок, через который баны как бы перестают существовать для бота. Если есть желание, то можно данное значение вывести в конфиг бота, что вызовет необходимость вписать еще пару строчек в исходники, но общий объем изменений не превысит 10 строчек кода.
    Теперь суть. ghost++ каждые N( по молчанию 60 ) минут считывает список банов из базы данных и заносит их в вектор, и дальнейшая работа идет с этим вектором. Идея состоит в том, чтобы изменить запрос в базу данных на получение списка банов.
    Старый запрос:
    Код:
    string Query = "SELECT name, ip, DATE(date), gamename, admin, reason FROM bans WHERE server='" + EscServer + "'";
    Новый запрос:
    Код:
    string Query = "SELECT name, ip, DATE(date), gamename, admin, reason FROM bans WHERE server='" + EscServer + "'  AND date >= DATE_SUB(CURRENT_DATE, INTERVAL 60 DAY)";
    Меняя интервал в новом запросе, меняем и тот срок давности для банов. В данном конкретном случае если бан старше 2 месяцев, то бот перестает его видеть.
    Минусы идеи:
    1. Общий срок давности для всех банов
    2. При команде delban будут стираться даже те баны, которые старше установленного срока( если хочется этого избежать придеться менять запрос на удаление бана )
    Плюсы идеи:
    1. минимальное редактирование исходников бота, нет надобности как в One периодически проверять вектор и удалять старые баны.
    2. нет необходимости менять структуру таблицы банов
    3. Если бот функционирует по времени больше чем срок давности бана, то можно будет узнавать не банился ли игрок до этого, т.е. вычислять рецидивистов( тут необходимо изменение запроса на выдачу бана ). Баны которые бот не видит, все равно будут сохраняться в базе данных.
    Если я в чем-то ошибаюсь - просьба поправить.
    Если я упустил какие-то минусы\плюсы - просьба их озвучить.
    Doterok и Guard нравится это.
  2. MuP .

    Сообщения:
    653
    Спасибы:
    202
    Сборка бота GHost:
    Ghost++ rev 579
    Дата начала использования бота:
    00.00.0000
    Дополнение:
    Первый минус можно обойти, при выдаче бана брать текущую дату и увеличивать\уменьшать ее на указанное количество дней, которое админ введет при команде выдачи бана( тут придется менять уже команду выдачи бана и запрос в базу данных на выдачу бана ). Одно но - если изменяем дату, то само собой бан будет считаться выданный либо в прошлой, либо в будущем.
    Тем самым получаем почти полный аналог системы банов на боте GhostONe, только все проще и менее ресурсозатратно.
  3. Synth (LM) Пантограф!

    Сообщения:
    2.762
    Спасибы:
    172
    Сборка бота GHost:
    My own version of GhostOne
    Дата начала использования бота:
    15.06.2008
    Skype:
    Мой статус
    А просто скопировать с ghostone затруднит?
  4. Guard Старожила

    Сообщения:
    473
    Спасибы:
    47
    Сборка бота GHost:
    Ghost++ RAKAL Edition
    Дата начала использования бота:
    00.00.2009
    Skype:
    Мой статус
    А я сделал как в GhostOne "BanTime", как по мне - лучше.
    Daniil нравится это.
  5. MuP .

    Сообщения:
    653
    Спасибы:
    202
    Сборка бота GHost:
    Ghost++ rev 579
    Дата начала использования бота:
    00.00.0000
    В One функционал чутка шире всего лишь. А если сравнивать затраты по переносу с One на плюсы, то различается в десятки(если не в сотни) раз.
    К тому же мне совесть не позволяет позволяет пользоваться кодом из One, практика пару раз показывала, что там местами плохой(очень плохой) код.
    мне ближе изменить 1 строчку и не менять текущий банлист, просто и быстро
    Doterok нравится это.