ULX v3.60 -- Advanced Admin Mod -- Official GM13 Release

[h2]ULX – Advanced Admin Mod[/h2]
**


[Current version: 3.60](http://ulyssesmod.net/)

**
DOWNLOAD: http://ulyssesmod.net/

  • Be sure you download ULib as well, as ULX depends on it.

Brought to you by:
Megiddo
Stickly Man!
JamminR

Join the ULX steam community!

http://www.paypal.com/en_US/i/btn/x-click-but04.gif
(We’ll love you forever if you donate! We need to eat too :))

What is ULX?
ULX is a powerful admin mod that is not only the oldest and most mature admin mod, it’s the oldest and most mature Gmod-specific lua release still in use. The first version of ULX was released days after GM9, and development on it has continued since then. Check the features list below for more details. As of version 3.50, ULX now includes XGUI, which is a GUI created by Stickly Man! which is designed to provide an intuitive yet powerful experience for users who can run ULX commands, change ULX configs, manage bans, and much more!

What’s new in v3.60?
Most of the work in this version went into getting ULX, XGUI, and ULib working for Garry’s Mod 13. However, there still is quite a bit that we managed to sneak in there! Check out the full ULX and ULib changelog on our news post here. Here’s a small snippet of a few of the main changes:

Our Legacy: 8 Years of Team Ulysses!
Just about a month after Garry’s Mod celebrated it’s 8th birthday, we at Team Ulysses celebrated 8 years since our (or rather, Megiddo’s) first release. Megiddo has compiled a brief history of major events, which can also be seen on our latest news post.

[h2]ULX Features:[/h2]
Screenshots:

Commands Tab:
http://imageshack.us/a/img837/7532/cmdsl.th.png

Groups Tab:
http://imageshack.us/a/img855/53/groupsteams.th.pnghttp://imageshack.us/a/img11/755/groupsk.th.pnghttp://imageshack.us/a/img820/5031/groupspermissions.th.png

Maps Tab:
http://imageshack.us/a/img404/2865/mapsn.th.png

Settings Tab:
http://imageshack.us/a/img843/9960/sandboxp.th.pnghttp://imageshack.us/a/img707/467/serveradverts.th.pnghttp://imageshack.us/a/img801/1263/serverechoes.th.pnghttp://imageshack.us/a/img526/9230/xguisettings.th.png

Bans Tab:
http://imageshack.us/a/img831/6826/banso.th.png

Full Command List:



ULX Help:
If a command can take multiple targets, it will usually let you use the keywords '*' for target
all, '^' to target yourself, '@' for target your picker, '$<userid>' to target by ID (steamid,
uniqueid, userid, ip), '#<group>' to target users in a specific group, and '%<group>' to target
users with access to the group (inheritance counts). IE, ulx slap #user slaps all players who are
in the default guest access group. Any of these keywords can be preceded by '!' to negate it.
EG, ulx slap !^ slaps everyone but you.
You can also separate multiple targets by commas. IE, ulx slap bob,jeff,henry.
All commands must be preceded by "ulx ", ie "ulx slap"

Command Help:


Category: Chat
	o ulx asay {message} - Send a message to currently connected admins. (say: @)
	o ulx csay {message} - Send a message to everyone in the middle oftheir screen. (say: @@@)
	o ulx gag <players> - Gag target(s), disables microphone. (say: !gag) (opposite: ulx ungag)
	o ulx gimp <players> - Gimps target(s) so they are unable to chat normally. (say: !gimp) (opposite: ulx ungimp)
	o ulx mute <players> - Mutes target(s) so they are unable to chat.(say: !mute) (opposite: ulx unmute)
	o ulx psay <player> {message} - Send a private message to target. (say: !p)
	o ulx thetime - Shows you the server time. (say: !thetime)
	o ulx tsay {message} - Send a message to everyone in the chat box.(say: @@)


