跳到主要内容

OnNPCTakeDamage

注意

这个回调是在omp v1.5.8.3079中添加的,在以前的版本中不起作用!

描述

当 NPC 受到来自玩家或其他 NPC 的伤害时调用此回调。

参数说明
npcid受到伤害的 NPC 的 ID
issuerid造成伤害的玩家/NPC 的 ID
Float:amount受到的伤害数量
WEAPON:weaponid用于造成伤害的武器 ID
bodypart被击中的身体部位

返回值

返回 false 阻止伤害生效,或返回 true 允许伤害。

示例

public OnNPCTakeDamage(npcid, issuerid, Float:amount, WEAPON:weaponid, bodypart)
{
// 仅通知追踪此 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 受到 %.1f 点伤害(武器:%d,身体部位:%d)",
npcid, amount, _:weaponid, bodypart);
}
else
{
SendClientMessage(playerid, 0xFF8800FF, "NPC %d 受到玩家 %d 造成的 %.1f 点伤害(武器:%d,身体部位:%d)",
npcid, amount, issuerid, _:weaponid, bodypart);
}
}
}
return 1;
}

注意事项

  • 此回调在伤害实际应用到 NPC 之前调用
  • 返回 false 将阻止伤害生效
  • 如果伤害不是由玩家造成的,issuerid 参数将为 INVALID_PLAYER_ID
  • 身体部位使用与 OnPlayerTakeDamage 相同的常量

相关函数

以下函数可能有用,因为它们与此回调以某种方式相关。

相关回调