[GH-ISSUE #631] Integration with mods for applicable games #507

Closed
opened 2026-02-27 02:01:57 +03:00 by kerem · 24 comments
Owner

Originally created by @KroniK907 on GitHub (Jan 16, 2016).
Original GitHub issue: https://github.com/GameServerManagers/LinuxGSM/issues/631

Originally assigned to: @UltimateByte on GitHub.

Many server admins want to have an easy way to add/remove SourceMod plugins. Would it be possible to add support for managing SourceMod plugins through LGSM? Or at least having the ability to install SourceMod and MetaMod by default for any games that support it?

It would be cool to be able to have a package manager for SourceMod plugins that was a part of LGSM that would not only install the plugins but also create the default CVARs etc in the config file.

Originally created by @KroniK907 on GitHub (Jan 16, 2016). Original GitHub issue: https://github.com/GameServerManagers/LinuxGSM/issues/631 Originally assigned to: @UltimateByte on GitHub. Many server admins want to have an easy way to add/remove SourceMod plugins. Would it be possible to add support for managing SourceMod plugins through LGSM? Or at least having the ability to install SourceMod and MetaMod by default for any games that support it? It would be cool to be able to have a package manager for SourceMod plugins that was a part of LGSM that would not only install the plugins but also create the default CVARs etc in the config file.
kerem closed this issue 2026-02-27 02:01:57 +03:00
Author
Owner

@UltimateByte commented on GitHub (Jan 16, 2016):

I've had that idea for a while, it could definitely happen, yes.
It could also propose, ULX for gmod.
2 things to face btw :

  • Find a reliable lastest version link for them
  • Update them without losing settings, even if the settings file changes. (i think about sourcemod and the way it manages admins...)
<!-- gh-comment-id:172218469 --> @UltimateByte commented on GitHub (Jan 16, 2016): I've had that idea for a while, it could definitely happen, yes. It could also propose, ULX for gmod. 2 things to face btw : - Find a reliable lastest version link for them - Update them without losing settings, even if the settings file changes. (i think about sourcemod and the way it manages admins...)
Author
Owner

@jaredballou commented on GitHub (Jan 19, 2016):

There really isn't even a "SourceMod official" installer, so this would be waaaaaay more work than we can reasonably take on. I built something much simpler just for my own plugins - https://github.com/jaredballou/insurgency-sourcemod/blob/master/tools/download-plugin.sh - it finds the list of plugins I created, then downloads the updater files and sees what is needed to install, and pulls from Git. I just threw it together in an hour or two, so it's pretty raw, but if you had a list of known good plugins we might be able to leverage it that way. My guess is that you're going ti have to just download them on your own, however, unless there is an API to the AlliedModders forums that we could use to do this.

<!-- gh-comment-id:172964464 --> @jaredballou commented on GitHub (Jan 19, 2016): There really isn't even a "SourceMod official" installer, so this would be waaaaaay more work than we can reasonably take on. I built something much simpler just for my own plugins - https://github.com/jaredballou/insurgency-sourcemod/blob/master/tools/download-plugin.sh - it finds the list of plugins I created, then downloads the updater files and sees what is needed to install, and pulls from Git. I just threw it together in an hour or two, so it's pretty raw, but if you had a list of known good plugins we might be able to leverage it that way. My guess is that you're going ti have to just download them on your own, however, unless there is an API to the AlliedModders forums that we could use to do this.
Author
Owner

@KroniK907 commented on GitHub (Jan 20, 2016):

Even without the the package manager, installing the current version of SourceMod and MetaMod by default when installing a compatible game would be a nice step up. The plugins are fairly easy to manage but getting SourceMod installed for the first time can be a bit confusing.

<!-- gh-comment-id:173119006 --> @KroniK907 commented on GitHub (Jan 20, 2016): Even without the the package manager, installing the current version of SourceMod and MetaMod by default when installing a compatible game would be a nice step up. The plugins are fairly easy to manage but getting SourceMod installed for the first time can be a bit confusing.
Author
Owner

@UltimateByte commented on GitHub (Jan 20, 2016):

We still have to figure out a reliable way to get the latest version at any given time. It's true that sourcemod don't seem to provide an "always up to date link".

<!-- gh-comment-id:173122647 --> @UltimateByte commented on GitHub (Jan 20, 2016): We still have to figure out a reliable way to get the latest version at any given time. It's true that sourcemod don't seem to provide an "always up to date link".
Author
Owner

@jaredballou commented on GitHub (Jan 21, 2016):

So, Christmas comes early for you guys. I created a new function, install_sourcemod.sh, that does the following:

  1. Checks ${systemdir}/addons/metamod and confirms install if existing
  2. Downloads MetaMod download page, finds mirror list
  3. Tries each mirror until file is downloaded
  4. Unzips MetaMod to systemdir
  5. Checks if SM is installed same way, same confirmation
  6. Finds latest SM version from pointer file, downloads it
  7. Unzips SourceMod to systemdir

It "works for me", as I just installed it into an Insurgency server. I added a "sourcemod" parameter to core_getopt and install_sourcemod.sh to core_functions.sh. If you want it "out of the box" you'll need my super modified https://github.com/jaredballou/linuxgsm/blob/master/_MasterScript/lgsm-core script to start with. The files are all in my repo if ytou want to try to merge them into the master without all the other things I have done.

Give it a shot, let me know what you guys get.

<!-- gh-comment-id:173450928 --> @jaredballou commented on GitHub (Jan 21, 2016): So, Christmas comes early for you guys. I created a new function, install_sourcemod.sh, that does the following: 1. Checks ${systemdir}/addons/metamod and confirms install if existing 2. Downloads MetaMod download page, finds mirror list 3. Tries each mirror until file is downloaded 4. Unzips MetaMod to systemdir 5. Checks if SM is installed same way, same confirmation 6. Finds latest SM version from pointer file, downloads it 7. Unzips SourceMod to systemdir It "works for me", as I just installed it into an Insurgency server. I added a "sourcemod" parameter to core_getopt and install_sourcemod.sh to core_functions.sh. If you want it "out of the box" you'll need my super modified https://github.com/jaredballou/linuxgsm/blob/master/_MasterScript/lgsm-core script to start with. The files are all in my repo if ytou want to try to merge them into the master without all the other things I have done. Give it a shot, let me know what you guys get.
Author
Owner

@UltimateByte commented on GitHub (Jan 21, 2016):

Me like ! :drool:
We need this !
@dgibbs64 You're OK for me to start a branch and pull request it ?

<!-- gh-comment-id:173545203 --> @UltimateByte commented on GitHub (Jan 21, 2016): Me like ! :drool: We need this ! @dgibbs64 You're OK for me to start a branch and pull request it ?
Author
Owner

@dgibbs64 commented on GitHub (Jan 21, 2016):

Go for it :-)

