SA-MP Forums Archive
Problema con mi funcion EnviarMensajeFormateado - 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: Problema con mi funcion EnviarMensajeFormateado (/showthread.php?tid=533085)



Problema con mi funcion EnviarMensajeFormateado - losrivarola98 - 22.08.2014

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!


Respuesta: Problema con mi funcion EnviarMensajeFormateado - adri1 - 22.08.2014

Como tienes definido nombre cuando envias el mensaje?


Re: Respuesta: Problema con mi funcion EnviarMensajeFormateado - Orei - 22.08.2014

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


Respuesta: Problema con mi funcion EnviarMensajeFormateado - losrivarola98 - 22.08.2014

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


Respuesta: Problema con mi funcion EnviarMensajeFormateado - Juance - 22.08.2014

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;
}



Respuesta: Problema con mi funcion EnviarMensajeFormateado - Glimma - 22.08.2014

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));



Respuesta: Problema con mi funcion EnviarMensajeFormateado - losrivarola98 - 22.08.2014

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


Respuesta: Problema con mi funcion EnviarMensajeFormateado - Juance - 22.08.2014

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?


Respuesta: Problema con mi funcion EnviarMensajeFormateado - losrivarola98 - 22.08.2014

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??


Respuesta: Problema con mi funcion EnviarMensajeFormateado - Swedky - 22.08.2014

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.