[ASC] ATH Server Controller 
FOR : UT 436-440-451 Windows/Linux >DEDICATED< Servers 
Version 7.52 - May, 2006
By Mickal DEHEZ, & Cedric MEGNAT
Editing & Support by MSuLL
WebSite: http://asc.atomicunreal.com/



What is ASC? :
===============

+ ASC is an Add-On/ServerActor for UT servers, featuring client tools, admin tools, and advanced mod tools for matches.
+ It was made for a UT CTF Server, but it is now compatible with all gametypes and mutators.
+ See features part for more information, but you can just install it and look at all functions in with the ASC window.


UT Pure / EUT Issues? :
========================
The ASC 752 has been and verified to be problem-free with UTPure RC7G and EUT 1G
It has also been tested with previous versions of UTPure and CSHP



Known Issues :
===============
ASC's Separated Death Messages feature does not work properly with EUT if the setting bEnhancedDeathMessages is
set to True.  This is due to EUT attempting to override the default delivery of death messages.  If EUT is detected
by ASC, and you have set bSeparateDeathMessages to True, it will automatically disable the bEnhancedDeathMessages
option for you.  Note that this will eliminate EUT's ability to have customized killing messages.


What's Different About the LS Version? :
=========================================
The ASC 752LS contains all of its settings in the server's INI file,
instead of the default external INI files.  This version should only
be used if you absolutely must have all the configurations kept in
the server's INI, otherwise it will be easier to use the standard
release which uses external INI files.



ATH Server Controller User Guide :
===================================
A user guide has been packaged with this file.
It is suggested that you tell your clan members, semi-admins, etc etc to read it.
It will help them in finding settings and performing actions.

Alternatively, you can also simply tell them to view it on the web at:
http://asc.atomicunreal.com/tutorial


QUICK INSTALL :
=================

- Shut down the server
- Modify your unrealtournament.ini/server.ini:

Add:

[Engine.GameEngine]
......
ServerActors=asc752LS.asc_server
ServerPackages=asc752LS
ServerPackages=asc7cc

NOTE : You have to put ASC Server Actor ( ServerActors=asc750LS.asc_server ) at the >BOTTOM< OF THE LIST!

- At the >VERY< Bottom of your server's INI, add:

[asc752LS.asc_server]
SuperLvl=7
bAlternateServer=False
AlternateIP=
AlternateButton=Play
AlternateMessage[0]=We are sorry, but server is currently full.
AlternateMessage[1]=However, you may still spectate on this server.
AlternateMessage[2]=If you wish to play right now, please press "Play",
AlternateMessage[3]=and you will be taken to the alternate server immediately.
AlternatePassword[0]=We are sorry, but the server is currently passworded for a clan match, or other private use.
AlternatePassword[1]=If you are supposed to play in this event, enter your password.
PasswordLvl[0]=
PasswordLvl[1]=
PasswordLvl[2]=
PasswordLvl[3]=
PasswordLvl[4]=
PasswordLvl[5]=
PasswordLvl[6]=
PasswordLvl[7]=



- Put in PasswordLvl passwords for all levels from 2-7 (leave 0 and 1 blank)
- Save and upload to your server!
- Upload: asc752LS.u, asc7cc.u to the /system directory
- Start the server (if you are not upgrading. If you are upgrading from an older version, read below)

IMPORTANT :
============

+ The server will generate an ID for you in your server's INI file
e.g. :
[asc7XX.asc_login]
ups=0XXXXXXX48
This is your own server ID, all clients will recognize your server with this ID.
If you are running more than one server, use the same id ( ups= ) on all servers running ASC you have,
(Clients will be able to use the same level password for all your servers).

+ If you are updating ASC, edit the server's INI in order to keep your id (ups).
example : change [asc750LS.asc_login] to [asc752LS.asc_login]

+ If you are updating ASC, edit the server's INI in order to keep your current bans.
example : change [asc750LS.asc_banlist] to [asc752LS.asc_banlist]

+ Sometimes the ASC-booter doesn't boot the server (an EPIC code problem), with the option "force mutate", 
ASC will check if mutators are enabled, if not it will consider that your server has crashed, and it will reboot. 
You must have at least one mutator working in "StartingMutators" to run this option. 
Make sure your server doesn't load any mutators by default. (any localmap= setting or any actorCLP will have to be deleted)


TO USE PLAYER REDIRECTION WHEN SERVER IS FULL/PASSWORDED :
============================================================

