Забыл функцию!
#21

Кирилл, правильно формулируйте свой вопрос, прежде чем отправлять.
Reply
#22

все можно о таймерах забыть!
теперь трудность как выделить слова для авто мута, а то пишешь например Оскорблять и сразу мут) хочу избавиться от таких багов.
у кого есть варианты как лучше с радостью посмотрю на советы
Reply
#23

а делать исключения? Не уж то до этого так трудно догадаться :/
Reply
#24

ага как себе представляешь исключения на слова типопрошу прощения) бля или блять?
Reply
#25

делаешь массив/файл со словами исключениями (например если проверка идет -бля-, но находит -оскорбля- то проверка не срабатывает)

Подробнее объяснять не в состоянии. Полусплю
Reply
#26

опа подскажи код) для стандарт) просто ща уж не помню как связать)
Reply
#27

Вот, список исключений заполняется без окончаний, ибо их очень много
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++;
                }
            }
        }
    }
}
Reply
#28

о спс зиг помогло)
Reply
#29

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 пабликом не могу, точнее связал а пахать не пашет.
Reply
#30

Quote:
Originally Posted by Кирилл
Посмотреть сообщение
вот странно чейт связать с onplayertext пабликом не могу, точнее связал а пахать не пашет.
Код показывай...
Reply
#31

ну в общем вот это отдельно опракинул
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
Reply
#32

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;
}
Используй также, как и использовал.
Reply
#33

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;
}
Используй также, как и использовал.
извини конечно а что если я хочу чтоб если мат то адресовало на другой паблик
Reply
#34

кстати все равно не пропахал(((
Reply
#35

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;
}
у мну работает
Reply
#36

а вот да ))) я просто забыл поставить скобу)
Reply
#37

хм подскажите вот с одним словом норм а вот с перечисленными несколькими все равно мутит!
Чеб сделать
Reply
#38

в общем если по 1 слову там и там то норм а если перечислил то мутит даже те которые в исключении
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)