diff --git a/.gitea/scripts/ci.sh b/.gitea/scripts/ci.sh new file mode 100755 index 0000000..be11d37 --- /dev/null +++ b/.gitea/scripts/ci.sh @@ -0,0 +1,23 @@ +#!/bin/bash + +# setup +mkdir build +cd build +mkdir iw4 +mkdir iw5 +cd .. + +# ready for release +cp iw4/scripts/mp/_jump.gsc build/iw4 + +# replace gsc extension with c. It will make gcc very happy +mv iw5/scripts/mp/_jump.gsc iw5/scripts/mp/_jump.c + +# perform macro expansion +gcc -D_UTILITY_DEBUG -DIW5 -DCI -E "iw5/scripts/mp/_jump.c" -o _jump.in + +# remove things gcc added to the file that we do not need +python3 .gitea/scripts/clean.py _jump.in _jump.gsc + +# ready for release +mv _jump.gsc build/iw5/_jump.gsc diff --git a/.gitea/scripts/clean.py b/.gitea/scripts/clean.py new file mode 100644 index 0000000..8c48d1c --- /dev/null +++ b/.gitea/scripts/clean.py @@ -0,0 +1,20 @@ +import sys + +def erase_commented_lines(filename, out): + with open(filename, 'r') as file: + lines = file.readlines() + + lines = [line for line in lines if not line.startswith('#')] + + with open(out, 'w') as file: + file.writelines(lines) + +def main(): + if len(sys.argv) != 3: + print(f'Usage: python3 {sys.argv[0]} ') + return + + erase_commented_lines(sys.argv[1], sys.argv[2]) + +if __name__ == '__main__': + main() diff --git a/.gitea/workflows/ci.yml b/.gitea/workflows/ci.yml new file mode 100644 index 0000000..136f6cf --- /dev/null +++ b/.gitea/workflows/ci.yml @@ -0,0 +1,25 @@ +name: Build + +on: [push] +jobs: + build-linux: + runs-on: ubuntu-latest + + steps: + - name: Check out files + uses: actions/checkout@v3 + with: + submodules: true + fetch-depth: 0 + lfs: false + + - name: Create release + run: | + .gitea/scripts/ci.sh + + - name: Upload release + uses: actions/upload-artifact@v3 + with: + name: release + path: | + build diff --git a/iw5/scripts/mp/_jump.gsc b/iw5/scripts/mp/_jump.gsc index 3f8fc0c..79b6339 100644 --- a/iw5/scripts/mp/_jump.gsc +++ b/iw5/scripts/mp/_jump.gsc @@ -4,7 +4,11 @@ #define TOOL #endif +#if defined(TOOL) #inline scripts\mp\_utility; +#else +#include "_utility.gsh" +#endif GENERIC_INIT; @@ -14,7 +18,9 @@ onPlayerConnect() { level waittill( "connected", player ); +#if defined(TOOL) waittillframeend; +#endif BOT_CHK( player ); @@ -125,6 +131,6 @@ onPlayerSpawned() { self waittill( "spawned_player" ); - self setPerk( "specialty_marathon", true, false ); + self setPerk( "specialty_marathon", true, false ); } } diff --git a/iw5/scripts/mp/_utility.gsh b/iw5/scripts/mp/_utility.gsh index f3f99fd..bf189c3 100644 --- a/iw5/scripts/mp/_utility.gsh +++ b/iw5/scripts/mp/_utility.gsh @@ -40,25 +40,21 @@ /* Do not use the + to concatenate strings, let the GSC VM do it for you */ /* Other clients will have print available */ #if defined(IW4MP) - #define PRINT_FUNC printConsole + #define PRINT_FUNC_NAME printConsole #else - #define PRINT_FUNC print -#endif - -#if !defined(TOOL) - PRINT_FUNC( format __VA_OPT__(,) __VA_ARGS__ ) + #define PRINT_FUNC_NAME print #endif #ifdef _UTILITY_DEBUG -#define _VERIFY( cond, msg ) \ - assertEx(cond, msg) + #define _VERIFY(cond, msg) \ + assertEx( cond, msg ) -#define DEBUG_PRINT(msg) \ - PRINT_FUNC(msg) + #define DEBUG_PRINT(msg) \ + PRINT_FUNC_NAME( msg ) #else -/* The following are "empty" defines with gsc-tool */ -#define _VERIFY(cond, msg) -#define DEBUG_PRINT(msg) + /* The following are "empty" defines with gsc-tool */ + #define _VERIFY(cond, msg) + #define DEBUG_PRINT(msg) #endif /* Use Cbuf. Should use the + to concatenate strings before using this */ @@ -106,7 +102,7 @@ #endif #if !defined(TOOL) -#define PLAYER_NOTIFY_CMD(ent, str, action) ent notifyOnPlayerCommand( str, action ) + #define PLAYER_NOTIFY_CMD(ent, str, action) ent notifyOnPlayerCommand( str, action ) #endif /* Tweak as necessary. Can be return, continue or break */