[Tutorial] Mensajes dinбmicos (format)
#1

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!
Reply


Messages In This Thread

Forum Jump:


Users browsing this thread: 3 Guest(s)