Untonyst
Умник
SCAN MESSAGE
Фильтр строк
Фильтр строк
Назначение:
Функция ищет в строке указанные заранее вами слова.
Описание:
Я задумывал эту функцию как антимат (фильтр запрещенных слов на сервере). Но ее можно использовать в разных случаях: запрещать писать ip в чате, маты или "дай админку". Даже, если слово "cerf" написаноe как "c e rf", функция все равно его поймает.
Функция:
- Для начала вам нужно включить в реестр запрещенные слова.
* в одно слово мы лепим потому, что функция получает указанную нами строку, копирует ее в локальный массив и дальше работает с этим массивом, предварительно очистив этот массив от пробелов.PHP:static const black_list[][] = { "cerf", "дайадминку", // как пример поиска по словосочетаниям ":7777" // и т.д. };
- В любое удобное для вас место добавляем функцию ScanMessage().
PHP:RemoveSpaces_DC(string[]) { static pos, pos2, c; for (pos = 0, pos2 = 0;; ++pos) { switch (c = string[pos]) { case ' ': continue; case '\0': { string[pos2] = '\0'; return; } } string[pos2++] = c; } }PHP:stock ScanMessage(playerid, text[]) { new default_text[144]; strcat(default_text, text); RemoveSpaces_DC(default_text); new text_size = strlen(default_text); for (new j; j < text_size; j ++) { for (new k; k < sizeof(black_list); k ++) if (strfind(default_text[j], black_list[k], true) != -1) { OnBannedWordDetect(playerid, black_list[k]); return 0; } } return 1; } - Добавляем каллбэк OnBannedWordDetect, который вызывается функцией, если слово из реестра совпало со словами игрока.
Параметр text[] получает слово из реестра из-за которого произошел вызов функции.PHP:forward OnBannedWordDetect(playerid, text[]); public OnBannedWordDetect(playerid, text[]) { // return 0; }
Пример использования:
PHP:
COMMAND:test(playerid, params[])
{
if (sscanf(params, "s[144]", params))
return 0;
if (ScanMessage(playerid, params))
return SendClientMessage(playerid, -1, "Слово в черном списке!");
SendClientMessage(playerid, -1, "Ваше сообщение не содержит ничего эдакого =)");
return 1;
}
Чтобы видеть скрытое содержание Зарегистрируйтесь на форуме!
: запрещаем указывать ссылки на сторонние ресурсы.Автор: Untonyst
Запрещается выкладывать куда-либо без разрешения автора!
Последнее редактирование:
