Плагин Complain (Жалоба), позволяет пожаловаться администратору прямо во время игры.
Возможности плагина:
Команда /p открывает окно ввода жалобы всем админам с флагом (Бан). Жалоба придет к администратору в виде "Игрок "Ник ваш": Текст жалобы (например "Хекс стреляет через стены").
Команда /g открывает окно жалобы главному админу с флагом (Ркон). Можно пожаловаться на админа например или даже предложить что для улучшения сервера ))
Команды в чате не проходят, благодаря чему подозреваемый игрок даже не догадается что на него отправлена жалоба.
Плагин поддерживает Английский, Русский и Украинский языки (зачем последний я не знаю, серверов с этим языком не видел, от скуки перевел) ))
И последнее пожалуй самое главное, плагин ведет логи всех жалоб, при том в зависимости от команды разные логи (для удобства поиска информации).
Для удобства админам плагин так же может и стирать собственные лог файлы, в автоматическом режиме при достижении лог файла размера 0.5Мб
Каждые 15 и 25 минут в чате проходит информация о существовании плагина и его командах.
Если будут какие-то баги и мне о них сообщат - я их исправлю. На данный момент мне не сообщали не о каких багах этого плагина. Обновление плагина так же пока не планируется (хотя есть идея что туда добавить).
Quin правильно пишет. А именно: плагин проверяет у игрока который отправил жалобу на наличие фрагов доступа "ADMIN_BAN", если же у него нету этиго флага доступа то он проверяет есть ли у него флаг доступа "ADMIN_USER". Обясняю то что написал выше подробднее: Код: if(get_user_flags(id) & ADMIN_BAN) { client_print_c(0, "!g[!nCOMPLAIN!g] !t%L", LANG_PLAYER, "COM_A", name, text) } else if(get_user_flags(id) & ADMIN_USER) { client_print_c(id, "!g[!nCOMPLAIN!g] !t%L", LANG_PLAYER, "COM_Y") } Итак, if - если ( get_user_flags - узнаем флаги пользователя ( И тут суть в том что проверка флагов идет в игрока который отправил жалобу, а должно скорее всего циклом перебирать каждого игрока на сервере и искать игрокать игроков с определенным флагом доступа в этом случае "ADMIN_BAN" и тогда уже если они есть то отправлять им жалобу игрока, и тут ещё можно добавить что если нету игроков с таким флагом то писать игроку например "На данный момент нету администрации онлайн" ) И да, зачем писать else if(Лишняя проверка игрока) если после этого выражения нету продолжения? Можно просто else. В общем, плагин работает не верно.
Почему не скинул? Потому что я по коду вижу как и что работает. Почему не изменил (исправил глупые ошибки)? Плагин мне не зачем (т.е. использовать его не вижу смысла). О и ваши проверки распространяются только на игрока индекс которого вы указали (т.е. проверка идет у игрока да, но сообщение отправляется всем игрокам).
Сначала проходит проверка, а потом отправка сообщения
Код
if(get_user_flags(id) & ADMIN_BAN)
- Условие "Если игрок с флагом Бан"
Код
else if(get_user_flags(id) & ADMIN_USER)
- Условие "Если игрок с флагом юзер"
Сообщение не может отправится тому, кто не соответствует указанному флагу в условии. В любом случае могли бы уже давно скинуть сюда факт того что этот баг работает в плагине, я бы его исправил, раз не скинули - значит не проверяли (логично же). С ботами я много не проверю, на серверах где тестировался не жаловались.
Да и если вы так хорошо разбираетесь почему бы вам просто не переделать плагин так как считаете нужным? Исходник есть, берите используйте.
Вы несете полную чушь. Проверка на флаг у игрока не означает что сообщения будут показываться игрокам именно с указанным вами флагом. Почему? Так как в функции показа сообщения Вы делаете цикл без всяких проверок (за исключением коннекта).
Вырезанная вами часть кода уже получает нужные строки и выводит их. 0 в данном случае позволяет отправить сообщение всем админам с флагом Бан-а. А далее id позволяет отправить игроку (который жаловался) сообщение о том что жалоба доставлена.
Как вы заметили логика достаточно проста id (1 игрок), 0 (все игроки), а учитывая указанный флаг то все игроки с этим флагом.
В любом случае плагин тут для того что бы как раз писали если есть какие-то баги что бы их исправить. Хотя в этой части кода багов замечено не было....
if(get_user_flags(id) & ADMIN_BAN) { client_print_c(0, "!g[!nCOMPLAIN!g] !t%L", LANG_PLAYER, "COM_A", name, text) } else if(get_user_flags(id) & ADMIN_USER) { client_print_c(id, "!g[!nCOMPLAIN!g] !t%L", LANG_PLAYER, "COM_Y") } То есть вы хотите сказать что нули указанные вместо индекса игроков будут показывать сообщения только админам с определенным флагом?
Если пытаетесь сделать что разобрались что написано в исходнике, я вас разочарую, вы не разобрались. Сообщение отправляется в общий чат, да, но тому кто отправил приходит оповещение о том что отправлено, а админу приходит текст жалобы. Больше никто из сервера не видит сообщения, так как не имеет флага доступа.
Какие глупости написаны в этом плагине. Когда сообщение должно отправляться админам (гл админу) они отправляются в общий чат (т.е. всем игрокам). Гениально! Пытались не палиться что отправляем на читера жалобу, но сами отправляем жалобу в общий чат. Что то я запутался.
sergi74, запись в лог идет одновременно с отображением сообщения в чате админу. Админ во время игры видит сообщение в чате, после игры может при желании посмотреть лог файл. Сообщение в чат сделано с целью того что бы админ сразу мог принять меры какие-то не теряя времени, запись в лог (вдруг пригодится инфа какая).
sergi74, Как выше уже и ответили, да можно. По сути оно так и есть. Сомневаюсь что на сервере много админов с доступом к Ркон, грубо говоря сообщение на этот флаг идет только одному админу.
Я раньше и не выкладывал ничего, работал обычно со знакомыми админами. Но просто возникла проблема в том что плагины валяются, да и тестов в радиусе пары серверов не хватает (надо что-то по глобальнее), на фиг тогда делал )) Поэтому решил выложить. Это еще не все, еще есть и ВИП плагины и парашют. По позже остальное выложу, все плагины делались с учетом пожеланий и просьб игроков тех серверов )