Problema con mi funcion EnviarMensajeFormateado
#1

Bueno pasa que hice esta funcion:
pawn Код:
stock EnviarMensajeFormateado(playerid,color,const mensaje[], {Float,_}:...)
{
    new cad[128];
    for(new i; i < numargs(); i++)
    format(cad,sizeof(cad),mensaje,getarg(i));
    SendClientMessage(playerid,color,cad);
    return 1;
}
Pero no me funciona, por ejemplo, la funcion lo uso asi:
pawn Код:
EnviarMensajeFormateado(playerid,-1,"Tu ID: %i, tu nombre: %s",playerid,Nombre[playerid]);
Pero me sale asi en el servidor:
Код:
Tu ID: 108, tu nombre:
Osea me sale una ID que no tengo y el nombre no me sale. Porfavor si alguien me puede ayudar, gracias!
Reply
#2

Como tienes definido nombre cuando envias el mensaje?
Reply
#3

Quote:
Originally Posted by adri1
Посмотреть сообщение
Como tienes definido nombre cuando envias el mensaje?
Creo que tiene que definirlo con GetPlayerName їNo?
Reply
#4

Nombre[MAX_PLAYERS];
El problema al parecer es que no detecta los arrays, solo las variables simples, creo que tengo que detectar el index del argumento con getarg, pero nose como, probe con esto:
pawn Код:
stock Funcion(const mensaje[],...)
{
    new cad[128],arg;
    for(new i; i < numargs(); i++)
    {
        getarg(i,arg);
        format(cad,sizeof(cad),mensaje,getarg(i,arg));
    }
    return print(cad);
}
Pero no funciona, solo me sale el primer caracter, los demas no
Reply
#5

Y si probas asн?.

pawn Код:
CMD:msg(playerid,params[])
{
new Nombre[MAX_PLAYER_NAME];
GetPlayerName(playerid,Nombre,sizeof(Nombre));
EnviarMensajeFormateado(playerid,-1,"Tu ID: %i, tu nombre: %s",playerid,Nombre);
return 1;
}
Reply
#6

Yo lo harнa con un macro lo de EnviarMensajeFormateado.

pawn Код:
new stringf[128];
#define EnviarMensajeFormateado(%1, %2, %3) SendClientMessage(%1, %2, (format(stringf, sizeof(stringf), %3), stringf))
Con respecto a lo de Nombre, antes debes utilizar la funciуn GetPlayerName con esa variable, pero la misma debe ser un array, y no un argumento de ese tipo. Para no tener que estar definiendo a cada rato lo de GetPlayerName, creas esta funciуn:

pawn Код:
stock ObtenerNombre(playerid)
{
    new string[MAX_PLAYER_NAME+1];
    GetPlayerName(playerid, string, sizeof(string));
    return string;
}
Quedando asн:

pawn Код:
EnviarMensajeFormateado(playerid, -1, "Tu ID: %i, tu nombre: %s", playerid, ObtenerNombre(playerid));
Reply
#7

Se desviaron del tema, el problema va con la funcion, no con el Nombre[playerid], que es lo que esta mal en la funcion?
Reply
#8

Quote:
Originally Posted by losrivarola98
Посмотреть сообщение
Se desviaron del tema, el problema va con la funcion, no con el Nombre[playerid], que es lo que esta mal en la funcion?
їCуmo sabes que el problema estб en al funciуn? їprobaste los mйtodos que te dimos?
Reply
#9

Porque solo di un ejemplo, diganme que esta mal en la funcion, porque tengo entendido que getarg devuelve el valor del argumento, no el argumento en si, como solucionar mi funcion??
Reply
#10

Tu variable no almacenarнa todo el nick. Deberнa ser asн:

pawn Код:
static Nombre[MAX_PLAYERS][MAX_PLAYER_NAME];
Su uso serнa el mismo.


Quote:
Originally Posted by Glimma
Посмотреть сообщение
Yo lo harнa con un macro lo de EnviarMensajeFormateado.

pawn Код:
new stringf[128];
#define EnviarMensajeFormateado(%1, %2, %3) SendClientMessage(%1, %2, (format(stringf, sizeof(stringf), %3), stringf))
Eso no funcionarб, format no devuelve la cadena a la que se le da formato y entre los parбmetros de la funciуn no debe llevar espacios.
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)