From c348283c94dfd6a629546a21c086cdf164848e34 Mon Sep 17 00:00:00 2001 From: Edo Date: Sat, 8 Apr 2023 03:42:18 +0200 Subject: [PATCH] fix iw4x, integration. improve scripts overall (#287) * fix(scripts): correct usage of notifyOnPlayerCommand * fix(scripts): correct iw4x usage of is bot * fix(scripts): correct iw4x usage of is bot * fix(scripts): fix noclip on iw4x * fix(scripts): ident * iw5 too --- .../IW4x/userraw/scripts/_customcallbacks.gsc | 2 +- .../IW5/storage/iw5/scripts/_customcallbacks.gsc | 2 +- .../storage/t6/scripts/mp/_customcallbacks.gsc.src | 3 +-- GameFiles/GameInterface/_integration_base.gsc | 5 +++-- GameFiles/GameInterface/_integration_iw4x.gsc | 13 +++++++++---- GameFiles/GameInterface/_integration_iw5.gsc | 5 +++-- GameFiles/GameInterface/_integration_shared.gsc | 2 +- GameFiles/GameInterface/_integration_t5.gsc | 2 +- 8 files changed, 20 insertions(+), 14 deletions(-) diff --git a/GameFiles/AntiCheat/IW4x/userraw/scripts/_customcallbacks.gsc b/GameFiles/AntiCheat/IW4x/userraw/scripts/_customcallbacks.gsc index 7028a6651..bdd9b3cb5 100644 --- a/GameFiles/AntiCheat/IW4x/userraw/scripts/_customcallbacks.gsc +++ b/GameFiles/AntiCheat/IW4x/userraw/scripts/_customcallbacks.gsc @@ -41,11 +41,11 @@ waitForAttack() { self endon( "disconnect" ); + self notifyOnPlayerCommand( "player_shot", "+attack" ); self.lastAttackTime = 0; for( ;; ) { - self notifyOnPlayerCommand( "player_shot", "+attack" ); self waittill( "player_shot" ); self.lastAttackTime = getTime(); diff --git a/GameFiles/AntiCheat/IW5/storage/iw5/scripts/_customcallbacks.gsc b/GameFiles/AntiCheat/IW5/storage/iw5/scripts/_customcallbacks.gsc index 82ad80042..e327d1a04 100644 --- a/GameFiles/AntiCheat/IW5/storage/iw5/scripts/_customcallbacks.gsc +++ b/GameFiles/AntiCheat/IW5/storage/iw5/scripts/_customcallbacks.gsc @@ -40,11 +40,11 @@ waitForAttack() { self endon( "disconnect" ); + self notifyOnPlayerCommand( "player_shot", "+attack" ); self.lastAttackTime = 0; for( ;; ) { - self notifyOnPlayerCommand( "player_shot", "+attack" ); self waittill( "player_shot" ); self.lastAttackTime = getTime(); diff --git a/GameFiles/AntiCheat/PT6/storage/t6/scripts/mp/_customcallbacks.gsc.src b/GameFiles/AntiCheat/PT6/storage/t6/scripts/mp/_customcallbacks.gsc.src index 8f49a93fa..fbdf34fff 100644 --- a/GameFiles/AntiCheat/PT6/storage/t6/scripts/mp/_customcallbacks.gsc.src +++ b/GameFiles/AntiCheat/PT6/storage/t6/scripts/mp/_customcallbacks.gsc.src @@ -41,17 +41,16 @@ onPlayerConnect( player ) } } - //Got added to T6 on April 2020 waitForAttack() { self endon( "disconnect" ); + self notifyOnPlayerCommand( "player_shot", "+attack" ); self.lastAttackTime = 0; for( ;; ) { - self notifyOnPlayerCommand( "player_shot", "+attack" ); self waittill( "player_shot" ); self.lastAttackTime = getTime(); diff --git a/GameFiles/GameInterface/_integration_base.gsc b/GameFiles/GameInterface/_integration_base.gsc index ff17bc924..ef16b1047 100644 --- a/GameFiles/GameInterface/_integration_base.gsc +++ b/GameFiles/GameInterface/_integration_base.gsc @@ -4,7 +4,7 @@ Init() { - level thread Setup(); + thread Setup(); } Setup() @@ -21,7 +21,8 @@ Setup() level.commonFunctions = spawnstruct(); level.commonFunctions.setDvar = "SetDvarIfUninitialized"; - + level.commonFunctions.isBot = "IsBot"; + level.commonKeys = spawnstruct(); level.notifyTypes = spawnstruct(); diff --git a/GameFiles/GameInterface/_integration_iw4x.gsc b/GameFiles/GameInterface/_integration_iw4x.gsc index ba09344c0..34970de19 100644 --- a/GameFiles/GameInterface/_integration_iw4x.gsc +++ b/GameFiles/GameInterface/_integration_iw4x.gsc @@ -4,7 +4,7 @@ Init() { level.eventBus.gamename = "IW4"; - level thread Setup(); + thread Setup(); } Setup() @@ -18,6 +18,7 @@ Setup() level.overrideMethods["GetTotalShotsFired"] = ::GetTotalShotsFired; level.overrideMethods[level.commonFunctions.setDvar] = ::_SetDvarIfUninitialized; + level.overrideMethods[level.commonFunctions.isBot] = ::IsTestClient; level.overrideMethods["waittill_notify_or_timeout"] = ::_waittill_notify_or_timeout; level.overrideMethods[level.commonFunctions.changeTeam] = ::ChangeTeam; level.overrideMethods[level.commonFunctions.getTeamCounts] = ::CountPlayers; @@ -48,7 +49,7 @@ OnPlayerConnect() { level waittill( "connected", player ); - if ( scripts\_integration_base::_IsBot( player ) ) + if ( player call [[ level.overrideMethods[ level.commonFunctions.isBot ] ]]() ) { // we don't want to track bots continue; @@ -441,7 +442,9 @@ NoClipImpl() self SetClientDvar( "sv_cheats", 0 ); self God(); - self Noclip(); + + self.clientflags |= 1; // IW4x specific + self Hide(); self.isNoClipped = true; @@ -455,7 +458,9 @@ NoClipImpl() self SetClientDvar( "sv_cheats", 0 ); self God(); - self Noclip(); + + self.clientflags &= ~1; // IW4x specific + self Show(); self.isNoClipped = false; diff --git a/GameFiles/GameInterface/_integration_iw5.gsc b/GameFiles/GameInterface/_integration_iw5.gsc index 86d7621ac..ed92e8c9b 100644 --- a/GameFiles/GameInterface/_integration_iw5.gsc +++ b/GameFiles/GameInterface/_integration_iw5.gsc @@ -4,7 +4,7 @@ Init() { level.eventBus.gamename = "IW5"; - level thread Setup(); + thread Setup(); } Setup() @@ -19,6 +19,7 @@ Setup() level.overrideMethods["GetTotalShotsFired"] = ::GetTotalShotsFired; level.overrideMethods["SetDvarIfUninitialized"] = ::_SetDvarIfUninitialized; level.overrideMethods["waittill_notify_or_timeout"] = ::_waittill_notify_or_timeout; + level.overrideMethods[level.commonFunctions.isBot] = ::IsTestClient; RegisterClientCommands(); @@ -40,7 +41,7 @@ OnPlayerConnect() { level waittill( "connected", player ); - if ( scripts\mp\_integration_base::_IsBot( player ) ) + if ( player call [[ level.overrideMethods[ level.commonFunctions.isBot ] ]]() ) { // we don't want to track bots continue; diff --git a/GameFiles/GameInterface/_integration_shared.gsc b/GameFiles/GameInterface/_integration_shared.gsc index 4fa7a1a95..36a0ded01 100644 --- a/GameFiles/GameInterface/_integration_shared.gsc +++ b/GameFiles/GameInterface/_integration_shared.gsc @@ -1,7 +1,7 @@ Init() { - level thread Setup(); + thread Setup(); } Setup() diff --git a/GameFiles/GameInterface/_integration_t5.gsc b/GameFiles/GameInterface/_integration_t5.gsc index ca839a87b..9d5e5f3f7 100644 --- a/GameFiles/GameInterface/_integration_t5.gsc +++ b/GameFiles/GameInterface/_integration_t5.gsc @@ -4,7 +4,7 @@ Init() { level.eventBus.gamename = "T5"; - level thread Setup(); + thread Setup(); } Setup()