[FilterScript] Anti MG - Simple y efectivo
#9

Quote:
Originally Posted by DesingMyCry
View Post
A falta de objeciones, obligado a debatir conmigo mismo...

Creй un script que supera en velocidad, 30 veces a la funciуn de Zume, ademбs de tener mas opciones de uso.

http://prntscr.com/5nliuj

El script en cuestiуn, utiliza 2 funciones para su correcto funcionamiento.

pawn Code:
/*
    [interno]
        [nombre]
            _@_i@strreplace
        [/nombre]
        [propуsito]
            modificar una palabra o frase en cuestiуn, de una cadena de carбcteres
        [/propуsito]
        [parбmetros]
            [original:array]
                cadena que serб modificada, tambiйn es la variable destino
            [/original:array]
            [anterior:array]
                palabra o conjunto de las mismas, a ser buscada para ser modificada
            [/anterior:array]
            [nueva:array]
                nueva palabra que se sobreescribirб
            [/nueva:array]
            [ignorecase:bool]
                filtrar entre mayъsculas y minъsculas
            [/ignorecase:bool]
            [original:int]
                tamaсo del parбmetro [original:array]
            [/original:int]
        [/parбmetros]
        [retorno]
            [int]
                [>= 0]
                    nъmero de reemplazos que hizo la funciуn
                [/>= 0]
            [/int]
        [/retorno]
    [/interno]
*/

stock _@_i@strreplace(original[], anterior[], nueva[], bool:ignorecase = false, original@t = sizeof(original))
{
    new
        c,
        pos,
        anterior@t = strlen(anterior);
       
    while(~(pos = strfind(original, anterior, ignorecase, pos)))
    {
        strdel(original, pos, pos+anterior@t);
        strins(original, nueva, pos, original@t);

        pos++;
        c++;
    }

    return c;
}

/*
    [funciуn]
        [nombre]
            str_replace
        [/nombre]
        [propуsito]
            modificar una o mas palabras o frases en cuestiуn, de una cadena de carбcteres
        [/propуsito]
        [parбmetros]
            [original:array]
                cadena que serб modificada, tambiйn es la variable destino
            [/original:array]
            [nueva:array]
                nueva palabra que se sobreescribirб
            [/nueva:array]
            [ignorecase:bool]
                filtrar entre mayъsculas y minъsculas
            [/ignorecase:bool]
            [original:int]
                tamaсo del parбmetro [original:array]
            [/original:int]
            [...]
                cadenas que serбn buscadas para ser modificadas
            [/...]
        [/parбmetros]
        [retorno]
            [int]
                [>= 0]
                    nъmero de reemplazos que hizo la funciуn
                [/>= 0]
            [/int]
        [/retorno]
    [/funciуn]
*/

stock str_replace(original[], nueva[], bool:ignorecase, original@t = sizeof(original), {_}:...)
{
    new
        arg@num = numargs(),
        s;

    for(new i = 4; i < arg@num; i++)
    {
        static
            _@[144];
           
        new
            indice,
            caracter;

        principio:

        caracter = getarg(i, indice);

        _@[indice++] = caracter;

        if(caracter != 0) goto principio;

        s += _@_i@strreplace(original, _@, nueva, ignorecase, original@t);
    }
   
    return s;
}


Con un define ya quedarнa igual que tu funciуn:


pawn Code:
#define detectar(%0) str_replace(%0, "", true, sizeof(%0), "xD", "servidor", "metagaming", "server", "admin", "SA:MP")
Y voilа, 30 veces mas veloz.

pawn Code:
public OnGameModeInit()
{
    n>10;

    #define num 10
    #define num2 4
   
    new tiempo;
    new cadena[144] = "Variable -SA:MP- contenedora -admin- de palabras -admin- que deberбn -xD- ser -metagaming- eliminadas -servidor- como mнnimo...-server-";
   
    printf("COMIENZA PRUEBA DE VELOCIDAD > %d vueltas de %d repeticiones c/u -^", num2, num);
    n>2;
    printf("\tDetectarMetagaming(\"%s\");", cadena);
    for(new i_ = 0; i_ < num2; i_++)
    {
        tiempo = GetTickCount();

        for(new i__ = 0; i__ < num; i__++)
        {
            new _@ = DetectarMetagaming(cadena);
            #pragma unused _@
        }

        printf("\t\tVuelta %d demorу %d milisegundos", i_+1, GetTickCount()-tiempo);
    }
    printf("\tResultado:\t%s", cadena);
    n>3;

    cadena = "Variable -SA:MP- contenedora -admin- de palabras -admin- que deberбn -xD- ser -metagaming- eliminadas -servidor- como mнnimo...-server-";
   
    printf("\tstr_replace(\"%s\");", cadena);
   
    for(new i_ = 0; i_ < num2; i_++)
    {
        tiempo = GetTickCount();

        for(new i__ = 0; i__ < num; i__++)
        {
            new _@ = str_replace(cadena, "", true, sizeof(cadena), "xD", "servidor", "metagaming", "server", "admin", "SA:MP");
            #pragma unused _@
        }

        printf("\t\tVuelta %d demorу %d milisegundos", i_+1, GetTickCount()-tiempo);
    }
    printf("\tResultado:\t%s", cadena);

    n>6;
    return 1;
}
Para que sirven este tipo de cosas en el stock?

Code:
_@_i@
Code:
_@_i@
y que hace esto de aqui?

Code:
while(~(pos = strfind(original, anterior, ignorecase, pos)))
Reply


Messages In This Thread
Anti MG - Simple y efectivo - by Smoke123 - 31.12.2014, 05:09
Respuesta: Anti MG - Simple y efectivo - by iSanchez - 31.12.2014, 05:39
Re: Respuesta: Anti MG - Simple y efectivo - by CrashCar - 31.12.2014, 14:10
Respuesta: Anti MG - Simple y efectivo - by Zume - 31.12.2014, 16:07
Respuesta: Anti MG - Simple y efectivo - by Smoke123 - 31.12.2014, 18:48
Respuesta: Anti MG - Simple y efectivo - by iSanchez - 01.01.2015, 00:45
Respuesta: Anti MG - Simple y efectivo - by DesingMyCry - 01.01.2015, 02:45
Respuesta: Anti MG - Simple y efectivo - by DesingMyCry - 02.01.2015, 16:14
Respuesta: Anti MG - Simple y efectivo - by iSanchez - 03.01.2015, 09:21
Respuesta: Anti MG - Simple y efectivo - by DesingMyCry - 03.01.2015, 17:07

Forum Jump:


Users browsing this thread: 1 Guest(s)