---
title: "OnNPCGiveDamage | open.mp"
description: "当 NPC 对玩家造成伤害时调用此回调。"
canonical: https://omp.itsneufox.com/zh-CN/docs/scripting/callbacks/OnNPCGiveDamage
language: zh-CN
---

# OnNPCGiveDamage

注意

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

## 描述

当 NPC 对玩家造成伤害时调用此回调。

| 参数 | 说明 |
| --- | --- |
| npcid | 造成伤害的 NPC 的 ID |
| damagedid | 受到伤害的玩家的 ID |
| Float:amount | 造成的伤害数量 |
| WEAPON:weaponid | 用于造成伤害的武器 ID |
| bodypart | 被击中的[身体部位](https://omp.itsneufox.com/zh-CN/docs/scripting/resources/bodyparts) |

## 返回值

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

## 示例

```c
public OnNPCGiveDamage(npcid, damagedid, Float:amount, WEAPON:weaponid, bodypart)
{
    // 仅通知追踪此 NPC 的玩家
    for (new playerid = 0; playerid < MAX_PLAYERS; playerid++)
    {
        if (!IsPlayerConnected(playerid))
            continue;

        if (PlayerNPC[playerid] == npcid)
        {
            SendClientMessage(playerid, 0xFF8800FF, "NPC %d 对玩家 %d 造成了 %.1f 点伤害（武器：%d，身体部位：%d）",
                npcid, amount, damagedid, _:weaponid, bodypart);
        }
    }
    return 1;
}
```

## 注意事项

-   此回调在伤害实际应用到玩家之前调用
-   返回 `false` 将阻止伤害生效
-   `bodypart` 参数使用与 `OnPlayerTakeDamage` 相同的值

## 相关函数

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

-   [NPC\_AimAt](https://omp.itsneufox.com/zh-CN/docs/scripting/functions/NPC_AimAt): 使 NPC 瞄准位置
-   [NPC\_AimAtPlayer](https://omp.itsneufox.com/zh-CN/docs/scripting/functions/NPC_AimAtPlayer): 使 NPC 瞄准玩家
-   [NPC\_Shoot](https://omp.itsneufox.com/zh-CN/docs/scripting/functions/NPC_Shoot): 使 NPC 射击
-   [NPC\_SetWeapon](https://omp.itsneufox.com/zh-CN/docs/scripting/functions/NPC_SetWeapon): 设置 NPC 的武器

## 相关回调

-   [OnNPCTakeDamage](https://omp.itsneufox.com/zh-CN/docs/scripting/callbacks/OnNPCTakeDamage): 当 NPC 受到伤害时调用
-   [OnPlayerTakeDamage](https://omp.itsneufox.com/zh-CN/docs/scripting/callbacks/OnPlayerTakeDamage): 当玩家受到伤害时调用
-   [OnPlayerGiveDamage](https://omp.itsneufox.com/zh-CN/docs/scripting/callbacks/OnPlayerGiveDamage): 当玩家造成伤害时调用
