Frosty Server Administration 3

http://q.imgtube.net/ss6en.png

This is version 3 of my administration mod used on some servers famed on Catalyst-Gaming and the Official Deception Server #1.
Mainly it features a COMPLETE overhaul of the client side interface, I learn’t a lot from what people wanted through constructive criticism.

Main features includes:

-Very fast and easy to use interface.
-Extremely powerful disguise system. (As an admin when you join only the server knows your an admin until you remove the disguise)
-Very simple and effective plugin system.
-Straight forward kick/ban menus
-Easy method to set ranks. (Can’t set your own rank, owner can only be given in server console)
-Very handy remote console, shows unknown commands and black listed commands. (Brings print and Msg to the remote console very useful for debugging)
-Interface brings you some useful information about the server.

**Ranks:
**Owner = 0
Super Admin = 1
Admin = 2
Gold Member = 3
VIP = 4
Player = 5 (used as disguise can be changed easily)

Plugin Build:

[lua]local PLUGIN = {}

PLUGIN.Name = “Kill” --Name to be displayed
PLUGIN.File = “kill.lua” --filename of plugin like “kill.lua”
PLUGIN.Client = true --Run Client Side
PLUGIN.Server = true --Run Server Side
PLUGIN.AllowSelf = true --Sets if admin can perform action on self (NOTE: CanPerform is not called if the action is on self)

PLUGIN.CanPerform = function( target, caller ) --sends the player to act on and the caller to allow custom permission settings
return caller:FSA_Level() < target:FSA_Level()
end

PLUGIN.RunFunction = function( target, caller ) --Not called if SubMenufunction or SubMenu is defined
target:Kill()
target:ChatPrint( “[FSA] You have been killed by an admin” )
caller:ChatPrint( "[FSA] You have killed " … target:Nick() )
end
FSA_LoadPlugin(PLUGIN) --Call this to load the plugin[/lua]

Usage:
To open the menu:
bind <key> “+fsa_menu”

To obtain ownership enter in the SERVER console: (USERID can be found by using “status” in client or server console)
fsa_giveowner <userid>

To unban use: (Must be Super Admin or higher)
fsa_unban <SteamID>

Download:
SVN: http://frosty-server-administration.googlecode.com/svn/trunk/
Alternative: http://frosty-server-administration.googlecode.com/files/FSA.zip

Pictures:
The Main console:
http://d.imgtube.net/TTWfo.png

Console after selecting a player, plugins that don’t allow self action if self is selected are not listed.
http://y.imgtube.net/1FDkx.png

Kick menu
http://m.imgtube.net/XHZ8f.png

Ban menu.
http://x.imgtube.net/FpTzc.png

Rank setting.
http://h.imgtube.net/h9Pu6.png

Join disguise.
http://x.imgtube.net/UhKVE.png

Remote Console. For some reason that msg of the bot joining always does that, perform layout does not fix.
http://f.imgtube.net/7rJnz.png

Constructive Criticism below:

Nice !
You should add Give command for weapons, ammo and pickup stuff.

Not sure how much of a use that would be. Could easily code a plugin to do it though :smiley:

Very awesome. Can’t wait to receive the Catalyst Gaming version to put on our servers.

Good job on this Frosty.

Found a really silly error while working on CGs copy but as far as I can tell it seems to still work o.O

2 functions had the same name but apparently they still work. I advice you to use the SVN copy for this as that’s the only copy I’ll be updating.

someone had a proof of concept about overflows in GLua, could be why it’s still working

Yeah I looked into that possibility and sounds right as they were localised functions and being caught by concommand.add after being defined so I guess they just overwrited each other.

Anyone got any suggestions to this that could be considered?

Heres a quick question, what makes this unique, to say… ulx or evolve? To me, it just seems like ‘another’ admin mod.

ULX and Evolve are full of extra generally unused features, this is a simplistic approach, more so that ASSMod.

One of the key features in it is it’s extremely powerful disguise system, yet too be fooled.

Its also very useful for those looking for admin mods for say communities that have SQL integration, okay this version isn’t ready for SQL but I’m working on one atm. Catalyst-Gaming switched over to it since using ASSMod and it dramatically increased server stability (this was in the first version).

I know of no addon that currently has a RCon like this.
I know of no other publicly available addon that has a disguise system.

Going from ass mod to this to not expect better performance would be insane seeing how old ass mod is.

The version thats shipped with any old gamemode OC used was an updated fixed version but still had all its little features that never really got used.

EDIT:
Forgot to mention in the OP:

FSA has 2 types of plugins, one with a single action function and one with 2 or more possible functions.

Kill is a single action function.

Freeze is a 2 action function. So like this:
[lua]
local PLUGIN = {}

PLUGIN.Name = “Freeze/Un-Freeze” --Name to be displayed
PLUGIN.File = “freeze.lua” --filename of plugin like “kill.lua”
PLUGIN.Client = true --Run Client Side
PLUGIN.Server = true --Run Server Side
PLUGIN.AllowSelf = true --Sets if admin can perform action on self (NOTE: CanPerform is not called if the action is on self)

PLUGIN.CanPerform = function( target, caller ) --sends the player to act on and the caller to allow custom permission settings
return caller:FSA_Level() < target:FSA_Level()
end

PLUGIN.SubMenu = {“Freeze”, “Un-Freeze”} --{“Sub 1”, “Sub 2”} Table of strings for a submenu, nil for none
PLUGIN.SubMenufunction = { --Only Runs On Server. { func1, func2 } Table of corresponding functions to the submenu, nil for none
function( target, caller )
target:Freeze( true )
target:ChatPrint( “[FSA] You have been frozen by an admin” )
caller:ChatPrint( "[FSA] You have frozen " … target:Nick() )
end,
function( target, caller )
target:Freeze( false )
target:ChatPrint( “[FSA] You have been unfrozen by an admin” )
caller:ChatPrint( "[FSA] You have unfrozen " … target:Nick() )
end,
}
FSA_LoadPlugin(PLUGIN) --Call this to load the plugin
[/lua]

You should make the CanPerform function a default do the level checks.
Then, make the CanPerform something like CanPerformOverride.

the ID column is kinda pointless

and what’s the point of networking ranks to everyone (besides VIP)?

There is that. If you don’t create the CanPerform function the backup check runs which is basically is the caller level smaller than the target level.

I used ID as an assured way that the client and server are talking about the same thing without special characters, its column width is small enough to not get in the way, I stuck it there as its the easiest way I could think of doing it especially if the order of the list was to change.

What do you mean what’s the point of networking ranks to everyone besides VIP? Don’t understand that question.

why bother to send a persons rank to everyone, it’s pointless to network it

Explain how the client will know who are admin’s then…? Ow use UserMessages? I could do, but then its not being changed all that often so it makes little difference.

You could just not tell them, would make your “disguise” actually foolproof

Well it is at the moment…
If you really want the client never to know then go ahead and remove the networked vars, but communities generally have these ranks there to make money, that is VIP and Gold Member ranks.

Sourcebans integration anyone?

I could look into a plugin to manage this.