Ayuda con pNick
#1

Hola. Bueno desde hace ya mucho tiempo llevo usando la funciуn pNick(playerid) (originalmente la saquй de garsinio), es una funciуn donde se obtiene el nombre del jugador
Resulta que desde que actualicй (mas o menos) a la 0.3d, me estб dando muchos problemas.
Por ej: con el comando /congelar
pawn Код:
//Con pNick dice que el comando NO EXISTE
COMMAND:congelar(playerid,params[])
{
    if(Informacion[playerid][Admin] >= 1)
    {
        new id;
        if(sscanf(params,"d",id))
        {
            if(Informacion[id][Idioma]==0) SendClientMessage(playerid,-1,"Usa: {FF0000}/congelar {FFFFFF}[ID/Nombre]");
            if(Informacion[id][Idioma]==1) SendClientMessage(playerid,-1,"Use: {FF0000}/freeze {FFFFFF}[ID/Name]");
            return 1;
        }
        if(!IsPlayerConnected(id)) return SendClientMessage(playerid,0xFF0000FF,"Jugador no conectado");
        TogglePlayerControllable(id,0);
        new st[128 char];
        if(Informacion[id][Idioma]==0) format(st,128,"Has congelado a {FF0000}%s (%d)",pNick(id),id);
        if(Informacion[id][Idioma]==1) format(st,128,"You freeze {FF0000}%s (%d)",pNick(id),id);
        SendClientMessage(playerid,-1,st);
        if(Informacion[id][Idioma]==0) SendClientMessage(id,-1,"Has sido congelado por {FF0000}un admin");
        if(Informacion[id][Idioma]==1) SendClientMessage(id,-1,"You was freeze by{FF0000} admin");
        return 1;
    }
    return 1;
}
//Pero si saco el pNick y pongo por ej: "id"
COMMAND:congelar(playerid,params[])
{
    if(Informacion[playerid][Admin] >= 1)
    {
        new id;
        if(sscanf(params,"d",id))
        {
            if(Informacion[id][Idioma]==0) SendClientMessage(playerid,-1,"Usa: {FF0000}/congelar {FFFFFF}[ID/Nombre]");
            if(Informacion[id][Idioma]==1) SendClientMessage(playerid,-1,"Use: {FF0000}/freeze {FFFFFF}[ID/Name]");
            return 1;
        }
        if(!IsPlayerConnected(id)) return SendClientMessage(playerid,0xFF0000FF,"Jugador no conectado");
        TogglePlayerControllable(id,0);
        new st[128 char];
        if(Informacion[id][Idioma]==0) format(st,128,"Has congelado a {FF0000}%s (%d)",id,id);
        if(Informacion[id][Idioma]==1) format(st,128,"You freeze {FF0000}%s (%d)",id,id);
        SendClientMessage(playerid,-1,st);
        if(Informacion[id][Idioma]==0) SendClientMessage(id,-1,"Has sido congelado por {FF0000}un admin");
        if(Informacion[id][Idioma]==1) SendClientMessage(id,-1,"You was freeze by{FF0000} admin");
        return 1;
    }
    return 1;
}
//el comando anda PERFECTO (obviamente no muestra el nombre)
stock pNick(playerid)
{
    new nick[MAX_PLAYER_NAME];
    GetPlayerName(playerid, nick, MAX_PLAYER_NAME);
    return nick;
}

AGREGO:
Anduve probando con GetPlayerName
pawn Код:
new name[MAX_PLAYER_NAME];
    GetPlayerName(playerid,name,24);
Pero tampoco funciona :S
Reply
#2

Quote:
Originally Posted by godoy32
Посмотреть сообщение
Anduve probando con GetPlayerName
pawn Код:
new name[MAX_PLAYER_NAME];
    GetPlayerName(playerid,name,24);
Pero tampoco funciona :S
Por que definis con MAX_PLAYER_NAME si despuйs usas 24.
Podes probar de 2 formas:
pawn Код:
new name[MAX_PLAYER_NAME];
GetPlayerName(playerid, name, sizeof (name));
у

pawn Код:
new name[24];
GetPlayerName(playerid, name, 24);
Reply
#3

Estas causando un overflow, el tamaсo de st deberia ser 128, no 128 chars.

Quote:
Originally Posted by TiNcH010
Посмотреть сообщение
Por que definis con MAX_PLAYER_NAME si despuйs usas 24.
Podes probar de 2 formas:
pawn Код:
new name[MAX_PLAYER_NAME];
GetPlayerName(playerid, name, sizeof (name));
у

pawn Код:
new name[24];
GetPlayerName(playerid, name, 24);
Eso es porque si el dнa de maсana, se admiten nombres de 32 caracteres, deberas cambiar todo tu script o podrias causar un overflow, en cambio si utilizas MAX_PLAYER_NAME no tendras este problema.
Reply
#4

Quote:
Originally Posted by the_chaoz
Посмотреть сообщение
Estas causando un overflow, el tamaсo de st deberia ser 128, no 128 chars.
(...)
Perfecto, era eso. Pero cuando se deberнa usar 'char'?
Reply
#5

se lo utiliza para strings comprimidos/empaquetados.
Reply
#6

Quote:
Originally Posted by the_chaoz
Посмотреть сообщение
se lo utiliza para strings comprimidos/empaquetados.
Perfecto. Muchas gracias por tu ayuda!
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)