From 93a5c43cc087c202dc7f09d6186b689054efa25e Mon Sep 17 00:00:00 2001 From: Sharpyku Date: Fri, 10 Jul 2026 14:52:56 +0300 Subject: [PATCH 1/3] Season 5 (CS2 1.41.6.9) support: bump hl2sdk to cs2 HEAD + update BotNavIgnore gamedata - sdk -> alliedmodders/hl2sdk@5f891c9 (2026-07-09, fixes g_bUpdateStringTokenDatabase ABI break) - BotNavIgnore linux signature + patch payload synced with Source2ZE/CS2Fixes upstream, validated against live 1.41.6.9 libserver.so --- gamedata/cs2fixes.games.txt | 4 ++-- sdk | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/gamedata/cs2fixes.games.txt b/gamedata/cs2fixes.games.txt index f81bdf08..bb93aef5 100644 --- a/gamedata/cs2fixes.games.txt +++ b/gamedata/cs2fixes.games.txt @@ -115,7 +115,7 @@ { "library" "server" "windows" "\x0F\x84\x2A\x2A\x2A\x2A\x80\xB8\x2A\x2A\x2A\x2A\x00\x0F\x84\x2A\x2A\x2A\x2A\x80\x3D\x2A\x2A\x2A\x2A\x00\x74\x15" - "linux" "\x0F\x84\x2A\x2A\x2A\x2A\x44\x0F\xB6\xB0\x2A\x2A\x2A\x2A\x45\x84\xF6\x0F\x84" + "linux" "\x0F\x84\x2A\x2A\x2A\x2A\x44\x0F\xB6\xB8\x2A\x2A\x2A\x2A\x45\x84\xFF\x0F\x84" } // Called right after this in windows "Entity %s(%s) is ambiguously parented to..." "CBaseEntity_SetParent" @@ -338,7 +338,7 @@ "BotNavIgnore" { "windows" "\xE9\x2C\x00\x00\x00\x90" - "linux" "\xE9\x25\x00\x00\x00\x90" + "linux" "\xE9\x22\x00\x00\x00\x90" } } } diff --git a/sdk b/sdk index 0df1f3b8..5f891c90 160000 --- a/sdk +++ b/sdk @@ -1 +1 @@ -Subproject commit 0df1f3b8e39a47b8840f5d5545ef5de37761683c +Subproject commit 5f891c9026230cce0fc0a3fc4b5fef1c467a1385 From 92d45e8a7cb1937bb0ee7e59a0f04f4b4452fc0c Mon Sep 17 00:00:00 2001 From: Sharpyku Date: Fri, 10 Jul 2026 14:59:10 +0300 Subject: [PATCH 2/3] Build: compile valveextensions.proto (new networkbasetypes.proto import) --- AMBuilder | 1 + 1 file changed, 1 insertion(+) diff --git a/AMBuilder b/AMBuilder index 500d4cc2..70e3af87 100644 --- a/AMBuilder +++ b/AMBuilder @@ -71,6 +71,7 @@ for sdk_target in MMSPlugin.sdk_targets: protoc_builder = builder.tools.Protoc(protoc = sdk_target.protoc, sources = [ os.path.join(sdk['path'], 'common', 'network_connection.proto'), + os.path.join(sdk['path'], 'common', 'valveextensions.proto'), os.path.join(sdk['path'], 'common', 'networkbasetypes.proto'), os.path.join(sdk['path'], 'common', 'engine_gcmessages.proto'), os.path.join(sdk['path'], 'gcsdk', 'steammessages.proto'), From dfde32d68ec511e978401b29e7635713319f3835 Mon Sep 17 00:00:00 2001 From: Sharpyku <31898532+Sharpyku@users.noreply.github.com> Date: Sat, 11 Jul 2026 01:17:40 +0300 Subject: [PATCH 3/3] fix: exempt IN_JUMP from subtick input stripping (Season 5 scroll jump clip) Since the CS2 Season 5 jump rework (buffered jump presses via CCSPlayerLegacyJump / m_flJumpPressedTime), a mousewheel +jump press exists only in the subtick move entries. Stripping those entries made scroll jumps come out clipped ("glued to the floor") while held space still worked, because the held button survives in the tick-boundary button state. Keep stripping WASD/duck subtick moves and subtick viewangles for the consistent tick feel, but let jump through. --- src/detours.cpp | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/detours.cpp b/src/detours.cpp index 2980b369..b48eb7dd 100644 --- a/src/detours.cpp +++ b/src/detours.cpp @@ -169,8 +169,11 @@ void* FASTCALL Detour_ProcessUsercmds(CCSPlayerController* pController, CUserCmd { uint64 button = iterator->button(); - // Remove normal subtick movement inputs by button & subtick movement viewangles by pitch/yaw - if ((button >= IN_JUMP && button <= IN_MOVERIGHT && button != IN_USE) || iterator->pitch_delta() != 0.0f || iterator->yaw_delta() != 0.0f) + // Remove normal subtick movement inputs by button & subtick movement viewangles by pitch/yaw. + // IN_JUMP is exempt: since the CS2 Season 5 jump rework (buffered jump presses), a mousewheel + // +jump press exists only in the subtick moves — stripping it clips/eats scroll jumps entirely, + // while held space survives in the tick-boundary button state. + if ((button > IN_JUMP && button <= IN_MOVERIGHT && button != IN_USE) || iterator->pitch_delta() != 0.0f || iterator->yaw_delta() != 0.0f) subtickMoves->erase(iterator); else iterator++;