Aller au contenu principal

OnPlayerDeath

Paramètres

Cette callback est appelée quand le joueur est mort. Il peut s'agir aussi bien d'une mort par kill qu'une mort par suicide.

NomDescription
int playeridID du joueur mort
int killeridID du joueur qui kill le playerid, ou INVALID_PLAYER_ID à défaut
int WEAPON:reasonID de la raison de la mort

Valeur de retour

Cette callback ne retourne rien, mais doit retourner quelque chose. Autrement dit, return callback(); ne fonctionnera pas car la callback ne retourne rien, mais un return (return 1; ou return 0;) doit être effectué dans la callback.

Exemple

new PlayerDeaths[MAX_PLAYERS];
new PlayerKills[MAX_PLAYERS];

public OnPlayerDeath(playerid, killerid, WEAPON:reason)
{
SendDeathMessage(killerid, playerid, reason); // Notification dans le killfeed

// Vérifie si le killerid est valide
if (killerid != INVALID_PLAYER_ID)
{
PlayerKills[killerid] ++;
}

// Ajoute une mort au playerid
PlayerDeaths[playerid] ++;
return 1;
}

Astuces

astuce

Les morts à raison d'une source de feu seront caractérisées par l'ID 37 (lance-flammes) ; La raison pour les explosions avec une arme (RPG, grenade, ...) seront caractérisées par l'ID.

Il faut toujours vérifier que le killerid est valide avant d'utiliser SendDeathMessage. INVALID_PLAYER_ID est un playerid valide.

playerid est le seul à pouvoir appeler cette callback (bon à savoir pour un anti fake death par exemple).

attention

Vous DEVEZ vérifier que killerid est valide (pas INVALID_PLAYER_ID) avant de l'utiliser dans un array (n'importe où en réalité), sinon le script OnPlayerDeath est susceptible de crash.

C'est parce que INVALID_PLAYER_ID est défini comme ayant la valeur '65535' que si un array a seulement MAX_PLAYERS comme élément le script OnPlayerDeath va crash (vous tentez d'indexer au-delà de la limite MAX_PLAYERS).

Fonctions connexes