better print damage

This commit is contained in:
ineedbots 2021-07-07 15:34:38 -06:00
parent 3776e4de0a
commit 1af663dae8
3 changed files with 44 additions and 79 deletions

View File

@ -1832,8 +1832,49 @@ Callback_PlayerDamage( var_0, var_1, var_2, var_3, var_4, var_5, var_6, var_7, v
Callback_PlayerDamage_internal( var_0, var_1, self, var_2, var_3, var_4, var_5, var_6, var_7, var_8, var_9 );
}
doPrintDamage(dmg, hitloc, flags)
{
huddamage = newclienthudelem(self);
huddamage.alignx = "center";
huddamage.horzalign = "center";
huddamage.x = 10;
huddamage.y = 235;
huddamage.fontscale = 1.6;
huddamage.font = "objective";
huddamage setvalue(dmg);
if ((flags & level.iDFLAGS_PENETRATION) != 0)
huddamage.color = (1, 1, 0.25);
if (hitloc == "head")
huddamage.color = (1, 0.25, 0.25);
huddamage moveovertime(1);
huddamage fadeovertime(1);
huddamage.alpha = 0;
huddamage.x = randomIntRange(25, 70);
val = 1;
if (randomInt(2))
val = -1;
huddamage.y = 235 + randomIntRange(25, 70) * val;
wait 1;
huddamage destroy();
}
finishPlayerDamageWrapper( var_0, var_1, var_2, var_3, var_4, var_5, var_6, var_7, var_8, var_9, var_10 )
{
if( isDefined(level.allowPrintDamage) && level.allowPrintDamage )
{
if ( isDefined( var_1 ) && isPlayer( var_1 ) && isDefined(var_1.printDamage) && var_1.printDamage )
var_1 thread doPrintDamage(var_2, var_8, var_3);
else if( isDefined( var_1.owner ) && isPlayer( var_1.owner ) && isDefined(var_1.owner.printDamage) && var_1.owner.printDamage )
var_1.owner thread doPrintDamage(var_2, var_8, var_3);
}
if ( maps\mp\_utility::isUsingRemote() && var_2 >= self.health && !( var_3 & level.iDFLAGS_STUN ) )
{
if ( !isdefined( var_7 ) )

View File

@ -1,28 +0,0 @@
game:onplayerdamage(function(_self, inflictor, attacker, damage, dflags, mod, weapon, point, dir, hitloc)
if (game:isplayer(attacker) ~= 1 or _self.sessionteam == attacker.sessionteam or _self == attacker) then
return
end
local huddamage = game:newclienthudelem(attacker)
huddamage.alignx = "center"
huddamage.horzalign = "center"
huddamage.x = 10
huddamage.y = 235
huddamage.fontscale = 1.6
huddamage.font = "objective"
huddamage:setvalue(damage)
if (hitloc == "head") then
huddamage.color = vector:new(1, 1, 0.25)
end
huddamage:moveovertime(1)
huddamage:fadeovertime(1)
huddamage.alpha = 0
huddamage.x = math.random(25, 70)
huddamage.y = 235 + math.random(25, 70) * (math.random(0, 1) == 1 and -1 or 1)
game:ontimeout(function()
huddamage:destroy()
end, 1000)
end)

View File

@ -4,58 +4,8 @@ init()
level thread onPlayerConnect();
level thread hook_callbacks();
level.killstreakPrint = 2;
}
doPrintDamage(dmg, hitloc)
{
huddamage = newclienthudelem(self);
huddamage.alignx = "center";
huddamage.horzalign = "center";
huddamage.x = 10;
huddamage.y = 235;
huddamage.fontscale = 1.6;
huddamage.font = "objective";
huddamage setvalue(dmg);
if (hitloc == "head")
huddamage.color = (1, 1, 0.25);
huddamage moveovertime(1);
huddamage fadeovertime(1);
huddamage.alpha = 0;
huddamage.x = randomIntRange(25, 70);
val = 1;
if (randomInt(2))
val = -1;
huddamage.y = 235 + randomIntRange(25, 70) * val;
wait 1;
huddamage destroy();
}
onPlayerDamage( eInflictor, eAttacker, iDamage, iDFlags, sMeansOfDeath, sWeapon, vPoint, vDir, sHitLoc, timeOffset )
{
self [[level.prevCallbackPlayerDamage2]]( eInflictor, eAttacker, iDamage, iDFlags, sMeansOfDeath, sWeapon, vPoint, vDir, sHitLoc, timeOffset );
if ( isDefined( eAttacker ) && isPlayer( eAttacker ) )
eAttacker thread doPrintDamage(iDamage, sHitLoc);
else if( isDefined( eAttacker.owner ) && isPlayer( eAttacker.owner ) )
eAttacker.owner thread doPrintDamage(iDamage, sHitLoc);
}
hook_callbacks()
{
level waittill( "prematch_over" );
wait 0.1;
level.prevCallbackPlayerDamage2 = level.callbackPlayerDamage;
level.callbackPlayerDamage = ::onPlayerDamage;
level.allowPrintDamage = true;
}
onPlayerConnect()
@ -79,6 +29,8 @@ onChangeKit()
{
self endon("disconnect");
self.printDamage = true;
for (;;)
{
self waittill("changed_kit");