Help with Damage Text Label. [rep] -
Farzam - 29.08.2016
As the title says.
The code is applying and doing the functions late, or it doesn't even do it.
When it does, It removes it fast.
Код:
public OnPlayerTakeDamage(playerid, issuerid, Float:amount, weaponid, bodypart)
{
new gString[128];
format(gString, sizeof gString, "{ff0000}-%.0f",amount);
Delete3DTextLabel(PlayerDamage[playerid]);
PlayerDamage[playerid] = Create3DTextLabel(gString, 0xFFFFFFFF, 0.0, 0.0, 0.0, 7.5, -1);
Attach3DTextLabelToPlayer(PlayerDamage[playerid], playerid, 0.0, 0.0, 0.4);
SetTimerEx("RemoveDamageLabel", 3000, false, "d", _:PlayerDamage[playerid]);
return 1;
}
forward RemoveDamageLabel(Text3D:labelid);
public RemoveDamageLabel(Text3D:labelid)
{
return Delete3DTextLabel(labelid);
}
Re: Help with Damage Text Label. [rep] -
Shinja - 29.08.2016
PHP код:
public OnPlayerTakeDamage(playerid, issuerid, Float:amount, weaponid, bodypart)
{
new gString[128];
format(gString, sizeof gString, "{ff0000}-%.0f",amount);
Delete3DTextLabel(PlayerDamage[playerid]);
PlayerDamage[playerid] = Create3DTextLabel(gString, 0xFFFFFFFF, 0.0, 0.0, 0.0, 7.5, -1);
Attach3DTextLabelToPlayer(PlayerDamage[playerid], playerid, 0.0, 0.0, 0.4);
SetTimerEx("RemoveDamageLabel", 3000, false, "d", playerid);
return 1;
}
forward RemoveDamageLabel(playerid);
public RemoveDamageLabel(playerid)
{
Delete3DTextLabel(PlayerDamage[playerid]);
}
Re: Help with Damage Text Label. [rep] -
jlalt - 29.08.2016
You have to save players timer id and kill it if they got a damage before the callback of remove get called
PHP код:
new PDamageTimer[MAX_PLAYERS];
public OnPlayerTakeDamage(playerid, issuerid, Float:amount, weaponid, bodypart)
{
new gString[128];
format(gString, sizeof gString, "{ff0000}-%.0f",amount);
if(_:PlayerDamage[playerid] != -1)
{
Delete3DTextLabel(PlayerDamage[playerid]);
PlayerDamage[playerid] = Text3D:-1;
KillTimer(PDamageTimer[playerid]);
}
PlayerDamage[playerid] = Create3DTextLabel(gString, 0xFFFFFFFF, 0.0, 0.0, 0.0, 7.5, -1);
Attach3DTextLabelToPlayer(PlayerDamage[playerid], playerid, 0.0, 0.0, 0.4);
PDamageTimer[playerid] = SetTimerEx("RemoveDamageLabel", 3000, false, "d", playerid);
return 1;
}
forward RemoveDamageLabel(playerid);
public RemoveDamageLabel(playerid)
{
Delete3DTextLabel(PlayerDamage[playerid]);
PlayerDamage[playerid] = Text3D:-1;
return 1;
}
also be sure to do that on player connect
PHP код:
PlayerDamage[playerid] = Text3D:-1;
Re: Help with Damage Text Label. [rep] -
Farzam - 29.08.2016
Thanks for the help.
+rep for you