Como hacer esto -
TiNcH010 - 15.08.2011
Bueno, como en el otro post que hice antes, sobre Attach3DLabelToPlayer, quiero que arriba de la cabeza le aparezca el ping al jugador.
Estoy innovando cosas nuevas, y testeando y esto es lo unico que me faltarнa xD
Saludos
Respuesta: Como hacer esto -
Ari3l - 15.08.2011
usa SetPlayerChatBubble
En el callback que se actualize pon:
pawn Код:
new szString[50];
format(szString, sizeof(szString), "Ping: %d", GetPlayerPing(playerid));
SetPlayerChatBubble(playerid, szString, color, distancia, tiempo);
Re: Como hacer esto -
SadaharuZ - 15.08.2011
Primero, si es que no tienes un callback para que se actualice, creas uno e inicias el temporizador cuando el script se inicie (si es un
FS:
OnFilterScriptInit, si es un
GM:
OnGameModeInit):
pawn Код:
// OnGameModeInit u OnFilterScriptInit
{
// Aquн las otras cosas
...
// Iniciamos el temporizador:
// "ejemplo_callback" siempre debe tener el nombre del callback que creamos, y debe tener las comillas
// 1000 es el tiempo en milisegundos (1 milisegundo equivale a 1 segundo)
// true (traducciуn: verdadero/verdad) significa que se repetirб cada el tiempo indicado (1 segundo en este caso)
SetTimer("ejemplo_callback", 1000, true); // que se actualice cada 1 segundo
}
// definimos el callback
forward ejemplo_callback();
public ejemplo_callback()
{
}
Luego dentro del callback haces un loop para todos los jugadores y les actualizas el label:
pawn Код:
forward ejemplo_callback();
public ejemplo_callback()
{
// definimos las variables:
new
jugador, // aquн guardaremos la ID del jugador, como si fuera un "playerid"
max_players = GetMaxPlayers(), // esta almacena la cantidad mбxima de jugadores (o slots, como le quieran llamar)
string[16] // y este serб el texto
;
// traducciуn: mientras que "jugador" sea menor a "max_players", aumentarlo en uno y cumplir las funciones adentro, esto se llama bucle
for ( ; jugador < max_players; jugador ++)
{
if ((IsPlayerConnected(jugador)) && !(IsPlayerNPC(jugador))) // si estб conectado y NO es un bot
{
format(string, 16, "Ping: %i", GetPlayerPing(jugador));
SetPlayerChatBubble(jugador, string, 0xFFFFFFFF /* COLOR BLANCO */, 50.0, 1050);
}
}
}
Nota: estб hecho usando bubbles, no labels.
Respuesta: Re: Como hacer esto -
Adoniiz - 15.08.2011
Quote:
Originally Posted by SadaharuZ
Primero, si es que no tienes un callback para que se actualice, creas uno e inicias el temporizador cuando el script se inicie (si es un FS: OnFilterScriptInit, si es un GM: OnGameModeInit):
pawn Код:
// OnGameModeInit u OnFilterScriptInit { // Aquн las otras cosas ...
// Iniciamos el temporizador SetTimer("ejemplo_callback", 1000, true); // que se actualice cada 1 segundo }
forward ejemplo_callback(); public ejemplo_callback() { }
Luego dentro del callback haces un loop para todos los jugadores y les actualizas el label:
pawn Код:
forward ejemplo_callback(); public ejemplo_callback() { new jugador, max_players = GetMaxPlayers(), string[16] ; for ( ; jugador < max_players; jugador ++) { if ((IsPlayerConnected(jugador)) && !(IsPlayerNPC(jugador))) // si estб conectado y NO es un bot { format(string, 16, "Ping: %i", GetPlayerPing(jugador)); SetPlayerChatBubble(jugador, string, 0xFFFFFFFF /* COLOR BLANCO */, 50.0, 1050); } } }
Nota: estб hecho usando bubbles, no labels.
|
Muy buen explicado. talvez la utilize para algo.
Re: Respuesta: Re: Como hacer esto -
SadaharuZ - 15.08.2011
Quote:
Originally Posted by AdonisxD
Muy buen explicado. talvez la utilize para algo.
|
De nada, me alegra haber ayudado. Ahora lo voy a editar asн los mбs nuevos pueden entender el cуdigo mejor.