<!-- gh-comment-id:173573113 --> @dgibbs64 commented on GitHub (Jan 21, 2016): Go for it :-)
Author
Owner

@KroniK907 commented on GitHub (Jan 21, 2016):

You guys are awesome! @jaredballou, you are a code writing machine in your free time! 😄

<!-- gh-comment-id:173737747 --> @KroniK907 commented on GitHub (Jan 21, 2016): You guys are awesome! @jaredballou, you are a code writing machine in your free time! :smile:
Author
Owner

@UltimateByte commented on GitHub (Jan 22, 2016):

Note to myself : start a new branch asap.

New note to myself : We want to call functions module_sourcemod_install.sh and module_sourcemod_update.sh and so on for good alphabetical sorting.
This will be a base for future modules/addons of that kind.

<!-- gh-comment-id:174042149 --> @UltimateByte commented on GitHub (Jan 22, 2016): Note to myself : start a new branch asap. New note to myself : We want to call functions module_sourcemod_install.sh and module_sourcemod_update.sh and so on for good alphabetical sorting. This will be a base for future modules/addons of that kind.
Author
Owner

@jaredballou commented on GitHub (Jan 28, 2016):

The code train is moving on without you. Ping me when you get a minute, I'll help tidy up my code and get a PR together.

<!-- gh-comment-id:176015309 --> @jaredballou commented on GitHub (Jan 28, 2016): The code train is moving on without you. Ping me when you get a minute, I'll help tidy up my code and get a PR together.
Author
Owner

@UltimateByte commented on GitHub (Jan 28, 2016):

