How to sum damage -
GwENiko - 12.05.2014
Hi, i've been trying to figure out how can i sum damage taken or issued by players similar to A/D servers. I tried doing this way
pawn Код:
public OnPlayerTakeDamage(playerid, issuerid, Float: amount, weaponid)
{
new cstring[128];
PlayerPlaySound(issuerid,17802,0.0,0.0,0.0);
new pname[MAX_PLAYER_NAME];
TextDrawBackgroundColor(Textdraw11[playerid], 255);
TextDrawFont(Textdraw11[playerid], 1);
TextDrawLetterSize(Textdraw11[playerid], 0.470000, 1.100000);
TextDrawColor(Textdraw11[playerid], -14415873);
TextDrawSetOutline(Textdraw11[playerid], 1);
TextDrawSetProportional(Textdraw11[playerid], 0);
GetPlayerName(issuerid, pname, sizeof(pname));
format(cstring, sizeof(cstring), "%s -(%.0f)", pname, amount++);
TextDrawSetString(Textdraw11[playerid], cstring);
TextDrawShowForPlayer(playerid, Textdraw11[playerid]);
return 1;
}
It shows all good, but only the amount of the damage done in a single event, i wanted it to add the damage. Ex: 48 + 48 + 30 and forth. plz help
Re: How to sum damage -
ball - 12.05.2014
You have to create player variable or save it in pvars
Код:
public OnPlayerTakeDamage(playerid, issuerid, Float: amount, weaponid)
{
new cstring[128];
PlayerPlaySound(issuerid,17802,0.0,0.0,0.0);
new pname[MAX_PLAYER_NAME];
TextDrawBackgroundColor(Textdraw11[playerid], 255);
TextDrawFont(Textdraw11[playerid], 1);
TextDrawLetterSize(Textdraw11[playerid], 0.470000, 1.100000);
TextDrawColor(Textdraw11[playerid], -14415873);
TextDrawSetOutline(Textdraw11[playerid], 1);
TextDrawSetProportional(Textdraw11[playerid], 0);
GetPlayerName(issuerid, pname, sizeof(pname));
format(cstring, sizeof(cstring), "%s -(%.0f)", pname, amount++);
TextDrawSetString(Textdraw11[playerid], cstring);
TextDrawShowForPlayer(playerid, Textdraw11[playerid]);
SetPVarFloat(issuerid, "damageTaken", GetPVarFloat(issuerid, "damageTaken") + amount);
return 1;
}
Then if you want get the total amount use:
Код:
new Float:total_damage = GetPVarFloat(issuerid, "damageTaken");
@down - exactly the same code as my ... no comments
Re: How to sum damage -
gekas - 12.05.2014
PHP код:
public OnPlayerTakeDamage(playerid, issuerid, Float: amount, weaponid)
{
new cstring[128];
PlayerPlaySound(issuerid,17802,0.0,0.0,0.0);
new pname[MAX_PLAYER_NAME];
TextDrawBackgroundColor(Textdraw11[playerid], 255);
TextDrawFont(Textdraw11[playerid], 1);
TextDrawLetterSize(Textdraw11[playerid], 0.470000, 1.100000);
TextDrawColor(Textdraw11[playerid], -14415873);
TextDrawSetOutline(Textdraw11[playerid], 1);
TextDrawSetProportional(Textdraw11[playerid], 0);
GetPlayerName(issuerid, pname, sizeof(pname));
format(cstring, sizeof(cstring), "%s -(%.0f)", pname, amount++);
TextDrawSetString(Textdraw11[playerid], cstring);
TextDrawShowForPlayer(playerid, Textdraw11[playerid]);
SetPVarFloat(issuerid, "damageTaken", GetPVarFloat(issuerid, "damageTaken") + amount);
return 1;
}
PHP код:
new Float:total_damage = GetPVarFloat(issuerid, "damageTaken");
Re: How to sum damage -
GwENiko - 12.05.2014
would that work the same way for OnPlayerGiveDamage? Cause im using it to sum the player's damage given.
Re: How to sum damage -
GwENiko - 14.05.2014
This is not working. Even though i tried storing its values with GetPVarFloat, it stays the same, i can shoot someone with an AK-47 and the dmg remains +9, when i wanted it to go like 9, 18, 27, 36 until the textdraw hides. I tried Gekas way it didn't change anything lol
pawn Код:
public OnPlayerTakeDamage(playerid, issuerid, Float: amount, weaponid)
{
// Ding System
PlayerPlaySound(issuerid, 17802, 0.0, 0.0, 0.0);
// Damage System
new cstring[128];
new Float:DamageTaken;
new Pname[MAX_PLAYER_NAME];
TextDrawBackgroundColor(Textdraw11[playerid], 255);
TextDrawFont(Textdraw11[playerid], 1);
TextDrawLetterSize(Textdraw11[playerid], 0.470000, 1.100000);
TextDrawColor(Textdraw11[playerid], -14415873);
TextDrawSetOutline(Textdraw11[playerid], 1);
TextDrawSetProportional(Textdraw11[playerid], 0);
GetPlayerName(issuerid, Pname, sizeof(Pname));
format(cstring, sizeof(cstring), "%s -(%.0f)", Pname, amount);
TextDrawSetString(Textdraw11[playerid], cstring);
TextDrawShowForPlayer(playerid, Textdraw11[playerid]);
GetPVarFloat(playerid, "DamageTaken");
SetPVarFloat(playerid, "DamageTaken", DamageTaken + amount);
SetTimerEx("DamageTakenTextdraw", 7500, false,"f", playerid);
if(issuerid == INVALID_PLAYER_ID)
{
TextDrawBackgroundColor(Textdraw11[playerid], 255);
TextDrawFont(Textdraw11[playerid], 1);
TextDrawLetterSize(Textdraw11[playerid], 0.470000, 1.100000);
TextDrawColor(Textdraw11[playerid], -14415873);
TextDrawSetOutline(Textdraw11[playerid], 1);
TextDrawSetProportional(Textdraw11[playerid], 0);
format(cstring, sizeof(cstring), "Collision -(%.0f)",amount);
TextDrawSetString(Textdraw11[playerid], cstring);
TextDrawShowForPlayer(playerid, Textdraw11[playerid]);
}
return 1;
}
Re: How to sum damage -
GwENiko - 15.05.2014
bump
Re: How to sum damage -
ball - 15.05.2014
Beacuse your code is wrong ... i gave you finished code, but you modified it wrong!
Код:
SetPVarFloat(issuerid, "DamageTaken", GetPVarFloat(issuerid, "DamageTaken") + amount);
issuerid is the attacker player, not playerid!
Re: How to sum damage -
GwENiko - 16.05.2014
Although, with the code above, whenever a player hits me, if i return fire the damage i make will be added with the previous damage he made on me lol.
Re: How to sum damage -
Konstantinos - 16.05.2014
Don't use PVars - they're slower.
pawn Код:
static
Float: Player_DamageTaken[MAX_PLAYERS];
// OnPlayerConnect:
Player_DamageTaken[playerid] = 0.0;
// OnPlayerDeath:
Player_DamageTaken[playerid] = 0.0;
// OnPlayerTakeDamage (damage taken by players):
if (issuerid != INVALID_PLAYER_ID)
{
Player_DamageTaken[playerid] += amount;
}
Player_DamageTaken[playerid] stores the total amount a player took damage by players. In each round (if you have of course) you can reset it to 0.
Re: How to sum damage -
GwENiko - 16.05.2014
yes, but i only want the players to show the damage as long as they're alive for a temporary amount of time, whenever the timer ends it sets back to 0, thus could you teach me how would i calculate the damage he inflicted or he took, using OnPlayerTakeDamage, and OnPlayerGiveDamage? i can't think of a way to calculate it using static