- Open the server's INI file
- Now look for these values:

	bAlternateServer=False
	AlternateIP=
	AlternateButton=Play
	AlternateMessage[0]=We are sorry, but server is currently full.
	AlternateMessage[1]=However, you may still spectate on this server.
	AlternateMessage[2]=If you wish to play right now, please press "Play",
	AlternateMessage[3]=and you will be taken to the alternate server immediately.
	AlternatePassword[0]=We are sorry, but the server is currently passworded for a clan match, or other private use.
	AlternatePassword[1]=If you are supposed to play in this event, enter your password.

- These values control a feature that allows you to redirect your players to another server if the server is full or passworded.
- This is mainly useful if you have multiple servers, and when the main one is full, you really want to take everyone to an alternate server.
- To use this feature, you must change "bAlternateServer=False" to "bAlternateServer=True"
- The AlternateIP field is the place where you want your players to go.  You can use an IP or host name, with a port number or password, if you wish.
- Example usages:
	AlternateIP=65.12.18.194 (server on 65.12.18.194, port 7777)
	AlternateIP=15.22.210.123:7700 (server on 15.22.210.123, port 7700)
	AlternateIP=215.62.72.59?password=test (server on 215.62.72.59, port 7777, UT game password is "test")

- The "AlternateButton=" is the text that will be on the button that a player clicks to play on the alternate server.  Make it whatever you want.
- The "AlternateMessage[x]=" fields make up the message your players will see if the server is full.  You have 4 lines, use them well.
- The "AlternatePassword[x]=" fields make up the message your players will see if the server is passworded.  You have 2 lines, use them well.
- The last 2 options, "AlternateMessage" and "AlternatePassword" are already configured with examples.  In most cases, these can be left as they currently are.


CONFIGURATION OPTIONS :
=========================

There are a LOT of options, however if I can take the time
to write them all and explain them, surely you can take the
time to read them over :)

Most of these options can be configured in-game from the GUI,
and it's highly encouraged that you do configuration from there!

-------------------


SuperLvl - This indicates the minimum level required to give level to others

bAlternateServer - Use alternate server redirection? (see above for setup)

AlternateIP - Alternate server's IP address

AlternateButton - Button text for the alternate server

AlternateMessage[0-3] - Message to give clients if alternate server is enabled, and server is full (can use up to 4 lines)

AlternatePassword[0-1] - Message to give clients if alternate server is enabled, and server is passworded (can use up to 4 lines)

Lvl1Limit - How many PUBLIC playing slots for the server

Lvl3Limit - How many PRIVATE slots to for the server (for level 3 - level 7, level 2 slots is the difference between Lvl1Limit and Lvl3Limit)

PasswordLvl[0-7] - Here is where you enter the KEYS, or passwords for the different levels.
	NOTE : Passwords do not have to be easy (put anything) because you can directly make someone the proper level from in-game.
	Both Levels 0 and 1 don't require passwords.

ShowLevelJoin - Shows a client's level when they enter the server.  False looks like: "TonyMan entered", true looks like: "[3] TonyMan entered"
	NOTE : If set to FALSE, it's harder to see a player's level when they enter the server, which makes for easier semi-admin aliasing.

bASCboot - Use ASC boot functions? (This can be setup later from IN-GAME (on the SERVER tab), and it is advised you wait until then)

GameType - Default GameType to boot to (This can be setup later from IN-GAME (on the SERVER tab), and it is advised you wait until then)

MutatorsList - Default mutators to boot with (This can be setup later from IN-GAME (on the SERVER tab), and it is advised you wait until then)

bForceMutate - Force that the server always run with at least one mutator? (can prevent a major crash, but you must use at least 1 mutator!)

