[FilterScript] [FS] CHAT GUARD v0.1
#1

CHAT GUARD
фильтрскрипт
13/04/2010 - v0.1
Описание:
- Фильтрскрипт работает как фильтр игрового чата.
Он может защитить чат от рекламы других серверов/сайтов, от флуда.
Не позволяет сильно капсить и спамить.

Как использовать:
- сохранить как файл с PWN расширением
- скомпилировать PWN и загрузить полученный AMX файл в папку сервера filterscripts
- в настройках (server.cfg) в строке filterscripts добавить строку с именем АМХ файла без расширения.
Желательно, загружать самым первым, т.к. отфильтрованные сообщения будут передваться другим скриптам

Функционал:
- Заменяет в сообщениях группы пробелов на единичные пробелы.
- Обрезает в сообщениях все пробелы по краям.
- Не дает писать в чате, если в нике игрока есть IP или запрещенный домен.
- Не показывает в чате попытки ввода команд в другой раскладке клавы.
- Не показывает сообщения, где букв в верхнем регистре слишком много.
- Не показывает сообщения, в которых есть IP адреса или запрещенные домены.
- Запрещает писать слишком часто.
- Запрещает писать одинаковые/похожие сообщения.

Скачать:
- код: http://pawn.pastebin.com/VGnS9Cd6

Пожелания и сообщения об ошибках:
- приветствуются
Reply
#2

наааайс
Reply
#3

у некоторых игроков есть фишка: они используют свойство сампа разбивать сообщения длиннее 64 символов на 2: они пишут сообщение так, чтобы на новой строчке был чей то ник и сообщение от его имени. Очень многие не понимают это штуку и думают, что сообщение действительно написал тот человек.

Например, если ввести:
Code:
Привет всем, как дела? давно я тут небыл, вы меня не забили еше?MX_Master: вы все козлы!!!
то в чате будет примерно так:
Code:
dimonml: Привет всем, как дела? давно я тут небыл, вы меня не забили еше?
MX_Master: вы все козлы!!!
Есть предложение разбивать такие сообщения на 2
Reply
#4

полезный скрипт, буду юзать.

dimonml, а зачем собственно придумали разбивание пробелов?
Reply
#5

Quote:
Originally Posted by dimonml
у некоторых игроков есть фишка: они используют свойство сампа разбивать сообщения длиннее 64 символов на 2: они пишут сообщение так, чтобы на новой строчке был чей то ник и сообщение от его имени. Очень многие не понимают это штуку и думают, что сообщение действительно написал тот человек.

Например, если ввести:
Code:
Привет всем, как дела? давно я тут небыл, вы меня не забили еше?MX_Master: вы все козлы!!!
то в чате будет примерно так:
Code:
dimonml: Привет всем, как дела? давно я тут небыл, вы меня не забили еше?
MX_Master: вы все козлы!!!
Есть предложение разбивать такие сообщения на 2
Да, у нас тоже этим напрягают...
Сказано, что
Quote:
Originally Posted by MX_Master
- Заменяет в сообщениях группы пробелов на единичные пробелы.
этого должно быть достаточно.
Reply
#6

я читал про пробелы и это хорошо, но я привел пример, на который не сработает этот механизм и такие случаи вполне реальны. Но мое дело предложить

У меня на сервере нет отдельного механизма убирания пробелов, а есть механизм замены более 4х повторяющихся подряд символов на один.

И еще, есть механизм подсчета одинаковых символов в строке. Дальше анализируется как много таких символов и как часто они встречаются в русском языке. Если одинаковых символов много, а по статистике их обычно не так часто используют, то игрок может быть заглушен (у него отключиться чат на некоторое время). Среднюю частоту появления символов в языке я нашел где то в интернете.
Это нужно было, чтобы глушить за примерно такое:
Code:
dimonml: хахахахахахахахахахахаха!!!!!
Reply
#7

Переносы, связанные с множественными пробелами, мой скрипт предотвращает. Даже, если текст переносится, то как определить, что используется именно этот прикол, а не обычный перенос?

За смех, я думаю, глушить - незачем. Вот, если такой текст подряд в нескольких сообщениях повторяется, то уже можно сообщение не показывать.

Также, если вы знаете еще какие-то хитрости, который юзают игроки, пишите.
Reply
#8

Классный FS. Мне очень нравится, буду использовть как и mxIni
Reply
#9

хыыыы ещё одна хитрость. Антимат.

например игрок пишет в чат слово "мел", его блокирует.
потом нуб злиться и пишет м-е-л, чтобы антимат не сработал.

есть над чем подумать.
Reply
#10

Мы на этом языке (мат) практически всегда разговариваем, а ты хочешь нам всю малину запретить ))

