[BETA] OnPlayerGive/TakeDamage Health/Armour loss reporting -
MP2 - 11.02.2013
Introduction
This include reports the amount of health and armour lost to OnPlayerGive/TakeDamage. In the default callback it's just 'amount' which is just the amount of damage - it doesn't tell you how much health or armour was lost.
All you need to do is use the new callbacks, with 'Ex' added at the end (and new parameters of course):
pawn Код:
public OnPlayerTakeDamageEx(playerid, issuerid, Float:healthloss, Float:armourloss, weaponid)
{
// Stuff
}
public OnPlayerGiveDamageEx(playerid, damagedid, Float:healthloss, Float:armourloss, weaponid)
{
// Stuff
}
NOTE: It's armo
ur, not armor; I'm British!
I made this at like 4AM so it may not be perfect. I went through many (at least 5) different systems before I found one that worked perfectly, and here it is. I have no idea if there's a better way; believe me I tried. I figured it'd just be a bit of simple maths, not requiring any variables, but I was under the assumption that if they took more damage than health they didn't have, they lost armour, but then I realised they could have < 100 health and still have armour (i.e. they took damage to the health THEN got armour).
You may be thinking 'why not just save their old armour AND health, then use GetPlayerHealth + GetPlayerArmour under OnPlayerGive/Take damage to see what was lost? Well. GetPlayerHealth/Armour doesn't work under OnPlayerGive/TakeDamage because they don't sync with the server until the next OnPlayerUpdate call, which would involve pretty much the same amount of code as this did, but you'd have to have a variable to store their health also. Why waste memory?!
This is also well commented so you can figure out my thought process.
DOWNLOAD: http://pastebin.com/jvFZFEqv
Known Issues:
- Players lose 3 health on spawn for some reason. SA:MP bug most likely.
- If a player has 5 health and are shot with a gun that does 10 damage, the healthloss is reported as 10, not 5 (as it should be IMO).
- When players have armour and lose health (i.e. falling and hitting the ground or on fire) it will report an armour loss, as if they were hit with a bullet.
Please report any issues.
Re: [BETA] OnPlayerGive/TakeDamage Health/Armour loss reporting -
Yves - 11.02.2013
this is so nice man
Re: [BETA] OnPlayerGive/TakeDamage Health/Armour loss reporting - T0pAz - 11.02.2013
Cleverly done. Good work!
Re: [BETA] OnPlayerGive/TakeDamage Health/Armour loss reporting -
Kyle - 11.02.2013
What is different from this than wups.inc?
"- If a player dies instantly (such as suicide/explosions) their armour may be 'remembered' as being 100, so next time they take damage it will report an armour loss of 100. I'm not sure about this one as I forgot to test it (PC is off now)."
Can't you clear it OnPlayerDeath?
Re: [BETA] OnPlayerGive/TakeDamage Health/Armour loss reporting -
MP2 - 11.02.2013
I did search before releasing this to see if anything similar existed and found nothing at all. If you could link me I'd appreciate it.
Also, thanks for that idea. It
was 4AM at the time!
Re: [BETA] OnPlayerGive/TakeDamage Health/Armour loss reporting -
Kyle - 12.02.2013
Quote:
Originally Posted by MP2
I did search before releasing this to see if anything similar existed and found nothing at all. If you could link me I'd appreciate it.
Also, thanks for that idea. It was 4AM at the time!
|
https://sampforum.blast.hk/showthread.php?pid=937824#pid937824
Re: [BETA] OnPlayerGive/TakeDamage Health/Armour loss reporting -
CreativityLacker - 13.02.2013
Quote:
Originally Posted by KyleSmith
|
Wups himself clearly said that his OPSP was clearly outdated and it was scripted MUCH before OnPlayerTake/GiveDamage came into existence. You're comparing timers with hooking, ob...viously hooking will be FASTER because OPT/GD is called natively.
Re: [BETA] OnPlayerGive/TakeDamage Health/Armour loss reporting -
MP2 - 13.02.2013
Quote:
Originally Posted by KyleSmith
|
What the the guy above me said: that is NOT using OnPlayerGive/TakeDamage.
Re: [BETA] OnPlayerGive/TakeDamage Health/Armour loss reporting -
Kyle - 13.02.2013
Quote:
Originally Posted by MP2
What the the guy above me said: that is NOT using OnPlayerGive/TakeDamage.
|
Maybe so, but you did ask for similar stuff. So I posted it, no need to hate, appreciate.
Edit: Did you upload the fix when it clears when OnPlayerDeath is called?
Re: [BETA] OnPlayerGive/TakeDamage Health/Armour loss reporting -
Kar - 13.02.2013
- Players lose 3 health on spawn for some reason. SA:MP bug probably.
doubtful about this
- If a player has 5 health and are shot with a gun that does 10 damage, the healthloss is reported as 10, not 5 (as it should be IMO). Not sure how to go about fixing this, or if I need to.
easy, if there health goes less than 0, then take it away the negative values, E.G if he has 5 health and it does 10 damage, then remove the -5 and make it 0 if you get what i mean
- If a player dies instantly (such as suicide/explosions) their armour may be 'remembered' as being 100, so next time they take damage it will report an armour loss of 100. I'm not sure about this one as I forgot to test it (PC is off now).
if(newstate == PLAYER_STATE_WASTED) armour = 0;
- Setting armour in a filterscript may fuck things up
probably hooks?