Saltar al contenido principal

OnPlayerUpdate

Descripción​

Este callback se llama cada vez que un cliente/jugador actualiza su estado con el servidor. A menudo de usa para crear callbacks personalizados para detectar actualizaciones en el cliente que no son rastreadas activamente por el servidor, como las actualizaciones de salud o chaleco o jugadores cambiando de armas.

NombreDescripción
playeridEl ID del jugador que envió un paquete de actualización.

Devoluciones​

0 - El nuevo estado del jugador, no sera transmitido al resto de los jugadores.

1 - El nuevo estado del jugador, sera transmitido normalmente al resto de los jugadores.

Siempre se llama primero en filterscripts.

Ejemplos​

public OnPlayerUpdate(playerid)
{
new iCurWeap = GetPlayerWeapon(playerid); // Devuelve el arma en mano actual del jugador
if (iCurWeap != GetPVarInt(playerid, "iCurrentWeapon")) // Si cambió de arma desde la última actualización
{
// Vamos a llamar un callback nombrado OnPlayerChangeWeapon
OnPlayerChangeWeapon(playerid, GetPVarInt(playerid, "iCurrentWeapon"), iCurWeap);
SetPVarInt(playerid, "iCurrentWeapon", iCurWeap); //Actualizamos la variable de arma al jugador
}
return 1; // Envía esta actualización a otros jugadores
}

stock OnPlayerChangeWeapon(playerid, oldweapon, newweapon)
{
new s[128],
oWeapon[24],
nWeapon[24];

GetWeaponName(oldweapon, oWeapon, sizeof(oWeapon));
GetWeaponName(newweapon, nWeapon, sizeof(nWeapon));

format(s, sizeof(s), "Cambiaste del arma %s a %s!", oWeapon, nWeapon);

SendClientMessage(playerid, 0xFFFFFFFF, s);
}
public OnPlayerUpdate(playerid)
{
new Float:fHealth;

GetPlayerHealth(playerid, fHealth);

if (fHealth != GetPVarFloat(playerid, "faPlayerHealth"))
{
// La salud del jugador cambió desde la última actualización con el servidor, así que obviamente eso es lo actualizado.
// Hagamos mas comprobaciones para ver si aumentó o disminuyó de salud, anti-health cheat? ;)

if (fHealth > GetPVarFloat(playerid, "faPlayerHealth"))
{
/* El aumentó su salud! Usando cheats? Escribe tus propios scripts aquí para expresar de qué manera el jugador ganó salud */
}
else
{
/* Él perdió salud! */
}

SetPVarFloat(playerid, "faPlayerHealth", fHealth);
}
}

Notes​

nota

Este callback también puede ser llamado por un NPC.

aviso
  • Este callback se llama, en promedio, 30 veces por segundo, por cada jugador; sólo usalo cuando sepas para que sirve (o más importante, para lo que no está pensado).
  • La frecuencia con la que se llama este callback varía por cada jugador, dependiendo qué está haciendo el jugador. Conduciendo o disparando desencadenará muchas mas actualizaciones que estando quieto.

Funciones Relacionadas​