SemiAdmin

Table of Contents

  1. Introduction
  2. Installation
  3. Getting Started
    1. Logging In/Out & General Access Commands
    2. Creating Groups
    3. Creating Users
  4. Privileges
    1. User
    2. Ban
    3. Game Play
    4. Kick
    5. Ladder
    6. Maps
    7. Bots
    8. Summon
  5. Commands
    1. User
    2. Ban
    3. Game Play
    4. Kick
    5. Ladder
    6. Maps
    7. Bots
    8. Summon
  6. Security Levels
    1. User Security Level
    2. Game Security Level
  7. Examples
  8. Troubleshooting
  9. To Do

 

Introduction - top

SemiAdmin is mutator for Unreal Tournament that allow you to setup usernames and passwords with varying levels of access to the server administration commands in Unreal Tournament. It is useful for situations in which you want to allow friends and clanmates to perform *some* of the functions of a server admin (such as changing maps or mutators) but not all of them (such as kicking other users). It also an extremely useful tool for all admins that lend their server to other clans to be used for matches and scrims, as you can configure those users so that they can access only match-related commands, and maintain the security of your server, without giving away the full server admin password. All commands are accessed with the "mutate <command> <parameters>" syntax.


Installation - top

Find the [Engine.GameEngine] section of the .ini file you're using for your server. Unless you have renamed it, this is the unrealtournament.ini file, found in the UnrealTournament\System directory of your Unreal Tournament installation. Find a group of lines that begin with:

ServerActors=

and add this line after the last "ServerActors=" line:

ServerActors=SemiAdmin.SemiAdminSA

Restart the server, and SemiAdmin will be enabled.

Getting Started

Logging In/Out & General Access Commands

Commands-

mutate ali <username> <password> - admin login
mutate alo - admin logout

When SemiAdmin is first installed, the default username and password are both "admin". You can change this once you have logged in to the server. To login to SemiAdmin, bring up the console, and type:

mutate ali admin admin

You should see a message stating that so-and-so has become a limited administrator. This means that you are now logged into SemiAdmin, and can now begin issuing commands.

From here, the first thing you should do is change the admin user's login name and/or password. This is not required, but it is highly recommended to maintain the security of the server. If you decide to change both the name and password, you must do each seperately; you cannot change the username and password with one command.

To change the admin's username, type the following into the server console, replacing <new name> with the name you would like to rename the server admin to:

mutate users mod admin name <new name>

To change the admin's username, type the following into the server console, replacing <new password> with the password you would like to use on the admin account:

mutate users mod admin pass <new password>

Keep in mind that if have renamed the admin account, you will need to use that name in place of 'admin' to change the admin password.

Groups & Users

The next step is to create your groups. Groups are how SemiAdmin assigns permissions. You will never assign a permission (such as Bots or Maps) to a user. Instead, you will create groups and assign permissions to these groups. Users are then added to these groups and will inherit whatever permissions are applied to the group they belong to. A user may exist in more than one group, and permissions are cumulative.

Creating Groups

Command-

mutate groups add <group name> <privileges> <user access level> <game access level> - Add new groups

To create a group, use the mutate groups add command. There are 4 parameters for this command - group name, privileges, user access level, and game access level. I'll explain each of these parameters, then give a few examples of using this command.

Group Name

This parameter is self-explanatory. It's best to use names that help describe what function the group will have, such as "borrowserver" for a group that will contain users of other clans that will borrow your server for matches. The group name must be one word (no spaces) and can be anything you like.

Privileges

Privileges are assigned using the one letter shortcuts for the privileges. The available privileges are: U (user) B (ban) G (game) K (kick) L (ladder) M (maps) O (bots) S (summon). See the section titled "Privileges".

User Access Level A number from 0 - 255. This will be furthur explained in the section titled "Security Levels".
Game Access Level A number from 0 - 2. This will be furthur explained in the section titled "Security Levels".

 

Once you have created the groups you want, you will create users to be in those groups. If you would like to see sample configurations of SemiAdmin, I have created a few hypothetical scenarios so that you can see how the various privileges and security levels interact with each other. Click here to view the scenarios.

Creating Users

Privileges

SemiAdmin commands are grouped into privileges, based on what they do. There are 8 privilege groups, each containing their own set of commands. This section will explain what each group does, and list the traditional admin commands each privilege handles.

