From 6148f39ad305b1436eb4e5dd6b8bd2a78e6c6e08 Mon Sep 17 00:00:00 2001 From: Vauff Date: Mon, 17 Aug 2026 00:01:34 -0400 Subject: [PATCH 1/3] Migrate to build containers & start SteamRT4 builds --- .github/workflows/{ci.yml => build.yml} | 49 ++++++++++++++----------- hl2sdk-manifests | 2 +- 2 files changed, 29 insertions(+), 22 deletions(-) rename .github/workflows/{ci.yml => build.yml} (63%) diff --git a/.github/workflows/ci.yml b/.github/workflows/build.yml similarity index 63% rename from .github/workflows/ci.yml rename to .github/workflows/build.yml index dfd6ba7..9734978 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/build.yml @@ -4,26 +4,31 @@ on: [push, pull_request] jobs: build: - name: Build + name: ${{ matrix.name }} Build runs-on: ${{ matrix.os }} container: ${{ matrix.container }} strategy: fail-fast: false matrix: - os: [windows-2022, ubuntu-latest] include: - - os: windows-2022 + - os: windows-latest + name: Windows - os: ubuntu-latest - container: registry.gitlab.steamos.cloud/steamrt/sniper/sdk + name: SteamRT3 + container: ghcr.io/source2ze/build-containers:steamrt3 + - os: ubuntu-latest + name: SteamRT4 + container: ghcr.io/source2ze/build-containers:steamrt4 steps: - name: Checkout - uses: actions/checkout@v4 + uses: actions/checkout@v7 with: path: MovementUnlocker submodules: recursive + fetch-depth: 0 - name: Checkout Metamod - uses: actions/checkout@v4 + uses: actions/checkout@v7 with: repository: alliedmodders/metamod-source ref: master @@ -31,38 +36,35 @@ jobs: submodules: recursive - name: Checkout HL2SDK - uses: actions/checkout@v4 + uses: actions/checkout@v7 with: repository: alliedmodders/hl2sdk ref: cs2 path: hl2sdk-cs2 - name: Checkout AMBuild - uses: actions/checkout@v4 + if: matrix.os == 'windows-latest' + uses: actions/checkout@v7 with: repository: alliedmodders/ambuild path: ambuild - name: Install AMBuild - shell: bash - run: | - if [ "$RUNNER_OS" == "Windows" ]; then - pip install setuptools - fi - cd ambuild && python setup.py install && cd .. + if: matrix.os == 'windows-latest' + run: pip install setuptools && cd ambuild && python setup.py install && cd .. - name: Build working-directory: MovementUnlocker shell: bash run: | mkdir build && cd build - python ../configure.py --enable-optimize --symbol-files --sdks cs2 + python ../configure.py --enable-optimize --sdks cs2 ambuild - name: Upload artifact - uses: actions/upload-artifact@v4 + uses: actions/upload-artifact@v7 with: - name: ${{ runner.os }} + name: ${{ matrix.name }} path: MovementUnlocker/build/package release: @@ -73,15 +75,20 @@ jobs: steps: - name: Download artifacts - uses: actions/download-artifact@v4 + uses: actions/download-artifact@v8 - name: Package run: | version=`echo $GITHUB_REF | sed "s/refs\/tags\///"` ls -Rall - if [ -d "./Linux/" ]; then - cd ./Linux/ - tar -czf ../${{ github.event.repository.name }}-${version}-linux.tar.gz * + if [ -d "./SteamRT3/" ]; then + cd ./SteamRT3/ + tar -czf ../${{ github.event.repository.name }}-${version}-steamrt3.tar.gz * + cd - + fi + if [ -d "./SteamRT4/" ]; then + cd ./SteamRT4/ + tar -czf ../${{ github.event.repository.name }}-${version}-steamrt4.tar.gz * cd - fi if [ -d "./Windows/" ]; then diff --git a/hl2sdk-manifests b/hl2sdk-manifests index a57b309..20b3a01 160000 --- a/hl2sdk-manifests +++ b/hl2sdk-manifests @@ -1 +1 @@ -Subproject commit a57b3095a6fc31a98b13e2d73ebb668dac4f1300 +Subproject commit 20b3a014264b38908c4a5d4eb263ba2c488f3dc1 From b418365b5b8cb0cb68099fe0485e9f23c818b2e9 Mon Sep 17 00:00:00 2001 From: Vauff Date: Tue, 8 Sep 2026 17:02:27 -0400 Subject: [PATCH 2/3] Migrate to KHook --- AMBuildScript | 2 +- MovementUnlocker.cpp | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/AMBuildScript b/AMBuildScript index 77353ac..cc5c402 100644 --- a/AMBuildScript +++ b/AMBuildScript @@ -278,7 +278,7 @@ class MMSPluginConfig(object): cxx.cxxincludes += [ os.path.join(context.currentSourcePath), os.path.join(mms_core_path), - os.path.join(mms_core_path, 'sourcehook'), + os.path.join(self.mms_root, 'third_party', 'khook', 'include'), ] defines = [] diff --git a/MovementUnlocker.cpp b/MovementUnlocker.cpp index 9cb5e08..97d55be 100644 --- a/MovementUnlocker.cpp +++ b/MovementUnlocker.cpp @@ -19,7 +19,7 @@ #include #include "MovementUnlocker.h" -#include +#include "khook/memory.hpp" #ifdef _WIN32 #include #elif __linux__ @@ -110,7 +110,7 @@ bool MovementUnlocker::Load(PluginId id, ISmmAPI *ismm, char *error, size_t maxl return false; } - SourceHook::SetMemAccess((void*)pPatchAddress, PatchLen, SH_MEM_READ | SH_MEM_WRITE | SH_MEM_EXEC); + KHook::Memory::SetAccess((void*)pPatchAddress, PatchLen, KHook::Memory::READ | KHook::Memory::WRITE | KHook::Memory::EXECUTE); #ifdef _WIN32 const char* patchBytes[] = {"\xE9", "\xB0", "\x00", "\x00", "\x00", "\x90"}; @@ -122,7 +122,7 @@ bool MovementUnlocker::Load(PluginId id, ISmmAPI *ismm, char *error, size_t maxl *(unsigned char*)(pPatchAddress + i) = ((unsigned char*)"\x90")[0]; #endif - SourceHook::SetMemAccess((void*)pPatchAddress, PatchLen, SH_MEM_READ | SH_MEM_EXEC); + KHook::Memory::SetAccess((void*)pPatchAddress, PatchLen, KHook::Memory::READ | KHook::Memory::EXECUTE); META_CONPRINTF( "[Movement Unlocker] Successfully patched Movement Unlocker!\n" ); return true; @@ -154,7 +154,7 @@ const char *MovementUnlocker::GetLicense() const char *MovementUnlocker::GetVersion() { - return "1.12"; + return "2.0"; } const char *MovementUnlocker::GetDate() From 4ea3794248f961fd0fbdccf893c49f7c7436572d Mon Sep 17 00:00:00 2001 From: Vauff Date: Thu, 24 Sep 2026 13:16:53 -0400 Subject: [PATCH 3/3] Update Linux patch for 2026-09-22 CS2 update --- MovementUnlocker.cpp | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/MovementUnlocker.cpp b/MovementUnlocker.cpp index 97d55be..2781173 100644 --- a/MovementUnlocker.cpp +++ b/MovementUnlocker.cpp @@ -33,9 +33,9 @@ const unsigned char *pPatchSignature = (unsigned char *)"\x0F\x86\xAF\x2A\x2A\x2 const char *pPatchPattern = "xxx???xxxxxx"; int PatchLen = 6; #elif __linux__ -const unsigned char * pPatchSignature = (unsigned char *)"\x0F\x87\x2A\x2A\x2A\x2A\xF3\x0F\x10\x25\x2A\x2A\x2A\x2A\xF3\x0F\x11\xA5\x2A\x2A\x2A\x2A\x48\x89\xDE"; -const char* pPatchPattern = "xx????xxxx????xxxx????xxx"; -int PatchLen = 6; +const unsigned char * pPatchSignature = (unsigned char *)"\x76\x2A\xF3\x0F\x51\xC0\xF3\x0F\x7E\xDB\x49\x8B\x06"; +const char* pPatchPattern = "x?xxxxxxxxxxx"; +int PatchLen = 1; #endif // From https://git.botox.bz/CSSZombieEscape/sm-ext-PhysHooks @@ -119,7 +119,7 @@ bool MovementUnlocker::Load(PluginId id, ISmmAPI *ismm, char *error, size_t maxl *(unsigned char*)(pPatchAddress + i) = ((unsigned char*)patchBytes[i])[0]; #elif __linux__ for (int i = 0; i < PatchLen; i++) - *(unsigned char*)(pPatchAddress + i) = ((unsigned char*)"\x90")[0]; + *(unsigned char*)(pPatchAddress + i) = ((unsigned char*)"\xEB")[0]; #endif KHook::Memory::SetAccess((void*)pPatchAddress, PatchLen, KHook::Memory::READ | KHook::Memory::EXECUTE); @@ -154,7 +154,7 @@ const char *MovementUnlocker::GetLicense() const char *MovementUnlocker::GetVersion() { - return "2.0"; + return "2.0.1"; } const char *MovementUnlocker::GetDate()