SA-MP Forums Archive
Quitar Caracteres - 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: Español/Spanish (https://sampforum.blast.hk/forumdisplay.php?fid=29)
+---- Thread: Quitar Caracteres (/showthread.php?tid=200507)



Quitar Caracteres - JoseDeLaVilla - 18.12.2010

hola a todos!
queria saber si puede ayudarme con esto, quisiera saber si es posible que cuando un jugador se conecte en mi server con X caracter, no lo expulse ni nada, solo le quite ese caracter...

por ejemplo, si un jugador entra con HolaJose, le quite el Hola y convierta su nick en Jose solamente xD
bueno desde ya gracias por su atencion...


Respuesta: Quitar Caracteres - TheChaoz - 18.12.2010

si, tenes que usar strdel y strfind, ahora me voy a comer, si cuando vuelvo no te contestaron hago el codigo.

edit:
va a quitar 1 caracter (solo 1) es un codigo ejemplo:
pawn Код:
new n[MAX_PLAYER_NAME], p;
        GetPlayerName(playerid, n, sizeof(n));
        p = strfind(n, "_", true, 0);
        if(p != -1)strdel(n, p, p+1);
        SetPlayerName(playerid, n);
no seria muy dificil de adatpar para que quite todos los caracteres 'X' de un nick


Re: Quitar Caracteres - mark.18 - 18.12.2010

Recomendarнa que te hicieras una tabla tipo

new palabras_denegadas[][]{
Hola,
Adios,
Dios,
Asesino
}

Y usar esta tabla en el cуdigo


Re: Quitar Caracteres - SAMPGammer - 18.12.2010

Quote:
Originally Posted by mark.18
Посмотреть сообщение
Recomendarнa que te hicieras una tabla tipo

new palabras_denegadas[][]{
Hola,
Adios,
Dios,
Asesino
}

Y usar esta tabla en el cуdigo
EStб incompleto. No se acabarlo, pero sуlo te digo que estб incompleto.


Re: Quitar Caracteres - mark.18 - 18.12.2010

Quote:
Originally Posted by SAMPGammer
Посмотреть сообщение
EStб incompleto. No se acabarlo, pero sуlo te digo que estб incompleto.
Ya, solo era un ejemplo de como poder almacenar los caracteres en una misma variable y no tener que estar repitiendo el mismo cуdigo x cada palabra


Respuesta: Quitar Caracteres - JoseDeLaVilla - 18.12.2010

ammm y supongamos que quisiera usar distintas palabras como el code de mark.18, como lo introdusco en el code de thechaoz xq lo hago asi, como yo se y me da este error :S
Код:
-:\-\-\-\-\-(1049) : error 048: array dimensions do not match



Respuesta: Quitar Caracteres - [J]ulian - 18.12.2010

pawn Код:
new n[MAX_PLAYER_NAME], p;
        GetPlayerName(playerid, n, sizeof(n));
        p = strfind(n, "_", true, 0) || strfind(n, "hola", true, 0);
        if(p != -1)strdel(n, p, p+1);
        SetPlayerName(playerid, n);
Utilizando lo de chaoz y agregar mбs palabras calculo que asн serнa xD.


Re: Quitar Caracteres - cocolabush - 19.12.2010

Mira, aca esta el codigo completo para sacar palabras enteras:


Primero agregas este array general:
pawn Код:
new palabras_denegadas[][MAX_PLAYER_NAME] =  {
    {"hola"},
    {"joyo"},
    {"cocolabush :P"},
    {"kolal"},
    {"CHACAL"},
    {"avol"},
    {"mark.18 dejo"},
    {"esto incompleto"},
    {"y SAMPGammer"},
    {"no sabe seguirlo"}
};
Y despues agregar dentro de un callback, que es recomendable que sea OnPlayerConnect
pawn Код:
new
        n[MAX_PLAYER_NAME],
        p,
        temp;
       
    GetPlayerName(playerid, n, sizeof(n));
    for(new i = 0; i < sizeof(palabras_denegadas); i++) {
        p = strfind(n, palabras_denegadas[i], true, 0);
        if(p != -1) strdel(n, p, strlen(palabras_denegadas[i]) + p);

    }
    temp = SetPlayerName(playerid, n);
    if(temp != 1) {
   
         // y un pequeсo agregado...
        SetPlayerWeather(playerid, -66);
         // ... hasta aca

        SendClientMessage(playerid, 0xFFFFFFFF, "Su nombre ya esta utilizado, por favor elija otro.");
        Kick(playerid);
        return 1;
    }
Espero que te sirva

Aclaro: Perdon por los comentarios que puse en el primer codigo... esque estoy realmente muy aburrido...

Edito: No probe nada, lo cree asi nomas, y me fije que compile bien... Puede que tenga algun error o bug, si encunetran uno por favor avisen o arreglen.

Edit2: bug arreglado


________________________________________

Quote:
Originally Posted by [J]ulian
Посмотреть сообщение
pawn Код:
new n[MAX_PLAYER_NAME], p;
        GetPlayerName(playerid, n, sizeof(n));
        p = strfind(n, "_", true, 0) || strfind(n, "hola", true, 0);
        if(p != -1)strdel(n, p, p+1);
        SetPlayerName(playerid, n);
Utilizando lo de chaoz y agregar mбs palabras calculo que asн serнa xD.
No, no sacaria la palabra "hola", sino que sacaria la "h" nomas.


Respuesta: Quitar Caracteres - JoseDeLaVilla - 20.12.2010

muchas gracias a todos por sus respuestas!
y sobre todo a cocolabush, tu code me funciono perfecto !

gracias, pueden cerrar...