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



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

+ ASC is an addon/ServerActor for UT servers : client, admin tools && advanced mod 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 should install and look at all functions in with the ASC window.


Issues With UT Pure :
======================
The ASC NO LONGER has any known issues with UT Pure (as of version 748d)
Tested up to UTPureRC7G.



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=asc748d.asc_server
ServerPackages=asc748d
ServerPackages=asc7cc

NOTE : You have to put ASC Server Actor ( ServerActors=asc748d.asc_server ) at the >BOTTOM< OF THE LIST ( at least after PURE ).

- Upload: asc7.ini, asc748d.u, asc7cc.u to the /system directory
- Start the server (if you are not upgrading - if you are upgrading, read below)

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

+ The server will generate an ID for you in "asc7id.ini"
e.g. :
[asc7XX.asc_login]
ups=0411XXXX48
This is your own server ID, all clients will recognize your server with this ID.
Please save it, make a backup of your "asc7id.ini" file. You will need this ID for any upgrades.
If you are running more than one server, copy the same asc7id.ini 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 asc7id.ini in order to keep your id (ups).
example : change [asc747.asc_login] to [asc748d.asc_login]

+ If you are updating ASC, edit asc7banlist.ini in order to keep your current bans.
example : change [asc747.asc_banlist] to [asc748d.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 mutator by default. (any localmap= setting or any actorCLP will have to be deleted)


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

- Open the asc7.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 :)

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


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)

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)

PTag - Tag to protect (can be a clan tag, such as 'EoA' - kicks all wearers of the tag that aren't level 3 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!

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!

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

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.

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

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? (more about banservers can be found in the WIKI)

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

bUseAKA - Are you using the AKAv6kLog X ?  If so, set true (this package comes with 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!

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

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.
+ 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.

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

** All features might not be listed, there are so many.


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 3. 
So their clan tag, "UrS" can not be worn by anyone that is not level 3 or higher.
If they do enter without the proper level, they are kicked. Once they either remove the tag,
or enter 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.


"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 asc7.ini

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

[asc748d.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




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

+ Mayhem : For a lot of help with code.
+ |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.
+ RubberBaby : For trying it with his network.
+ The <lol> Clan : For feature suggestions and bug reports.
+ All beta testers (<lol> Clan, |KOA| Servers, WhartHog's PigPen).
+ AnthraX and Just_Me for help with code.
+ And of course the UnrealWiki community.
+ ATHoS for allowing me (MSuLL) to edit this project.
+ [AToMIC UNReAL] for the webspace to do all this from, and tons of support!