Mensajes dinбmicos (format) -
Miguel - 23.01.2010
Como muchos habran notado, podemos usar
SendClientMessage(playerid, color, texto[]) para hacer que aparescan menseajes en el chat de tu servidor, pero muchas veces queremos que estos mesajes contengan algo mбs de lo que ponemos en el script o cуdigo, es decir, algun valor o texto que pueda cambiar sin tener que cambiar nada en en script manualmente.
Lograr esto es verdaderamente simple y no necesitan descargar ni incluir nada, ya que viene incluido internamente en el paquete de sa-mp. A continuaciуn, un paso a paso de como lograr esto y algunos tips para hacerlo de una forma mбs facil.
їQuй necesitamos?
.Una variable que pueda contener el valor que queramos introducir en nuestro mensajes:
pawn Код:
new string[]; // creamos una variable llamada "string", por ahora no voy a especificar el valor ya que hay que calcularlo antes de ponerlo.
.El valor que queramos incluir en el mensaje en forma de variable, la cual mostraremos mбs adelante.
Ejemplo:
Supongamos que queremos crear un mensaje el cual se mostrara cuando el jugador entre o salga, vamos a los callbacks:
pawn Код:
public OnPlayerConnect(playerid)
{
return 1;
}
pawn Код:
public OnPlayerDiscconect(playerid, reason)
{
return 1;
}
Antes de comenzar debemos tener en mente lo siguiente:
- %d == Nъmero entero (-1, 2, 5, -6, 100, etc).
- %s == String ("hola", "Miguel", "asjsfhla", etc).
- %f == Float (2.1457, 4584.2242, 1.1, 6.447, etc).
Entonces podemos comenzar:
pawn Код:
public OnPlayerConnect(playerid)
{
new
name[24], // aqui vamos a guardar el nombre del jugador
string[60]; // aqui es donde vamos a guardar la suma del mensaje y el nombre del jugador (35 (mesaje) + 24 (name) + 1 (playerid)) + 1
GetPlayerName(playerid, name, sizeof(name)); // aqui buscamos el nombre del jugador que entra al servidor, y lo guardamos en la variable "name"
format(string, sizeof(string), "*** %s (ID:%d) ha entrado al servidor!", name, playerid); // creamos un mensaje y le agregamos los valores name y playerid
/*%s y %d se sustituiran por los valores que estan en despuйs de la ъltima coma (name y playerid)*/
/*%s == name (%s porque es un string), %d == playerid(%d porque playerid es un nъmero entero)*/
SendClientMessageToAll(COLOR, string); // mandamos el mensaje con los valores a todos los jugadores
return 1;
}
Fundamentalmente lo que hacemos es utilizar
format para darle formato a un mensaje, pudiendole el valor (ya definido) que nos de la gana.
Otro ejemplo:
pawn Код:
public OnPlayerDisconnect(playerid, reason)
{
new
string[52],
name[24];
GetPlayerName(playerid, name, sizeof(name));
format(string, sizeof(string), "*** %s ha dejado el servidor!", name);
SendClientMessageToAll(COLOR, string);
return 1;
}
Tambiйn podemos hacer esto:
pawn Код:
#define VALOR 15
#define MENSAJE "Hola"
pawn Код:
new string[35];
format(string, sizeof(string), "%s nъmero %d!", MENSAJE, VALOR);
SendClientMessageToAll(COLOR, string);
// retornarб "Hola nъmero 5!"
El punto es, podemos poner valores dentro de nuestros mensajes y estos valores pueden cambiar y seguir siendo mostrados!
Re: [Tutorial] Mensajes dinбmicos -
TheChaoz - 23.01.2010
buen tutorial.
explica bien como usar el format que es muy util no solo para mandar mensajes
va a servir mucho para los que no saben como usarlo.
Re: [Tutorial] Mensajes dinбmicos -
xenowort - 23.01.2010
Muy buen aporte a muchisimos les va a ayudar a mandar mensajes en otros callbacks.
Respuesta: [Tutorial] Mensajes dinбmicos (format) -
juansrc - 16.04.2012
y como lo hago para usarlo con un dialog tipo Input es que quiero Hacer un SetplayerFacingangle con un dialog pero no me sale.
Respuesta: [Tutorial] Mensajes dinбmicos (format) -
TiNcH010 - 16.04.2012
Quote:
Originally Posted by juansrc
y como lo hago para usarlo con un dialog tipo Input es que quiero Hacer un SetplayerFacingangle con un dialog pero no me sale.
|
Es lo mismo que usando el string para los mensajes:
pawn Код:
new string[35];
format(string, sizeof(string), "Este es el ejemplo!\nEste es el ejemplo!");
ShowPlayerDialog(playerid, DIALOGID, DIALOG_STYLE_INPUT, "Test", string, "Ok", "Cancelar");
Re: [Tutorial] Mensajes dinбmicos (format) -
Soi_salva - 16.04.2012
Jajaja pensй que estaba Prohibido revivir temas -__-!
Respuesta: [Tutorial] Mensajes dinбmicos (format) -
juansrc - 16.04.2012
Quote:
Originally Posted by TiNcH010
Es lo mismo que usando el string para los mensajes:
pawn Код:
new string[35]; format(string, sizeof(string), "Este es el ejemplo!\nEste es el ejemplo!"); ShowPlayerDialog(playerid, DIALOGID, DIALOG_STYLE_INPUT, "Test", string, "Ok", "Cancelar");
|
y como lo hago para usarlo con un dialog tipo Input es que quiero Hacer un SetplayerFacingangle con un dialog pero no me sale.
pawn Код:
if(!response) return SendClientMessage(playerid, 0xFFFFFFFF, "Cancelaste!");
new facing[128];
new szStr[4] = "5.1";
new Float:fMyFloat = floatstr( szStr );
format(facing, sizeof(facing), "tu nuevo angulo es: %s", inputtext);
format( szStr, sizeof szStr, "%f", fMyFloat );
SendClientMessage(playerid, 0xFFFFFFFF, facing);
SetPlayerFacingAngle(playerid, szStr);
return 1;
}
uso de guнa
esto pero no me sale bien, me aparece este error:
pawn Код:
C:\Users\Juan Sebastiбn\Documents\otros\server\Server Anterior\filterscripts\fltrscrptb.pwn(1355) : error 035: argument type mismatch (argument 2)
Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase
1 Error.
Quote:
Originally Posted by Soi_salva
Jajaja pensй que estaba Prohibido revivir temas -__-!
|
Creo que no hay problema si es una duda que tengo verdad?
Respuesta: Re: [Tutorial] Mensajes dinбmicos (format) -
TiNcH010 - 16.04.2012
Quote:
Originally Posted by Soi_salva
Jajaja pensй que estaba Prohibido revivir temas -__-!
|
Quote:
Originally Posted by Zamaroht
• No se permite postear en topics con mбs de un mes desde el ъltimo post en dicho topic, siendo la ъnica excepciуn aportar contenido de crнtica importancia, o el surgimiento de una duda muy especнfica de un post de dicho topic. De lo contrario, crear un topic nuevo.
|
....
Respuesta: Re: [Tutorial] Mensajes dinбmicos (format) -
juansrc - 16.04.2012
Quote:
Originally Posted by TiNcH010
....
|
:l hago nuevo tema?
Respuesta: Re: [Tutorial] Mensajes dinбmicos (format) -
TiNcH010 - 16.04.2012
Quote:
Originally Posted by juansrc
:l hago nuevo tema?
|
Quote:
Originally Posted by Zamaroht
• No se permite postear en topics con mбs de un mes desde el ъltimo post en dicho topic, siendo la ъnica excepciуn aportar contenido de crнtica importancia, o el surgimiento de una duda muy especнfica de un post de dicho topic. De lo contrario, crear un topic nuevo.
|
Significa que no, que vos reviviste para preguntar, sacar una duda, aportar o hacer uso de contenido de crнtica importancia. No estas "reviviendo" nada, lo podes hacer tranquilamente.