Przejdź do głównej zawartości

OnNPCTakeDamage

ostrzeżenie

This function was added in omp v1.5.8.3079 and will not work in earlier versions!

Description

This callback is called when an NPC takes damage from a player or another NPC.

NameDescription
npcidThe ID of the NPC that took damage
issueridThe ID of the player/NPC that caused the damage
Float:amountThe amount of damage that was taken
WEAPON:weaponidThe weapon ID used to cause the damage
bodypartThe body part that was hit

Returns

1 - Callback will not be called in other filterscripts.

0 - Allows this callback to be called in other filterscripts.

It is always called first in filterscripts so returning 1 there blocks other filterscripts from processing it.

Examples

public OnNPCTakeDamage(npcid, issuerid, Float:amount, WEAPON:weaponid, bodypart)
{
// Only notify players tracking this NPC
for (new playerid = 0; playerid < MAX_PLAYERS; playerid++)
{
if (!IsPlayerConnected(playerid))
continue;

if (PlayerNPC[playerid] == npcid)
{
if (issuerid == INVALID_PLAYER_ID)
{
SendClientMessage(playerid, 0xFF8800FF, "NPC %d took %.1f damage (weapon: %d, bodypart: %d)",
npcid, amount, _:weaponid, bodypart);
}
else
{
SendClientMessage(playerid, 0xFF8800FF, "NPC %d took %.1f damage from player %d (weapon: %d, bodypart: %d)",
npcid, amount, issuerid, _:weaponid, bodypart);
}
}
}
return 1;
}

Notes

  • This callback is called before the damage is actually applied to the NPC
  • Returning false will NOT prevent the damage from being applied
  • The issuerid parameter will be INVALID_PLAYER_ID if damage is not caused by player
  • Body parts use the same constants as OnPlayerTakeDamage

The following functions might be useful, as they're related to this callback in one way or another.