Category: Fun
	o ulx armor <players> <armor: 0<=x<=255> - Sets the armor for target(s). (say: !armor)
	o ulx blind <players> [<amount: 0<=x<=255, default 255>] - Blinds target(s). (say: !blind) (opposite: ulx unblind)
	o ulx cloak [<players, defaults to self>] [<amount: 0<=x<=255, default 255>] - Cloaks target(s). (say: !cloak) (opposite: ulx uncloak)
	o ulx fireworks - Fire! In pretty displays! (say: !fireworks)
	o ulx freeze <players> - Freezes target(s). (say: !freeze) (opposite: ulx unfreeze)
	o ulx god [<players, defaults to self>] - Grants god mode to target(s). (say: !god) (opposite: ulx ungod)
	o ulx hp <players> <hp: 1<=x<=2147483647> - Sets the hp for target(s). (say: !hp)
	o ulx ignite <players> [<seconds: 1<=x<=300, default 300>] - Ignites target(s). (say: !ignite) (opposite: ulx unignite)
	o ulx jail <players> [<seconds, 0 is forever: 0<=x, default 0>] - Jails target(s). (say: !jail) (opposite: ulx unjail)
	o ulx jailtp <player> [<seconds, 0 is forever: 0<=x, default 0>] -Teleports, then jails target(s). (say: !jailtp)
	o ulx maul <players> - Maul target(s). (say: !maul)
	o ulx playsound <sound> - Plays a sound (relative to sound dir).
	o ulx ragdoll <players> - ragdolls target(s). (say: !ragdoll) (opposite: ulx unragdoll)
	o ulx slap <players> [<damage: 0<=x, default 0>] - Slaps target(s)with given damage. (say: !slap)
	o ulx slay <players> - Slays target(s). (say: !slay)
	o ulx sslay <players> - Silently slays target(s). (say: !sslay)
	o ulx strip <players> - Strip weapons target(s). (say: !strip)
	o ulx unigniteall - Extinguishes all players and all entities. (say: !unigniteall)
	o ulx whip <players> [<times: 2<=x<=100, default 10>] [<damage: 0<=x, default 0>] - Slaps target(s) x times with given damage each time. (say: !whip)


Category: Menus
	o ulx motd - Show the message of the day. (say: !motd)
	o xgui <show, hide, toggle> - Opens and/or closes XGUI. (say: !xgui, !menu) (alias: ulx menu)
	o xgui fban <player> - Opens the add ban window, freezes the specified player, and fills out the Name/SteamID automatically. (say: !fban)
	o xgui xban <player> - Opens the add ban window and fills out Name/SteamID automatically if a player was specified. (say: !xban)


Category: Rcon
	o ulx cexec <players> {command} - Run a command on console of target(s). (say: !cexec)
	o ulx ent <classname> [{<flag>:<value>}] - Spawn an ent, separate flag and value with ':'.
	o ulx exec <file> - Execute a file from the cfg directory on the server.
	o ulx luarun {command} - Executes lua in server console. (Use '=' for output)
	o ulx rcon {command} - Execute command on server console. (say: !rcon)


Category: Teleport
	o ulx bring <player> - Brings target to you. (say: !bring)
	o ulx goto <player> - Goto target. (say: !goto)
	o ulx send <player> <player> - Goto target. (say: !send)
	o ulx teleport [<player, defaults to self>] - Teleports target. (say: !tp)


