Aller au contenu principal

OnPlayerGiveDamage

Paramètres

Cette callback est appelée quand un joueur inflige des dégâts à un autre joueur.

NomDescription
int playeridID du joueur qui inflige le dégât
int damagedidID du joueur qui reçoit le dégât
float Float:amountMontant de la perte en armure/vie (combinés)
int WEAPON:weaponidCause du dommage
int bodypartPartie du corps qui a été touchée

Valeur de retour

1 - Autorise la callback à être appelée par un autre script.

0 - Refuser que la callback soit appelée ailleurs.

Exemple

public OnPlayerGiveDamage(playerid, damagedid, Float:amount, WEAPON:weaponid, bodypart)
{
new
string[128],
victim[MAX_PLAYER_NAME],
attacker[MAX_PLAYER_NAME],
weaponname[24];

GetPlayerName(playerid, attacker, sizeof (attacker));
GetPlayerName(damagedid, victim, sizeof (victim));
GetWeaponName(weaponid, weaponname, sizeof (weaponname));

format(string, sizeof(string), "%s a infligé %.0f de dégâts à %s, arme: %s, bodypart: %d", attacker, amount, victim, weaponname, bodypart);

SendClientMessageToAll(0xFFFFFFFF, string);

return 1;
}

Astuce

astuce

Gardez à l'esprit que cette fonction peut être inexacte dans certains cas.

Si vous voulez empêcher certains joueurs de s'endommager, utilisez SetPlayerTeam.

Le weaponid retournera la raison 37 (lance-flammes) de n'importe quelle source de feu (par exemple molotov, 18).

Le weaponid retournera la raison 51 de n'importe quelle arme qui crée une explosion (par exemple RPG, grenade).

playerid est le seul à pouvoir appeler le callback.

Le montant est toujours le maximum de dégâts que l'arme peut faire, même si la santé restante est inférieure à ce maximum de dégâts. Ainsi, lorsqu'un joueur a 100,0 points de vie et se fait tirer dessus avec un Desert Eagle qui a une valeur de dégâts de 46,2, il faut 3 coups pour tuer ce joueur. Les 3 tirs montreront au final un montant de 46,2, même si lorsque le dernier coup frappe, le joueur n'a plus que 7,6 points de vie.