diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml deleted file mode 100644 index 4221fc7..0000000 --- a/.github/workflows/build.yml +++ /dev/null @@ -1,108 +0,0 @@ -name: CI - -on: - push: - tags: - - '*' - branches: - - main - paths-ignore: - - LICENSE - - README.md - pull_request: - paths-ignore: - - LICENSE - - README.md - -jobs: - build: - name: Build - runs-on: ${{ matrix.os }} - container: ${{ matrix.container }} - strategy: - fail-fast: false - matrix: - os: [ubuntu-latest, windows-latest] - include: - - os: windows-latest - - os: ubuntu-latest - container: registry.gitlab.steamos.cloud/steamrt/sniper/sdk - steps: - - name: Checkout - uses: actions/checkout@v4 - with: - path: MultiAddonManager - submodules: recursive - fetch-depth: 0 - - - name: Checkout Metamod - uses: actions/checkout@v4 - with: - repository: alliedmodders/metamod-source - ref: master - path: mmsource-2.0 - submodules: recursive - - - name: Checkout HL2SDK - uses: actions/checkout@v4 - with: - repository: alliedmodders/hl2sdk - ref: cs2 - path: hl2sdk-cs2 - - - name: Checkout AMBuild - uses: actions/checkout@v4 - with: - repository: alliedmodders/ambuild - path: ambuild - - - name: Install AMBuild - run: | - cd ambuild && python setup.py install && cd .. - - - name: Build - working-directory: MultiAddonManager - shell: bash - run: | - mkdir build && cd build - python ../configure.py --enable-optimize --symbol-files --sdks cs2 - ambuild - - - name: Upload artifact - uses: actions/upload-artifact@v4 - with: - name: ${{ runner.os }} - path: MultiAddonManager/build/package - - release: - name: Release - if: startsWith(github.ref, 'refs/tags/') - needs: build - runs-on: ubuntu-latest - - steps: - - name: Download artifacts - uses: actions/download-artifact@v4 - - - 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 * - cd - - fi - if [ -d "./Windows/" ]; then - cd ./Windows/ - zip -r ../${{ github.event.repository.name }}-${version}-windows.zip * - cd - - fi - - - name: Release - uses: svenstaro/upload-release-action@v2 - with: - repo_token: ${{ secrets.GITHUB_TOKEN }} - file: ${{ github.event.repository.name }}-* - tag: ${{ github.ref }} - file_glob: true diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml new file mode 100644 index 0000000..be9c672 --- /dev/null +++ b/.github/workflows/main.yml @@ -0,0 +1,65 @@ +name: Continuous Integration + +on: + push: + tags: + - '*' + branches: + - main + paths-ignore: + - LICENSE + - README.md + pull_request: + paths-ignore: + - LICENSE + - README.md + workflow_dispatch: + +jobs: + build: + name: Build via Docker Compose + runs-on: ubuntu-latest + + steps: + - name: Checkout repository + uses: actions/checkout@v4 + with: + submodules: recursive + + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v3 + + - name: Build plugin inside container + run: docker compose up --build --abort-on-container-exit + + - name: Upload artifact + uses: actions/upload-artifact@v4 + with: + name: linux-package + path: dockerbuild/package + + release: + name: Release + if: startsWith(github.ref, 'refs/tags/') + needs: build + runs-on: ubuntu-latest + + steps: + - name: Download artifact + uses: actions/download-artifact@v4 + with: + name: linux-package + path: ./Linux + + - name: Package Linux .so + run: | + version="${GITHUB_REF#refs/tags/}" + tar -czf MultiAddonManager-${version}-linux.tar.gz -C Linux . + + - name: Upload release archive + uses: svenstaro/upload-release-action@v2 + with: + repo_token: ${{ secrets.GITHUB_TOKEN }} + file: MultiAddonManager-*-linux.tar.gz + tag: ${{ github.ref }} + file_glob: true diff --git a/.gitmodules b/.gitmodules index 9abf89d..1d0d620 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,3 +1,10 @@ [submodule "hl2sdk-manifests"] path = hl2sdk-manifests url = https://github.com/alliedmodders/hl2sdk-manifests +[submodule "vendor/hl2sdk-cs2"] + path = vendor/hl2sdk-cs2 + url = https://github.com/alliedmodders/hl2sdk + branch = cs2 +[submodule "vendor/metamod-source"] + path = vendor/metamod-source + url = https://github.com/alliedmodders/metamod-source diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..4097e29 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,15 @@ +FROM registry.gitlab.steamos.cloud/steamrt/sniper/sdk + +WORKDIR /app + +RUN apt update && apt install -y clang-16 +RUN ln -sf /usr/bin/clang-16 /usr/bin/clang && ln -sf /usr/bin/clang++-16 /usr/bin/clang++ +RUN git clone https://github.com/alliedmodders/ambuild +RUN cd ambuild && python setup.py install && cd .. +RUN git config --global --add safe.directory /app + +COPY ./docker-entrypoint.sh ./ +ENV HL2SDKCS2=/app/source/vendor/hl2sdk-cs2 +ENV MMSOURCE112=/app/source/vendor/metamod-source +WORKDIR /app/source +CMD ["/bin/bash", "./docker-entrypoint.sh"] diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..09e207d --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,6 @@ +services: + builder: + image: ambuilder + build: . + volumes: + - '.:/app/source' \ No newline at end of file diff --git a/docker-entrypoint.sh b/docker-entrypoint.sh new file mode 100644 index 0000000..ccdc180 --- /dev/null +++ b/docker-entrypoint.sh @@ -0,0 +1,6 @@ +#!/bin/bash +mkdir dockerbuild +cd dockerbuild +pwd +python ../configure.py --enable-optimize --sdks cs2 --hl2sdk-manifests ./hl2sdk-manifests +ambuild \ No newline at end of file diff --git a/src/multiaddonmanager.cpp b/src/multiaddonmanager.cpp index cc3df11..defd87a 100644 --- a/src/multiaddonmanager.cpp +++ b/src/multiaddonmanager.cpp @@ -140,19 +140,19 @@ SH_DECL_HOOK2(IGameEventManager2, LoadEventsFromFile, SH_NOATTRIB, 0, int, const constexpr const byte g_HostStateRequest_Sig[] = "\x48\x89\x74\x24\x2A\x57\x48\x83\xEC\x2A\x33\xF6\x48\x8B\xFA\x48\x39\x35"; constexpr const byte g_ReplyConnection_Sig[] = "\x48\x8B\xC4\x55\x41\x54\x41\x55\x41\x57"; #else -constexpr const byte g_HostStateRequest_Sig[] = "\x55\x48\x89\xE5\x41\x56\x41\x55\x41\x54\x49\x89\xF4\x53\x48\x83\x7F"; -constexpr const byte g_ReplyConnection_Sig[] = "\x55\xB9\x00\x01\x00\x00"; +constexpr const byte g_HostStateRequest_Sig[] = "\x55\x48\x89\xE5\x41\x57\x41\x56\x41\x55\x41\x54\x49\x89\xFC\x53\x48\x89\xF3\x48\x83\xEC\x18\x48\x83\x7F\x30\x00\x74\x70"; +constexpr const byte g_ReplyConnection_Sig[] = "\x55\x48\x8D\x05\xE8\xC2\xC1\xFF\x66\x0F\xEF\xC0\x48\x89\xE5\x41\x57\x41\x56\x41\x55\x41\x54\x49\x89\xFC\x53\x48\x89\xF3\x48\x81\xEC\xB8\x01\x00\x00"; #endif // Offsets -constexpr int g_iServerAddonsOffset = 328; +constexpr int g_iServerAddonsOffset = 336; #ifdef PLATFORM_WINDOWS constexpr int g_iSendNetMessageOffset = 15; constexpr int g_iClientListOffset = 624; #else -constexpr int g_iSendNetMessageOffset = 16; +constexpr int g_iSendNetMessageOffset = 13; constexpr int g_iClientListOffset = 640; #endif diff --git a/vendor/hl2sdk-cs2 b/vendor/hl2sdk-cs2 new file mode 160000 index 0000000..35d0a31 --- /dev/null +++ b/vendor/hl2sdk-cs2 @@ -0,0 +1 @@ +Subproject commit 35d0a31085162979e9da905261ff3fc85fea9e69 diff --git a/vendor/metamod-source b/vendor/metamod-source new file mode 160000 index 0000000..5a282eb --- /dev/null +++ b/vendor/metamod-source @@ -0,0 +1 @@ +Subproject commit 5a282eb8fca984beaae49c9b68d6e944e5b9c6b3