Category: User Management
	o ulx addgroup <group> [<inherits from>] - Create a new group withoptional inheritance.
	o ulx adduser <player> <group> - Add a user to specified group.
	o ulx adduserid <SteamID, IP, or UniqueID> <group> - Add a user byID to specified group.
	o ulx groupallow <group> <command> [<access tag>] - Add to a group's access.
	o ulx groupdeny <group> <command> - Remove from a group's access.
	o ulx removegroup <group> - Removes a group. USE WITH CAUTION.
	o ulx removeuser <player> - Permanently removes a user's access.
	o ulx removeuserid <SteamID, IP, or UniqueID> - Permanently removes a user's access by ID.
	o ulx renamegroup <current group> <new group> - Renames a group.
	o ulx setgroupcantarget <group> [<target string>] - Sets what a group is allowed to target
	o ulx userallow <player> <command> [<access tag>] - Add to a user's access.
	o ulx userallowid <SteamID, IP, or UniqueID> <command> [<access tag>] - Add to a user's access.
	o ulx userdeny <player> <command> [<remove explicit allow or deny instead of outright denying: 0/1>] - Remove from a user's access.
	o ulx userdenyid <SteamID, IP, or UniqueID> <command> [<remove explicit allow or deny instead of outright denying: 0/1>] - Remove from a user's access.
	o ulx usermanagementhelp - See the user management help.


Category: Utility
	o ulx ban <player> [<minutes, 0 for perma: 0<=x, default 0>] [{reason}] - Bans target. (say: !ban)
	o ulx banid <steamid> [<minutes, 0 for perma: 0<=x, default 0>] [{reason}] - Bans steamid.
	o ulx debuginfo - Dump some debug information.
	o ulx help - Shows this help.
	o ulx kick <player> [{reason}] - Kicks target. (say: !kick)
	o ulx map <map> [<gamemode>] - Changes map and gamemode. (say: !map)
	o ulx noclip [<players, defaults to self>] - Toggles noclip on target(s). (say: !noclip)
	o ulx resettodefaults [<string>] - Resets ALL ULX and ULib configuration!
	o ulx spectate <player> - Spectate target. (say: !spectate)
	o ulx unban <steamid> - Unbans steamid.
	o ulx who - See information about currently online users.


Category: Voting
	o ulx veto - Veto a successful votemap (say: !veto)
	o ulx vote <title> {options} - Starts a public vote. (say: !vote)
	o ulx voteban <player> [<minutes: 0<=x, default 1440>] [{reason}] - Starts a public ban vote against target. (say: !voteban)
	o ulx votekick <player> [{reason}] - Starts a public kick vote against target. (say: !votekick)
	o ulx votemap [{map}] - Vote for a map, no args lists available maps. (say: !votemap)
	o ulx votemap2 {map} - Starts a public map vote. (say: !votemap2)


-End of help
ULX version: 3.60


Features in ULX

  • Immense command list.
  • Designed to work well with all ranges of servers. Whether you’re a casual weekend server or a 64-player server, ULX will find a home in your admins’ hearts.
  • A unique and full-featured player targeting system. You can always target yourself by using the ‘^’ keyword, IE “ulx slap ^” to slap yourself. You can target the player you’re looking at using the ‘@’ keyword, you can target a group using the ‘%<group_name>’ keyword, and you can negate a target using ‘!’. If I wanted to slap everyone that wasn’t an admin as well as Bob I’d use “ulx slap !%admin,Bob”.
  • Autocomplete. This is one you’ll have to try yourself to fully realize its potential. If you type "ulx " at a client’s console, you’ll get a list of commands you have access to which narrow down as you type in more characters. After that, it will help you find a target for your command, or show you the full syntax. It can also show valid parameters for each argument, i.e. for "ulx map ", it will list the current maps available on your server. It can’t get any easier!
  • Designed to be easy to use from a dedicated console. Nearly every setting can be changed at console.
  • No hard coded groups or accesses. You decide how you want your group and accesses setup.
  • Plays nice with other mods and gamemodes. Unless another mod changes the default Gmod library, ULX should have no conflicts as it does not actively change gameplay.
  • Supplements gmod’s default admin library and reads in admins from Garry’s default admin file. This means that scripts will pick up ULX admins without specifically being designed to do so (thanks to ULib!). It should be noted that it does this in such a way that it won’t break other mods.
  • HTML Message of the Day. This pops up in a window when players join. This is completely configurable. You can also offer downloads to your model packs from here. See below for a picture of the default MOTD. You can also turn this off.
  • Welcome message. In the event you don’t want to use the MOTD, you can greet players from this.
  • A fully featured, completely configurable logging system. Logs player chats, joins, parts, deaths/kills, spawns, admins actions (in colors!), etc. As an extension to the spawn logging, you can also echo player spawns to connected admins so they can catch spammers.
  • Admin actions are echoed to the players on the server. The revised system now uses different colors to highlight various parts of each message. You have three options: Off, anonymous, and full. Full looks like “Foo slapped Bob with 0 damage”, while anonymous looks like “(Someone) slapped Bob with 0 damage”.
  • Everything that’s logged to a file is also echoed to the server console in the event you like to watch what’s going on from there.
  • Reserved slots.
  • Forced downloads. You can push extra resources like models and sounds to the player via ULX.
  • Adverts! You can configure adverts to show either in the center of the screen or in the player chat area. With XGUI, you can configure these adverts in-game, and the changes take effect immediately!
  • Admins can physgun other players.
  • UTeam is now included with ULX! UTeam sets users’ team based on their usergroup and sets colors and player modifiers for teams. This works great with sui_scoreboard so can see team colors. UTeam is disabled by default.
  • ULX supports gatekeeper and will use it if available.

