[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
#2

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.
Reply
#3

Muy buen aporte a muchisimos les va a ayudar a mandar mensajes en otros callbacks.
Reply
#4

y como lo hago para usarlo con un dialog tipo Input es que quiero Hacer un SetplayerFacingangle con un dialog pero no me sale.
Reply
#5

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");
Reply
#6

Jajaja pensй que estaba Prohibido revivir temas -__-!
Reply
#7

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?
Reply
#8

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.
....
Reply
#9

Quote:
Originally Posted by TiNcH010
Посмотреть сообщение
....
:l hago nuevo tema?
Reply
#10

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


Forum Jump:


Users browsing this thread: 2 Guest(s)