From 51438c7ee9b7c031adc8f1a0743bba0b3813abba Mon Sep 17 00:00:00 2001 From: Ryan Amos Date: Sun, 22 May 2022 20:45:47 +0100 Subject: [PATCH] Fix !hide provide "mitigation" to noclip ghost bug --- GameFiles/_integration.gsc | 30 ++++++++++++++++++++++++------ 1 file changed, 24 insertions(+), 6 deletions(-) diff --git a/GameFiles/_integration.gsc b/GameFiles/_integration.gsc index b6f2237f..d3f775e3 100644 --- a/GameFiles/_integration.gsc +++ b/GameFiles/_integration.gsc @@ -772,7 +772,9 @@ NoClipImpl() if ( !IsAlive( self ) ) { self IPrintLnBold( "You are not alive" ); - return; + // Due to bug when sometimes disabling noclip game thinks you're dead + // removing the return and allowing them to go back into noclip is probably better. + //return; } self SetClientDvar( "sv_cheats", 1 ); @@ -782,18 +784,20 @@ NoClipImpl() self call [[level.overrideMethods["god"]]]( true ); self call [[level.overrideMethods["noclip"]]]( true ); self Hide(); + + self.isNoClipped = true; self IPrintLnBold( "NoClip enabled" ); } NoClipOffImpl() -{ - if ( !IsAlive( self ) ) +{ + if ( !IsDefined( self.isNoClipped ) || !self.isNoClipped ) { - self IPrintLnBold( "You are not alive" ); + self IPrintLnBold( "You are not no-clipped" ); return; } - + self SetClientDvar( "sv_cheats", 1 ); self SetClientDvar( "cg_thirdperson", 0 ); self SetClientDvar( "sv_cheats", 0 ); @@ -803,6 +807,16 @@ NoClipOffImpl() self Show(); self IPrintLnBold( "NoClip disabled" ); + + if ( !IsAlive( self ) && self.isNoClipped ) + { + // Sometimes you will bug exiting noclip where the game thinks you're dead + // but you're not. You will retain godmode but be able to run around and kill people. + // So, it's important to let the user know. + self IPrintLnBold( "^1You are bugged! ^4Swap team." ); + } + + self.isNoClipped = false; } HideImpl() @@ -817,7 +831,7 @@ HideImpl() self SetClientDvar( "cg_thirdperson", 1 ); self SetClientDvar( "sv_cheats", 0 ); - if ( !IsDefined( self.savedHealth ) || self.health < 1000 ) + if ( !IsDefined( self.savedHealth ) || self.health < 1000 ) { self.savedHealth = self.health; self.savedMaxHealth = self.maxhealth; @@ -825,6 +839,8 @@ HideImpl() self call [[level.overrideMethods["god"]]]( true ); self Hide(); + + self.isHidden = true; self IPrintLnBold( "You are now ^5hidden ^7from other players" ); } @@ -849,6 +865,8 @@ UnhideImpl() self call [[level.overrideMethods["god"]]]( false ); self Show(); + + self.isHidden = false; self IPrintLnBold( "You are now ^5visible ^7to other players" ); }