XGUI features:

  • Configure just about every aspect of ULX on the fly, without needing a map change.
  • XGUI stays constantly updated-- if another admin changes any setting, it will show up in real-time right before your eyes! Think Google Wave for administration.
  • Allows all users to view and execute only ULX commands that they have access to. Obeys all command argument restrictions, too.
  • You can add and remove groups, move players from group to groups (even players that are offline), add/remove accesses from groups, and change per-command per-argument restrictions for groups.
  • Manage UTeam settings: Add/Remove teams, assign groups to a team, change team modifiers such as hp, runspeed, color, etc.
  • View available server maps, and create map votes. Non-admins can use this menu to execute votemaps on allowed maps. You can even see a preview of the map, if available.
  • Supports modular per-gamemode menus-- For sandbox, you can set prop limits and change basic server settings like noclip and godmode.
  • Configure ULX settings such as adverts, gimps, vote-based settings, command echo settings, kick/ban default reasons, log settings, reserved slots, and more.
  • Advanced ban menu that allows you to easily add bans, remove bans, view loads of details on each ban, edit bans unban date, name, reason, etc., view bans that were added via the source engine, all while supporting extremely large banlists.
  • Includes !fban <player> chat command (or “xgui fban <player>” in console) which immediately freezes the targeted player while you enter a ban reason and ban length.
  • Includes an “infobar” which gives you quick access to view ULX, ULib, and XGUI version info, along with a clock to show your local time.

Our Community:

  • The ulyssesmod.net forums currently have about 25,000 posts by 4000 users, and is visited daily by our team members and fellow community peers and developers who are more than willing to lend a hand in helping you (so long as you ask nicely and read the FAQ for answers first!)
  • You can find a number of third-party plugins in our Releases Board, or we have an area to post suggestions in case you can’t find what you’re looking for!
  • Our developers focus on making ULX as dependable and as bug-free as humanly possible. Any bug you find and report to us that is confirmed to be a fault of ULX is fixed in the next version of ULX, and even put to testing in SVN sooner than the next release.

Some of our other works you’ll want to know about (they work great with ULX!):

  • UPS - Ulysses Prop Share. An extremely lightweight yet flexible prop protector.
  • UClip - A noclip alternative. Players can’t noclip through the world or through other peoples’ props.
  • UTime - Keep track of how long your players have been connected this session and total.
  • Uppl - Restrict props on a per-model basis.
  • UBan (requires ULX) - Ban players across multiple servers using a centralized database.
  • sui_scoreboard - Not technically one of our works, but this is one you just have to try out! Completely re-done scoreboard that just looks amazing.

