From 939237df7156f903d2a84f37e5d9c2bde24d045e Mon Sep 17 00:00:00 2001 From: Roman Chistokhodov Date: Sun, 28 Aug 2022 14:28:29 +0300 Subject: [PATCH 1/9] Update README.md. Add a note about mods [ci skip] (#321) --- README.md | 22 +++++++++++++++++++--- 1 file changed, 19 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index c07deea0..3f7e36a6 100644 --- a/README.md +++ b/README.md @@ -12,7 +12,7 @@ Half-Life SDK for GoldSource & Xash3D with some bugfixes. - Scientists now react to smells. [Patch](https://github.com/FWGS/hlsdk-portable/commit/2de4e7ab003d5b1674d12525f5aefb1e57a49fa3) - Tau-cannon (gauss) plays idle animations. - Tau-cannon (gauss) beam color depends on the charge as it was before the prediction code was introduced in Half-Life. [Patch](https://github.com/FWGS/hlsdk-portable/commit/0a29ec49c8183ebb8da22a6d2ef395eae9c3dffe) -- Brought back gluon flare in singleplayer. +- Brought back gluon flare in singleplayer. [Patch](https://github.com/FWGS/hlsdk-portable/commit/9d7ab6acf46a8b71ef119d9c252767865522d21d) - Hand grenades don't stay primed after holster, preventing detonation after weapon switch. [Patch](https://github.com/FWGS/hlsdk-portable/commit/6e1059026faa90c5bfe5e3b3f4f58fde398d4524) - Fixed flashlight battery appearing as depleted on restore. - Fixed a potential overflow when reading sentences.txt. [Patch](https://github.com/FWGS/hlsdk-xash3d/commit/cb51d2aa179f1eb622e08c1c07b053ccd49e40a5) @@ -37,7 +37,7 @@ Bugfix-related server cvars: - **explosionfix**: if set to 1, explosion damage won't propagate through thin bruses. - **selfgauss**: if set to 0, players won't hurt themselves with secondary attack when shooting thick brushes. -*Note*: the macros and cvars were adjusted in [hlfixed](https://github.com/FWGS/hlsdk-portable/tree/hlfixed) branch. The bugfix macros are kept turned off in master branch to maintain the compatibility with vanilla servers and clients. +*Note*: the macros and cvars were adjusted in [hlfixed](https://github.com/FWGS/hlsdk-portable/tree/hlfixed) branch (for further information read [this](https://github.com/FWGS/hlsdk-portable/wiki/HL-Fixed)). The bugfix macros are kept turned off in `master` branch to maintain the compatibility with vanilla servers and clients. Other server cvars: @@ -48,6 +48,22 @@ Other server cvars:

+
Support for mods +

+ +This repository contains (re-)implementations of some mods as separate branches derived from `master`. The list of supported mods can be found [here](https://github.com/FWGS/hlsdk-portable/wiki/Mods). Note that some branches are unstable and incomplete. + +To get the mod branch locally run the following git command: + +``` +git fetch origin asheep:asheep +``` + +This is considering that you have set **FWGS/hlsdk-portable** as an `origin` remote and want to fetch `asheep` branch. + +

+
+ # Obtaining source code Either clone the repository via [git](`https://git-scm.com/downloads`) or just download ZIP via **Code** button on github. The first option is more preferable as it also allows you to search through the repo history, switch between branches and clone the vgui submodule. @@ -87,7 +103,7 @@ cd projects\hlsdk-portable ``` cmake -A Win32 -B build ``` -Once you configure the project you don't need to call `cmake` anymore unless you modify `CMakeLists.txt` files or want to reconfigure the project with different parameters. +Note that you must repeat the configuration step if you modify `CMakeLists.txt` files or want to reconfigure the project with different parameters. The next step is to compile the libraries: ``` From 99dc2c519f5523ed9c3bc38e1f81c29e09baf957 Mon Sep 17 00:00:00 2001 From: Roman Chistokhodov Date: Tue, 30 Aug 2022 19:35:13 +0300 Subject: [PATCH 2/9] Fix HUD_ChatInputPosition qualifier (#323) --- cl_dll/vgui_SpectatorPanel.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cl_dll/vgui_SpectatorPanel.cpp b/cl_dll/vgui_SpectatorPanel.cpp index 4b2b897c..2d78b932 100644 --- a/cl_dll/vgui_SpectatorPanel.cpp +++ b/cl_dll/vgui_SpectatorPanel.cpp @@ -29,7 +29,7 @@ Sets the location of the input for chat text ========================== */ -void DLLEXPORT HUD_ChatInputPosition( int *x, int *y ) +extern "C" void DLLEXPORT HUD_ChatInputPosition( int *x, int *y ) { // RecClChatInputPosition( x, y ); From c9a3d89fa67982a12cb4ac3e5aba67e2362df969 Mon Sep 17 00:00:00 2001 From: Alibek Omarov Date: Thu, 8 Sep 2022 04:09:24 +0300 Subject: [PATCH 3/9] wscript: fix build with waf --- cl_dll/wscript | 3 +++ dlls/wscript | 3 +++ 2 files changed, 6 insertions(+) diff --git a/cl_dll/wscript b/cl_dll/wscript index 07dabf08..f5f7be85 100644 --- a/cl_dll/wscript +++ b/cl_dll/wscript @@ -75,6 +75,9 @@ def build(bld): 'message.cpp', 'overview.cpp', 'parsemsg.cpp', + 'particlemgr.cpp', + 'particlemsg.cpp', + 'particlesys.cpp', 'saytext.cpp', 'scoreboard.cpp', 'status_icons.cpp', diff --git a/dlls/wscript b/dlls/wscript index cb394c69..c5e5776e 100644 --- a/dlls/wscript +++ b/dlls/wscript @@ -29,6 +29,7 @@ def build(bld): 'agrunt.cpp', 'airtank.cpp', 'aflock.cpp', + 'alias.cpp', 'animating.cpp', 'animation.cpp', 'apache.cpp', @@ -80,11 +81,13 @@ def build(bld): 'items.cpp', 'leech.cpp', 'lights.cpp', + 'locus.cpp', 'maprules.cpp', 'monstermaker.cpp', 'monsters.cpp', 'monsterstate.cpp', 'mortar.cpp', + 'movewith.cpp', 'mp5.cpp', 'multiplay_gamerules.cpp', 'nihilanth.cpp', From d396ccf622a723f5a86b3c3fbadff338dcdf585c Mon Sep 17 00:00:00 2001 From: Alibek Omarov Date: Thu, 8 Sep 2022 04:10:11 +0300 Subject: [PATCH 4/9] server: buttons: env_state: fix debug output --- dlls/buttons.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/dlls/buttons.cpp b/dlls/buttons.cpp index 44f0f230..4f775908 100644 --- a/dlls/buttons.cpp +++ b/dlls/buttons.cpp @@ -310,9 +310,11 @@ void CEnvState::Think( void ) { ALERT(at_console,"DEBUG: env_state \"%s\" turned itself off",STRING(pev->targetname)); if (pev->target) + { ALERT(at_console,": firing %s",STRING(pev->target)); if (pev->noise2) ALERT(at_console," and %s",STRING(pev->noise2)); + } else if (pev->noise2) ALERT(at_console,": firing %s",STRING(pev->noise2)); ALERT(at_console,".\n"); From 1394637ce87755f9d1f2673a806b24dc8624f518 Mon Sep 17 00:00:00 2001 From: Alibek Omarov Date: Sun, 18 Sep 2022 23:49:58 +0300 Subject: [PATCH 5/9] server: func_tank: prevent domain error on barrel adjust (#328) When target is too close to the tank origin, `d2 - r2` expression may become negative causing domain error on square root, and poisoning other fields and even other entities with NaN --- dlls/func_tank.cpp | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/dlls/func_tank.cpp b/dlls/func_tank.cpp index fd6ff1e7..c9945848 100644 --- a/dlls/func_tank.cpp +++ b/dlls/func_tank.cpp @@ -626,12 +626,14 @@ void CFuncTank::AdjustAnglesForBarrel( Vector &angles, float distance ) if( m_barrelPos.y ) { r2 = m_barrelPos.y * m_barrelPos.y; - angles.y += ( 180.0f / M_PI_F ) * atan2( m_barrelPos.y, sqrt( d2 - r2 ) ); + if( d2 > r2 ) + angles.y += ( 180.0f / M_PI_F ) * atan2( m_barrelPos.y, sqrt( d2 - r2 ) ); } if( m_barrelPos.z ) { r2 = m_barrelPos.z * m_barrelPos.z; - angles.x += ( 180.0f / M_PI_F ) * atan2( -m_barrelPos.z, sqrt( d2 - r2 ) ); + if( d2 > r2 ) + angles.x += ( 180.0f / M_PI_F ) * atan2( -m_barrelPos.z, sqrt( d2 - r2 ) ); } } } From 63ce6eda310f9a8b3fb5477a402b3ea3a97c805d Mon Sep 17 00:00:00 2001 From: Alibek Omarov Date: Mon, 19 Sep 2022 21:35:26 +0300 Subject: [PATCH 6/9] client: view: fix reading from uninitialized variable when setting model angles from camera angles (#329) --- cl_dll/view.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cl_dll/view.cpp b/cl_dll/view.cpp index 6c9a1582..4c93fb87 100644 --- a/cl_dll/view.cpp +++ b/cl_dll/view.cpp @@ -735,7 +735,7 @@ void V_CalcNormalRefdef( struct ref_params_s *pparams ) // Apply this at all times { - float pitch = camAngles[0]; + float pitch = pparams->viewangles[0]; // Normalize angles if( pitch > 180.0f ) From 5db68d407624152fa00b4862b01ec4d1a34797bf Mon Sep 17 00:00:00 2001 From: Roman Chistokhodov Date: Mon, 26 Sep 2022 01:40:52 +0300 Subject: [PATCH 7/9] Revert changes to LinearMove (#331) --- dlls/subs.cpp | 7 ------- 1 file changed, 7 deletions(-) diff --git a/dlls/subs.cpp b/dlls/subs.cpp index 400e05c8..118554d4 100644 --- a/dlls/subs.cpp +++ b/dlls/subs.cpp @@ -400,13 +400,6 @@ void CBaseToggle::LinearMove( Vector vecDest, float flSpeed ) // divide vector length by speed to get time to reach dest float flTravelTime = vecDestDelta.Length() / flSpeed; - if( flTravelTime < 0.05f ) - { - UTIL_SetOrigin( pev, m_vecFinalDest ); - LinearMoveDone(); - return; - } - // set nextthink to trigger a call to LinearMoveDone when dest is reached pev->nextthink = pev->ltime + flTravelTime; SetThink( &CBaseToggle::LinearMoveDone ); From 901d1947fba561dba7555b02997c843c59914e2b Mon Sep 17 00:00:00 2001 From: Roman Chistokhodov Date: Mon, 26 Sep 2022 17:55:19 +0300 Subject: [PATCH 8/9] Fix tripmines blowing up after loading save game in c1a3d with TRIPMINE_BEAM_DUPLICATION_FIX enabled (#332) --- dlls/tripmine.cpp | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/dlls/tripmine.cpp b/dlls/tripmine.cpp index 859e3548..90379807 100644 --- a/dlls/tripmine.cpp +++ b/dlls/tripmine.cpp @@ -282,9 +282,23 @@ void CTripmineGrenade::BeamBreakThink( void ) // respawn detect. if( !m_pBeam ) { +#if TRIPMINE_BEAM_DUPLICATION_FIX + // Use the same trace parameters as the original trace above so the right entity is hit. + TraceResult tr2; + UTIL_TraceLine( pev->origin + m_vecDir * 8.0f, pev->origin - m_vecDir * 32.0f, dont_ignore_monsters, ENT( pev ), &tr2 ); +#endif MakeBeam(); +#if TRIPMINE_BEAM_DUPLICATION_FIX + if( tr2.pHit ) + { + // reset owner too + pev->owner = tr2.pHit; + m_hOwner = CBaseEntity::Instance( tr2.pHit ); + } +#else if( tr.pHit ) m_hOwner = CBaseEntity::Instance( tr.pHit ); // reset owner too +#endif } if( fabs( m_flBeamLength - tr.flFraction ) > 0.001f ) From 06521e89500b277a04fe9c101eb97929203c8b1e Mon Sep 17 00:00:00 2001 From: Roman Chistokhodov Date: Sun, 23 Oct 2022 16:38:28 +0300 Subject: [PATCH 9/9] Update github actions (#341) --- .github/workflows/build.yml | 20 ++++++++++---------- .github/workflows/manual.yml | 16 ++++++++-------- 2 files changed, 18 insertions(+), 18 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 29c3bdaa..3b5ae35c 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -22,20 +22,20 @@ jobs: CXX: ${{ matrix.cxx }} steps: - name: Checkout - uses: actions/checkout@v2 + uses: actions/checkout@v3 with: submodules: recursive - name: Checkout steam-runtime if: startsWith(matrix.os, 'ubuntu') - uses: actions/checkout@v2 + uses: actions/checkout@v3 with: repository: ValveSoftware/steam-runtime path: steam-runtime - name: Cache steam-runtime if: startsWith(matrix.os, 'ubuntu') id: cache-steam-runtime - uses: actions/cache@v2 + uses: actions/cache@v3 with: path: com.valvesoftware.SteamRuntime.Sdk-i386-scout-sysroot.tar.gz key: ${{ runner.os }}-steam-runtime @@ -65,7 +65,7 @@ jobs: - name: Add msbuild to PATH if: startsWith(matrix.os, 'windows') - uses: microsoft/setup-msbuild@v1.0.2 + uses: microsoft/setup-msbuild@v1.1 - name: Build on Windows if: startsWith(matrix.os, 'windows') run: | @@ -79,33 +79,33 @@ jobs: - name: Extract branch name shell: bash - run: echo "##[set-output name=branch;]$(echo ${GITHUB_REF#refs/heads/} | tr '/' '_')" + run: echo "branch=$(echo ${GITHUB_REF#refs/heads/} | tr '/' '_')" >> $GITHUB_OUTPUT id: extract_branch - name: Extract gamedir shell: bash - run: echo "##[set-output name=gamedir;]$(grep build/CMakeCache.txt -Ee 'GAMEDIR:STRING=[a-z]+' | cut -d '=' -f 2)" + run: echo "gamedir=$(grep build/CMakeCache.txt -Ee 'GAMEDIR:STRING=[a-z]+' | cut -d '=' -f 2)" >> $GITHUB_OUTPUT id: extract_gamedir - name: Upload linux artifact if: startsWith(matrix.os, 'ubuntu') && matrix.cc == 'gcc' - uses: actions/upload-artifact@v2 + uses: actions/upload-artifact@v3 with: name: hlsdk-${{ steps.extract_branch.outputs.branch }}-linux path: dist/${{ steps.extract_gamedir.outputs.gamedir }} - name: Upload linux artifact with vgui if: startsWith(matrix.os, 'ubuntu') && matrix.cc == 'gcc' - uses: actions/upload-artifact@v2 + uses: actions/upload-artifact@v3 with: name: hlsdk-${{ steps.extract_branch.outputs.branch }}-linux-vgui path: dist-vgui/${{ steps.extract_gamedir.outputs.gamedir }} - name: Upload windows artifact if: startsWith(matrix.os, 'windows') - uses: actions/upload-artifact@v2 + uses: actions/upload-artifact@v3 with: name: hlsdk-${{ steps.extract_branch.outputs.branch }}-windows path: dist/${{ steps.extract_gamedir.outputs.gamedir }} - name: Upload windows artifact with vgui if: startsWith(matrix.os, 'windows') - uses: actions/upload-artifact@v2 + uses: actions/upload-artifact@v3 with: name: hlsdk-${{ steps.extract_branch.outputs.branch }}-windows-vgui path: dist-vgui/${{ steps.extract_gamedir.outputs.gamedir }} diff --git a/.github/workflows/manual.yml b/.github/workflows/manual.yml index 19cf0201..9f03d110 100644 --- a/.github/workflows/manual.yml +++ b/.github/workflows/manual.yml @@ -32,20 +32,20 @@ jobs: CXX: ${{ matrix.cxx }} steps: - name: Checkout - uses: actions/checkout@v2 + uses: actions/checkout@v3 with: submodules: recursive - name: Checkout steam-runtime if: startsWith(matrix.os, 'ubuntu') - uses: actions/checkout@v2 + uses: actions/checkout@v3 with: repository: ValveSoftware/steam-runtime path: steam-runtime - name: Cache steam-runtime if: startsWith(matrix.os, 'ubuntu') id: cache-steam-runtime - uses: actions/cache@v2 + uses: actions/cache@v3 with: path: com.valvesoftware.SteamRuntime.Sdk-i386-scout-sysroot.tar.gz key: ${{ runner.os }}-steam-runtime @@ -73,7 +73,7 @@ jobs: - name: Add msbuild to PATH if: startsWith(matrix.os, 'windows') - uses: microsoft/setup-msbuild@v1.0.2 + uses: microsoft/setup-msbuild@v1.1 - name: Build on Windows if: startsWith(matrix.os, 'windows') run: | @@ -82,11 +82,11 @@ jobs: - name: Extract branch name shell: bash - run: echo "##[set-output name=branch;]$(echo ${GITHUB_REF#refs/heads/} | tr '/' '_')" + run: echo "branch=$(echo ${GITHUB_REF#refs/heads/} | tr '/' '_')" >> $GITHUB_OUTPUT id: extract_branch - name: Extract gamedir shell: bash - run: echo "##[set-output name=gamedir;]$(grep build/CMakeCache.txt -Ee 'GAMEDIR:STRING=[a-z]+' | cut -d '=' -f 2)" + run: echo "gamedir=$(grep build/CMakeCache.txt -Ee 'GAMEDIR:STRING=[a-z]+' | cut -d '=' -f 2)" >> $GITHUB_OUTPUT id: extract_gamedir - name: Copy pdbs to dist dir if: ${{ startsWith(matrix.os, 'windows') && github.event.inputs.buildtype == 'Debug' }} @@ -100,13 +100,13 @@ jobs: Remove-Item -Force -Path dist/${{ steps.extract_gamedir.outputs.gamedir }}/dlls/hl.lib - name: Upload linux artifact if: startsWith(matrix.os, 'ubuntu') - uses: actions/upload-artifact@v2 + uses: actions/upload-artifact@v3 with: name: hlsdk-${{ steps.extract_branch.outputs.branch }}-linux path: dist/${{ steps.extract_gamedir.outputs.gamedir }} - name: Upload windows artifact if: startsWith(matrix.os, 'windows') - uses: actions/upload-artifact@v2 + uses: actions/upload-artifact@v3 with: name: hlsdk-${{ steps.extract_branch.outputs.branch }}-windows path: dist/${{ steps.extract_gamedir.outputs.gamedir }}