Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: update LLHL to 3.0-stable #50

Draft
wants to merge 47 commits into
base: master
Choose a base branch
from
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
47 commits
Select commit Hold shift + click to select a range
d809741
feat: migrate fps limiter from the plugin to server mod dll/so
7mochi Sep 12, 2024
2a7ce46
feat: add advertisement about the new command fpslimitmode
7mochi Sep 12, 2024
034747c
chore: update comments to reflect new changes
7mochi Sep 12, 2024
21212ab
chore: bump version to 3.0-stable
7mochi Sep 12, 2024
6f41e9a
refactor: update the new cvars (fps limit) to match the server's ones
7mochi Sep 12, 2024
a195119
chore: update CI release workflow
7mochi Sep 12, 2024
d7b757b
docs: update cvars in README.md (all languages)
7mochi Sep 12, 2024
58a4f62
Merge pull request #46 from 7mochi/migrate-fps-limit
7mochi Sep 12, 2024
a0afbc2
chore: update CI release workflow (now the serverside .dll/.so is inc…
7mochi Sep 13, 2024
f96afba
chore: add custom hamdata.ini
7mochi Sep 13, 2024
6f1713b
chore: update motd to reflect the new changes
7mochi Sep 13, 2024
b995137
chore: remove agmini references
7mochi Sep 13, 2024
2136fd1
chore: bring back full version releases in the CI
7mochi Sep 13, 2024
8d3816c
Merge pull request #47 from 7mochi/full-release-ci
7mochi Sep 13, 2024
ce4ae8e
feat: migrate fov limiter from the plugin to server mod dll/so
7mochi Sep 14, 2024
74ecab1
chore: fix sv_ag_fov_min_enabled value in comments
7mochi Sep 14, 2024
4505b6d
Merge pull request #48 from 7mochi/migrate-fov-limit
7mochi Sep 14, 2024
cb56701
fix: remove sv_ag_version cvar from llhl.cfg
7mochi Sep 14, 2024
2fac910
docs: update cvars from migration
7mochi Sep 14, 2024
7fef0cc
chore: use a different version of metamod (v1.21p38)
7mochi Sep 14, 2024
a39ac33
docs: update README.md as it contains very old info
7mochi Sep 14, 2024
aa15841
docs: remove stable from subtitle
7mochi Sep 14, 2024
fe91158
refactor: remove the destroyable satchels feature
7mochi Sep 14, 2024
e553b37
Merge pull request #49 from 7mochi/del-destroy-satchel
7mochi Sep 14, 2024
22404e7
chore: update author to 7mochi
7mochi Sep 14, 2024
fcb88e6
refactor: update github api url
7mochi Sep 14, 2024
ace1d2f
chore: use a different version of metamod (metamod-r v1.3.0.149)
7mochi Sep 14, 2024
da0032d
chore: update motd as it contains outdated info
7mochi Sep 14, 2024
ecb3fca
chore: add new cvar sv_ag_fps_limit_check_interval
7mochi Sep 15, 2024
dd7067b
chore: remove sv_ag_fps_limit_warnings_interval cvar to match the .dl…
7mochi Sep 16, 2024
a5b5f17
chore: set sv_ag_fps_limit_check_interval to 5.0 as default
7mochi Sep 16, 2024
9621e96
docs: added new features, corrected grammar and updated old info in r…
7mochi Sep 16, 2024
ecd0730
feat: use custom .dll/.so hooks for player kicking and logging (fps/f…
7mochi Sep 16, 2024
72380ed
chore: bring back multilang messages from fps/fov limiter
7mochi Sep 16, 2024
8ec9abd
chore: add block spectators from voting feature to documentation
7mochi Sep 16, 2024
690f7c8
fix: fix llhl_match_manager not working properly
7mochi Sep 17, 2024
3545907
feat: add abort match to menu (LLHL Match Manager)
7mochi Sep 17, 2024
134572d
chore: remove unused messages and add new ones
7mochi Sep 17, 2024
4ba48d2
fix: show always the main menu on successful abort
7mochi Sep 17, 2024
7484f21
chore: remove more unused messages from multilang file
7mochi Sep 17, 2024
91c36d7
feat: remove ghostmineblocker plugin
7mochi Sep 18, 2024
099378c
Merge pull request #51 from 7mochi/remove-ghostmine
7mochi Sep 19, 2024
aed0d27
fix: remove the player from spectator if it has to play the match
7mochi Sep 19, 2024
c9444f2
feat: make Simple OpenGF32 and AGFix detection optional (Enabled by d…
7mochi Sep 19, 2024
75db099
refactor: remove the ReHLDS bug check
7mochi Sep 19, 2024
26f24bc
feat: check that the server is using the .dll/.so provided with LLHL
7mochi Sep 19, 2024
70bbbb0
feat: show cheat cmd check status in HUD intermission
7mochi Sep 19, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
233 changes: 165 additions & 68 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -6,101 +6,198 @@ on:
- '*'

jobs:
build:
build-linux:
runs-on: ubuntu-latest
container: centos:centos7
env:
ACTIONS_ALLOW_USE_UNSECURE_NODE_VERSION: true

steps:
- name: Checkout repository
uses: actions/checkout@v3

- name: Setting up CentOS 7 mirrorlist
run: |
sed -i 's/mirrorlist/#mirrorlist/g' /etc/yum.repos.d/CentOS-*
sed -i 's|#baseurl=http://mirror.centos.org|baseurl=http://vault.centos.org|g' /etc/yum.repos.d/CentOS-*

- name: Installing required packages
run: |
yum install -y git make wget tar zip gcc gcc-c++ glibc-devel.i686 libstdc++-devel.i686

- name: Install NodeJS
uses: actions/setup-node@v3
with:
node-version: 18
- name: Install dependencies for Linux
node-version: 12

- name: Clone LLHL AGMOD repository
run: |
make init-linux
git clone https://github.com/7mochi/llhl-agmod

- name: Clone LLHL repository
run: |
git clone https://github.com/7mochi/llhl

- name: Clone LLHL Resources repository
run: |
git clone https://github.com/7mochi/llhl-resources

- name: Build LLHL AGMOD serverfile .so
run: |
cd llhl-agmod

CPATH=$CPATH:/usr/include/c++/4.8.5/i686-redhat-linux CFG=$CONFIGURATION make -C dlls

- name: Build LLHL proyect (Linux) with node-amxxpack
run: |
make build-linux
- name: Rename dist folder
cd llhl && make init-linux && make build-linux

- name: Download latest AMX Mod X 1.9
run: |
mv dist dist-linux

- name: Install dependencies for Windows
wget "https://www.amxmodx.org/latest.php?version=1.9&os=linux&package=base" -O amxx.tar.gz
tar -xzf amxx.tar.gz -C llhl/dist/ag

- name: Replace hamdata.ini with our custom one
run: |
make init-windows
cp -f llhl/assets/addons/amxmodx/configs/hamdata.ini llhl/dist/ag/addons/amxmodx/configs/hamdata.ini

- name: Create folder and copy LLHL AGMOD .so
run: |
mkdir -p llhl/dist/ag/dlls
cp llhl-agmod/dlls/ag_i386.so llhl/dist/ag/dlls/ag.so
cp llhl-agmod/network/delta.lst llhl/dist/ag/delta.lst

- name: Build LLHL proyect (Windows) with node-amxxpack
- name: Create folder for full release
run: |
make build-windows
mkdir -p llhl/dist-full
cp -r llhl/dist/* llhl/dist-full

- name: Generate hashfile.sha1
- name: Copy LLHL resources to LLHL folder
run: |
cp -r llhl-resources/maps-ag-official/* llhl/dist-full/ag
cp -r llhl-resources/maps-ehll-unofficial/* llhl/dist-full/ag
cp -r llhl-resources/maps-valve-official/* llhl/dist-full/ag

- name: Prepare releases in zip
run: |
# First linux
cd dist-linux
cd llhl/dist && zip -r ../llhl-${{github.ref_name}}-linux.zip *

- name: Upload artifact (Lite version)
uses: actions/upload-artifact@v3
with:
name: llhl-${{github.ref_name}}-linux-lite
path: llhl/dist

# Find all files in the dist folder except for a few
find "$PWD" -type f -not -name "llhl.cfg" \
-and -not -name "plugins.ini" \
-and -not -name "*.inc" \
-and -not -name "*.sma" \
-and -not -name "*.gam" \
-and -not -name "motd_llhl*" \
-and -not -name "startup_server.cfg" \
-and -not -name "*.sha1" \
-exec sha1sum {} \; > hashfile.sha1
- name: Upload artifact (Full version)
uses: actions/upload-artifact@v3
with:
name: llhl-${{github.ref_name}}-linux-full
path: llhl/dist-full

# Go back to root folder
cd $GITHUB_WORKSPACE

# Move hashfile out of dist folder
mv dist-linux/hashfile.sha1 hashfile.sha1
build-windows:
runs-on: windows-2019

# Now windows
cd dist
steps:
- name: Install NodeJS
uses: actions/setup-node@v4
with:
node-version: 20

# Find remaining files
find "$PWD" -type f -name "*.dll" -exec sha1sum {} \; > hashfile_2.sha1
- name: Clone LLHL AGMOD repository
run: |
git clone https://github.com/7mochi/llhl-agmod

# Go back again
cd $GITHUB_WORKSPACE
- name: Clone LLHL repository
run: |
git clone https://github.com/7mochi/llhl

- name: Clone LLHL Resources repository
run: |
git clone https://github.com/7mochi/llhl-resources

# Move hashfile 2 out of dist folder
mv dist/hashfile_2.sha1 hashfile_2.sha1
- name: Setup MSBuild.exe
uses: microsoft/setup-msbuild@v1.1

# Merge the contents of both files
cat hashfile_2.sha1 >> hashfile.sha1 && rm hashfile_2.sha1
- name: Build LLHL AGMOD serverfile .dll
run: |
cd llhl-agmod

# Remove useless path from the hashfile
sed -e "s,${PWD}/dist-linux/ag/,,g; s,${PWD}/dist/ag/,,g; s,addons/amxmodx/plugins/,,g" -i hashfile.sha1
msbuild multiplayer.sln -target:ag /p:Configuration=Release

- name: Replace llhl.amxx on windows with the one from linux
run: |
yes | cp -rf dist-linux/ag/addons/amxmodx/plugins/llhl.amxx dist/ag/addons/amxmodx/plugins/llhl.amxx
- name: Build LLHL proyect (Windows) with node-amxxpack
run: |
cd llhl && make init-windows && make build-windows

- name: Download latest AMX Mod X 1.9
run: |
wget "https://www.amxmodx.org/latest.php?version=1.9&os=linux&package=base" -O amxx-linux.tar.gz
wget "https://www.amxmodx.org/latest.php?version=1.9&os=windows&package=base" -O amxx-windows.zip
tar -xzf amxx-linux.tar.gz -C dist-linux/ag
unzip amxx-windows.zip -d dist/ag

- name: Prepare releases in zip
run: |
cd dist-linux && zip -r ../llhl-${{github.ref_name}}-linux.zip * && cd $GITHUB_WORKSPACE
cd dist && zip -r ../llhl-${{github.ref_name}}-windows.zip * && cd $GITHUB_WORKSPACE

- name: Upload all assets (Release)
- name: Download latest AMX Mod X 1.9
run: |
Invoke-WebRequest -Uri "https://www.amxmodx.org/latest.php?version=1.9&os=windows&package=base" -OutFile amxx.zip
Expand-Archive -Force -Path amxx.zip -DestinationPath llhl/dist/ag

- name: Replace hamdata.ini with our custom one
run: |
Copy-Item llhl/assets/addons/amxmodx/configs/hamdata.ini llhl/dist/ag/addons/amxmodx/configs/hamdata.ini -Force

- name: Create folder and copy LLHL AGMOD .dll
run: |
mkdir -p llhl/dist/ag/dlls
Copy-Item llhl-agmod/dlls/msvc/Release/ag.dll llhl/dist/ag/dlls/ag.dll
Copy-Item llhl-agmod/network/delta.lst llhl/dist/ag/delta.lst

- name: Create folder for full release
run: |
mkdir -p llhl/dist-full
Copy-Item -Path llhl/dist/* -Destination llhl/dist-full -Recurse

- name: Copy LLHL resources to LLHL folder
run: |
xcopy llhl-resources\maps-ag-official\* llhl\dist-full\ag /E /Y /I
xcopy llhl-resources\maps-ehll-unofficial\* llhl\dist-full\ag /E /Y /I
xcopy llhl-resources\maps-valve-official\* llhl\dist-full\ag /E /Y /I

- name: Prepare releases in zip
run: |
cd llhl/dist && Compress-Archive -Path * -DestinationPath ../llhl-${{github.ref_name}}-windows.zip

- name: Upload artifact (Lite version)
uses: actions/upload-artifact@v3
with:
name: llhl-${{github.ref_name}}-windows-lite
path: llhl/dist

- name: Upload artifact (Full version)
uses: actions/upload-artifact@v3
with:
name: llhl-${{github.ref_name}}-windows-full
path: llhl/dist-full

release:
runs-on: ubuntu-latest
needs: [build-linux, build-windows]
steps:
- name: Download Linux artifact (Lite version)
uses: actions/download-artifact@v3
with:
name: llhl-${{github.ref_name}}-linux-lite

- name: Download Linux artifact (Full version)
uses: actions/download-artifact@v3
with:
name: llhl-${{github.ref_name}}-linux-full

- name: Download Windows artifact (Lite version)
uses: actions/download-artifact@v3
with:
name: llhl-${{github.ref_name}}-windows-lite

- name: Download Windows artifact (Full version)
uses: actions/download-artifact@v3
with:
name: llhl-${{github.ref_name}}-windows-full

- name: Create GitHub Release
uses: softprops/action-gh-release@v1
with:
files: |
./llhl-${{github.ref_name}}-linux.zip
./llhl-${{github.ref_name}}-windows.zip
./dist-linux/ag/addons/amxmodx/plugins/llhl.amxx
./hashfile.sha1
llhl-${{github.ref_name}}-linux-lite.zip
llhl-${{github.ref_name}}-linux-full.zip
llhl-${{github.ref_name}}-windows-lite.zip
llhl-${{github.ref_name}}-windows-full.zip
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
64 changes: 36 additions & 28 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,54 +1,64 @@
# ![LLHL Banner](https://raw.githubusercontent.com/FlyingCat-X/llhl/master/LLHL_logo.png)
### [English Version](https://github.com/FlyingCat-X/llhl/blob/master/README.md) | [Spanish Version](https://github.com/FlyingCat-X/llhl/blob/master/README_ES.md) | [Portuguese Version](https://github.com/FlyingCat-X/llhl/blob/master/README_PT.md) | Chinese Version (Pending)
This plugin is a port for Adrenaline Gamer 6.6 (And AGMini) from my [LLHL gamemode](https://github.com/rtxa/agmodx/blob/master/valve/addons/amxmodx/scripting/agmodx_llhl.sma) that was developed for rtxa's agmodx.
This plugin is a port for Adrenaline Gamer 6.6 from my [LLHL gamemode](https://github.com/rtxa/agmodx/blob/master/valve/addons/amxmodx/scripting/agmodx_llhl.sma) that was developed for rtxa's agmodx.
Unlike my gamemode for agmodx, this one only supports Protocol 48.

# Important notes
If you have any problem in your server, before opening an issue or contacting me by any means (Facebook, Whatsapp, Discord, etc.) make sure that the error is related to the LLHL plugin. If you have any problem associated to the plugin try to be as detailed as possible and provide me with logs and ways to get to the error. I won’t give you support if the problem is related to other plugins e.g. dproto or reunion.

## Features
- FPS Limiter (Default value is 144).
- FOV Limiter (Minimum value is 85, disabled by default).
- FPS Limiter (Default value is 144, switchable from 144 to 240 and vice versa, you can toggle between them with the fpslimitmode vote)
- FOV Limiter (Default value is 85, enabled by default).
- Records a demo automatically when a match is started (With agstart).
- /unstuck command (10 seconds cooldown).
- Check certain sound files, they're the same sounds that are verified in the EHLL gamemode - AG6.6.
- Be able to destroy other players satchels (Optional, disabled by default).
- Block nickname and model changes when a game is in progress (Optional, both enabled by default).
- New intermission mode.
- More than 1 HLTV allowed.
- Force connected HLTV to have a certain delay value as a minimum (Minimum value is 30).
- Ghostmine Blocker.
- Simple OpenGF32 and AGFix detection (Through cheat commands).
- Nuke blocking capabilities (Lampgauss, ghostmine, rocket, etc)
- Simple OpenGF32 and AGFix detection (Through cheat commands. Optional, enabled by default).
- Take screenshots at map end and occasionally when a player dies.
- Avoid abusing a ReHLDS bug (Server disappears from the masterlist when it's' paused) only when there's no game in progress.
- Changing model during a match subtract 1 from the score. (Optional, enabled by default).
- Block access to players who have the game via Family Sharing. (Optional, disabled by default).
- Random spawns (Optional, disabled by default)
- Blocks location/HP/Weapon/etc messages for spectators
- Check for new updates and it will download them automatically.
- llhl_match_manager command (For administrators only)
- Random spawns (Optional, disabled by default).
- Blocks location/HP/Weapon/etc messages for spectators.
- Block spectators from voting (Optional, enabled by default).
- Respawn time are now FPS-independent.
- Fixes bodies frozen in the air when using high fps.
- Check for new updates and it will notify you in the server console.
- llhl_match_manager command (For administrators only).

## New cvars
- sv_ag_fpslimit_max_fps "144"
- sv_ag_fpslimit_max_detections "2"
- sv_ag_min_default_fov_enabled "0"
- sv_ag_min_default_fov "85"
- sv_ag_cvar_check_interval "1.5"
- sv_ag_fps_limit_warnings "2"
- sv_ag_fps_limit_check_interval "5.0"
- sv_ag_fov_min_enabled "1"
- sv_ag_fov_min_check_interval "1.5"
- sv_ag_fov_min "85"
- sv_ag_respawn_delay "0.75"
- sv_ag_unstuck_cooldown "10.0"
- sv_ag_unstuck_start_distance "32"
- sv_ag_unstuck_max_attempts "64"
- sv_ag_destroyable_satchel "0"
- sv_ag_destroyable_satchel_hp "1"
- sv_ag_block_namechange_inmatch "1"
- sv_ag_block_modelchange_inmatch "1"
- sv_ag_min_hltv_delay "30.0"
- sv_ag_block_ghostmine "1"
- sv_ag_nuke_grenade "0"
- sv_ag_nuke_crossbow "0"
- sv_ag_nuke_rpg "0"
- sv_ag_nuke_gauss "1"
- sv_ag_nuke_egon "0"
- sv_ag_nuke_tripmine "0"
- sv_ag_nuke_satchel "0"
- sv_ag_nuke_snark "0"
- sv_ag_explosion_fix "0"
- sv_ag_cheat_cmd_check "1"
- sv_ag_cheat_cmd_check_interval "5.0"
- sv_ag_cheat_cmd_max_detections "5"
- sv_ag_change_model_penalization "1"
- sv_ag_block_family_sharing "0"
- sv_ag_random_spawns "0"
- sv_ag_block_cmd_enhancements "1"
- sv_ag_block_vote_spectators "1"
- sv_ag_steam_api_key ""
- sv_ag_check_updates "1"
- sv_ag_check_updates_retrys "3"
Expand All @@ -58,20 +68,18 @@ If you have any problem in your server, before opening an issue or contacting me
- sv_ag_autoupdate_dl_retry_delay "3"

## Requirements
- Last version of HLDS (build 8308) or ReHLDS 3.6 or newer (Warning: Last version of ReHLDS for Linux has an auto-aim bug, download version 3.7.0.693 instead).
- Metamod 1.21.37p or newer, I recommend using [this version of metamod](https://github.com/Solokiller/Metamod-P-CMake/releases/tag/v1.21p39) (included and ready to use in development builds).
- Have [AMXX 1.9](https://www.amxmodx.org/downloads-new.php) installed or newer (included and ready to use in development builds).
- AMXX Module: [GoldSrc REST In Pawn (gRIP)](https://forums.alliedmods.net/showthread.php?t=315567)
- Pre-anniversary edition of HLDS (Build 8684) or latest [ReHLDS](https://github.com/dreamstalker/rehlds/releases) installed. 25th Anniversary compatibility hasn't been tested.
- A base installation of [AGMOD](https://openag.pro/latest/ag.7z).
- Metamod 1.21.37p or newer, I recommend using [this version of metamod](https://github.com/theAsmodai/metamod-r/releases/tag/1.3.0.149)
- Have [AMXX 1.9](https://www.amxmodx.org/downloads-new.php) installed or newer.
- AMXX Module: [Curl](https://forums.alliedmods.net/showthread.php?t=285656).

## Download (Stable)
## Download
- Full releases: Besides containing everything necessary for the proper functioning of the LLHL gamemode, it has new maps with their respective dependencies (Locs, wads, sprites, sounds, etc).
- Lite releases: Only contain what is necessary for the correct functioning of the LLHL gamemode. (Metamod and AMXX)
- Lite releases: Only contain what is necessary for the correct functioning of the LLHL gamemode. (Metamod, AMXX and the custom AGMOD for LLHL)

Download the [Latest Release](https://github.com/FlyingCat-X/llhl/releases/).

## Download (Dev builds)
- You can download them from [Github Actions](https://github.com/FlyingCat-X/llhl/actions). Click on any of the commits you want to try and download the corresponding artifact. (Windows or linux). The artifacts come with everything you need to run LLHL (Plugin, Gamemode .cfg file, Sounds to verify, amxmodx, metamod, etc).

## Installation (The easy way)
- Have a clean installation of Half Life with Adrenaline Gamer ready.
- Download any of the latest releases (Full or lite).
Expand Down
Loading
Loading