Help me! It’s not working!
If you don’t have access to your server console, we can’t help you! Please make a test install on a server you can access first.
You need to follow the directions for your problem in order. Do not skip a step or you’ll probably be ignored.

ULX isn’t running, it says ulx is an unknown command.

  • Have you restarted the server? Garrysmod requires a full server restart (not just a map change!) in order to detect new addons.
  • Make sure you properly installed both ULib and ULX on your server. It doesn’t do any good if you install them on your client, and ULX won’t run without ULib.
  • You should have a directory structure of garrysmod/addons/ulx/info.txt and garrysmod/addons/ulib/info.txt.
  • Check server console on map start. Do you see the ULX and ULib loading blocks? If not you installed it improperly.
  • Are there errors in the ULX and ULib loading block? Post them on the thread and we’ll try to help you further!
  • If and only if your problem was due to something on our end, please report the bug to us here

I’m having trouble adding myself or another as an admin.

  • The syntax for “ulx adduser” can be seen by typing “ulx adduser” and nothing else into the console, or you can read here
  • If you still have questions read this. This thread asks for information, so don’t reply without the information saying you read it and you’re still having problems, we will ignore you.

How do I unban someone?
Read this.

How can I uninstall ULib/ULX?
Simply remove the folders from addons.

I’m glad I could be of help with the kick/ban reasons. that was the thing that annoyed me most in ulx.

Also, I saw a thread on your forums about compatability not being great with FAdmin. If there are any issues, I’d be happy to fix them.

Also, great work on keeping it up to date.

And we thank you for your help! One of these days I’m going to sit down with DarkRP/FAdmin and check compatibility with ULX/ULib so I can be of more assistance to our users (in case they’ve set something up incorrectly), and hopefully resolve the “It’s all FAdmin’s fault!”-type threads :slight_smile:

You know what to do when it’s my fault :wink:
(fix it for me)
Haha, just kidding, here’s link to the issues page.

so this version will remove having empty menu’s sometimes?

Uhh… hopefully? If it happens to you again, check and see if there are any errors in your console, and post them here.

Already using it on my server, this is perfect. Althoug a ‘slaynext’ command would be appreciated.

Courtesy of .\Shadow} (for ttt)

local snr_ban = true -- true means they will be banned if they leave after being set to be slain the next round. false means they won't be banned.
local snr_bantime = 60 -- Time, in minutes, how long to ban someone for if they leave after being set to slay next round. 0 = permanent.
local snr_logcmd = true -- If set to true, when an admin uses this command, it will be logged. false means it won't be.
  
local function SlayNextRoundNotify( bool, admin, victim )
  
    if bool == nil or not admin:IsValid() or not victim:IsValid() then MsgN( "Something fucked up." ) return end
  
    if bool then
        admin:ChatPrint( victim:Nick().." will be slain the following round." )
        victim:ChatPrint( "You will be slain the following round; this was done by "..admin:Nick() )
        if snr_logcmd then ServerLog( admin:Nick().." set "..victim:Nick().." to be slain the following round." ) end
    else
        admin:ChatPrint( victim:Nick().." will no longer be slain the following round." )
        victim:ChatPrint( "You will no longer be slain the following round; this was done by "..admin:Nick() )
        if snr_logcmd then ServerLog( admin:Nick().." set "..victim:Nick().." to no longer be slain the following round." ) end
    end
  
end
  
concommand.Add( "slaynextround", function( ply, cmd, args )
  
    if not ( ply:IsUserGroup("moderator") or ply:IsAdmin() ) then ply:ChatPrint( "You do not have access to this command." ) return end
  
    local playr = args[1]
  
    if not playr then ply:ChatPrint( "Use: !snr <player name>; slaynextround <player name>" ) return end
  
    local user = nil
  
    for _, v in pairs( player.GetAll() ) do
        if string.find( string.lower( v:Nick() ), string.lower( playr ) ) then
            user = v
            break
        end
    end
  
    if not user then ply:ChatPrint( "User \""..playr.."\" not found." ) return end
  
    local pdat = user._SNR
  
    if pdat then
        if pdat == 1 then
            user._SNR = 0
            SlayNextRoundNotify( false, ply, user )
        else
            user._SNR = 1
            SlayNextRoundNotify( true, ply, user )
        end
    else
        user._SNR = 1
        SlayNextRoundNotify( true, ply, user )
    end
  
end )
  
