=================================================================
| Program 	: TF Server Configuration Program		|
| Author 	: Steve "[DB]Mr Twinkie" Rhoods			|
| E-Mail	: rhoods@globalnet.co.uk			|
| URL		: http://www.users.globalnet.co.uk/~rhoods	|
| Version 	: 1.00						|
| Date		: 18th December 1997				|
| Requirements	: Win95, 800x600 Res Monitor (Min), QWSV V2.10	|
=================================================================

Contents

1 About
2 How To
3 Summary of Commands
4 Credits

========================================================================
About

This is a simple program that I wrote for TeamFortress server admins to
help create *.CFG files, although this program won't produce a really
detailed script, nearly all the basic commands except a MAP.CFG file and
makes commands like Localinfo, Serverinfo, Autokick, Player Options.
It will also allow people to edit a file once it has been created in the
display window.

========================================================================
How To

Using the program is simple. Double-click on the TFSCP.EXE icon and let
the program load up.

When loaded if your screen resolution is at least 800x600 you should be
able to see everything.

You can tab between windows entering text or changing check boxex etc.
When your settings are correct goto the UPDATE button and click it.
The script should then appear in the window, you can then look at it and
change it if you want.

When the script is finalised enter the path and name of the file you want
it stored in and click the WRITE button.

If you want to start again all you have to do is hit the RESET button,
and EXIT quits.

========================================================================
Summary Of Commands By Teamfortress Software Pty. Ltd.

A Message Of the Day can be set using the the localinfo keys "motd1" and
"motd2". When players connect, the two strings will be centerprinted to
them. 

    localinfo motd1 "Welcome to GamesOnline TF"
    localinfo motd2 "http://www.gamesonline.net.au/"

Various toggleable options can be set on the server, as follows:

    "localinfo a on"
    "localinfo a off"
        Turn ON/OFF the Autoteaming.
        If it's ON, players who join will automatically be assigned to the 
        team with the lowest number of players in it.

    "localinfo t on"
    "localinfo t off"
        Turn ON/OFF the TeamFrags.
        If it's ON, player's frags will always be equal to their team's score.

    "localinfo fts on"
        Turn ON/OFF the Full Team Score.
        If it's ON, player's frags will always be equal to their team's score.

    "localinfo s on"
    "localinfo s off"
        Turn ON/OFF the Spy's invisibility.
        If it's ON, Spies become invisible when they go undercover.
        If it's OFF, Spies change their skin/color when they go undercover.

    "localinfo g on"
    "localinfo g off"
        Turn ON/OFF the Grappling Hook.
        If it's OFF, players will never have access to it. If it's ON,
        players will have access to it on maps that don't forbid it.

	"localinfo rd 10"
	"localinfo rd 5"				
		Turn ON a Respawn Delay.
		You can set the delay to any numerical value you like. High
		Respawn Delays aren't much fun.

    "localinfo fe on"
        Turn ON Flag Emulation. 
        When this is on, TF will replace any TF goals using the 
        old Quake keys for flags with the new TF Flag. Good to turn
        on for the old TF maps, like 2fort4.

    "localinfo use_standard on"
        Turn ON Use War Standard.
        When this is on, TF will replace any TF Flags with the 
        new TF War Standard.

These variables can all be set using the one key, "temp1". The key is a 
bitfield, with the bits as follows:
			Respawn Delay 		    4
			Autoteam On			    64	
			TeamFrags On		    128	
			SpyInvis On			    512	
			Grapple On			    1024
            FullTeamScore           2048
            Flag Emulation On       4096
            Use War Standard On     8192
If any bit is NOT set, then that option is OFF.
For example, if you wanted to have the grappling hook, autoteaming, and
spyinvis on, you could do "localinfo temp1 1600" (64 + 512 + 1024 = 1600).

=--------------=
The "team" variable for each team can be set as follows:
	
	"localinfo t1 blue"
	"localinfo t2 red"
	"localinfo t3 yell"
	"localinfo t4 gren"

		These set each of the 4 Team's "team" variables. 
		e.g. any player in Team 1 will have a "team" variable of "blue".

		N.B. Make sure the variable is not more than 4 characters.

Please note that you only need to do these if you want them to be
something other than "blue", "red", "yell", "gren". They revert to these
defaults automatically if the server keys are not set.

