Re: Забыл функцию! -
devil77771 - 12.04.2012
Кирилл, правильно формулируйте свой вопрос, прежде чем отправлять.
Re: Забыл функцию! -
Кирилл - 12.04.2012
все можно о таймерах забыть!
теперь трудность как выделить слова для авто мута, а то пишешь например Оскорблять и сразу мут) хочу избавиться от таких багов.
у кого есть варианты как лучше с радостью посмотрю на советы
Re: Забыл функцию! -
azen - 12.04.2012
а делать исключения? Не уж то до этого так трудно догадаться :/
Re: Забыл функцию! -
Кирилл - 12.04.2012
ага как себе представляешь исключения на слова типо
прошу прощения) бля или блять?
Re: Забыл функцию! -
azen - 12.04.2012
делаешь массив/файл со словами исключениями (например если проверка идет -бля-, но находит -оскорбля- то проверка не срабатывает)
Подробнее объяснять не в состоянии. Полусплю
Re: Забыл функцию! -
Кирилл - 12.04.2012
опа подскажи код) для стандарт) просто ща уж не помню как связать)
Re: Забыл функцию! -
ZiGGi - 12.04.2012
Вот, список исключений заполняется без окончаний, ибо их очень много
pastebin.com
pawn Код:
stock remove_bad_word(text[])
{
static words[][32] = {"бля"};
static exceptions[][32] = {"оскорбля"};
new i, j, k, pos, epos, len;
for (i = 0; i < sizeof(words); i++)
{
while ( (pos = strfind(text, words[i], true, pos+1)) != -1 )
{
len = strlen(words[i]);
for (j = 0; j < sizeof(exceptions); j++)
{
epos = strfind(text, exceptions[j], true, epos);
if (epos != pos-(strlen(exceptions[j])-len))
{
for (k = pos; k < pos+len; k++)
{
text[k] = '*';
}
}
else
{
epos++;
}
}
}
}
}
Re: Забыл функцию! -
Кирилл - 13.04.2012
о спс зиг помогло)
Re: Забыл функцию! -
Кирилл - 16.04.2012
Quote:
Originally Posted by ZiGGi
Вот, список исключений заполняется без окончаний, ибо их очень много
pastebin.com
pawn Код:
stock remove_bad_word(text[]) { static words[][32] = {"бля"}; static exceptions[][32] = {"оскорбля"}; new i, j, k, pos, epos, len; for (i = 0; i < sizeof(words); i++) { while ( (pos = strfind(text, words[i], true, pos+1)) != -1 ) { len = strlen(words[i]); for (j = 0; j < sizeof(exceptions); j++) { epos = strfind(text, exceptions[j], true, epos); if (epos != pos-(strlen(exceptions[j])-len)) { for (k = pos; k < pos+len; k++) { text[k] = '*'; } } else { epos++; } } } } }
|
вот странно чейт связать с onplayertext пабликом не могу, точнее связал а пахать не пашет.
Re: Забыл функцию! -
ZiGGi - 16.04.2012
Quote:
Originally Posted by Кирилл
вот странно чейт связать с onplayertext пабликом не могу, точнее связал а пахать не пашет.
|
Код показывай...
Re: Забыл функцию! -
Кирилл - 16.04.2012
ну в общем вот это отдельно опракинул
pawn Код:
stock remove_bad_word(text[])
{
static words[][32] = {"бля"};
static exceptions[][32] = {"оскорбля"};
new i, j, k, pos, epos, len;
for (i = 0; i < sizeof(words); i++)
{
while ( (pos = strfind(text, words[i], true, pos+1)) != -1 )
{
len = strlen(words[i]);
for (j = 0; j < sizeof(exceptions); j++)
{
epos = strfind(text, exceptions[j], true, epos);
if (epos != pos-(strlen(exceptions[j])-len))
{
for (k = pos; k < pos+len; k++)
{
text[k] = '*';
}
}
else
{
epos++;
}
}
}
}
}
а соединять пробывал с стоком таким образом
pawn Код:
if ( remove_bad_word(text))
{
SendClientMessage( playerid, COLOR_RED, WARN_MS_PREFIX "мат" );
return 0;
}
в паблике onplayertext
Re: Забыл функцию! -
ZiGGi - 16.04.2012
Quote:
Originally Posted by Кирилл
а соединять пробывал с стоком таким образом
pawn Код:
if ( remove_bad_word(text)) { SendClientMessage( playerid, COLOR_RED, WARN_MS_PREFIX "мат" ); return 0; }
в паблике onplayertext
|
Моя функция фильтрует мат, т.е. заменяет матерные слова на * (звёздочки). Как я понял - ты хочешь, чтобы сообщения с матами вообще не отправлялись, тогда вот:
pawn Код:
stock remove_bad_word(text[])
{
static words[][32] = {"бля"};
static exceptions[][32] = {"оскорбля"};
new i, j, pos, epos, len;
for (i = 0; i < sizeof(words); i++)
{
while ( (pos = strfind(text, words[i], true, pos+1)) != -1 )
{
len = strlen(words[i]);
for (j = 0; j < sizeof(exceptions); j++)
{
epos = strfind(text, exceptions[j], true, epos);
if (epos != pos-(strlen(exceptions[j])-len))
{
return 1;
}
else
{
epos++;
}
}
}
}
return 0;
}
Используй также, как и использовал.
Re: Забыл функцию! -
Кирилл - 16.04.2012
Quote:
Originally Posted by ZiGGi
Моя функция фильтрует мат, т.е. заменяет матерные слова на * (звёздочки). Как я понял - ты хочешь, чтобы сообщения с матами вообще не отправлялись, тогда вот:
pawn Код:
stock remove_bad_word(text[]) { static words[][32] = {"бля"}; static exceptions[][32] = {"оскорбля"}; new i, j, pos, epos, len; for (i = 0; i < sizeof(words); i++) { while ( (pos = strfind(text, words[i], true, pos+1)) != -1 ) { len = strlen(words[i]); for (j = 0; j < sizeof(exceptions); j++) { epos = strfind(text, exceptions[j], true, epos); if (epos != pos-(strlen(exceptions[j])-len)) { return 1; } else { epos++; } } } } return 0; }
Используй также, как и использовал.
|
извини конечно а что если я хочу чтоб если мат то адресовало на другой паблик
Re: Забыл функцию! -
Кирилл - 16.04.2012
кстати все равно не пропахал(((
Re: Забыл функцию! -
Stepashka - 16.04.2012
pawn Код:
remove_bad_word(text[]) {
static words[][32] = {"bla"};
static exceptions[][32] = {"vobla"};
for (new i, pos; i < sizeof(words); i++) {//check all words
while ((pos = strfind(text, words[i], true, pos)) != -1) {//if found
for (new j, inpos; j < sizeof(exceptions); j++) {//chec all exceptions
while ((inpos = strfind(exceptions[j], words[i], true)) != -1 ) {//check only exception with founded word
if (strfind(text, exceptions[j], true) != (pos - inpos)) {//this is not exception
return 1;//found word is bad word
} else {
break;//go to next exception
}
}
}
pos++;
}
}
return 0;
}
у мну работает
Re: Забыл функцию! -
Кирилл - 16.04.2012
а вот да ))) я просто забыл поставить скобу)
Re: Забыл функцию! -
Кирилл - 19.04.2012
хм подскажите вот с одним словом норм а вот с перечисленными несколькими все равно мутит!
Чеб сделать
Re: Забыл функцию! -
Кирилл - 19.04.2012
в общем если по 1 слову там и там то норм а если перечислил то мутит даже те которые в исключении