From d5cdb98ffb0fe7da2dcb9c11771da0fc1d6ef54a Mon Sep 17 00:00:00 2001 From: ineedbots Date: Tue, 16 Nov 2021 14:28:21 -0600 Subject: [PATCH] improve --- main_shared/maps/mp/gametypes/_clientids.gsc | 4 ++ .../maps/mp/gametypes/_globallogic.gsc | 57 ++++++++++++------- 2 files changed, 41 insertions(+), 20 deletions(-) diff --git a/main_shared/maps/mp/gametypes/_clientids.gsc b/main_shared/maps/mp/gametypes/_clientids.gsc index 551a80f..932e3e3 100644 --- a/main_shared/maps/mp/gametypes/_clientids.gsc +++ b/main_shared/maps/mp/gametypes/_clientids.gsc @@ -2,6 +2,8 @@ init() { level.clientid = 0; + level.allowPrintDamage = true; + level thread onPlayerConnect(); wait 1; @@ -20,5 +22,7 @@ onPlayerConnect() player.clientid = level.clientid; level.clientid++; // Is this safe? What if a server runs for a long time and many people join/leave + + player.printDamage = true; } } diff --git a/main_shared/maps/mp/gametypes/_globallogic.gsc b/main_shared/maps/mp/gametypes/_globallogic.gsc index c0aad34..9c83486 100644 --- a/main_shared/maps/mp/gametypes/_globallogic.gsc +++ b/main_shared/maps/mp/gametypes/_globallogic.gsc @@ -6230,40 +6230,57 @@ removeBlockedAnims( array ) doPrintDamage(dmg, hitloc) { + self endon( "disconnect" ); + 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); + 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); + if ((flags & level.iDFLAGS_RADIUS) != 0) + huddamage.color = (0.25, 0.25, 0.25); - huddamage moveovertime(1); - huddamage fadeovertime(1); - huddamage.alpha = 0; - huddamage.x = randomIntRange(25, 70); + 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 (cointoss()) val = -1; - huddamage.y = 235 + randomIntRange(25, 70) * val; + huddamage.y = 235 + randomIntRange(25, 70) * val; - wait 1; + wait 1; - huddamage destroy(); + if ( isDefined( huddamage ) ) + huddamage destroy(); } finishPlayerDamageWrapper( eInflictor, eAttacker, iDamage, iDFlags, sMeansOfDeath, sWeapon, vPoint, vDir, sHitLoc, psOffsetTime ) { - if ( isDefined( eAttacker ) && isPlayer( eAttacker ) ) - eAttacker thread doPrintDamage(iDamage, sHitLoc); - else if( isDefined( eAttacker.owner ) && isPlayer( eAttacker.owner ) ) - eAttacker.owner thread doPrintDamage(iDamage, sHitLoc); + if( isDefined( level.allowPrintDamage ) && level.allowPrintDamage ) + { + if ( !isDefined( eAttacker ) ) + { + if ( !isDefined( eInflictor ) ) + self thread doPrintDamage( iDamage, sHitLoc, iDFlags ); + } + else if ( isPlayer( eAttacker ) && isDefined( eAttacker.printDamage ) && eAttacker.printDamage ) + eAttacker thread doPrintDamage( iDamage, sHitLoc, iDFlags ); + else if( isDefined( eAttacker.owner ) && isPlayer( eAttacker.owner ) && isDefined( eAttacker.owner.printDamage ) && eAttacker.owner.printDamage ) + eAttacker.owner thread doPrintDamage( iDamage, sHitLoc, iDFlags ); + } self finishPlayerDamage( eInflictor, eAttacker, iDamage, iDFlags, sMeansOfDeath, sWeapon, vPoint, vDir, sHitLoc, psOffsetTime );