ULX/ULIB Admin System for Garry's Mod
What is ULX?
ULX is an admin mod for Garry's Mod that allows you to have greater control over who is playing on your Garry's Mod server. ULX offers server admins an AMXX-style support, allowing multiple admins with different access levels on the same server.
It features commands from basic kick
, ban
, and slay
to fancier commands such as blind
, freeze
, voting
, and more. ULX is developed by Ulysses, and you can find more information about ULX and their company at http://ulyssesmod.net. They also have forums at http://forums.ulyssesmod.net.
Installing ULX/ULib
ULX requires that you also install ULib, which is a set of common library files that ULX will need to work correctly.
You can install ULX and ULib two ways:
Using the Steam Workshop system to automatically install it on your client or server (by the way of a Workshop Collection ID) or by
Manually downloading the ULX and ULib files, and uploading them to your server.
The only real major difference between the two methods is that the Steam workshop will download ULX and Ulib as single monolithic files, stored in a format used by Steam to make updating them easier. You will not be able to easily access things like the configuration files of ULX, or other any other files and directories used by them.
Almost all, but the most advanced, configuration setups can be done directly in an admin GUI that will pop up when running ULX, so direct access to the files isn't necessary most of the time.
If you do want to access the files, then we would suggest manually installing ULX and ULib.
Steam Workshop Method
Just subscribe to the mods in the Steam Workshop and/or include the IDs in your Steam Workshop Collection ID used by your Garry's Mod server.
ULX's workshop ID is 557962280
. ULib's Workshop ID is 557962238
.
After the Steam workshop collection ID is entered into the control panel for your Garry's Mod server, the addons will be automatically downloaded and installed the next time your Garry's Mod server is started.
Manual Install Method
Download ULib and ULX from the official Ulysses Mod website.
Upload both of these directories to your servers
garrysmod/addons
folder.Create two directories inside your addons folders:
ulx
andulib
. Please make sure the folder names are in all lowercase letters.Extract the
ulx-x.zip
file to theulx
directoryExtract the
ulib-x.zip
file to theulib
directory.ulx
andulib
should now both contain some files, each with their ownaddon.txt
,lua
, etc.
Testing to Make Sure the Install is Working Correctly
Restart your server
Run
ulx adduser <yourname> superadmin
to make yourself admin.From within the game, try the
ulx menu
command to test the ULX menu, orxgui
.
The "MOTD" Screen
When you connect to a Garry's Mod server running ULX, you will see a screen similar to the one shown below, which displays the Message of the Day(MOTD) screen. The information displayed on this welcome screen can all be custom configured and changed.
ULX Commands
ULX offers a wider variety of commands for player management, and controlling disruptive players on your server. The following sections show you how to enter the commands, what they need to be told to work correctly, and then lists all the actual commands.
Entering Commands
ULX commands can be entered two ways; by entering them in the Nodecraft game server control panel console window, or directly into the in-game chat in Garry's Mod (as long as you are an admin).
There are slightly different formats depending on which way the command is entered.
ULX commands are usually followed by "targets" and "arguments," separated by spaces. The "targets" control who the command affects, and "arguments" control how the command works.
If the commands aren't given the correct targets and arguments, many of them cannot work correctly. Some commands do have default values it will use for arguments if you don't specifically state them, but some of those defaults can have side effects.
For example, the jail
command which sends a disruptive player to "timeout," has the default time length of "forever." Yep, if you don't state how many seconds you want them to stay in jail
, it just leaves them there permanently.
Commands
If you are entering commands in the console, they must all be proceeded by
ulx
followed by a space and then the specific ulx command to be used.For example:
ulx kick (playername/ID) (optional: reason) ulx slay (playername/ID)
In the in-game chat, you just type an exclamation mark and the ulx command, with no spaces between them.
For example:
!kick (playername/ID) (optional:reason) !slay (playername/ID)
Targets
For many ULX commands to work correctly, they need to be told who the command is affecting. Who are you sending to jail?
This is done by following the command with a "Target," which can be a player name on the Garry's Mod server, Steam64ID, or in some commands, the user's IP address.
There is a list of shortcut characters you can use in the targeting, that can also save time, allowing you to have a single command affect a whole group, multiple people, etc.
Target Shortcuts
Shortcut Character | Targets |
---|---|
* | target all |
^ | target yourself |
@ | target your picker |
$\ | target by ID (steamid, uniqueid, userid, ip) |
#\ | target users in a specific group |
%\ | target users with access to the group (inheritance counts) |
! | can proceed another keyword, and reverse it's targeting. Like ^ normally targets yourself, but !^ targets everyone BUT you |
Example:
ulx slap #user
slaps all players who are in the default guest access group. ulx jail ^
would send yourself to jail. Hilarious.
You can also separate multiple targets by commas. IE, ulx slap bob,jeff,henry
Arguments
In the tables below that cover the specific commands, there are columns for the "arguments." Some commands cannot work correctly without some information being passed to them.
Some commands have default arguments, like the ulx jail
command has the default length of zero, and zero means the user sent to jail stays there forever. If you really intended to give a player a five-minute timeout (which would have been "300" seconds) and forgot to set that argument to 300, well, woops, they're never getting out of jail.
ULX Commands List
This complete list of commands can be printed out in the console at any time by using the command ulx help
.
Typing the command without the target or the arguments will show the current settings in the console.
Category: Fun
Console Command | Chat Command | Target | Arguments | Description | Deactivate | Example |
---|---|---|---|---|---|---|
ulx armor | !armor | (playerID) | (0-255) | Sets the armor for target(s) | ulx armor Bob 100 ; Sets Bob's armor to be 100 | |
ulx blind | !blind | (playerID) | (0-255) | Blinds target(s), default 255 | ulx unblind | ulx blind Bob 255 ; Blinds Bob so that his screen is white |
ulx cloak | !cloak | (playerID) | (0-255) | Cloaks target(s), defaults to self and 255 | ulx uncloak | ulx cloak Bob 255 ; Makes Bob invisible |
ulx freeze | !freeze | (playerID) | Freezes target(s) | ulx unfreeze | ulx freeze Bob ; Bob can no longer move | |
ulx god | !god | (playerID) | Grants god mode to target(s), defaults to self | ulx ungod | ulx god Bob ; Bob is impervious to damage | |
ulx hp | !hp | (playerID) | (1-2147483647) | Sets the hp for target(s) | ulx hp Bob 200 ; Bob's hp is now 200 | |
ulx ignite | !ignite | (playerID) | (1-300) | Ignites target(s), default 300 seconds | ulx unignite | ulx ignite Bob 5 ; Bob is now on fire for 5 seconds |
ulx jail | !jail | (playerID) | (number) | Jails target(s), default 0 seconds, 0 is forever | ulx unjail | ulx jail Bob 10 ; Bob is in a jail for 10 seconds. |
ulx jailtp | !jailtp | (playerID) | (number) | Teleports, then jails target(s), default 0 seconds, 0 is forever | !jailtp Bob 5 ; Bob is teleported to where you're looking and jailed for 5 seconds | |
ulx maul | !maul | (playersID) | Mauls target(s) | ulx maul Bob ; Bob is mauled until he's dead. | ||
ulx playsound | (sound) | Plays a sound (relative to sound dir) | ulx playsound music ; A sound file called "music" located in the sound directory is played in the server | |||
ulx ragdoll | !ragdoll | (playerID) | ragdolls target(s) | ulx unragdoll | ulx ragdoll Bob ; Bob falls on the ground | |
ulx slap | !slap | (playerID) | (number) | Slaps target(s) with given damage(default 0) | ulx slap Bob 5 ; Bob takes 5 damage | |
ulx slay | !slay | (playerID) | Slays target(s) | ulx slay Bob ; Bob dies | ||
ulx sslay | !sslay | (playerID) | Silently slays target(s) | ulx sslay Bob ; Bob dies, and his body vanishes | ||
ulx strip | !strip | (playerID) | Strip weapons from target(s) | ulx strip Bob ; Bob loses his weapons | ||
ulx unigniteall | !unigniteall | Extinguishes all players and all entities | ||||
ulx whip | !whip | (playerID) | (2-100) (number) | Slaps target(s) a given number of times(default 10) with given damage(default 0) each time | ulx whip Bob 3 2 ; Bob is slapped 3 times for 2 damage each for a total of 6 damage |
Category: Rcon
Console Command | Chat Command | Argument | Description | Example |
---|---|---|---|---|
ulx cexec | !cexec | (playerID) {command} | Run a command on console of target(s) | ulx cexec Bob say hi ; You make Bob say hi in chat. |
ulx ent | (classname) {(flag) : (value) |} | Spawn an ent, separate flag and value with ':', flag:value pairs with '|' | ulx ent weapon_rpg ; Creates an rpg where you were looking | |
ulx exec | (file) | Execute a file from the cfg directory on the server | ulx exec server.cfg ; You executed the file "server.cfg" | |
ulx luarun | {command} | Executes lua in server console. (Use '=' for output) | ||
ulx rcon | !rcon | {command} | Execute command on server console. | !rcon ulx god Bob ; You tell the console to make Bob impervious |
Category: User Management
Console Command | Target | Arguments | Description | Example |
---|---|---|---|---|
ulx addgroup | (group) | (inherits from) | Create a new group with optional inheritance. | ulx addgroup Moderator operator ; Added group Moderator that inherits from the group operator. |
ulx adduser | (playerID) | (group) | Add a user to specified group. | ulx adduser Bob Moderator ; You made Bob a Moderator |
ulx adduserid | (SteamID, IP, or UniqueID) | (group) | Add a user by ID to specified group. | ulx adduserid STEAM_0:0:11101 Moderator ; You made this steam account a Moderator |
ulx groupallow | (group) | (command) (access tag) | Add to a group's access. | ulx groupallow Moderator playsound ; You add the playsound command to Moderator's ALLOW list |
ulx groupdeny | (group) | (command) | Remove from a group's access. | ulx groupdeny Moderator playsound ; You add the playsound command to Moderator's DENY list |
ulx removegroup | (group) | Removes a group. USE WITH CAUTION. | ulx removegroup Moderator ; You remove the Moderator group | |
ulx removeuser | (playerID) | Permanently removes a user's access. | ulx removeuser Bob ; Bob no longer has access to any group powers | |
ulx removeuserid | (SteamID, IP, or UniqueID) | Permanently removes a user's access by ID. | ulx removeuserid STEAM_0:0:11101 ; This steam account no longer has acces to any group powers | |
ulx renamegroup | (current group) | (new group) | Renames a group. | ulx renamegroup Moderator Mod ; You rename group Moderator to Mod |
ulx setgroupcantarget | (group) | (target string) | Sets what a group is allowed to target | ulx setgroupcantarget admin Moderator ; The group admin can now target the group Moderator with any commands they have |
ulx userallow | (playerID) | (command) (access tag) | Add to a user's access. | ulx userallow Bob playsound ; You add the playsound command to Bob's ALLOW list |
ulx userallowid | (SteamID, IP, or UniqueID) | (command) (access tag) | Add to a user's access. | ulx userallowid STEAM_0:0:11101 playsound ; You add the playsound command to this ID's ALLOW list |
ulx userdeny | (playerID) | (command) (remove explicit allow or deny instead of outright denying: 0/1) | Remove from a user's access. | ulx userdeny Bob playsound ; You add the playsound command to Bob's DENY list |
ulx userdenyid | (SteamID, IP, or UniqueID) | (command) (remove explicit allow or deny instead of outright denying: 0/1) | Remove from a user's access. | ulx userdeny STEAM_0:0:11101 playsound 1 ; You remove the playsound command from this ID's DENY list |
ulx usermanagementhelp | See the user management help. |
Category: Utility
Console Command | Chat Command | Target | Arguments | Description | Example |
---|---|---|---|---|---|
ulx ban | !ban | (playerID) | (number) {reason} | Bans target for a given amount of minutes. 0 is default and permanent. | ulx ban Bob 1 He is annoying ; You banned Bob for one minute because "He is annoying" |
ulx banid | (SteamID) | (number) {reason} | Bans steamid for a given amount of minutes. 0 is default and permanent. | ulx ban STEAM_0:0:11101 0 Trolling too much ; You banned this steam ID permanently because they were "Trolling too much" | |
ulx debuginfo | Dump some debug information. | ||||
ulx help | Shows this help. | ||||
ulx kick | !kick | (playerID) | {reason} | Kicks target. | ulx kick Bob Need more room |
ulx map | !map | (map) (gamemode) | Changes map and gamemode. | ulx map | |
ulx noclip | !noclip | (playerIDs) | Toggles noclip on target(s).(defaults to self) | ulx noclip Bob ; Bob can now move through anything | |
ulx resettodefaults | (string) ("FORCE") | Resets ALL ULX and ULib configuration! | |||
ulx spectate | !spectate | (playerID) | Spectate target. | ulx spectate Bob ; You are now seeing what Bob sees | |
ulx unban | (SteamID) | Unbans steamid. | ulx unban STEAM_0:0:11101 ; You unban this steam ID | ||
ulx version | !version | See version information. | |||
ulx who | (SteamID) | See information about currently online users. | ulx who Bob; The console prints all relevant info about Bob |
Category: Chat
Console Command | Chat Command | Target | Arguments | Description | Deactivate | Example |
---|---|---|---|---|---|---|
ulx asay | @ | {message} | Send a message to currently connected admins. | @ Hello Bob needs help ; You ask an admin to help Bob | ||
ulx csay | @@@ | {message} | Send a message to everyone in the middle of their screen. | @@@ Hi everyone | ||
ulx gag | !gag | (playerIDs) | Gag target(s), disables microphone. | ulx ungag | ulx gag Bob ; Bob can no longer talk in the voice channel | |
ulx gimp | !gimp | (playerIDs) | Gimps target(s) so they are unable to chat normally. | ulx ungimp | ulx gimp Bob ; Bob can only say things in the gimp.txt file now | |
ulx mute | !mute | (playerIDs) | Mutes target(s) so they are unable to chat. | ulx unmute | ulx mute Bob ; Bob can no longer chat | |
ulx psay | !p | (playerID) | {message} | Send a private message to target. | ulx psay Bob hi bob ; You whisper "hi bob" to Bob | |
ulx thetime | !thetime | Shows you the server time. | ||||
ulx tsay | @@ | {message} | Send a message to everyone in the chat box. | @@ Hi everyone |
Category: Voting
Console Command | Chat Command | Target | Arguments | Description | Example |
---|---|---|---|---|---|
ulx stopvote | !stopvote | Stops a vote in progress. | |||
ulx veto | !veto | Veto a successful votemap. | |||
ulx vote | !vote | (title) {options} | Starts a public vote. | ulx vote Pizza? Yes No "Other Option" ; You start a custom vote titled "Pizza?" with options "Yes", "No", or "Other Option" | |
ulx voteban | !voteban | (playerID) | (number) {reason} | Starts a public ban vote against target, default 1440 minutes. | ulx voteban Bob 5 Bob needs a break ; You start a vote to ban Bob because he "needs a break" |
ulx votekick | !votekick | (playerID) | {reason} | Starts a public kick vote against target. | ulx votekick Bob Bob is afk ; You start a vote to kick Bob because "Bob is afk" |
ulx votemap | !votemap | {map} | Vote for a map, no arguments lists available maps. | !votemap gm_construct ; You vote for the construct map | |
ulx votemap2 | !votemap2 | {map} | Starts a public map vote. | !votemap gmconstruct gmflatgrass ; Starts a vote in the server with options "gmconstruct" or "gmflatgrass" |
Category: Teleport
Console Command | Chat Command | Target | Arguments | Description | Example |
---|---|---|---|---|---|
ulx bring | !bring | (playerIDs) | Brings target(s) to you. | !bring Bob ; Teleports Bob to you | |
ulx goto | !goto | (playerID) | Go to target. | !goto Bob ; Teleports you to Bob | |
ulx return | !return | (playerID) | Returns target to last position before a teleport, defaults to self | ulx return Bob ; Returns Bob to his previous position | |
ulx send | !send | (playerID) | (playerID) | Go to target. | ulx send Bob Steve ; Telports Bob to Steve |
ulx teleport | !tp | (playerID) | Teleports target, defaults to self | !teleport ; Teleports you to where your looking |
Category: Menus
Console Command | Chat Command | Target | Description |
---|---|---|---|
ulx motd | !motd | Show the message of the day. | |
xgui (show, hide, toggle) or ulx menu | !xgui, !menu | Opens and/or closes XGUI. | |
xgui fban | !fban | (playerID) | Opens the add ban window, freezes the specified player, and fills out the Name/SteamID automatically. |
xgui xban | !xban | (playerID) | Opens the add ban window and fills out Name/SteamID automatically if a player was specified. |
Category: Config
These settings can also be edited in /garrysmod/data/ulx/config.txt
Console Command | Argument | Description |
---|---|---|
ulx showMotd | (0, 1, 2, 3) | Sets the MOTD Mode. (SEE BELOW) |
ulx motdfile | (filename.txt) | The MOTD to show, if using a file. Put this file in the root of the garry's mod directory. |
ulx motdurl | (URL) | The MOTD to show, if using a URL. |
-------- | -------- | -------- |
ulx chattime | (x) | Players can only chat every x seconds (anti-spam). 0 to disable |
ulx meChatEnabled | (0, 1, 2) | Allow players to use '/me' in chat. 0 = Disabled, 1 = Sandbox only (Default), 2 = Enabled |
-------- | -------- | -------- |
ulx logFile | (0, 1) | Log to file (Can still echo if off). This is a global setting, nothing will be logged to file with this off. |
ulx logEvents | (0, 1) | Log events (player connect, disconnect, death) |
ulx logChat | (0, 1) | Log player chat |
ulx logSpawns | (0, 1) | Log when players spawn objects (props, effects, etc) |
ulx logSpawnsEcho | (-1, 0, 1, 2) | Echo spawns to players in server. -1 = Off, 0 = Dedicated console only, 1 = Admins only, 2 = All players. (Echoes to console) |
ulx logJoinLeaveEcho | (0, 1) | Echo players leaves and joins to admins in the server (useful for banning minges) |
ulx logDir | (name) | The log directory under garrysmod/data |
ulx logEcho | (0, 1, 2) | Sets the Echo mode (SEE BELOW) |
-------- | -------- | -------- |
ulx logEchoColors | (0, 1) | Whether or not echoed commands in chat are colored |
ulx logEchoColorDefault | (0-255) (0-255) (0-255) | The default text color (RGB) |
ulx logEchoColorConsole | (0-255) (0-255) (0-255) | The color that Console gets when using actions |
ulx logEchoColorSelf | (0-255) (0-255) (0-255) | The color for yourself in echoes |
ulx logEchoColorEveryone | (0-255) (0-255) (0-255) | The color to use when everyone is targeted in echoes |
ulx logEchoColorPlayerAsGroup | (0, 1) | Whether or not to use group colors for players. If false, it uses the color below. |
ulx logEchoColorPlayer | (0-255) (0-255) (0-255) | The color to use for players when ulx logEchoColorPlayerAsGroup is set to 0. |
ulx logEchoColorMisc | (0-255) (0-255) (0-255) | The color for anything else in echoes |
-------- | -------- | -------- |
ulx rslotsMode | (0, 1, 2, 3) | Sets the slots mode. (SEE BELOW) |
ulx rslots | (number) | Sets the number of reserved slots, only applicable for modes 1 and 2. |
ulx rslotsVisible | (number) | When this is 0, svvisiblemaxplayers will be set to maxplayers - slotscurrently_reserved |
-------- | -------- | -------- |
ulx votemapEnabled | (0, 1) | Enable/Disable the entire votemap command |
ulx votemapMintime | (number) | Time in seconds after map change before votes count. |
ulx votemapWaittime | (number) | Time in seconds before a user must wait before they can change their vote. |
ulx votemapSuccessratio | (0.4, 0.5, 0.6, 0.7, etc.) | Ratio of (votes for map)/(total players) needed to change map. (Rounds up) |
ulx votemapMinvotes | (number) | Number of minimum votes needed to change map (Prevents llamas). This supercedes the above convar on small servers. |
ulx votemapVetotime | (number) | Time in seconds an admin has after a successful votemap to veto the vote. Set to 0 to disable. |
ulx votemapMapmode | (1, 2) | 1 = Use all maps but what's specified in votemaps.txt, 2 = Use only the maps specified in votemaps.txt. |
ulx voteEcho | (0, 1) | 1 = Echo what every player votes (this does not apply to votemap). 0 = Don't echo |
ulx votemap2Successratio | (0.4, 0.5, 0.6, 0.7, etc.) | Ratio of (votes for map)/(total players) needed to change map. (Rounds up) |
ulx votemap2Minvotes | (number) | Number of minimum votes needed to change map (Pevents llamas). This supercedes the above convar on small servers. |
ulx votekickSuccessratio | (0.4, 0.5, 0.6, 0.7, etc.) | Ratio of (votes for kick)/(total players) needed to kick player. (Rounds up) |
ulx votekickMinvotes | (number) | Number of minimum votes needed to kick player (Prevents llamas). This supercedes the above convar on small servers. |
ulx votebanSuccessratio | (0.4, 0.5, 0.6, 0.7, etc.) | Ratio of (votes for ban)/(total players) needed to ban player. (Rounds up) |
ulx votebanMinvotes | (number) | Number of minimum votes needed to ban player (Prevents llamas). This supercedes the above convar on small servers. |
MOTD Modes
0 - OFF No MOTD shown
1 - FILE Show the players the contents of the file from the 'motdfile' cvar
2 - GENERATOR Uses the MOTD generator to create a MOTD for the player (use XGUI for this)
3 - URL Show the player the URL specified by the 'motdurl' cvar
Echo Modes
0 - OFF No output to any players when an admin command is used
1 - ANONYMOUS Output to players without access to see who used the command (admins by default) similar to "(Someone) slapped Bob with 0 damage"
2 - FULL Output to players similar to "Foo slapped Bob with 0 damage"
Slots Modes
0 - Off
1 - Keep # of slots reserved for admins, admins fill slots.
2 - Keep # of slots reserved for admins, admins don't fill slots, they'll be freed when a player leaves.
3 - Always keep 1 slot open for admins, kick the user with the shortest connection time if an admin joins.
Viewing and Editing your ULX settings
To find your ULX settings go to /garrysmod/data
in your server file manager.
The ulib
folder contains:
bans.txt - the list of banned users on your server.
groups.txt - the list of groups on your server, and commands they're allowed to use.
misc_registered.txt - a list of descriptions for each command.
users.txt - the list of every user that belongs to some group on your server.
The ulx
folder contains:
adverts.txt - the file that sends out advertisements to your server.
banmessage.txt - the file that is used to store the message that is sent to banned players.
banreasons.txt - the file that is used to store default reasons for kicking and banning users.
config.txt - the file that holds all the config command settings as described above.
downloads.txt - the file that designates what folder or file will be forced downloaded by users.
gimps.txt - the file that is used to store lines used by users who are "gimped".
motd.txt - the file that is used to store the settings of your MOTD screen.
sbox_limits.txt - the file that is used to store the maximum value of certain sliders in the XGUI.
votemaps.txt - the file that is used to store the names of maps that can be voted upon.
All of the .txt
file can be edited to change their settings. Each file also includes more specific descriptions of how to edit them.
The ulx_logs
folder contains any stored logs. The log commands in the Config Category given above will store them here.