The privilege groups are as follows:

U - User Commands
B - Ban Commands
G - Game Commands
K - Kick Commands
L - Ladder Commands
M - Map Commands
O - Bot Commands
S - Summon Command

Privileges B K L M O and S are either on or off. A group that has M privilege, for instance, is able to use all of the commands of the maps privilege, and a group that does not have M privilege, is able to use none of the commands of the maps privilege.

U and G however, are unique, in that the commands for these groups are furthur limited by access levels. Each group that you create will have a user access level and a game access level. The User Access Level controls which groups that group may modify (there are also other implications of this security level - see Security Levels for more information), while the game access level controls which of the "Game" privilege commands the groups may access.

Privilege U - User

Corresponding Server Admin Commands

None - A configurable multi-user admin system does not exist in Unreal Tournament by default

Description

User Privilege allows members of a group to add players to a group, delete players from a group, or modify a player's login name or password. Of course, this can present a problem, so the User Access Level was added to SemiAdmin to provide a way to control which groups a user with U privilege can modify. When you create a group, you must specify both a Game Access Level, and a User Access Level. The available settings for User Access Levels are 0 thru 254. 255 is reserved for Master Admin Group. When you login to SemiAdmin for the first time, it creates an 'admin' group that has a User Access Level of 255, adds a user to this group with a name of "admin" and a password of "admin". The admin group is defined as having all privileges, is able to modify all parameters of SemiAdmin, and can use all commands on any player. See User Access Level for a detailed explanation of the way the User privilege works.