Sorry about that, i started a new job 7 days ago, and had many urgent personal stuff to do, i end up my days too tired to work on that, but the rythm will slow down soon. I accepted your request (i suppose it's you) so we can talk more easily.

<!-- gh-comment-id:176089032 --> @UltimateByte commented on GitHub (Jan 28, 2016): Sorry about that, i started a new job 7 days ago, and had many urgent personal stuff to do, i end up my days too tired to work on that, but the rythm will slow down soon. I accepted your request (i suppose it's you) so we can talk more easily.
Author
Owner

@jaredballou commented on GitHub (Feb 1, 2016):

Yep, my schedule will be filling up shortly and my blitzkreig code war will be wound down for a while. Still got some neat stuff done, if only to show a different way to structure things.

<!-- gh-comment-id:177692038 --> @jaredballou commented on GitHub (Feb 1, 2016): Yep, my schedule will be filling up shortly and my blitzkreig code war will be wound down for a while. Still got some neat stuff done, if only to show a different way to structure things.
Author
Owner

@dgibbs64 commented on GitHub (Feb 4, 2016):

Currently working on this by converting @jaredballou version to work with master repo only a few changes are required.

<!-- gh-comment-id:179677115 --> @dgibbs64 commented on GitHub (Feb 4, 2016): Currently working on this by converting @jaredballou version to work with master repo only a few changes are required.
Author
Owner

@UltimateByte commented on GitHub (Aug 14, 2016):

@dgibbs64 Update on this ?
Now we've got your download feature, the only thing that would take a bit of time would be finding an updated link. I can go from scratch btw, now i'm comfy with this kind of stuff.

<!-- gh-comment-id:239674437 --> @UltimateByte commented on GitHub (Aug 14, 2016): @dgibbs64 Update on this ? Now we've got your download feature, the only thing that would take a bit of time would be finding an updated link. I can go from scratch btw, now i'm comfy with this kind of stuff.
Author
Owner

@UltimateByte commented on GitHub (Aug 27, 2016):

Discussions for SourceMod
https://forums.alliedmods.net/showthread.php?p=2448658
https://forums.alliedmods.net/showthread.php?p=2448693

<!-- gh-comment-id:242914073 --> @UltimateByte commented on GitHub (Aug 27, 2016): Discussions for SourceMod https://forums.alliedmods.net/showthread.php?p=2448658 https://forums.alliedmods.net/showthread.php?p=2448693
Author
Owner

@UltimateByte commented on GitHub (Aug 27, 2016):

Some ideas of how i see the implementation

./gameserver install-mods | im - Select a mod or plugin to auto install

For supported Source games

Command   |  Mod to install
SM | SourceMod
MM | MetaMod
q | to exit the installer, or press ctrl + c

For Garry's Mod

Command   |  Mod to install
ULB | Ulib (required for ULX)
ULX | ULX
q | to exit the installer, or press ctrl + c

For Rust / Hurtworld

Command   |  Mod to install
OX | Oxide
q | to exit the installer, or press ctrl + c

Then in main game script, next to updateonstart :

updateamodsonstart="no/yes"
<!-- gh-comment-id:242916781 --> @UltimateByte commented on GitHub (Aug 27, 2016): Some ideas of how i see the implementation `./gameserver install-mods | im - Select a mod or plugin to auto install` For supported Source games ``` Command | Mod to install SM | SourceMod MM | MetaMod q | to exit the installer, or press ctrl + c ``` For Garry's Mod ``` Command | Mod to install ULB | Ulib (required for ULX) ULX | ULX q | to exit the installer, or press ctrl + c ``` For Rust / Hurtworld ``` Command | Mod to install OX | Oxide q | to exit the installer, or press ctrl + c ``` Then in main game script, next to updateonstart : ``` updateamodsonstart="no/yes" ```
Author
Owner

@KroniK907 commented on GitHub (Aug 30, 2016):

Looks like you may or may not be able to get a nice permanent link to the latest sourcemod builds.

While doing the download from the downloads.php page might not work, the latest build is in fact listed in plain text on that page and could then be used for choosing what build to download from the /smdrop/ page.

For the stable build see: http://www.sourcemod.net/downloads.php?branch=stable
For the dev build see: http://www.sourcemod.net/downloads.php?branch=dev

IDK if you can reliably scrape those pages for the bold text that lists the latest version and build number, but that might be a temporary way to do it until they can be convinced to create a permanent link to the stable/dev download.

<!-- gh-comment-id:243615468 --> @KroniK907 commented on GitHub (Aug 30, 2016): Looks like you may or may not be able to get a nice permanent link to the latest sourcemod builds. While doing the download from the downloads.php page might not work, the latest build is in fact listed in plain text on that page and could then be used for choosing what build to download from the /smdrop/ page. For the stable build see: http://www.sourcemod.net/downloads.php?branch=stable For the dev build see: http://www.sourcemod.net/downloads.php?branch=dev IDK if you can reliably scrape those pages for the bold text that lists the latest version and build number, but that might be a temporary way to do it until they can be convinced to create a permanent link to the stable/dev download.
Author
Owner

@UltimateByte commented on GitHub (Aug 31, 2016):

@KroniK907 Thx for the info.
I've seen an SM staff member advise against scraping the download page, so this is probably not the best idea. Hopefully a staff members will actually read and reply my topic. If they don't, we're gonna have to chose between scraping the download page or use the incomplete latest.php link.
I need to start looking for MetaMod. I'm pretty sure it'll be kind of the same issue.

Didn't mention, but for Gmod, ULX and Ulib are are on GitHub, it'll be quite easy to add. :)

<!-- gh-comment-id:243633669 --> @UltimateByte commented on GitHub (Aug 31, 2016): @KroniK907 Thx for the info. I've seen an SM staff member advise against scraping the download page, so this is probably not the best idea. Hopefully a staff members will actually read and reply my topic. If they don't, we're gonna have to chose between scraping the download page or use the incomplete latest.php link. I need to start looking for MetaMod. I'm pretty sure it'll be kind of the same issue. Didn't mention, but for Gmod, ULX and Ulib are are on GitHub, it'll be quite easy to add. :)
Author
Owner

@UltimateByte commented on GitHub (Nov 1, 2016):

I'm on it, will try to figure out how to do this. Starting with sourcemod/metamod for source games, then ulx/ulib for gmod.

<!-- gh-comment-id:257644572 --> @UltimateByte commented on GitHub (Nov 1, 2016): I'm on it, will try to figure out how to do this. Starting with sourcemod/metamod for source games, then ulx/ulib for gmod.
Author
Owner

@UltimateByte commented on GitHub (Nov 2, 2016):

Well, i see some progress !

ultimatebyte@game:~$ ./csgoserver mi
=================================
Counter-Strike: Global Offensive mods & addons installation

Available mods:
sm | sourcemod | http://www.sourcemod.net/
mm | metamod | https://www.sourcemm.net/
(input exit to abort)


Enter the mod you wish to install:
mm
[ .... ] Mod Installation csgo-server: Installing MetaMod

Downloading mods to /home/ultimatebyte/lgsm/tmp/mods
    fetching mmsource-1.10.6-linux.tar.gz...OK
extracting mmsource-1.10.6-linux.tar.gz...OK
[  OK  ] Mod Installation csgo-server: MetaMod installed.

Anyone wanting to see the current progress:
https://github.com/GameServerManagers/LinuxGSM/blob/ultimatebyte-sourcemod/lgsm/functions/command_mods_install.sh
https://github.com/GameServerManagers/LinuxGSM/blob/ultimatebyte-sourcemod/lgsm/functions/mods_list.sh

Now for gmod:

ultimatebyte@game:~$ ./gmodserver mi
=================================
Garry's Mod mods & addons installation

Available mods:
ulib | ub | http://ulyssesmod.net/
ulx | ux | http://ulyssesmod.net/
(input exit to abort)

Enter the mod you wish to install:
ulib
[ .... ] Mod Installation gmod-server: Installing ULib    fetching ulib-master.zip...OK
extracting ulib-master.zip...OK
[  OK  ] Mod Installation gmod-server: ULib installed.
<!-- gh-comment-id:257744603 --> @UltimateByte commented on GitHub (Nov 2, 2016): Well, i see some progress ! ``` ultimatebyte@game:~$ ./csgoserver mi ================================= Counter-Strike: Global Offensive mods & addons installation Available mods: sm | sourcemod | http://www.sourcemod.net/ mm | metamod | https://www.sourcemm.net/ (input exit to abort) Enter the mod you wish to install: mm [ .... ] Mod Installation csgo-server: Installing MetaMod Downloading mods to /home/ultimatebyte/lgsm/tmp/mods fetching mmsource-1.10.6-linux.tar.gz...OK extracting mmsource-1.10.6-linux.tar.gz...OK [ OK ] Mod Installation csgo-server: MetaMod installed. ``` Anyone wanting to see the current progress: https://github.com/GameServerManagers/LinuxGSM/blob/ultimatebyte-sourcemod/lgsm/functions/command_mods_install.sh https://github.com/GameServerManagers/LinuxGSM/blob/ultimatebyte-sourcemod/lgsm/functions/mods_list.sh Now for gmod: ``` ultimatebyte@game:~$ ./gmodserver mi ================================= Garry's Mod mods & addons installation Available mods: ulib | ub | http://ulyssesmod.net/ ulx | ux | http://ulyssesmod.net/ (input exit to abort) Enter the mod you wish to install: ulib [ .... ] Mod Installation gmod-server: Installing ULib fetching ulib-master.zip...OK extracting ulib-master.zip...OK [ OK ] Mod Installation gmod-server: ULib installed. ```
Author
Owner

@UltimateByte commented on GitHub (Nov 5, 2016):

Current output style:
curr output

I'm looking to get it into a nice table, but it's kinda tricky.
Next will be mods updates, then mods remove.

<!-- gh-comment-id:258606620 --> @UltimateByte commented on GitHub (Nov 5, 2016): Current output style: ![curr output](http://image.noelshack.com/fichiers/2016/44/1478346225-mods-install-new-new.png) I'm looking to get it into a nice table, but it's kinda tricky. Next will be mods updates, then mods remove.
Author
Owner

@UltimateByte commented on GitHub (Jan 16, 2017):

Well, guyz, 95% of the job is done. Now it's all reviewing, testing, maybe polishing a bit, but it's ready. See #1255

<!-- gh-comment-id:272981334 --> @UltimateByte commented on GitHub (Jan 16, 2017): Well, guyz, 95% of the job is done. Now it's all reviewing, testing, maybe polishing a bit, but it's ready. See #1255
Author
Owner

@UltimateByte commented on GitHub (Jan 19, 2017):

Merged soon. (first to devbranch, then master)
Closing.

<!-- gh-comment-id:273917494 --> @UltimateByte commented on GitHub (Jan 19, 2017): Merged soon. (first to devbranch, then master) Closing.
Author
Owner

@lock[bot] commented on GitHub (Jul 19, 2018):

This thread has been automatically locked since there has not been any recent activity after it was closed. Please open a new issue for related bugs.

<!-- gh-comment-id:406119533 --> @lock[bot] commented on GitHub (Jul 19, 2018): This thread has been automatically locked since there has not been any recent activity after it was closed. Please open a new issue for related bugs.
Sign in to join this conversation.
No labels
Atomic
Epic
cannot reproduce
command: backup
command: console
command: debug
command: details
command: fast-dl
command: install
command: mods
command: monitor
command: post-details
command: restart
command: send
command: start
command: stop
command: update
command: update-lgsm
command: validate
command: wipe
distro: AlmaLinux
distro: Arch Linux
distro: CentOS
distro: Debian
distro: Fedora
distro: RedHat
distro: Rocky Linux
distro: Ubuntu
distro: openSUSE
engine: goldsrc
engine: source
game: 7 Days to Die
game: ARMA 3
game: Ark: Survival Evolved
game: Assetto Corsa
game: Avorion
game: BATTALION: Legacy
game: Barotrauma
game: Battalion 1944
game: Battlefield 1942
game: Black Mesa: Deathmatch
game: Blade Symphony
game: Call of Duty 2
game: Call of Duty 4
game: Call of Duty: United Offensive
game: Counter-Strike 1.6
game: Counter-Strike 2
game: Counter-Strike: Global Offensive
game: Counter-Strike: Source
game: Day of Infamy
game: Dayz
game: Death Match Classic
game: Don't Starve Together
game: ET: Legacy
game: Eco
game: Factorio
game: Factorio
game: Garry's Mod
game: Half-Life
game: Hurtword
game: Insurgecy
game: Insurgecy
game: Insurgency: Sandstorm
game: Just Cause 3
game: Killing Floor
game: Killing Floor 2
game: Left 4 Dead 2
game: Minecraft
game: Minecraft Bedrock
game: Mordhau
game: Multi Theft Auto
game: Mumble
game: Natural Selection 2
game: No More Room in Hell
game: Pavlov VR
game: Post Scriptum
game: Project Zomboid
game: Quake 3
game: QuakeWorld
game: Red Orchestra: Ostfront 41-45
game: Return to Castle Wolfenstein
game: Rising World
game: Rust
game: San Andreas Multiplayer
game: Satisfactory
game: Soldat
game: Soldier of Fortune 2
game: Squad
game: Squad 44
game: Starbound
game: Stationeers
game: Sven Co-op
game: Team Fortress 2
game: Teamspeak 3
game: Teeworlds
game: Terraria
game: The Front
game: Unreal Tournament 2004
game: Unreal Tournament 3
game: Unreal Tournament 99
game: Unturned
game: Valheim
game: Wurm Unlimited
game: Zombie Master Reborn
game: label missing
good first issue
help wanted
info: alerts
info: dependency
info: docker
info: docs
info: email
info: query
info: steamcmd
info: systemd
info: tmux
info: website
info: website
needs more info
outcome: duplicate
outcome: issue resolved
outcome: issue resolved
outcome: issue unresolved
outcome: pr accepted
outcome: pr rejected
outcome: unconfirmed
outcome: wontfix
outcome: wrong forum
potential-duplicate
priority
pull-request
type: bug
type: feature
type: feature
type: feature request
type: game server request
type: refactor
waiting response
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
starred/LinuxGSM#507
No description provided.