diff --git a/.github/workflows/linux_aarch64.yml b/.github/workflows/linux_aarch64.yml new file mode 100644 index 0000000..ef11725 --- /dev/null +++ b/.github/workflows/linux_aarch64.yml @@ -0,0 +1,45 @@ +name: Testbuild for Linux (aarch64) +run-name: testbuild_linux_aarch64 +on: + push: + branches: + - 'master' + pull_request: + types: + - edited + - opened + - synchronize +concurrency: + # Cancel concurrent workflows for the same PR or commit hash. + group: ${{github.workflow}}-${{github.event_name == 'pull_request' && github.head_ref || github.sha}} + cancel-in-progress: true +jobs: + build_ubuntu_aarch64: + runs-on: ubuntu-22.04-arm + strategy: + fail-fast: false + matrix: + include: + - env: ubuntu + steps: + - name: Check out repository code + uses: actions/checkout@v4 + - name: Build + run: | + # Public runners come with 4 CPUs. + make -j4 + - name: Create testbuild package + run: | + # Create release directory tree + mkdir -p publish/quake2-ctf-linux_aarch64-${{github.sha}}/misc/docs + # Copy release assets + cp -r release/* publish/quake2-ctf-linux_aarch64-${{github.sha}}/ + # Copy misc assets + cp LICENSE publish/quake2-ctf-linux_aarch64-${{github.sha}}/misc/docs/LICENSE.txt + cp README.md publish/quake2-ctf-linux_aarch64-${{github.sha}}/misc/docs/README.txt + - name: Upload testbuild package + uses: actions/upload-artifact@v4 + with: + name: quake2-ctf-linux_aarch64-${{github.sha}} + path: publish/ + if-no-files-found: error diff --git a/.github/workflows/linux_x86_64.yml b/.github/workflows/linux_x86_64.yml new file mode 100644 index 0000000..bfa53d0 --- /dev/null +++ b/.github/workflows/linux_x86_64.yml @@ -0,0 +1,45 @@ +name: Testbuild for Linux (x86_64) +run-name: testbuild_linux_x86_64 +on: + push: + branches: + - 'master' + pull_request: + types: + - edited + - opened + - synchronize +concurrency: + # Cancel concurrent workflows for the same PR or commit hash. + group: ${{github.workflow}}-${{github.event_name == 'pull_request' && github.head_ref || github.sha}} + cancel-in-progress: true +jobs: + build_ubuntu_x86_64: + runs-on: ubuntu-22.04 + strategy: + fail-fast: false + matrix: + include: + - env: ubuntu + steps: + - name: Check out repository code + uses: actions/checkout@v4 + - name: Build + run: | + # Public runners come with 4 CPUs. + make -j4 + - name: Create testbuild package + run: | + # Create release directory tree + mkdir -p publish/quake2-ctf-linux_x86_64-${{github.sha}}/misc/docs + # Copy release assets + cp -r release/* publish/quake2-ctf-linux_x86_64-${{github.sha}}/ + # Copy misc assets + cp LICENSE publish/quake2-ctf-linux_x86_64-${{github.sha}}/misc/docs/LICENSE.txt + cp README.md publish/quake2-ctf-linux_x86_64-${{github.sha}}/misc/docs/README.txt + - name: Upload testbuild package + uses: actions/upload-artifact@v4 + with: + name: quake2-ctf-linux_x86_64-${{github.sha}} + path: publish/ + if-no-files-found: error diff --git a/.github/workflows/macos.yml b/.github/workflows/macos.yml new file mode 100644 index 0000000..4210fb6 --- /dev/null +++ b/.github/workflows/macos.yml @@ -0,0 +1,49 @@ +name: Testbuild for MacOS +run-name: testbuild_macos +on: + push: + branches: + - 'master' + pull_request: + types: + - edited + - opened + - synchronize +concurrency: + # Cancel concurrent workflows for the same PR or commit hash. + group: ${{github.workflow}}-${{github.event_name == 'pull_request' && github.head_ref || github.sha}} + cancel-in-progress: true +jobs: + build_macos_aarch64: + runs-on: macos-latest + strategy: + fail-fast: false + matrix: + include: + - env: macos + steps: + - name: Install build dependencies + run: | + brew update + brew install make + - name: Check out repository code + uses: actions/checkout@v4 + - name: Build + run: | + # Public runners come with 3 CPUs. + gmake -j3 + - name: Create testbuild package + run: | + # Create release directory tree + mkdir -p publish/quake2-ctf-macos-${{github.sha}}/misc/docs + # Copy release assets + cp -r release/* publish/quake2-ctf-macos-${{github.sha}}/ + # Copy misc assets + cp LICENSE publish/quake2-ctf-macos-${{github.sha}}/misc/docs/LICENSE.txt + cp README.md publish/quake2-ctf-macos-${{github.sha}}/misc/docs/README.txt + - name: Upload testbuild package + uses: actions/upload-artifact@v4 + with: + name: quake2-ctf-macos-${{github.sha}} + path: publish/ + if-no-files-found: error diff --git a/.github/workflows/win32.yml b/.github/workflows/win32.yml new file mode 100644 index 0000000..19f9f03 --- /dev/null +++ b/.github/workflows/win32.yml @@ -0,0 +1,56 @@ +name: Testbuild for Win32 +run-name: testbuild_win32 +on: + push: + branches: + - 'master' + pull_request: + types: + - edited + - opened + - synchronize +concurrency: + # Cancel concurrent workflows for the same PR or commit hash. + group: ${{github.workflow}}-${{github.event_name == 'pull_request' && github.head_ref || github.sha}} + cancel-in-progress: true +jobs: + build_mingw_x86_32: + runs-on: windows-latest + strategy: + fail-fast: false + matrix: + include: + - { sys: mingw32, env: i686 } + steps: + - uses: msys2/setup-msys2@v2 + with: + msystem: ${{matrix.sys}} + update: true + install: >- + git + make + mingw-w64-${{matrix.env}}-gcc + mingw-w64-${{matrix.env}}-make + - name: Check out repository code + uses: actions/checkout@v4 + - name: Build + shell: msys2 {0} + run: | + # Public runners come with 4 CPUs. + make -j4 + - name: Create testbuild package + shell: msys2 {0} + run: | + # Create release directory tree + mkdir -p publish/quake2-ctf-win32-${{github.sha}}/misc/docs + # Copy release assets + cp -r release/* publish/quake2-ctf-win32-${{github.sha}}/ + # Copy misc assets + cp LICENSE publish/quake2-ctf-win32-${{github.sha}}/misc/docs/LICENSE.txt + cp README.md publish/quake2-ctf-win32-${{github.sha}}/misc/docs/README.txt + - name: Upload testbuild package + uses: actions/upload-artifact@v4 + with: + name: quake2-ctf-win32-${{github.sha}} + path: publish/ + if-no-files-found: error diff --git a/.github/workflows/win64.yml b/.github/workflows/win64.yml new file mode 100644 index 0000000..419a072 --- /dev/null +++ b/.github/workflows/win64.yml @@ -0,0 +1,56 @@ +name: Testbuild for Win64 +run-name: testbuild_win64 +on: + push: + branches: + - 'master' + pull_request: + types: + - edited + - opened + - synchronize +concurrency: + # Cancel concurrent workflows for the same PR or commit hash. + group: ${{github.workflow}}-${{github.event_name == 'pull_request' && github.head_ref || github.sha}} + cancel-in-progress: true +jobs: + build_mingw_x86_64: + runs-on: windows-latest + strategy: + fail-fast: false + matrix: + include: + - { sys: mingw64, env: x86_64 } + steps: + - uses: msys2/setup-msys2@v2 + with: + msystem: ${{matrix.sys}} + update: true + install: >- + git + make + mingw-w64-${{matrix.env}}-gcc + mingw-w64-${{matrix.env}}-make + - name: Check out repository code + uses: actions/checkout@v4 + - name: Build + shell: msys2 {0} + run: | + # Public runners come with 4 CPUs. + make -j4 + - name: Create testbuild package + shell: msys2 {0} + run: | + # Create release directory tree + mkdir -p publish/quake2-ctf-win64-${{github.sha}}/misc/docs + # Copy release assets + cp -r release/* publish/quake2-ctf-win64-${{github.sha}}/ + # Copy misc assets + cp LICENSE publish/quake2-ctf-win64-${{github.sha}}/misc/docs/LICENSE.txt + cp README.md publish/quake2-ctf-win64-${{github.sha}}/misc/docs/README.txt + - name: Upload testbuild package + uses: actions/upload-artifact@v4 + with: + name: quake2-ctf-win64-${{github.sha}} + path: publish/ + if-no-files-found: error diff --git a/CHANGELOG b/CHANGELOG index 0e072b6..1742328 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,3 +1,10 @@ +Three Wave Capture The Flag 1.11 to 1.12 +- Fix mod incompatibilities when Yamagi Quake II is complied in C23 + mode. + +Three Wave Capture The Flag 1.10 to 1.11 +- Fix build in C23 mode. + Three Wave Capture The Flag 1.09 to 1.10 - Fix build on ARM Macs. diff --git a/Makefile b/Makefile index 1c1ebfe..ef457c6 100755 --- a/Makefile +++ b/Makefile @@ -88,7 +88,7 @@ endif # to get it there... # -fwrapv for defined integer wrapping. MSVC6 did this # and the game code requires it. -override CFLAGS += -std=gnu99 -fno-strict-aliasing -fwrapv +override CFLAGS += -fno-strict-aliasing -fwrapv # -MMD to generate header dependencies. Unsupported by # the Clang shipped with OS X. diff --git a/README b/README deleted file mode 100644 index 5834789..0000000 --- a/README +++ /dev/null @@ -1,32 +0,0 @@ -This is a 64 bit clean and bugfixed version of id Software's Quake II -addon pack "Capture The Flag", developed by David 'Zoid' Kirsch. Hundred -of type errors and strange constructs were fixed, thus this version -should run much more stable than the old SDK version. While it may work -with every Quake II client, the "Yamagi Quake II" client is highly -recommended. For more Information visit http://www.yamagi.org/quake2. - -Installation for FreeBSD, Linux and OpenBSD: --------------------------------------------- -1. Type "make" or "gmake" to compile the game.so. -2. Copy release/game.so to the ctf/ subfolder of your Quake II - installation. The CTF gamedata is part of the 3.20 point release. -3. Start the game with "./quake2 +set game ctf". - -Installation for OS X: ----------------------- -1. Copy game.dll from the zip-archive to ctf/. -2. Start the game with "quake2 +set game ctf" - -If you want to compile 'ctf' for OS X from source, please take a look at -the "Installation" section of the README of the Yamagi Quake II client. -In the same file the integration into an app-bundle is explained. - -Installation for Windows: -------------------------- -1. Copy the game.dll to the ctf\ subfolder of your Quake II - installation. The CTF gamedata is part of the 3.20 point release. -2. Start the game with "quake2.exe +set game ctf". - -If you want to compile 'ctf' for Windows from source, please take a -look at the "Installation" section of the README of the Yamagi Quake -II client. There's descripted how to setup the build environment. diff --git a/README.md b/README.md new file mode 100644 index 0000000..35ee6c3 --- /dev/null +++ b/README.md @@ -0,0 +1,66 @@ +# Three Wave Capture The Flag for Yamagi Quake II + +Three Wave Capture The Flag for Yamagi Quake II is a bugfixed version of +the official CTF addon for Quake II. It's based upon the Quake II source +code release and and is licensed under GPL version 2: + +* [LICENSE](https://github.com/yquake2/ctf/blob/master/LICENSE) + +Several bugs were fixed. The addon is intended to be used with Yamagi +Quake II, but it's also fully backward compatible with the last Quake II +pointrelease 3.20 and may work with other source ports. + +Officially supported operating systems are: + +* FreeBSD +* Linux +* Windows + +Beside theses Three Wave Capture The Flag for Yamagi Quake II has +community support for MacOS and most other unixoid operating systems, +including NetBSD, OpenBSD and Solaris. + + +## Development + +Three Wave Capture The Flag for Yamagi Quake II is a community driven +project and lives from community involvement. Please report bugs in our +issue tracker: + +* [Issue Tracker](https://github.com/yquake2/ctf/issues) + +We are always open to code contributions, no matter if they are small +bugfixes or bigger features. However, Yamagi Quake II is a conservative +project with big focus on stability and backward compatibility. We don't +accept breaking changes. When in doubt please open an issue and ask if a +contribution in welcome before putting too much work into it. Open a +pull request to submit code: + +* [Pull Requests](https://github.com/yquake2/ctf/pulls) + +Also have a look at our contributors guide: + +* [Contributors Guide](https://github.com/yquake2/yquake2/blob/master/doc/080_contributing.md) + + +## Documentation + +Yamagi Quake II has rather extensive documentation covering all relevant +areas from installation and configuration to package building. Have a +look at the documentation index: + +* [Documentation Index](https://github.com/yquake2/yquake2/blob/master/doc/010_index.md) + + +## Releases + +Three Wave Capture The Flag for Yamagi Quake II releases at an irregular +schedule. The official releases with source code tarballs and prebuild +Windows binaries can be found at the homepage: + +* [Homepage](https://www.yamagi.org/quake2/) + +Our CI builds **unsupported** Linux, MacOS and Windows binaries at every +commit. The artifacts can be found here: + +* [Github Actions](https://github.com/yquake2/ctf/actions) diff --git a/src/g_svcmds.c b/src/g_svcmds.c index 4f1dd44..794b2e5 100644 --- a/src/g_svcmds.c +++ b/src/g_svcmds.c @@ -168,11 +168,11 @@ SV_FilterPacket(char *from) { if ((in & ipfilters[i].mask) == ipfilters[i].compare) { - return (int)filterban->value; + return (filterban->value != 0); } } - return (int)!filterban->value; + return (filterban->value == 0); } void diff --git a/src/header/shared.h b/src/header/shared.h index 66e0bda..27fcffd 100644 --- a/src/header/shared.h +++ b/src/header/shared.h @@ -35,9 +35,10 @@ #include #include #include +#include +typedef int qboolean; typedef unsigned char byte; -typedef enum {false, true} qboolean; #ifndef NULL #define NULL ((void *)0)