SA-MP Forums Archive
Забыл функцию! - Printable Version

+- SA-MP Forums Archive (https://sampforum.blast.hk)
+-- Forum: Non-English (https://sampforum.blast.hk/forumdisplay.php?fid=9)
+--- Forum: Languages (https://sampforum.blast.hk/forumdisplay.php?fid=33)
+---- Forum: Русский/Russian (https://sampforum.blast.hk/forumdisplay.php?fid=32)
+---- Thread: Забыл функцию! (/showthread.php?tid=333053)

Pages: 1 2


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 слову там и там то норм а если перечислил то мутит даже те которые в исключении