bAutoFixCrash - Reboots the server if something seems wrong (for instance the GameType doesn't match the map prefix)
	NOTE : This option MUST be disabled if you run the JailBreak gametype!
	If you have issues with the server constantly restarting when running custom gametypes, set this False!

LastMap - Last map the server executed; the server sets this, do nothing with it

RespawnPTime - The amount of time in seconds a player is protected after they spawn (setting to 0 disables Respawn Protection)

bRespawnerCanDamage - Can a respawing player damage non-respawning players while protected?

bExpireOnPickup - If enabled, this will expire respawn protection early if the player picks up a weapon or special item

bTeamKillP - TeamKill protection?

bFragP - Use Frag Recovery?
	NOTE : Frag recovery saves a players frag count so if they leave or lag out, they still can recover it if they reconnect during the map.
	Due to the amount of data this requires sending, it may cause some lag.  Disable it if lag becomes an issue!

bTeamBalance - Allow for players to send team balance requests to the server? (the !team command)

bBlockBadSwitches - Attempt to detect and prevent teamswitches that will make teams uneven during team games

AutoBalance - Check for uneven teams automatically every x seconds
	NOTE : 0=Disabled

PTag - Tag to protect (can be a clan tag, such as 'EoA' - kicks all wearers of the tag that aren't level 2 or higher

MessageLine[0-3] - Message of the day lines which popup in a window that a player must confirm
	NOTE : This window doesn't popup every match. It will ONLY come up if the MOTD has changed since they last saw it!

upk - A server set MOTD timestamp; don't mess with it!

HUDRules[0-9] - 10 lines of text for displaying on a player's HUD at the start of a match

RuleSecs - Amount of time to show the rules on a client's HUD
	NOTE : Set this to '0' to disable the HUD Rules Display System

s_password - Server's ASC password; leave empty to disable

s_passcount - Number of maps to leave the password enabled

ballowspec - Require spectators to have the password as well? (if a password has been set)

bSpecPassword - Reserves the last spectator slot if the server is totally full (so admin can enter if needed)

SpecPassword - The password to use if bSpecPassword is enabled

s_MaxPlayers - The maximum player count for the server (if you are a hosted server make sure it is equal to the number of slots you ordered!)

bautopause - Automatically pause a match if a player leaves? (only works in Tournament mode!)

bAllowBanned - A server set option which controls if banned players can enter the server; don't mess with it! (resets to False at beginning of every match)

bIsStarted - Is the server started right now? Used to detect a crash; don't mess with it!

MatchName[0-3] - Preset match names
	NOTE : This should be configured from in-game as root user (lvl 7) from the 'Match Set' tab

MatchConfig[0-3] - Preset match settings
	NOTE : This should be configured from in-game as root user (lvl 7) from the 'Match Set' tab

KickTime - Amount of time a player has before he is kicked by KickIdlePlayers for being idle while playing

bKickIdlers - Enable the built-in advanced KickIdlePlayers modification?

NoKickIdleLevel - Protects players above the specified level from being kicked by KickIdlers

bOnlyKickWhenFull - Will prevent the KickIdlePlayers modification from kicking players unless the server is full

bAnti-Lag - Enable the built-in Anti-Lag system?

maxPacketLoss - amount of packetloss a player can have before being kicked

maxPing - the greatest ping a player can have before being kicked

bAllowPM - Allow the use of advanced Private Messaging features?

WindowPMLvL - Level that is allowed to send Windowed PMs (must be level 3 or higher)
	NOTE : A windowed PM will INTERRUPT a player as they play (which most players won't like very much)!
	For instance, if you wish to have this feature be exclusive to Administrators, enter 6.

SpamSecs - Amount of time to mute a player that abuses the in-game chat system
	NOTE : 0=Disabled

bAllowEndQuote - Allow clients to use the end of the match quote features?

DMDefaultSkin - This little setting will force all players to the 'default' of their skin (meaning no team colors) skins
	NOTE : Players like this feature because it keeps them from standing out if using a very colorful skin.
	This feature will ONLY be active during a Death Match game.

DMDefaultBots - This setting will force BOTS to the 'default' of their skin (meaning no team colors) skins
	NOTE : DMDefaultSkin must be set to True for this setting to have any effect.

DMClass - Class in which to use the DMDefaultSkin feature
	NOTE : The default should be fine for most people, but this must be changed if using a non-standard DM gametype (such as EUT)!
	If you are using EUT and wish to use the DMDefaultSkin feature, this setting MUST be changed!

Advertise - Add the tag [ASC] into the server's name? (example: [ASC] Carl's InstaGib Mayhem!)
	NOTE : 1=Before server name;  2=After server name;  0=Disabled

bRemoteAccess - Allow admin messaging specators to use 'mutate asc' commands for adding / removing bans?
	NOTE : This system will be useful only to those running SuperWebAdmin or another type of advanced remote admin system

bUseLogging - Log actions by players (bans, unbans, kicks, mutes, map changes, etc) to an external log file?
	NOTE : If you wish to use this feature, you may want o read the section called "ASC LOGGING", found at the end of this file.

bCheckForUpdates - Check the internet for updates to the ASC?
	NOTE : If enabled, and there are updates availible, any player that is level 7 will receieve a message.
	This message will tell the user to say !update, which will give the player more info about the updates.
	ONLY level 7 may issue the !update command. Level 6 or below will be ignored.

LastUpdate - On what day did the last update check occur?  This is setting by the server, don't change / mess with it!

UpdateServer - The domain name for updates; don't change this if you want updates to work!

UpdateURL - The URL to the updates; don't change this if you want updates to work!

BanServer1 - Use BanServer1?

BanServer1 - Use BanServer2?

BanServer1 - Use BanServer3?

BanDomain1 - The domain for BanServer1

BanDomain2 - The domain for BanServer2

BanDomain3 - The domain for BanServer3

BanURL1 - The URL for BanServer1

BanURL2 - The URL for BanServer2

BanURL3 - The URL for BanServer3

bUseUTDC - Is your server using UTDCv17 or above?  If so, set True
	NOTE : If set as true, the ASC allows for level 7 clients to SILENTLY take UTDC Shots
	If you don't want level 7 users to be able to do this, keep this setting disabled!

bUseAKA - Are you using the AKAv6kLog_X that comes with ASC?  If so, set true (files are included in the rest of the ASC installation files)

bDisableHUDMessages - Disable the ASC HUD's text messages that appear below the ChatBox? (they will still appear inside the chatbox if set True)
	NOTE : The ASC comes with an ASC HUD which displays very important information below the ChatBox.  This text can be disabled via this option.

bDisableHUDSpecMessages - Spectator's chatting will appear both in the ChatBox, but then below on the ASC HUD as well (makes it much easier to see)
	NOTE : This feature is automatically turned off if bDisableHUDMessages is set to True!

bDisableHUDImages - Disable the '> SPAWNKILL PROTECTED <' message from appearing on the ASC HUD?
	NOTE : If RespawnPTime is set to 0 (disabled), this option will have no effect!

bSeparateDeathMessages - Separates Death & Kill Messages from the rest of the chat area and places them below the chat box
	NOTE : This feature is automatically turned off if bDisableHUDMessages is set to True!
	This feature may not work with some versions of the RocketX or StrangeLove mods, as they are programmed to use a non-standard type of message

-------------------

All done with that! Not so bad after all, was it?




QUICK START :
==============

+ The first time you connect, open the ASC window by saying !open, and the window will appear.
	NOTE : If you've never been on an ASC server before, it may prompt you to bind a key to the ASC window.

+ Then open the window and setup your level password to ROOT USER (PasswordLvl[7]). Reconnect and setup everything you need.
+ It is suggested that you bind a key to the ASC window.  Do this by clicking on the 'About' tab, and then follow the instructions.


FEATURES :
===========
- There are a ton, so the best thing to do is just install it and see for yourself!


- 8 levels, Login System and Commands :
Level 0 : NOT LOGGED / BOTS

Level 1 : PUBLIC PLAYERS

Level 2 : VIP PLAYERS
- are Not limited by the level 1 player limit.
- can wear the protected tag

Level 3 : SUPERVISORS
- Kick 
- Broadcast a message on the ASC HUD

Level 4 : OPERATORS
- Are Not limited by the level 3 player limit.
- Change map 

Level 5 : MODERATORS
- Ban/Unban

Level 6 : ADMINISTRATORS
- Match Administration
- Control players (Team, Slot ...)
- Control the advanced Tournament Mod :
- Force start
- Auto Pause
- Move players to another server by IP
- Control the advanced Passworded Mod :
- Allows Spectators without password
- Send password

Level 7 : ROOT USERS
- Setup the server (boot, MOTD, levels size ...)


Other Features

- HUD Colored Messages
- Built-In Kick Idle Players V2
- Team-kill, Respawn, Frags, and Tag protections
- Team-Balancer
- Anti-Spammer
- Booting (Random map, set mutators)
- Messaging MOTD
- Remote Controller Window

Not even half the features are listed, as there are so many.
The 'Configuration Options' mentioned above should be a good explination of it all.


Tag Protection allows admins to set so that nobody can enter with a fake server or clan tag on. 
For example, clan UrS has their members set at level 2. 
So their clan tag, "UrS" can not be worn by anyone that is not level 2 or higher.
If they do enter without the proper level, they are kicked. Once they either remove the tag,
or enter at the proper level, then they may re-enter the server.

You can also set "SLOTS".
Let's say you have a 14 player public clan server. You can make 10 public slots,
2 more slots for "VIP" (clan/server friends), and a final 2 slots for members/admins/whoever.
This ensures that clan members can always play on their own server.
But some admins may not like this setup, and that's OK.
It can be disabled by setting all slots to the same number (for example 14 / 14 / 14)
	NOTE : If you set MaxPlayers to 0, ASC will read the maxplayers from your server's INI file instead
	>> THIS IS NOT, HOWEVER, RECOMMENDED!!! <<
	This will mean that after tournament mode has been disabled, you will have to manually reset the MaxPlayers limits in your server's INI file.
	Unless you have multiple servers running from the same SYSTEM folder and using different server ini files for each, you should not set MaxPlayers to 0!


"KEYS" for the different levels are sent through the ASC. You simply select a player's name,
then select the action. This eliminates the need for having to take the time to e-mail them.
It's simple and fast.


The ASC comes with advanced tournament capabilites, 
including the ability to lock down the player count when the tournament begins (no extra players).
Also, it comes with the Auto-Pause mod. When tournament mode is enabled, the Auto-Pause mod can also be enabled.
This mod will instantly pause the game if any player leaves, making unfair teams.
Once another person comes to fill in that spot, the game automatically will resume.


ASC LOGGING :
==============
The ASC has the ability to log *major* actions by Supervisors and above.  Note that it won't be logging useless stuff like switching teams or reconnecting.
The main reason I add this feature is so admins can track any abuse of a player's rights.  Logging is silent - nobody will ever know it's there but you.
Logs will NOT be created for every match! Logging will only start if activated by an action, such as a banning, kicking, etc etc.

Out of the box, the ASC will log to ../Logs, append the heading [ASC] to each file it makes.
It will put the time the log started and the mapname in the file name, and all files will end in the extention of ".log"

However, some admins may wish to configure these logging settings.
If you wish to do so:
- Shut down your server, and open the server's INI file

At the >VERY< bottom of the file, add the following section:

[asc752LS.asc_exlog]
LogTo=../Logs
LogFileHeading=[ASC]
LogFileExtension=.log
bIncludeName=False
bIncludeMap=True

Configure the options to your liking.

LogTo - Path relative to /System to put the logs in

LogFileHeading - Heading to give the logs that uniquely identifies them

LogFileExtension - Extension to append to each log file

bIncludeName - Include server's name in the log file's name?
	NOTE : This is only needed if you run multiple servers and would get any logs mixed up

bIncludeMap - Include the map name in the log file's name?
	NOTE : This is a particularly useful setting, one I suggest keeping enabled

- Save / close
- Start the server


REMOTE BAN ADDITION / REMOVAL :
================================
- To add / remove IP and ID bans remotely, use an advanced WebAdmin system (such as SuperWebAdmin),
and from it's console, enter:

mutate asc action type data

...Where action is the action to perform (ban or unban), type is the type of ban (id or ip),
and the data is either the ASC ID or the player's IP


For Example:
mutate asc ban ip 173.13.62.111
	- Would ban the IP 173.13.62.111

mutate asc ban id 1G6EFH38FJ19F45DK9HS73HBVSDBN932
	- Would ban the ASC ID 1G6EFH38FJ19F45DK9HS73HBVSDBN932



- When unbanning an IP, the IP will be added to list that ASC will check when a player enters.
	If the player's IP matches the one on the list, their ASC ID will also be automatically unbanned,
	if it was banned as well.

>> IMPORTANT!!! <<
- To use these features, bRemoteAccess MUST BE SET TO TRUE!
- If it is set to false, remote system will not be active.




THANKS TO :
============

+ Mayhem: For code snippets, ideas, suppport, and a heck of a lot of help!
+ AnthraX, Just_Me, and Rush for help with code, and support of my efforts
+ |KOA|The_Dave: For everything from beta testing to writing guides to webspace to ban testing ;)
	- It is deeply appreciated.
+ Bruce Bickar, [TTH]PJMODOS, Major Disaster: For giving us good examples.
+ Gunner: For his help with the anti-teamkill mod.
+ Rush: For the EasyMute code
+ RubberBaby: For trying it with his network.
+ All beta testers:
	- <lol> Clan, |KOA| Servers, WhartHog's PigPen,
	[ACE] Clan, -={SDA}=- Servers, Craz UT Servers, TruFF Online Gaming
	Admins that downloaded the beta versions and gave feedback
+ The UnrealWiki community.
+ UnrealAdmin.org & Azazel, for hosting the auto-update code and forums
+ ATHoS for allowing me (MSuLL) to continue this project.
+ [AToMIC UNReAL] for the webspace to do all this from, and tons of support!
+ And finally to all the others that helped make this into what it has become!