From 1af663dae866a028250de2d95ac4d07cde3faedd Mon Sep 17 00:00:00 2001 From: ineedbots Date: Wed, 7 Jul 2021 15:34:38 -0600 Subject: [PATCH] better print damage --- raw/maps/mp/gametypes/_damage.gsc | 41 +++++++++++++++++++++++ raw/scripts/damagehud/__init__.lua | 28 ---------------- raw/scripts/nukespawns.gsc | 54 ++---------------------------- 3 files changed, 44 insertions(+), 79 deletions(-) delete mode 100644 raw/scripts/damagehud/__init__.lua diff --git a/raw/maps/mp/gametypes/_damage.gsc b/raw/maps/mp/gametypes/_damage.gsc index 55ee209..ff4fc40 100644 --- a/raw/maps/mp/gametypes/_damage.gsc +++ b/raw/maps/mp/gametypes/_damage.gsc @@ -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 ) ) diff --git a/raw/scripts/damagehud/__init__.lua b/raw/scripts/damagehud/__init__.lua deleted file mode 100644 index b50d853..0000000 --- a/raw/scripts/damagehud/__init__.lua +++ /dev/null @@ -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) diff --git a/raw/scripts/nukespawns.gsc b/raw/scripts/nukespawns.gsc index 216f55e..3e7b501 100644 --- a/raw/scripts/nukespawns.gsc +++ b/raw/scripts/nukespawns.gsc @@ -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");