diff --git a/Application/DefaultSettings.json b/Application/DefaultSettings.json index d16cecbe9..11b3a3f2f 100644 --- a/Application/DefaultSettings.json +++ b/Application/DefaultSettings.json @@ -69,6 +69,39 @@ } ], "Gametypes": [ + { + "Game": "IW3", + "Gametypes": [ + { + "Name": "ctf", + "Alias": "Capture The Flag" + }, + { + "Name": "dm", + "Alias": "Free For All" + }, + { + "Name": "dom", + "Alias": "Domination" + }, + { + "Name": "koth", + "Alias": "Headquarters" + }, + { + "Name": "sab", + "Alias": "Sabotage" + }, + { + "Name": "sd", + "Alias": "Search & Destroy" + }, + { + "Name": "war", + "Alias": "Team Deathmatch" + } + ] + }, { "Game": "IW4", "Gametypes": [ @@ -152,7 +185,11 @@ { "Name": "twar", "Alias": "War" - } + }, + { + "Name": "cmp", + "Alias": "Zombies" + } ] }, { @@ -404,7 +441,15 @@ { "Name": "tdm", "Alias": "Team Deathmatch" - } + }, + { + "Name": "zclassic", + "Alias": "Zombies Classic" + }, + { + "Name": "zstandard", + "Alias": "Zombies" + } ] }, { @@ -505,7 +550,11 @@ { "Name": "hc_tdm", "Alias": "Hardcore Team Deathmatch" - } + }, + { + "Name": "zclassic", + "Alias": "Zombies Classic" + } ] }, { @@ -1612,6 +1661,70 @@ { "Alias": "Outlaw", "Name": "mp_western" + }, + { + "Alias": "Fringe Night", + "Name": "mp_veiled_heyday" + }, + { + "Alias": "Redwood Snow", + "Name": "mp_redwood_ice" + }, + { + "Alias": "Shadows of Evil", + "Name": "zm_zod" + }, + { + "Alias": "Der Eisendrache", + "Name": "zm_castle" + }, + { + "Alias": "Zetsubou No Shima", + "Name": "zm_island" + }, + { + "Alias": "Gorod Krovi", + "Name": "zm_stalingrad" + }, + { + "Alias": "Revelations", + "Name": "zm_genesis" + }, + { + "Alias": "Ascension", + "Name": "zm_cosmodrome" + }, + { + "Alias": "Kino der Toten", + "Name": "zm_theater" + }, + { + "Alias": "Moom", + "Name": "zm_moon" + }, + { + "Alias": "Nacht der Untoten", + "Name": "zm_prototype" + }, + { + "Alias": "Origins", + "Name": "zm_tomb" + }, + { + "Alias": "Shangri-La", + "Name": "zm_temple" + }, + { + "Alias": "Shi No Numa", + "Name": "zm_sumpf" + }, + { + "Alias": "The Giant", + "Name": "zm_factory" + }, + { + "Alias": "Verrückt", + "Name": "zm_asylum" } ] }, 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()