NOTE: Any group configured with U privilege will also have access to the commands in all other privilege groups. The only exception to this is the B privilege (this is by popular demand - it seemed to cause trouble to allow users with User privilege to also ban players). As a result, only groups configured specifically with the B privilege will be able to ban players. All other commands, however, will be available to members of groups that have been configured with the U privilege, regardless of whether that group had been assigned other privileges as well. In future versions, you will be able to configure a limitation to this so that a group with U privilege will only be able to access privileges that have been assigned to groups with a lower User Access Level. (to explain, the U privilege is like the "Queen" in Chess [in that her powers are a combination of the lower classes' powers], - by assigning the U privilege, the group automatically recieves access to all the other privileges as well - except the B privilege; so in future versions, you will be able to limit that "Queen" power so that if you want a group of players that will be allowed to summon monsters, but nothing else (for instance), and you would also like them to be able to enable their friends to summon monsters as well, if they so desire (by adding the friend to their group), BUT you do not want any of those players to be able to switch maps, change gametypes, etc. simply because they have U privilege. If they cannot modify a group, they will not be able to use its privileges either.

Privilege B - Ban Commands

Description

Corresponding Server Admin Commands

kickban <player name>

The ability to Ban a player by playerid does not exist in Unreal Tournament. It was included in SemiAdmin to enable you to easily administrate players that use ascii symbols or control codes in their player name.

 

Privilege G - Game Commands

Privilege K - Kick Commands

Privilege L - Ladder Commands

Privilege M - Map Commands

Privilege O - Bot Commands

Privilege S - Summon Command

 

 

Commands

SemiAdmin uses its own set of commands to influence the game. Instead of using 'switchlevel CTF-Face.unr' for instance, you will use 'mutate map CTF-Face.unr'. The following is a list of all available commands for each privilege.

Key:

example: mutate addbot [<#>|<botname [botname] ...>]

<> - Parameter is mandatory. It must be included or you will recieve an error.

[ ] - Everything inside of these brackets is an optional parameter. You may include this parameter is desired, but the command will still work without it.

a | b - Denotes a choice. Either use a or b, but not both.

... - The last parameter may be repeated as many times as necessary to achieve the desired effect.

In our example, we'll use the addbot command. There are several things you can do when you add a bot. The basic command is mutate addbot. This works fine, and will cause the server to add one randomly chosen bot to the game. Thus, the remaining parameters are optional, as denoted by the [ ] brackets surrounding them. If you decide to include parameters, you may add a particular number of bots, or you may choose to add 1 or more bots by name. This choice is denoted by the | between the required parameters <#> | <botname>. So you must include a number, or you must include a name. If you include a name, you may also include additional names, but it is not required, as denoted by the [ ] surrounding the second botname parameter. The ... tells you that you may continue with as many names as you would like.

mutate saver - Show SemiAdmin version
mutate nextmaps - Show next map (will show up to 3)


Privilege U - User Commands

 

Parameter

Type

Explanation

username Text The name that will be given to the new user. This will be the name they use to login.
password Text The default password the new user will use to login.
group Text The initial group that the user will belong to.

ADD

syntax:
mutate users add <username> <password> <group>

This command will allow you to add a new user to a group. The user will inherit whatever privileges and security levels the group contains.

DEL

syntax:
mutate users del <username>

This command will remove the user from all groups, thus completely removing the user from the server.

MOD

syntax:
mutate users mod <username> name <new username>

mutate users mod <username> pass <new password>
mutate users mod <username> group <new group>

These commands allow you to modify the username, password, or group membership of any user. You may only change one parameter at a time, and changes take effect immediately.

LIST

syntax:
mutate users list

This command will list all the defined users. The list will show all users
in no specific order.


Privilege B - Ban Commands

Parameter

Type

Explanation

playername Text The player's name, as seen on the scoreboard in Unreal Tournament.
playerid Integer The ID given to the player by the kicklist command.

BAN

syntax : mutate ban <playername>

Bans the specified player using his player name.

BANID

syntax: mutate banid <playerid>

Bans the player associated with the playerid. A user's playerid may be obtained by using the kicklist command described under Privilege K - Kick Commands.


Privilege G - Game Play Commands

Parameter

Type

Explanation

gamename Text The short or long version of the game name.
gameclass Text The class name of a game type.
setting Text The name of the setting you would like to change, as it appears in the .ini or .u file.
value Varies Value you would like to assign the setting.
restart Boolean Use 0 if a restart is not necessary; Use 1 to make SemiAdmin restart the server after changes are applied

EDIT

syntax

mutate game edit [gamename | gameclass]

This subcommand will make you the current game editor. As the current game editor, you will be able to use the set and applychanges commands. You must become the game editor before you will be able to make any changes to the game (tournament mode, air speed, minimum number of players, etc.). If you issue the game edit command withoout specifying any parameters, SemiAdmin assumes you want to modify the current game class only.

SET

syntax

mutate game set <setting> <value>

This command will allow you to change all configurable parameters of the game type you have selected to modify using the game edit command. Each game setting has a required access level (Presently, these access levels are hard coded, and cannot be configured. Future versions may include a method to set your own access levels for game settings). In order to configure a game setting, the group that a SemiAdmin user belongs to must be configured with a game access level equal to or greater than the required game access level of the setting he is trying to change. For a more detailed explanation, see Security Levels.

GET

syntax

mutate game get <* | setting>

Allow you to enumerate the current value of a setting. To see the values of all configurable settings, use * as the parameter.

APPLYCHANGES

syntax

mutate game applychanges <restart>

Applies the changes made while in game edit mode. You must use this command after editing game settings in order to make those changes take effect immediately. You must also specify whether you would like the server restarted in order for the changes to take effect.

CHANGETO

syntax

mutate game changeto <gamename | gameclass>

This command will switch the server to the game type you specify. You may specify game type by game name or game class.


Privilege K - Kick Commands

Parameter

Type

Explanation

playername Text The player's name, as seen on the scoreboard in Unreal Tournament.
playerid Integer The ID given to the player by the kicklist command.
mask Text All of part of player's name. Different from playername only in that if used in combination with the wildcard string *, it may contain only part of a player's name, or only the matching part of multiple player's names.

KICK

syntax

mutate kick <playername [playername] ...>

Kicks the specified player using their player name. You may specify more than one player name.

KICKID

syntax

mutate kickid <playerid [playerid] ...>

Kicks the player associated with the playerid. A player's playerid may be acquired using the kicklist command.

KICKPART

syntax

mutate kickpart <[*]<mask>[*] [[*]<mask>[*]] ...>

Kicks a player using only a part of their name. Also used to kick multiple players whose name match the wildcard.
(Ex: mutate kickpart PoD* would kick all player's whose names begin with "PoD")

KICKLIST

syntax

mutate kicklist

Returns a list of currently connected players, along with their associated playerid. This is used to enumerate the playerid that will be used in the banid and kickid commands. Results are generated in a table-style format, with one line per currently connected player. Bots are not included in the list. Example output of the kicklist command

   1:FriscoKid
   3:ôwnzYou
  14:Onyx
  21:Sir_Slamalot
   8:Cool_water
   6:Tooquickforyou
   2:You-can't-kick-me
   4:§§§§§inDaHouse


Privilege L - Ladder Commands

To be announced


Privilege M - Map Commands

Parameter

Type

Explanation

mapname Text The name of the map, with or without the .unr extension.

{mapname}

syntax

mutate map <mapname>

Switches the server to the specified map name.

NEXT

syntax

mutate map next

Switches the server to the next map in rotation.

RESTART

syntax

mutate map restart

Restarts the game on the current map.


Privilege O - Bot Commands

Parameter

Type

Explanation

botname Text The name of the bot, as configured in the server's user.ini.
# Integer Number of bots to add or remove

KILLBOTS

syntax

mutate killbots

This will remove all bots from the current game, but does not affect default number of minimum players. Bots will join game on next map while mimimum number of players is not reached.

ADDBOT

syntax

mutate addbot [<#>|<botname [botname] ...>]

Adds one or more bots. If no parameters are specified, the server adds one randomly chose bot. You may add a certain number of bots, by specifying a number as a parameter. Alternately, you may add specific bots by specifying their names as parameters. You may add more than one bot at once by seperating their names with spaces. If the bot's name is misspelled or doesn't exist, the server will randomly choose a valid bot name and add it to the game.

DELBOT

syntax

mutate delbot [#|<botname [botname] ...>]

Removes bots from the current game, without affecting the minimum number of players setting. Just as with the addbot command, you may specify a number to remove a particular number of bots from the game, or you can specify one or more names to remove specific bots.


Privilege S - Summon Command

Parameter

Type

Explanation

objectclass Text The class definition of the object you wish to summon. For a complete list of summon objects, and their corresponding class names, see Summon Object Names

 

SUMMON

syntax

mutate summon <objectclass>

This command works exactly the way the traditional summon command does. Most pawns can be summoned anywhere, at any time. However, if you find that you are unable to summon one of the larger pawns, make sure that there is enough room where you are to generate the pawn (in some cases, you must stand on a ledge)

Security Levels

Game Access Level

User Access Level

The User Access Level is used to control whether or not a particular semiadmin can add, delete, or modify a member of a group. Any group that is assigned the U privilege will be able to modify any groups that have a lower User Access Level. Remember, when the Master Admin creates the groups, he will assign each group a Game Access Level as well as a User Access Level. The User Access Level is used to determine where in the heirarchy a group belongs. Members of a group that has a User Access Level of 100 would not be able to add users to a group that was configured by the Master Admin with a User Access Level of 200, for instance. The same thing goes for deleting or modifying users of the higher group, of course.

However, any member of this group that was configured with a User Access Level of 100 (and 100 is merely used for the sake of example - there is no particular reason for us to use this number) would be able to add, delete, or modify users of ANY group that has a User Access Level less than 100. (Provided that I had configured that group with the U privilege in the first place, heh) --- Here is an example:

I create 2 groups, calling them 'Kickers' and 'Banners'. Kickers will have a User Access Level of 100, and Banners will have a User Access Level of 200. Kickers will be a group of players that have shown responsibility and maturity in the game, as well as in the forums and IRC. I would like these players to be able to kick offensive players from my server. I do not, however, want them to be able to ban anyone. For that, I will use the Banners group. This group will consist of players I know and trust to use good judgement should they decide to ban someone. I also believe that these players will do everything in their power to avoid banning someone, but will ban if it becomes necessary.

Let's say, for the sake of example, that I also assign the U privilege to the 'Banners' group, but not to the 'Kickers' group. This will result in any member of the 'Banners' group being able to add another user to the 'Kickers' group (should they decide that a player has shown responsibilty), delete a player from the 'Kickers' group (should they decide that a player has abused their power), or modify a player's login/password (should they discover that a password has become compromised, for example). When a user of the 'Banners' group performs a USER command, SemiAdmin will check two things - first, it will check to see if the user's group has U privileges; next, it will check to make sure that the group that this user belongs to has a higher {or equal} User Access Level than the group of the user he is trying to modify. If the answer to both checks is 'yes', the command is executed. If not, the command is dismissed.

Thus, if the roles were reversed, and I had assigned the U privilege instead to the 'Kickers' group, while not assigning it to the 'Banners' group, then the 'Kickers' would be able to add players to the 'Kickers' group, but would not be able to modify the 'Banners' group at all. Meanwhile, the 'Banners' group would not be able to modify any groups since the 'Banners' group in this case does not have the U privilege.

 

Appendix A - Game names and abbreviations used in SemiAdmin

Game Type Short Name Long Name Class Name
Deathmatch DMP DeathMatchPlus Botpack.DeathMatchPlus
Team Deathmatch TDM TeamDeathMatch Botpack.TeamGamePlus
Last Man Standing LMS LastManStanding Botpack.LastManStanding
Assault ASS Assault Botpack.Assault
Capture The Flag CTF CatchTheFlag Botpack.CTFGame
Domination DOM Domination Botpack.Domination

Appendix B - Summon Object Class Names

 
Monsters Class Definition
   
Warlord unreali.warlord
Titan unreali.titan
Stone Titan unreali.stonetitan
Squid unreali.squid
Slith unreali.slith
Skaarj unreali.skaarj
Warrior unreali.skaarjwarrior
Scout unreali.skaarjscout
Lord unreali.skaarjlord
Berserker unreali.skaarjberserker
Assassin unreali.skaarjassassin
Ice Skaarj unreali.iceskaarj
Trooper unreali.skaarjtrooper
Sniper unreali.skaarjsniper
Officer unreali.skaarjofficer
Infantry unreali.skaarjinfantry
Gunner unreali.skaarjgunner
Queen unreali.queen
Pupae unreali.pupae
Nali unreali.nali
Priest unreali.nalipriest
Mercenary unreali.mercenary
Elite Mercenary unreali.mercenaryelite
Manta unreali.manta
Giant Manta unreali.giantmanta
Cave Manta unreali.cavemanta
Krall unreali.krall
Small Krall unreali.lesserkrall
Elite Krall unreali.krallelite
GasBag unreali.gasbag
Giant GasBag unreali.giantgasbag
Fly unreali.fly
DevilFish unreali.devilfish
Cow unreali.cow
Baby Cow unreali.babycow
Tentacle unreali.tentacle
Brute unreali.brute
Small Brute unreali.lesserbrute
Behemoth unreali.behemoth
Rabbit unreali.nalirabbit
HorseFly unreali.horsefly
Bloblet unreali.bloblet
Biter Fish unreali.biterfish
Bird unreali.bird1
Parent Blob unreali.parentblob
HorseFly Swarm unreali.horseflyswarm
DeadBody Swarm unreali.deadbodyswarm
BiterFish School unreali.biterfishschool
Bots  
   
Skaarj unreali.skaarjplayerbot
Human unreali.humanbot
Male unreali.malebot
MaleOne unreali.maleonebot
MaleTwo unreali.maletwobot
MaleThree unreali.malethreebot
Female unreali.femalebot
FemaleOne unreali.femaleonebot
FemaleTwo unreali.femaletwobot
Objects  
   
Health unreali.health
Shieldbelt unreali.shieldbelt
Jump Boots unreali.jumpboots
Cannon unreali.cannon
Unreal Rocket Launcher unreali.eightball
Unreal Flak Cannon unreali.flakcannon
Quad Shot unreali.quadshot
Warhead Launcher unreali.warheadlauncher
Enforcer unreali.enforcer
Double Enforcer unreali.doubleenforcer
Minigun unreali.minigun2
Pulsegun unreali.pulsegun
Shock Rifle unreali.shockrifle
Sniper Rifle unreali.sniperrifle
Bio Rifle unreali.biorifle
UT Rocket Launcher unreali.ut_eightball
UT Flak Cannon unreali.ut_flakcannon
Chainsaw unreali.chainsaw
Rifle unreali.rifle
Razorgun unreali.razorjack
GES Bio Rifle unreali.gesbiorifle
Mini-gun unreali.minigun
Dispersion Pistol unreali.dispersionpistol
Stinger unreali.stinger
Auto Mag unreali.automag
ASMD unreali.asmd
Clip unreali.clip
Rifle Ammo unreali.rifleround
Flak Ammo unreali.flakshellammo
Default Ammo unreali.defaultammo
Forcefield unreali.forceshield
Voice Box unreali.voicebox