=--------------=
The teamplay options can be set using the teamplay variable,
which is also a bitfield, as follows:

	Bit 1:	    Teamplay On.
	Bit 2:	    Team-members take 1/2 damage from direct fire.
	Bit 4:	    Team-members take No damage from direct fire.
	Bit 8:	    Team-members take 1/2 damage from area-affect weaponry.
	Bit 16:	    Team-members take No damage from area-affect weaponry.
	Bit 32:     Team Equalisation : give advantage to team with less members.
	Bit 64:     Team Equalisation : give advantage to team with lower score.
	Bit 128:	Team-members only lose 1/2 armor from direct fire.
	Bit 256:	Team-members lose no armor from direct fire.
	Bit 512:	Team-members only lose 1/2 armor from area-affect weaponry.
	Bit 1024:	Team-members lose no armor from area-affect weaponry.
    Bit 2048:   Team-members take 1/2 mirror damage from direct fire.
    Bit 4096:   Team-members take full mirror damage from direct fire.
    Bit 8192:   Team-members take 1/2 mirror damage from area-affect weaponry.
    Bit 16384:  Team-members take full mirror damage from area-affect weaponry.

Area Effect Weaponry
	Anything which explodes, hurting people in an area around it.
	e.g. Rocket blasts, grenades.

Direct Fire
	Anything which does damage directly to one person.
	e.g. Shotguns, rifles, assault cannon, and nails.

N.B. QSpy sorts servers based upon the teamplay variable. For QSpy to be
     able to sort your server, make sure you put "?TF" after the teamplay
	 variable.

For example, if you wanted to have teammates take 1/2 damage from 
area effects, No damage from direct fire, and full team equalisation,
you'd set "teamplay 109?TF" (1 + 4 + 8 + 32 + 64 = 109).

The Team Equilisation gives an advantage to a team by altering the
amount of damage they do and take.  It is designed to be subtle, but
it can still help the losing team fight back. Not good for tournaments
though.

=--------------=
If you're running a server which allows players to injure their 
teammates, you should probably setup the AutoKicker.
The AutoKicker kicks any player in the game that kills a set
number of teammates within a set time limit.
You can set both these variables as follows:
    
    "localinfo akt 60" // 1 minute Time period
        The time period for the AutoKicker, in seconds.
        Players will be kicked if they kill the set amount of 
        teammates within this time.


    "localinfo akk 5" // 5 teamkills b4 being kicked
        The number of teammates a player has to kill within the
        autokick time period to trigger the autokick.

So, if you set the AutoKicker time period to 60, and the
number of teamkills to 5, any player who kills 5 or more
teammates within 1 minute would be kicked.

=--------------=
You can restrict the number of players in each team that can play
the same class.
    "localinfo cr_scout 3"     
    
    "localinfo cr_sc 3"        	// Abbreviations
    "localinfo cr_sn 3"    	// No more than 3 snipers on a team
    "localinfo cr_so -1"  	// No soldiers on any team
    "localinfo cr_de 3"   
    "localinfo cr_me 3"     
    "localinfo cr_hw 3"     
    "localinfo cr_py 3"    
    "localinfo cr_sp 0"    	// Redundant. (infinite spies allowed)
    "localinfo cr_en 3" 
    "localinfo cr_ra 1"    

Setting any class's limit to -1 prevents anyone from playing that class.
Setting any class's limit to 0 is the same as not specifying that class's
restriction at all... no prevention on the number of players playing that class.

N.B. RandomPC is considered a separate class. If the Soldier limit of 2,
     a team might still have more than 2 soldiers at one time, if a player
     somewhere is a RandomPC, as a soldier.
     So, if you want to rigidly enforce the class limits, for clan battles or
     whatever, prevent anyone from playing RandomPC.
     e.g.

        "localinfo cr_ra -1"   // Abbreviation

=--------------=
Server administrator's can give other trusted players "admin" passwords,
which gives them the power to perform admin commands without rcon.

Admin Passwords
    To enable player-admins, you must specify an Admin password
    in the server's localinfo, as follows:
        localinfo adminpwd <password>
    e.g.
        localinfo adminpwd tfrocks
    Once this has been done, you simply give this password to
    the people you want to allow admin access to.
    
    The admins must put their password into a client setinfo
    key called "adminpwd". E.g. each admin would do this
    command in the console:
        setinfo adminpwd tfrocks
    This must be done BEFORE joining the TF server.
    As soon as the player joins, TF will recognise the admin
    password, clear it to prevent others seeing it, and then
    mark that player as being an admin.

Admin Commands
    Any admin can perform these commands.
    "countplayers"
        Simply displays the total number of players in the game,
        and how many are in each team.

    "kick"
        Cycles through the players in the game, asking you if you
        want to kick each of them. If you do, type "yes".
        If not, use the "kick" command again to cycle to the 
        next player.

    "ceasefire"
        Toggles cease-fire on/off. While cease-fire is on, players
        cannot move or shoot.

=--------------=
Finally, the maps the server can cycle through are now defined in cfg files.
Create a directory under the quake\fortress directory called "qwmcycle".
In this directory you can put cfg files that the patch will use.

