Anti-Groserias [Ayuda]
#1

Hola amigos del samp, me preguntaba que funciуn puedo utilizar para poder hacer un sistema de anti-groserias de las palabras mas comunes y que al escribir les salgan asteriscos.


EJEMPLO: Oye eres un ****

pawn Код:
{"puta"},
        {"puto"},
        {"maricon"},
        {"estupido"},
        {"marica"},
        {"gay"},
        {"pendejo"},
        {"lesviana"},
        {"chupa"},
        {"pelotudo"},
        {"zorra"},
        {"huevo"},
        {"homosexual"},
        {"mierda"}
saludos
Reply
#2

OnPlayerText, strfind.

Si lo quieres hacer con array haz un loop y ya esta...
pawn Код:
for(new i = 0; i < sizeof(insultos); i++)
{
if(strfind(text, insultos[i], true) != -1)
{
SendClientMessage(playerid, "no insultes hamijo si no quieres problemas ! o te jakiaremos");
return 0;
}
}

Edit: para los asteriscos podrias hacer asi:
pawn Код:
new apos = strfind(text, insultos[i], true);
new epos = strlen(insultos[i]);
for(new sd = 0; sd < epos; sd++)
{
str[apos+sd] = '*';
}
Reply
#3

Quote:
Originally Posted by adri1
Посмотреть сообщение
OnPlayerText, strfind.

Si lo quieres hacer con array haz un loop y ya esta...
pawn Код:
for(new i = 0; i < sizeof(insultos); i++)
{
if(strfind(text, insultos[i], true) != -1)
{
SendClientMessage(playerid, "no insultes hamijo si no quieres problemas ! o te jakiaremos");
return 0;
}
}

Edit: para los asteriscos podrias hacer asi:
pawn Код:
new apos = strfind(text, insultos[i], true);
new epos = strlen(insultos[i]);
for(new sd = 0; sd < epos; sd++)
{
str[apos+sd] = '*';
}
Lo hice asi pero me sale errores.

pawn Код:
#include <a_samp>

#if defined FILTERSCRIPT

for(new i = 0; i < MAX_PLAYERS; i++)
{
    {"puta"},
        {"puto"},
        {"maricon"},
        {"estupido"},
        {"marica"},
        {"gay"},
        {"pendejo"},
        {"lesviana"},
        {"chupa"},
        {"pelotudo"},
        {"zorra"},
        {"huevo"},
        {"homosexual"},
        {"mierda"}
};

new apos = strfind(text, insultos[i], true);
new epos = strlen(insultos[i]);

for(new sd = 0; sd < epos; sd++)
{
str[apos+sd] = '*';
}


#endif



public OnPlayerText(playerid, text[])
{

for(new i = 0; i < sizeof(insultos); i++)
{
if(strfind(text, insultos[i], true) != -1)
{
SendClientMessage(playerid, "no insultes hamijo si no quieres problemas ! o te jakiaremos");
return 0;
}
}
    return 1;
}
los errores

pawn Код:
C:\Users\User\Desktop\grose.pwn(43) : error 017: undefined symbol "insultos"
C:\Users\User\Desktop\grose.pwn(43) : error 036: empty statement
C:\Users\User\Desktop\grose.pwn(43) : error 017: undefined symbol "i"
C:\Users\User\Desktop\grose.pwn(43) : fatal error 107: too many error messages on one line

Compilation aborted.Pawn compiler 3.2.3664          Copyright (c) 1997-2006, ITB CompuPhase


4 Errors.
Reply
#4

Hola, aquн hice el cуdigo que tъ necesitas: http://forum.sa-mp.com/showpost.php?...&postcount=441
Reply
#5

Tambiйn lo podrнas hacer asн:

pawn Код:
public OnPlayerText(playerid, text[])
{
    static insultos[][] =
    {
        "puta",
        "puto"
    };

    for(new e = 0, g = sizeof(insultos); e != g; e++)
    {
        new pos = strfind(text, insultos[e], true);
        if(pos != -1)
        {
            new len = strlen(insultos[e]);
            for(new i = pos, p = len; i != p; i++)
            {
                if(pos + len == i)
                {
                    break;
                }
                text[i] = '*';
            }
        }
    }
    return 1;
}
PD: "insultos" lo puedes poner fuera del public, pero lo puse dentro porque veo que tienes problemas poniendo cуdigos en tu script xD
Reply
#6

Quote:
Originally Posted by Zume-Zero
Посмотреть сообщение
Hola, aquн hice el cуdigo que tъ necesitas: http://forum.sa-mp.com/showpost.php?...&postcount=441
Quote:
Originally Posted by [J]ulian
Посмотреть сообщение
Tambiйn lo podrнas hacer asн:

pawn Код:
public OnPlayerText(playerid, text[])
{
    static insultos[][] =
    {
        "puta",
        "puto"
    };

    for(new e = 0, g = sizeof(insultos); e != g; e++)
    {
        new pos = strfind(text, insultos[e], true);
        if(pos != -1)
        {
            new len = strlen(insultos[e]);
            for(new i = pos, p = len; i != p; i++)
            {
                if(pos + len == i)
                {
                    break;
                }
                text[i] = '*';
            }
        }
    }
    return 1;
}
PD: "insultos" lo puedes poner fuera del public, pero lo puse dentro porque veo que tienes problemas poniendo cуdigos en tu script xD

Lo que andaba buscando *.*
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)