Table of Contents
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.
Logging In/Out & General Access Commands
Commands-
mutate ali <username> <password>
- admin loginmutate 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.
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.
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.
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.
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.
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
versionmutate nextmaps
- Show next map (will show up to 3)
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>
LIST
syntax:
mutate users list
This command will list all the defined users. The list will
show all users
in no specific order.
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.
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
To be announced
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.
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.
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)
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
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||