OnPlayerTakeDamage
From SA-MP Wiki
(Difference between revisions)
Revision as of 13:17, 21 August 2017 OstGot (Talk | contribs) ← Previous diff |
Revision as of 15:46, 12 September 2017 Freaksken (Talk | contribs) Next diff → |
||
Line 21: | Line 21: | ||
{{Notes| | {{Notes| | ||
* The weaponid will return 37 (flame thrower) from any fire sources (e.g. molotov, 18). | * The weaponid will return 37 (flame thrower) from any fire sources (e.g. molotov, 18). | ||
- | * '''playerid''' is the only one who can call the callback.}} | + | * '''playerid''' is the only one who can call the callback. |
+ | * The amount is always the maximum damage the weaponid can do, even when the health left is less than that maximum damage. So when a player has 100.0 health and gets shot with a Desert Eagle which has a damage value of 46.2, it takes 3 shots to kill that player. All 3 shots will show an amount of 46.2, even though when the last shot hits, the player only has 7.6 health left. | ||
+ | }} | ||
'''Example - Debugging''' | '''Example - Debugging''' |
Revision as of 15:46, 12 September 2017
Description:
This callback is called when a player takes damage.
(playerid, issuerid, Float:amount, weaponid, bodypart)
playerid | The ID of the player that took damage. |
issuerid | The ID of the player that caused the damage. INVALID_PLAYER_ID if self-inflicted. |
amount | The amount of damage the player took (health and armour combined). |
weaponid | The ID of the weapon/reason for the damage. |
bodypart | The body part that was hit. (NOTE: This parameter was added in 0.3z. Leave it out if using an older version!) |
Return Values:
- 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 seeing it.
![]() Important | GetPlayerHealth and GetPlayerArmour will return the old amounts of the player before this callback. |
Example - Debugging
public OnPlayerTakeDamage(playerid, issuerid, Float: amount, weaponid, bodypart) { if(issuerid != INVALID_PLAYER_ID) // If not self-inflicted { new infoString[128], weaponName[24], victimName[MAX_PLAYER_NAME], attackerName[MAX_PLAYER_NAME]; GetPlayerName(playerid, victimName, sizeof (victimName)); GetPlayerName(issuerid, attackerName, sizeof (attackerName)); GetWeaponName(weaponid, weaponName, sizeof (weaponName)); format(infoString, sizeof(infoString), "%s has made %.0f damage to %s, weapon: %s, bodypart: %d", attackerName, amount, victimName, weaponName, bodypart); SendClientMessageToAll(-1, infoString); } return 1; }
Example - One-shot-kill sniper headshots
public OnPlayerTakeDamage(playerid, issuerid, Float: amount, weaponid, bodypart) { if(issuerid != INVALID_PLAYER_ID && weaponid == 34 && bodypart == 9) { // One shot to the head to kill with sniper rifle SetPlayerHealth(playerid, 0.0); } return 1; }
Related Callbacks
The following callbacks might be useful as well, as they are related to this callback in one way or another.
- OnPlayerGiveDamage: This callback is called when a player gives damage.
- OnPlayerWeaponShot: Called when a player fires a weapon.