hook.Add( "TTTBeginRound", "Next Round Slay", function()
  
    for _, v in pairs( player.GetAll() ) do
  
        if v._SNR and v._SNR == 1 then
            v:Kill()
            v._SNR = 0
        end
  
    end
  
end )
  
hook.Add( "PlayerSay", "Next Round Slay Chat Command", function( ply, text )
    
    if ( string.sub( text, 1, 4 ) == "!snr" or string.sub( text, 1, 14 ) == "!slaynextround" ) then
    
        text = string.Explode( " ", text )
    
        ply:ConCommand( text[2] and "slaynextround "..text[2] or "slaynextround" )
        return ""
    
    end
    
end )
  
hook.Add( "PlayerDisconnected", "Ban if avoiding slay", function( ply )
  
    if ply._SNR and ply._SNR == 1 and snr_ban then
        ply:Ban( snr_bantime, "Avoiding punishment" ) -- Personal opinion: I find this a bit stupid. If they leave, they won't play the next round. If they're slain, they won't play the next round. What's wrong about them having control over the action?
    end
  
end )

will do

Finally XGUI is fixed yey.

Keep up the good work guys! Best public admin mod out there!

Is it possible to force player models from ulx to work with gamemodes for like TTT(For certain groups, like admin)?

I use ULX on my server, and love it. Best admin mod there is.

But I would really love to see a “set nextmap” option under “maps”. It would be much easier instead of having to use the console. And then the other admins that dont have access to the console could set a nextmap as well :slight_smile:

Not that I’m aware of. UTeam was originally designed for sandbox only, and since I didn’t write the code, I couldn’t tell you how easy it would be to implement. It would be fun to do, but it’d be hard to keep consistent with each gamemode. I think. Either way, a fun coding project for the future for whenever anyone has some free time :stuck_out_tongue:

Is the nextmap command part of a specific gamemode, like TTT? Or is it available in sandbox as well? (lol, shows how much I actually PLAY Garry’s Mod :P) Usually we try not to have gamemode-specific commands in ULX, but, I have been meaning to make XGUI modules for TTT and other popular gamemodes, and this would definitely be a great feature to implement!

No it is not a TTT specific command.
Im talking about the srcds command: nextlevel
Ex.


 rcon set nextlevel de_dust 

Should be quite easy to add for you lua kings :slight_smile:

sadly, this version didn’t fix having empty menu’s sometimes.

it might be FAdmin.

–i don’t know if this applies to you, stickly man, but sometimes chat commands seem to fail too, might be FAdmin too,though

edit, i am in no way blaming fadmin, that is why i said “it might”
but of course, some people will feel offended. i apologize.

Yeah of course I am to blame for ulx commands breaking. Who else, right?

Actually I fixed a bug a few days ago that caused chat commands from other mods to break when darkrp was edited. Still not fadmin though.

autoreload fucks shit up sometimes.

oi, oi, i’m not insulting fadmin, i like fadmin.

the two mods just seem to conflict

We are aware issues about chat commands breaking with autoreload-- We haven’t had time to do a whole lot of testing on that one, so we’ll see if FPtje’s update fixed it :slight_smile: (Presuming it only happened on servers running DarkRP, that is)

As for having empty menus-- Next time it happens, can you check for errors in your server console? Unless something borked, you can press the “Refresh Server Data” button in Settings->Client->XGUI Settings, and stuff should start to show up.

Added to my TODO, I’ll look into it when I have some time

Still waiting on a fix for ULX not remembering usergroups!