From d0d4aaa9120406aa996cfb5a4fedd68e0fe8dfbb Mon Sep 17 00:00:00 2001 From: jenz Date: Mon, 27 Jul 2026 14:12:50 +0100 Subject: [PATCH] fix for client crash Too many indices for index buffer tell a programmer. as caused by grenades, c4 and env_explosion putting too many decals on vertices --- extension.cpp | 46 ++++++++++++++++++++++++++++------------------ 1 file changed, 28 insertions(+), 18 deletions(-) diff --git a/extension.cpp b/extension.cpp index a769bb8..ad4a86c 100644 --- a/extension.cpp +++ b/extension.cpp @@ -302,30 +302,40 @@ static struct SrcdsPatch }, */ - // 16: should allow people to run around freely after game end, by overwriting pPlayer->AddFlag( FL_FROZEN ); line 3337 in cs_gamerules.cpp - //this change is desired for the new mapvoting feature so that people can still freely move at the end of the map while the vote is running. - { - "_ZN12CCSGameRules16GoToIntermissionEv", - (unsigned char *)"\x74\x0E\x83\xEC\x08\x6A\x40\x50", - "xxxxxxxx", - (unsigned char *)"\xEB\x0E\x83\xEC\x08\x6A\x40\x50", - "cstrike/bin/server_srv.so" - }, - //17 also jump over boolean = true // freeze players while in intermission m_bFreezePeriod = true; - { - "_ZN12CCSGameRules16GoToIntermissionEv", - (unsigned char *)"\x75\x0F\xE8\x69\xCE\xDA\xFF\x8B\x45\x08", - "xxxxxxxxxx", - (unsigned char *)"\xEB\x0F\xE8\x69\xCE\xDA\xFF\x8B\x45\x08", - "cstrike/bin/server_srv.so" - }, - // 18: Remove weird filename handle check in CZipPackFile::GetFileInfo that broke loading mixed case files in bsp pakfiles + // 16: Remove weird filename handle check in CZipPackFile::GetFileInfo that broke loading mixed case files in bsp pakfiles { "_ZN12CZipPackFile11GetFileInfoEPKcRiRxS2_S2_Rt", (unsigned char *)"\x75\x00\x8B\x09", "x?xx", (unsigned char *)"\x90\x90\x8B\x09", "bin/dedicated_srv.so" + }, + // 17: void CBaseGrenade::Explode( trace_t *pTrace, int bitsDamageType ) NOP out UTIL_DecalTrace( pTrace, "Scorch" ); to stop grenades from causing + // "Too many indices for index buffer. Tell a programmer". Grenades cause decals on too many faces for the client to handle. + { + "_ZN12CBaseGrenade7ExplodeEP10CGameTracei", + (unsigned char *)"\xE8\xEA\x84\x21\x00", + "xxxxx", + (unsigned char *)"\x90\x90\x90\x90\x90", + "cstrike/bin/server_srv.so" + }, + // 18: void CPlantedC4::Explode( trace_t *pTrace, int bitsDamageType ) NOP out UTIL_DecalTrace( pTrace, "Scorch" ); same reason as 17. + { + "_ZN10CPlantedC47ExplodeEP10CGameTracei", + (unsigned char *)"\xE8\x82\xC6\xEB\xFF", + "xxxxx", + (unsigned char *)"\x90\x90\x90\x90\x90", + "cstrike/bin/server_srv.so" + }, + // 19: void CEnvExplosion::InputExplode( inputdata_t &inputdata ) NOP out UTIL_DecalTrace( &tr, "Scorch" ); same reason as 17. + { + "_ZN13CEnvExplosion12InputExplodeER11inputdata_t", + (unsigned char *)"\xE8\x8A\x26\x1A\x00", + "xxxxx", + (unsigned char *)"\x90\x90\x90\x90\x90", + "cstrike/bin/server_srv.so", + 0x800, + 1 } };