diff --git a/cfg/cs2fixes/cs2fixes.cfg b/cfg/cs2fixes/cs2fixes.cfg index a169bafee..63ecde976 100644 --- a/cfg/cs2fixes/cs2fixes.cfg +++ b/cfg/cs2fixes/cs2fixes.cfg @@ -55,6 +55,7 @@ cs2f_burn_slowdown 0.6 // The slowdown of each burn damage tick as a multipl cs2f_burn_interval 0.3 // The interval between burn damage ticks // Hide settings +cs2f_hide_weapons 0 // Whether to hide weapons along with their holders cs2f_hide_distance_default 250 // The default distance for hide cs2f_hide_distance_max 2000 // The max distance for hide cs2f_hide_teammates_only 0 // Whether to hide teammates only diff --git a/gamedata/cs2fixes.games.txt b/gamedata/cs2fixes.games.txt index 8b8a4dfd2..4065e4cad 100644 --- a/gamedata/cs2fixes.games.txt +++ b/gamedata/cs2fixes.games.txt @@ -57,7 +57,7 @@ { "library" "server" "windows" "\xC8\x42\xEB\x2A\x4C\x39\x67\x30" - "linux" "\xC8\x42\x41\xC7\x85\x2A\x2A\x2A\x2A\x2A\x2A\x2A\x2A\xE9\x2A\x2A\x2A\x2A\x4C\x89\xE7" + "linux" "\xC8\x42\x41\xC7\x85\x2A\x2A\x2A\x2A\x2A\x2A\x2A\x2A\xE9\x2A\x2A\x2A\x2A\x48\x89\xDF" } // Called right after "Removed %s(%s)\n" "UTIL_Remove" diff --git a/src/adminsystem.cpp b/src/adminsystem.cpp index 5bd7cb1e6..acc950504 100644 --- a/src/adminsystem.cpp +++ b/src/adminsystem.cpp @@ -606,7 +606,8 @@ CON_COMMAND_CHAT_FLAGS(rcon, " - Send a command to server console", ADM if (cmdRef.IsValidRef()) { - CCommandContext context(CT_FIRST_SPLITSCREEN_CLIENT, player->GetPlayerSlot()); + // Some commands are blocked by UTIL_IsCommandIssuedByServerAdmin which only allows slot -1 on dedicated servers + CCommandContext context(CT_FIRST_SPLITSCREEN_CLIENT, -1); CCommand newArgs; newArgs.Tokenize(args.ArgS()); diff --git a/src/commands.cpp b/src/commands.cpp index 9162361a8..159d3b4f0 100644 --- a/src/commands.cpp +++ b/src/commands.cpp @@ -431,6 +431,7 @@ CON_COMMAND_CHAT(noshake, "- toggle noshake") } CConVar g_cvarEnableHide("cs2f_hide_enable", FCVAR_NONE, "Whether to enable hide (WARNING: randomly crashes clients since 2023-12-13 CS2 update)", false); +CConVar g_cvarHideWeapons("cs2f_hide_weapons", FCVAR_NONE, "Whether to hide weapons along with their holders", false); CConVar g_cvarDefaultHideDistance("cs2f_hide_distance_default", FCVAR_NONE, "The default distance for hide", 250, true, 0, false, 0); CConVar g_cvarMaxHideDistance("cs2f_hide_distance_max", FCVAR_NONE, "The max distance for hide", 2000, true, 0, false, 0); diff --git a/src/commands.h b/src/commands.h index 97b177c80..2b65e44a2 100644 --- a/src/commands.h +++ b/src/commands.h @@ -33,6 +33,7 @@ extern CConVar g_cvarEnableStopSound; extern CConVar g_cvarEnableNoShake; extern CConVar g_cvarMaxShakeAmp; extern CConVar g_cvarEnableHide; +extern CConVar g_cvarHideWeapons; #define CMDFLAG_NONE (0) #define CMDFLAG_NOHELP (1 << 0) // Don't show in !help menu diff --git a/src/cs2fixes.cpp b/src/cs2fixes.cpp index 0f4f84f75..1548bb041 100644 --- a/src/cs2fixes.cpp +++ b/src/cs2fixes.cpp @@ -1052,7 +1052,22 @@ void CS2Fixes::Hook_CheckTransmit(CCheckTransmitInfo** ppInfoList, int infoCount // Do not hide leaders or item holders to other players ZEPlayer* pOtherZEPlayer = g_playerManager->GetPlayer(j); if (pSelfZEPlayer->ShouldBlockTransmit(j) && pOtherZEPlayer && !pOtherZEPlayer->IsLeader() && g_pEWHandler->FindItemInstanceByOwner(j, false, 0) == -1) + { pInfo->m_pTransmitEntity->Clear(pPawn->entindex()); + + if (g_cvarHideWeapons.Get()) + { + auto pVecWeapons = pPawn->m_pWeaponServices->m_hMyWeapons(); + + FOR_EACH_VEC(*pVecWeapons, i) + { + auto pWeapon = (*pVecWeapons)[i].Get(); + + if (pWeapon) + pInfo->m_pTransmitEntity->Clear(pWeapon->entindex()); + } + } + } } // Don't transmit glow model to it's owner diff --git a/src/zombiereborn.cpp b/src/zombiereborn.cpp index 76506fe1e..d72a324f1 100644 --- a/src/zombiereborn.cpp +++ b/src/zombiereborn.cpp @@ -421,7 +421,7 @@ void CZRPlayerClassManager::LoadPlayerClass() m_HumanClassMap.insert(std::make_pair(hashKey, pHumanClass)); m_HumanClassKeys.push_back(hashKey); - if (bTeamDefault) + if (bEnabled && bTeamDefault) m_vecHumanDefaultClass.push_back(pHumanClass); pHumanClass->PrintInfo(); @@ -451,7 +451,7 @@ void CZRPlayerClassManager::LoadPlayerClass() m_ZombieClassMap.insert(std::make_pair(hashKey, pZombieClass)); m_ZombieClassKeys.push_back(hashKey); - if (bTeamDefault) + if (bEnabled && bTeamDefault) m_vecZombieDefaultClass.push_back(pZombieClass); pZombieClass->PrintInfo();