Много где, и у меня на серве, матерится-то можно, а вот оскорблять нельзя. Вощем-то, это может определить только модератор/админ.
Reply
#11

Quote:
Originally Posted by MX_Master
- Не дает писать в чате, если в нике игрока есть IP или запрещенный домен.
- Не показывает сообщения, в которых есть IP адреса или запрещенные домены.
скрипт классный, отдельное спасибо!
ЗЫ: но какая смысловая разница в этих двух строчках
то есть в первом случае он не даёт, а во втором даёт, но не показывает всем игрокам кроме самого себя ? но тогда условия одинаковы, что в первом, что во втором пункте (ип или домен)
опечатка ?
извиняюсь за придирчивость (просто из любопытства )
Reply
#12

Quote:
Originally Posted by Radius
Quote:
Originally Posted by MX_Master
- Не дает писать в чате, если в нике игрока есть IP или запрещенный домен.
- Не показывает сообщения, в которых есть IP адреса или запрещенные домены.
скрипт классный, отдельное спасибо!
ЗЫ: но какая смысловая разница в этих двух строчках
то есть в первом случае он не даёт, а во втором даёт, но не показывает всем игрокам кроме самого себя ? но тогда условия одинаковы, что в первом, что во втором пункте (ип или домен)
опечатка ?
извиняюсь за придирчивость (просто из любопытства )
Внимательнее надо было читать)
В первом случае речь идет о нике,а во втором о сообщении в чат)
Reply
#13

Респект! Я сам хотел такое на днях начать писать, а тут готовое
Reply
#14

Спс

Radius
Неважно как я пишу в описании скрипта, это все только красивые слова. Принцип - если нашлось что-то запретное, то в чате это вообще не отображается, а игроку просто отдельное уведомление в чате "почему его сообщение не показано в чате". Иногда это и не уведомление, а наставление с долей юмора (: Хотя текст можно менять под свои нужды.
Reply
#15

Quote:
Originally Posted by MX_Master
как определить, что используется именно этот прикол, а не обычный перенос?
По моему предложению незачем это определять
Просто тот текст, который длиннее 64 символов разбивается на 2 сообщения (можно это вообще красиво сделать и бить, если это возможно по пробелу, а не четко на 64 символе) без каких либо условий.

Возвращаясь к моему примеру. Ввод тот же, а напечатано будет 2 разных сообщения:
Quote:
dimonml: Привет всем, как дела? давно я тут небыл, вы меня не забили еше?
dimonml: MX_Master: вы все козлы!!!

Если не внятно выразился, и есть желание увидеть что и как, могу предложить зайти на сервер, что в моей подписи - там реги нет, так что сможешь зайти довольно быстро
Reply
#16

великолепно! как возможности, так и реализация
Reply
#17

o_Ops
I am sry
действительно
Reply
#18

dimonml
есь задумка.. насчет правильного переноса (:

кста, это же все-таки фильтр, и если у вас там в моде в сообщениях еще и ИДы игроков вставляются, то будет непросто организовать такую разбивку, не задевая форматирование в самом моде
Reply
#19

При более/менее большом онлайне человеку уже становиться невозможно контролировать чат, поэтому нужны автоматические средства. Когда я начал писать парадиз, чат было первое что я делал. И это было не из-за хорошей жизни: народ с флудо программами Они иногда человека по 3 сразу флудили. Я потом по логам смотрел, самый резвый мог нафлудить 2500 сообщений в секунду.

Иды в чате и килл листе нужны также из-за большого онлайна, чтобы удобней было следить за порядком. Когда кто-то матюкнется, чтобы ему отключить чат нужно узнать ид. Когда народу сильно больше сотни, то найти нужный ид становиться долго (команда по поиску ида по нику есть ). Иды в чат и килл лист вставляются весьма просто: просто перед печатью текста переименовываю игрока, печатаю текст, затем обратно.

апд: убрал флуд
Reply
#20

Было бы глупо начать реализацию идеи, не обдумав качественно варианты. Скрипт ведь является только фильтром и сам не должен отправлять сообщения в обход мода и остальных скриптов, загруженных после этого скрипта.

Подсказка про перенос слов - ценная, но твой же вариант с разделением на 2 сообщения в этом скрипте не подойдет. И поэтому я должен придумать максимально точное и лучшее решение.

У меня пока только 1 вариант. В длинных сообщениях добавлять в точке переноса N-ное кол-во пробелов, которые дадут самому клиенту сделать перенос так, чтобы текст на новой строке был с небольшим отступом вправо.

зы:
можешь уже не повторять по неск. раз, что твой мод на С (: к делу это не относится, т.к. обсуждаемые варианты могут быть выполнены и на PAWN, и на C.
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)