The directory, qwmcycle, can be overridden by setting the "cycledir"
or "md" localinfo keys to an alternative directory.
e.g
    "localinfo cycledir server1" 
    "localinfo cd server1"         // Abbreviation
    Both make the server take it's map cfg files from the 
    fortress\server1 directory.

Each cfg file should be called "mapX.cfg", where X is the map number in
the map loop. 
E.g. If you wanted to cycle between three maps (2fort_32, storm1, well6), you 
	 would make 3 cfg files as follows:
		map1.cfg	which contains the following line:
						map 2fort_32
		map2.cfg	which contains the following line:
						map storm1
		map3.cfg	which contains the following line:
						map well6
	
NOTE! At the end of the list, you _MUST_ create another cfg file,
which consists of one line which sets serverinfo n 0.

E.g. in the above example, you would also need this:
		map4.cfg	which contains the following line:
						serverinfo n 0

And last, you must put a map command in your server.cfg file which
changes map to the first map in the list, and a serverinfo n 1 to prevent
the first map playing twice
E.g. in the above example, at the end of your server.cfg you would put:
		map 2fort_32
		serverinfo n 1

There is no limit to the number of maps you can cycle between. You can also
use the cfg file to change any server details. Lets say that in the above
example, you wanted to only allow 16 players onto storm1, and 32 onto the rest.
You would change the following files:
		map2.cfg	would become:
						maxclients 16
						map storm1
		map3.cfg	would become:
						maxclients 32
						map well6

If you want to make a server rerun the same level over and over again,
you will still have to make a map1.cfg that contains a map command, and
a map2.cfg that sets serverinfo n 0.
	
N.B. Make sure all the maps in the list are spelt correctly and that they
     are in your server's map directory. If they're not, the server will 
     crash when it tries to enter the map.

N.B. The "n" serverinfo key stores the current map number in the list. If
	 you want to jump around the levels, you can just set the key to 
	 (desired level number - 1).
	 e.g. if you wanted to jump to map 3 in the list, enter this:
				serverinfo n 2
	 	  and then end the level.

=--------------=
Advanced Map Cycling

TF 2.65 allows you to cycle maps based upon the number of players in the game.
It works within the old map cycling. You tell TF a minimum and maximum number
of players needed for a map, and then a cfg file to execute if the current 
number of players is within that range.
e.g. Say in the above example, you wanted storm1 to run only if there's
     no more than 6 players in the game.
     You would replace map2.cfg with a map2.cfg looking like this:
        localinfo minp 0        <-- Minimum players of 0
        localinfo maxp 6        <-- Maximum players of 6
        localinfo nmap storm    <-- The .cfg file to execute if the players fit

     Then, you would put a "storm.cfg" file in the map cycling directory
     which contained these lines:
        maxclients 16
        map storm1

If the number of players is NOT within the range, the map cycling simply 
moves onto the next mapX.cfg file. So, it might be a good idea to always have 
at least one mapX.cfg file which doesn't have any player requirements... in 
case the number of players in the game doesn't fit the requirements for any 
map.

You can move in and out of the simpler method.
Here's a full example of a map cycling setup:

    map1.cfg
                exec standard.cfg
                map 2fort4

    map2.cfg    
                exec standard.cfg
                map rock1

    map3.cfg    
                exec standard.cfg
                localinfo minp 12
                localinfo maxp 32
                localinfo nmap well6

    map4.cfg
                exec standard.cfg
                localinfo minp 0
                localinfo maxp 15
                localinfo nmap hunted
                
    map5.cfg    
                exec standard.cfg
                timelimit 5
                map accel

    map6.cfg    
                exec standard.cfg
                localinfo minp 16
                localinfo maxp 32
                localinfo nmap canalzon

    map7.cfg
                serverinfo n 0


    well6.cfg
                exec standard.cfg
                map well6

    hunted.cfg
                exec standard.cfg
                fraglimit 120
                localinfo autoteam "off"
                localinfo cr_de "-1"
                localinfo cr_sp "-1"
                localinfo cr_en "-1"
                localinfo cr_ra "-1"
                localinfo respawn_delay "7"
                map hunted

    canalzon.cfg
                exec standard.cfg
                map canalzon

    standard.cfg
                <base setup for all maps>

In this example, the maps would cycle through 2fort4, rock1, then well6 if 
there was at least 12 players, hunted if there was <= 15 players, then
5 minutes of accel (fun for all the family! ;), and finally canalzone if there
was at least 16 players. If the number of players doesn't fit for any of the
maps, it simply moves onto the next one.

=============================================================================

Credits

Based on original idea from QFig and supplemented by Ryan Haney's TFiguration.

TEAMFORTRESS v2.6 Clan Update    		27/6/97
TeamFortress Software Pty. Ltd.
Company WWW: http://www.teamfortress.com/
TF Web Site: http://www.planetquake.com/teamfortress