警告
回调是在SA-MP 0.3d中添加的,在早期版本中不起作用!

描述

当一个玩家对另一个玩家造成伤害时,会调用此回调。
姓名 描述
playerid 造成伤害的玩家的 ID。
damagedid 受到伤害的玩家的 ID。
amount 已损失的生命值/护甲值(合计)。
weaponid 造成损坏的原因。
bodypart 身体被击中的部位。
(注意:此参数是在 0.3z 中添加的。如果使用旧版本,请忽略它!)

返回

1 - 回调不会在其他过滤器脚本中调用。 0 - 允许在其他过滤器脚本中调用此回调。 它总是在过滤器脚本中首先被调用,因此返回 1 会阻止其他过滤器脚本看到它。

例子

  1. public OnPlayerGiveDamage(playerid, damagedid, Float:amount, weaponid, bodypart)
  2. {
  3. new string[128], victim[MAX_PLAYER_NAME], attacker[MAX_PLAYER_NAME];
  4. new weaponname[24];
  5. GetPlayerName(playerid, attacker, sizeof (attacker));
  6. GetPlayerName(damagedid, victim, sizeof (victim));
  7. GetWeaponName(weaponid, weaponname, sizeof (weaponname));
  8. format(string, sizeof(string), "%s has made %.0f damage to %s, weapon: %s, bodypart: %d", attacker, amount, victim, weaponname, bodypart);
  9. SendClientMessageToAll(0xFFFFFFFF, string);
  10. return 1;
  11. }

笔记

提示
请记住,此函数在某些情况下可能不准确。如果您想防止某些玩家互相伤害,请使用 SetPlayerTeam。Weaponid 将从任何火源(例如莫洛托夫、18)返回 37(火焰喷射器)。 Weaponid 将从任何产生爆炸的武器(例如 RPG、手榴弹)返回 51。playerid 是唯一可以调用回调的人。该金额始终是 Weaponid 可以造成的最大伤害,即使剩余生命值小于该最大伤害。因此,当一名玩家的生命值为 100.0 并被伤害值为 46.2 的沙漠之鹰击中时,需要 3 次射击才能杀死该玩家。所有 3 次射击都会显示 46.2,尽管最后一次射击命中时,玩家只剩下 7.6 生命值。