
---=====================================================---
                Virtual Commentator
---=====================================================---
   Version 0.476 - Dec 11, 2007 - By: Paavo Ahola
---=====================================================---

*****************************************************************************
*                          COPYRIGHT NOTICE                                 *
*****************************************************************************
*                        THIS IS FREEWARE                                   *
* COPYING AND SPREADING ENGOURAGED. SPREADING ALTERED VERSIONS WITHOUT      *
* CLEARLY STATING IT NOT ALLOWED. EXCEPT ALTERING NOT ALLOWED FOR EXE AND   *
* DLL FILES AND README FILES                                                *
* AUTHOR DOESN'T TAKE ANY RESPONSIBILITY FOR ANY DAMAGE CAUSED TO YOUR      *
* HARDWARE, SOFTWARE, YOU, YOUR HOUSE, CAT, DOG, MOTHER IN LAW, ...         *
*****************************************************************************

Final word: This readme file might contain some errors as the program is still
changing. The usability will be improved for the later versions.

Coding:
	Paavo Ahola (Aquilifer)
  
Additional Graphics:
	[PCT] Haddock - car pics, backgrounds, etc.
	Paavo Ahola - some extra graphics

Testing group:
	PCT motorsport
  
Very special thanks for some ideas, bug reporting, testing, etc:
	[PCT] Haddock
	NCR Team and especially [NCR] Nasty
	X-Ter
	The whole Airattack team, especially [AA] Silver77 and [AA] Punchy
	[SRS]Xenowolf for testing the stage rally tool
   Anybody I forgot to mention but who have been helpful


Requirements:
-------------------
- LFS version 0.5X (S1, S2 etc license not needed)
   This requires to have LFS 0.5 patch X (Insim version 4).
   (some late W patches might work too - W37...)
   This does NOT work in earlier patches (W,V, U,...).
   
 
  Client (normal game mode), non dedicated or dedicated server.
  Those are the tested versions but working not guaranteed in earlier versions,
  even all found bugs have been fixed. In future the compatibility with the
  latest version is the main aim and support for earlier version may not be
  guaranteed.
  
To install:
-------------------
1) Copy the files into own directory (keep the internal directory structure)
2) If wanting to use car radio and you use Winamp - copy the gen_warcudp.dll
   and warcudp.ini into Winamp directory of 'general' plugins. For using other
   players the DLL doesn't work, but in the radio section had instructions how
   to set other players to work w/o the DLL.


Tools included:
-------------------
- lap time logging
- split time logging
- sector time logging + theoretical best lap
- speed trap speed logging
- trip meter (start, stop, clear, read distance)
- auto-hi (greets automaticly your friends :) when they enter
- Lap time estimation (gap to best)
- car radio
- alternative point system (customize how much points for each place)
(- GPS for setting the speed trap in a custom location)
- Auto save race results (and server best laps) into XML files
- track rotator
- automaticly force idlers to spectate
- pit stop timer
- Flood filter
- Curse filter

The lap time etc logging gives number of commands to list many different
statistics from all players. Those commands are not listed here as separate
tools. See the list of commands.

VCom works both in host and guest computers. So you could run logging for a
server by running VCom in a guest computer. This is not recommended however
unless using silent mode (do not spam other people's servers with messages).

Tool codes (for quick summing up the needed value)
- Nothing.................     0
- Lap times...............    +1
- Split times.............    +2
- Speed trap..............    +4
- Trip meter..............    +8
- Auto hi.................   +16 (client tool)
- Lap time estimation.....   +32
- Car radio...............   +64 (client tool)
- Stage rally.............  +128
- Good times..............  +256
- Lap logger..............  +512
- Message board........... +1024
- Auto save race results.. +2048
- Track rotator........... +4096
- Spectate idlers......... +8192
- Pit stop timer.......... +16384
- Flood filter............ +32768
- Curse filter............ +65536

- All..................... 131071

IMPORTANT NOTE: The tools marked as client tools are considered to be mostly
client tools. If these (any combination) and no other are used the guest
commands (starting with !) are disabled and VCom can be used as a client
(guest) tool in a server where VCom is running in server mode. Otherwise typing
these commands can cause it to be run both server and guest VCom apps.

Examples:
- vcom           (all tools)
- vcom 112       (only the client tools - radio, alarm, auto hi)


To run:
-------------------
- Adjust the config file before the very first run
- start lfs with "lfs /insim=xxxxx" or type /insim xxxxx" in lfs, where xxxxx
   is the port number for InSim
- type vcom on the command line or use shortcut (or what ever)
NOTE: If you have firewall on your computer, allow vcom and lfs run both
 client and server for those addresses in which the vcom and lfs are running
- to override the tools started in the config file, type...
  "vcom <toolmode>"
  where the toolmode is a number in decimal telling the tools in use. The
  number is in decimal, but is composed from bits like 
  "vcom 17" starts tools 1 and 5 (10001 base2 = 17 base10)
  You can just add the mode numbers given is this file.
  If VCom already running command /mso vcom mode <mode> does the same thing.
  
  Also if you want to run certain setup file (setup.dat is default) you can
  give it with -f <file>. In any case the setup file given mode can be always
  overwritten with -m <mode>. For example:
  vcom -f setup2.dat -m 65535
  ...loads setup2.dat and overwrites the mode given in it, by running all.
  (note: vcom <mode> is the same as vcom -m <mode> )


To configure
-------------------
File setup.dat contains much of the data game uses and which can be altered by
user. It is a plain text file, which can be opened into any text editor.
Before hacking with it, I warn that the program can be quite sensitive about
the format.

The comment is like C++ comment...
// ho ho ho - this line is not read

The tags or labels are like. Note the semicolon (;) at the end.
my_label=my value; // rest not read

A label can be inside a section too. When opening a section the line must
contain both the section name and the opening brace, like...
some_section{

...and closed on the separate own line like...
}

Sections can contain labels and other sections, but adding your own sections
or labels are not guaranteed to work always. They are not read and currently
they do NOT cause errors (only warnings).

End line marker (;) can be excaped with \; and escape mark with \\.


Pay attension to these...
system/host=1; // works for every situation usually (remains from old version)
This can be kept 1 all the time (in offline use too)



Command prompt commands
----------------------
On console, hit these keys (just press once, no text typing is needed)
- C - list connections
- R - List racers (in the race order)
- B - Bad language list (word list)
- H - list of names to greet (auto-hi)
- L - Prints the list of race results (split/lap times etc)
- D - Debug info for racers in the database
(- I - Insim relay table info (NOTE: relay doesn't work yet) )
( relay is not implemented and not even needed after X patch)
Some of these probably are probably removed in the future as most of the
functionality can be accessed from LFS. Their function is now mostly
in debugging.

To exit:
-------------------
- Hold down ESC for 2 secs (the command prompt must be active)
- You can also kill VCom from LFS by typing in it
  "/o vcom quit"
 These are better ways to quit Vcom, rather that killing the Vcom process
 (which is never recommended).
  
  
-------------------------------
-- Tools in detail ---
-------------------------------

Note that a tool can still be ON, but turned to be 'silent' (printing OFF).
See more information about this later.

Lap time logging (mode 1)
----------------------------------
Keeps log for every racer about the best race lap times and displays the race
best time. If good time reporting is on, reports good times even if not race
best.


Split time logging (mode 2)
----------------------------------
This keeps track of the best split times. Each racer gets logged separately,
but only the race best is printed to lfs, unless good time reporting is turned
on too.


Speedtrap/topspeed (mode 4)
----------------------------------
This logs best top speeds. Actually it measures the best speeds (for each car)
at a specified point in the track. So if somebody manages to drive faster at
some other point it is not logged. Speed is printed only if it is best for the
current race/qualifying session. It is also possible that slipstreaming can
give abnormally high speeds, but there is no way to prevent that.

The trap location and sizes are given in the setup. The location is given as 
X,Y,direction and direction is LFS 0..65535 system. You can also give temporary
trap location/size by driving your car into the spot and typing !strap <size>.
The size is considered to be the speedtrap line length side ways away from the
car in both directions (see pic). If the size is 65535, then the trap works like
a global speed logging (speed logged in every place). Size 0 reloads the setup
trap location/size. (Speeds less than 20km/h are not printed to screen).

         -A
         |
         |
  [ car ]>C  ----> (nose pointing right)
         |
         |
         -B

Size is length for lines CA and CB in meters. If you do not use natively SI units,
track width is usually 10-20m, so 30 is often enough (to cover the grass area too).

NOTE: The old system in earlier version (pre 0.470) was bit different (and not
so accurate) and the location strings in the setup are not fully compatible.

NOTE: To set your own location in the setup file, drive your car (offline) to the
spot, type /o vcom gps and take the 2 first numbers (X and Y) and the last number
(direction).


Trip meter (mode 8)
----------------------------------
This is like a normal trip meter in a car. It is used to measure distances from
the car position and not from wheel turns (so it is more accurate).
Use the following guest commands:

!trip
  Displays racer trip meter
!trip on|off
  Turn racer trip meter on and off (doesn't clear it)
!trip clear
  Clears racer trip meter (doesn't turn it on/off)

NOTE1: In case of very large 'jumps'/warps, the system doesn't count those jumps
 into the distance. Also excessive lag can cause slightly inaccurate results.

NOTE2: This can be used to measure the length of an autocross track. Admin can
 use !length <meters> to set the length or otherwise VCom can give erronous
 values for some data.


Auto-hi (mode 16)
----------------------------------
Tool to automate greeting friends entering a server. It is sometimes difficult
to greet or even notice when some friend enters the server if you are racing.
This tool can be given a list of your friends and it will automaticly greet
them when they enter.

Config file keeps the list of friends. You can edit your list there. Notice
that the names don't have to be full. They are not case sensitive and do not
use color codings.

Examples:
Person who's name is 'Group - SomeGuy' (belongs to a group called 'Group').
You can add the name as it is (without color codings) or just 'someguy'.
Or you could add 'Group' to greet everybody belonging to 'Group'.

The name used in the greeting is the exact name with color codings, not the
one put into the friend list.

The time delay in the setup file is the time waited before printing the
greeting. This is useful, because there is usually some time before the new
guest starts noticing the messages.

NOTE: The names are matched to PLAYER NAMES not user names (used in lfsworld).
This is because it has to work in demo version too (no user names there)


Alarm clock (mode 32)
----------------------------------
CURRENTLY COMMENTED OUT

Alarm clock prints a notice when the preset time (hours, minutes local time)
has come.

To set the time in LFS print...
"/o vcom alarm hhmm", where hh is hours and mm is minutes using 24h clock.
Note that the time has to use always 4 digits like 0000 for midnight. This is
like in 'military clock'. This also sets the alarm on.

To turn the alarm on...
"/o vcom alarm on"
..and off...
"/o vcom alarm off"

To set the alarm text which is displayed when alarm is triggered, type...
"/o vcom alarm text tttt", where tttt is the text. This does not set
the alarm on (the state remains as it is).

NOTE: This is intended to be a client tool, not server. If you run this in a
server it is no use to guests.


Lap time estimation/comparison to the old best time (mode 32)
----------------------------------
This has 2 possible modes (from v 0.473):

Mode 1:
Compares splits to the splits of the previous fastest lap. Gives the difference
of the splits and the lap time if continued at the same speed as in the old
best lap. Prints for example:  (DBT=Difference to old Best Time, S1=Split 1)
DBT S1=0:28.500 (-0:00.230) -> 1:25.470
The split 1 is 28.500 which is 0.230 sec under the prev best lap split 1. The
estimated end time is 1:25.470 if you keep going rest of the track as fast as
in the previous old best lap. (green time is better than old, red is worse)

Mode 2:
Compares theoretical lap time (sum of the sectors this far plus the best times
driven for rest of the sectors during this session) to the current session best
time. Prints for example:  (TLT=Theoretical Lap Time, S1=Split 1)
TLT S1=0:26.690 -> 1:24.940 (+0:00.480)
The split 1 is 26.690 which together with all the previous old best sectors
will give end time of 1:24.940, which is still 0.480 sec over the previous
best lap. (green time is better than old, red is worse)

Modes 1 and 2 give usually slightly different results. The estimation from the
mode 2 is never worse than from the mode 1.

NOTE: You can also give the mode as 3 in the setup, when it actually prints
both versions.

At the finish line it tells if the new time was above or below the previous
best time and how much. For example:
Lap 1:25.710 (+0:00.010)
The lap time was 1:25.710 which is 0.010 sec slower than the best time.
(green time is better than old, red is worse)

This keeps the times for the whole session and the times are cleared only if
1) car changed
2) track changed 
3) disconnected from the server
Tool needs at least one fully timed lap (all splits and end time) before it
starts printing the messages. The messages are visible only to the player
who drives them.


Car radio (mode 64)
----------------------------------
This requires Winamp and WARCUDP plugin for Winamp to work.
(See notes at the end of the chapter to see how to set other players!)
Install first WARCUDP and start also Winamp before starting vcom. If Winamp
and the warcudp wasn't started before VCom, use the connect command to
establish the link after starting the Winamp.
(NOTE: WARCUDP can be get from the author of VCom if didn't come with this
program)

To operate radio use the following text messages
"/o vcom radio on" or "...radio play"   - start radio playing
"/o vcom radio off" or "...radio stop"  - stop radio playing
"/o vcom radio next"                    - next track
"/o vcom radio volume down"             - volume down 1%
"/o vcom radio volume up"               - volume up 1%
"/o vcom radio eq"                      - turns EQ on and off
"/o vcom radio connect"                 - Connect/reconnect the radio
                                            (VCom<->Winamp) link

Track name is displayed if the track name changes. Note that turning EQ has no
audible effect unless the EQ bands are set to be different than normal setup
(0db boost for each band). See Winamp help for using EQ.

Once again it is adviced to set some of the function keys (F1..F8 or Ctrl+F1..
F12) keys to match these commands.

NOTE: This is intended to be a client tool, not server. If you run this in a
server it is no use to guests.

------ Setting other players than Winamp (ie. Generic Player): ------
There is a limited support to use any music player with VCom. However there
are few limitations:
- You can only get the played song names into LFS
- If you want to control the player from LFS, you need to use global hotkeys
   with the player (if it supports such a thing).
- The song names must be printed to the player window title bar.

To set up the player define these variables in the setup file 'radio' section:
1) gen_windowClass  -  this defines the window class of the player (optional)
2) gen_windowTitle  -  this defines the exact title of the player window
3) gen_songNameRemove  -  used to cut the song name from the window title

Variable 1 is optional, but if it is given VCom uses it always to find the
player. It also needs to be the exact window class name. With this the player
should be found with 100% accuracy (as long as it is on). If you know the
class name it is recommended you use it here.

Variable 2 is also in a way optional, but good to set. It is used if the #1 is
not given. The problem using this is that the player window title might not be
constant. This is also the title which is not printed (the total title) as it
is considered to be 'empty' song (no song playing).

Variable 3 is used to catch the excess 'junk' out of the window title, so
that only the song name is get. This requires the 'junk' is at the end of
title or in the beginning of the title. In some players it is possible to set
the title format. Usually it is the player name you want to put here plus some
additional spacing between the player and song names. 

If you do not use this feature leave all variables commented.

Examples:
//gen_windowClass=Not known - 'FOOBAR2000_CLASS' DOESN'T SEEM TO WORK;
gen_windowTitle=foobar2000 v0.9.4.1; // this works only for this one version
gen_songNameRemove= [foobar2000 v0.9.4.1]; // cut this out from the title end

gen_windowClass=Winamp v1.x; //winamp class name used to get 100% match always
gen_windowTitle=Winamp; // with class name, currently useless
gen_songNameRemove= - Winamp; // cut this out from the title end

NOTE: Winamp can be set this way too. But then it cannot be controlled from
LFS unless you set the global hotkeys on in Winamp.

NOTE2: Players tested to work this way: Winamp 5.24, Foobar2000 0.9.4.1 and
Deliplayer2 (most likely many other players will work too)


Stage Rally (mode 128)
----------------------------------
Tool to log events where number of racers drive separate 'stages' and the end
result is calculated as the sum of the stage times.

Stage is a run of few (1 or more) laps in a defined track or special autocross
layout. The order of times in a specific stage is not important but the 
calculated total time which gives the final standings. Stage is a commonly
used term in rally (so that's why the name stage rally) and often shortened
as SS (Special Stage).

In the begining the admin should register all the drivers/racers into the
system. Only the registered racers get results into the system.

Stage can be penalty free (i.e penalty from cones etc is not counted) or such
that penalty is counted. Stage must be registered to the system before it is
run. The stage can be run as a normal race, a race where all racers drive the
race alone or as a autocross layout with a small time interval between each
driver. The last option is quite good for online events but require making
the layouts before that.

The system can be used for a hotseat tournament too (multiple players on
the same computer). This requires to make separate named driver settings for
each one. Stages has to be run then as one racer races, and change the driver
and the named settings between the racers.

The commands are listed here. Each start with the !sr prefix (sr=Stage Rally).
!sr.reset                 - Clear the system from all racers and stages
!sr.racers (number)       - List all racers
!sr.stages (SS number)    - List all stages
!sr.racer+ <pname|'all'>  - Add a racer. 'pname' can be full or a partial
   player name (if partial in such that it is unique among all racers). Instead
   of player name you can give 'ALL' which adds everybody currently connected.
!sr.racer- <pname|'all'>  - Remove a racer. ('pname' as above).
!sr.stage+ <track|'this'> <cars> ('P') - Add a stage. Where 'track' is a 3-4
   letter id like 'AS3R', cars is a car or group id (e.g 'ALL'). Add optional
   P to end if the stage uses penalty. Giving track code as 'THIS' adds the
   current track loaded.
!sr.stage- <track|'this'> <cars> - Removes the last stage which matches the id.
!sr.rec ('ON'|'OFF')          - Queries or sets the state of the recording.
   This is very important to set ON or no stage times are recorded! You can
   set the state temporarily OFF if you want to give some time to practise the
   stage.

!sr.stage <SS number> (line) - List standings of the given stage.
!sr.total (line) - List the total/end results starting from the given player
   number. NOTE: This calculates and lists the times from the first stage(SS1)
   to the current stage. If there is no stage set to the current track it
   lists times for all stages combined.
!sr.save - Saves the stage rally results into XML file

!sr.lock <stage number|track id> - Locks the stage so that no times are
   recorded there anymore. Useful if multiple stages on the same track.
!sr.unlock <stage number|track id> - Unlocks the stage.
!sr.help - Quick help about the stage rally commands.

Racer needs to be connected before you can add him/her. In hotseat play
generate the named setting and choose it before adding it. You can add
new stages any time during the event and even racers (it is not required to
add all stages before the event and you can add them just before the stage).
The stages do not need be driven or added in order. Some stages can be skipped
and not driven at all. Note that if the same track id (same track in normal
and reversed config is NOT same track id) is used in multiple stages, you need
to lock the earlier stages which have been finished (use !sr.lock)!

Case example:
- Racers: Max, Sam and Betty (Player names, user names saved but not needed)
- Stages: AS1, FE1R and FE3
- Command lines: ...
  !sr.racer+ M   -    add Max (Only Max has capital M)
  !sr.racer+ S   -    add Sam (...)
  !sr.racer+ B   -    add Betty (...)
  !sr.stage+ AS1 ALL    -  add AS1 stage (with all cars and no penalty)
  !sr.stage+ FE1R ALL   -  add FE1R stage (with all cars and no penalty)
  !sr.stage+ FE3 ALL P  -  add FE3 stage (all cars) and penalty 
  !sr.rec on         -  set the recording ON - IMPORTANT!!!
  (now you can start driving)
  !sr.save - Saves the end results after you have finished.
  If the three players are the only ones, you can use !sr.racer+ ALL
  
There also two shortcuts...
- !sr.racer+ ALL - this adds all connections to the racer list (not already
    in there). This also adds the host connection so you might want to
    remove it with !sr.racer- command
- !sr.stage+ this <cars> - this adds the currently loaded track into the
    stage list.

NOTE1: Lap counts are not saved into the system and the admin sets the lap
   counts in LFS as needed. The lap count is the same as set for the race
   in LFS.
NOTE2: This can be run as a server tool (needs admin rights) or as a client
   tool.
NOTE3: If it complains in single player mode (hotseat play) that you have no
   admin rights, go to multiplayer screen and then immediately back. This
   trick should make it work. (Not an issue after X patch?)
NOTE4: The car id can be given normally as 'all' instead of the group ids.
   Then the admin can control that the legal cars are used only. This is
   often a lot easier.


GPS (mode 128 - NOTE: NOW ALWAYS ON AND 128 IS STAGE RALLY)
----------------------------------
This tool prints the coordinates and heading of your car. Type...
"/o vcom gps"

...to get the information. The line can be like this...
GPS: X,Y,Z: 5167922/-18441595/21562,  ->89.95(49161)

After the text "GPS: X,Y,Z: " there are three value for a point in 3D space.
That's where your car is currently. X and Y are along the surface and Z is the
height. The last two values are the car heading by compass degrees (assuming Y
is north) and LFS units (0..65535).

To a normal user this is probably of no use, but if you plan to move the
speedtrap location defined in setup.dat file, you need this.

NOTE: This works for car number 0, so with multiple cars be careful which
car location this shows (car number 0 can change in races). FOR TEMPORARY
CHANGE OF LOCATION SEE !strap command later in this document.


Good split/race times (mode 256)
----------------------------------
This tools displays messages if someone has driven a good split or lap time.
What is a good time is off course relative and depends at least on the car and
track. In the setup file you can define limits which are used to separate good
times from the 'not so good' times. One limit can be given for each split and
finish line on each track. If you use more than one car type on some track you
still need to put the limit according to one type (possibly the fastest?).
However it might be wise to use only a group of cars with similar lap times
(so that the same limits match for all of them). In other cases, like when
the selection of cars is changing often, it might best to turn this off.


Lap Logger (mode 512)
----------------------------------
This is the database used to log all lap and split times as well as some
other data about racers in your server. With this evertbody's best times and
last visit to the server are kept viewable to everyone. For example this is
required for !pb and !sb commands (see below) to work. The logs are saved in
log directory and are not very large in size. One log file is saved for each
track for which the server is used. The logs are named like <id>.log where
the 'id' is the track 3-4 letter id used in LFS. Like Aston Club in reversed
direction would use log named as 'AS2R.log' and so on. At least currently the
files are binary (not text files).

NOTE: If you are running multiple servers which all run VCom and if it is
possible that at some point multiple servers have the same track (at the same
time), then you have to make sure they do not use the same log directory.
In the server setups files you can define different log directory for each
of the servers (log_directory). Otherwise it might happen that one server
overrides the updates made by another server in the log.


Message board (mode 1024)
-----------------------------------
Users can type short messages into a message board (or a 'shout box'). It
keeps messages as long as VCom is not restarted and the age and count limits
are not crossed.

Messages are typed into the board with !min <message> (min=Message IN) command.
If the message is too long it will be clipped when shown. Message board
contents are show with !mb (number) command in which number is optional line
number from which line to start (1,2,3...). Newest entries are shown at the
top (10 lines at the time) and for older messages (if they are still in the
board) user should use the optional line number in !mb command. Messages are
kept as long as the age and count limits are not violated.

The messages are deleted from the oldest end until both conditions are met.
Note that the board doesn't have to have either of the limits, in which case
all messages are kept forever. The limits are defined in setup file in
messageboard section with maxMessages and maxAge variables.

Format of the messages board line:
<number> <hh:mm>|<name>: <message>
..or...
<number> <month>-<day> <hh:mm>|<name>: <message>

Number is the entry number in the board (1=newest). This is used as optional
parameter for the !mb command. Month and days are for the date when the message
was entered. That information is shown only if the date is older than today.
The hh:mm tells the time (GMT) of the time entered. Name is the user name if
in S2 (licensed version) mode (multiplayer) and player name if in demo mode
(or single player). The user name is used in S2 so that you can be sure who
really said that (LFSWorld can be used to search more information about a
certain player).


Auto save race results (mode 2048)
----------------------------------
This automaticly saves the race results into an XML file (stored in 'out'
directory) for later viewing or putting them online into web. The race
results are stored without further notification when all the race is
restarted or the system is returned to the track entry/selection screen.
The time stamp used in the XML result file is still same as the last update in
the race results (last racer coming over the finish line?).

XML files show like HTML pages if you give access to them and the used style
sheets (XSL files).


Track rotator (mode 4096)
----------------------------------
You can give a set of tracks which are rotated repeatedly. Actually not just
tracks, but other race settings can be rotated too. The tracks and other
parameters are given in setup file in the 'rotate' section.
  The things which can be rotated are: Track, allowed car(s), laps, qual time,
weather, wind and forced pit stop (yes/no). The rotator allows to race a given
number of races in a track after which it selects automaticly another track
(maybe 'set' or 'settings' would be a better name for what it chooses).
The number of races per track can be given and it can even be random (between
given limits). The next track is selected either in 'in order', 'randomly' or
'randomly but not same twice'. Biases can be given to track sets so that
certain choices are more probable than others. Range of values can be given to
lap numbers, weather, wind and the mentioned races per track value. If there
is a range of values, it is selected randomly between the limits so that each
value has same propability.
  Note that the same track can be given any number of times for the rotator
and there are no limiting factors in that even the entries given to rotator
are called 'track' inside 'rotate' section.

Type "!rotator" to see what settings and tracks the rotator currently
has. The lines listing different tracks/settings look for example like...
"1. AS2 B:2 C:XFR+UFR Q:30 L:10-20 Wh:1-3 Wn:0-1 Pit"
First there is the order number in the rotator list (1.)
Then the track id (AS2 -> Aston Club)
Bias used in randomizing the track selections (2)
Set of allowed cars (XFR+UFR) (use here only the ids given in LFS)
Qualifying time in minutes (30)
Number of laps as min-max (10-20)
Weather as min-max (1-3) (numbers have little different meanings on each track)
Wind min-max (0-1) (0=no wind, 1=light wind, 2=strong wind)
Finally word 'pit' if a pit stop is needed

If you want for example that day is more probable than dusk, you need to give
the same track in two or more entries and play with the bias values.

Races which are counted into 'races per track' number must be finished at
least by 1 racer. So if you restart a race the non finished race is not
counted.

This works bit semi automatic way (at least currently). When this rotates
the track, it first sets the game back into entry screen. After it has
resetted the values, users can change the values (if allowed). Track and
just about any values can be set again.

The rotator action can be called before the number of races is actually done.
Any user with admin rights can type !rotate, which makes the rotator to call
the track change immediately. If a number is given after the !rotate command
the normal rotator track selection is overridden and it chooses the numbered
entry instead. If you call the track change by !rotate, it resets the count of
finished races back to 0. (Example: "!rotate 2" -> chooses entry #2)

Note: Those track entries which have bias 0 are not counted. If you set all
biases to 0 it acts like no rotator is selected at all. Also the absolute
value is not meaningful, but the relative values between the entries.

Note2: Weather numbers start from 1. Usually (but not always) they are...
1=bright/clear/day, 2=cloudy and 3=dusk/overcast etc. You should check the
weather names in the game.


Idle kick (mode 8192)
----------------------------------
This tool kicks players who do not move to spectate. The kick happens if the
player doesn't move for a specified time.

In the setup file there is 'idle' section. It has the time allowed to idle
before kicked (in seconds), the speed slower which is considered idling and
the warning text displayed before the kick happens.

The warning text is shown for 10 seconds during which time the player has to
move or he is put to spectate.

The exceptions to kick:
- Does not work offline (1 player and who cares about AI)
- Disabled outside a race/qualifying
- Disabled if stopped for a pit stop
- If alone racer in an online server
   In this case if a new player joins, the idler gets the normal warning text
   and he/she has to move in 10 seconds (if he/she has already idled long enough).


Pit stop timer (mode 16384)
----------------------------------
Displays a time how long the pit stop took. This is visible to all players.
The time is also printed to the list of lap times (!laps command), where it
is printed at the end of the line. It also adds a note if the player
suffered a stop-and-go penalty for which he made a stop.


Flood filter (mode 32768)
----------------------------------
If a guest floods too many messages in too short time this can automaticly
handle that. User can define in the setup how fast/frequent messaging is
considered flooding, how many times this is allowed, how fast the earlier
flooding is forgiven and various messages and actions. The setup has a
floodfilter section which has following entries:

messageInterval - How frequent messaging is considered flooding. This is in 
                   milliseconds. Anything faster than this increases the
                   flood count by one. 
fadeInterval -    How fast the flood level/count decreases when messages
                   are typed less frequently (0=not used). If this is 0, then
                   old flooding is not forgiven. Milliseconds.
maxFloodLevel -   How many times flooding is allowed before action taken.
warning       -   The warning message shown to the user flooding. This is
                   shown everytime user floods but action is not taken yet.
action        -   Action to take when flood count reaches the limit. The
                   first param (%s) is the account name or the player name.
                   This could be e.g. "/kick %s" or "/ban %s"
info          -   Message shown to users after the action was taken. The 1st
                   param is the player nick and 2nd is the account name.
                   This could tell what punishment was given and why.
                   
NOTE: Admins are not checked for flooding. This has a reason e.g if the admin
is listing rules etc and flooding because of that. Also because admin is
allowed to do pretty much anything on the server he/she can also flood.


Curse filter (mode 65536)
----------------------------------
Tool to take action automatically against cursing players. This action could
be like kicking or banning. This checks outs 3 things: player written messages,
player names and license plates. The setup file has cursefilter section which
has follwing entries:

curseActionCount - How many curses needed before action taken. For example
                    0=no limit, 1=action immediately, 2=first give a warning
                    Note: This affects only player messages. For technical
                    reasons players with illegal player names or license
                    plates are treated immediately.
curseWarning     - The warning text shown when cursing but not yet action
curseAction      - The action command. The 1st param is the player name (%s)
                    For example kicking could be done with... /kick %s
curseInfo        - The info text shown to all after action. The 1st param
                    is the player name (%s).
word             - This can be repeated multiple times. Each word which is
                    checked must be given here (one word per tag). The
                    word given here can be part of a longer word, so no need
                    giving plurals etc. This is not case sensitive.
file             - The word list can be loaded from separate files. The word
                    file lists the words one per line. Each line has only the
                    word and ends to a newline. Empty lines are skipped. This
                    command can be repeated multiple times if list is in
                    multiple files.

NOTE: Admins are not checked for cursing.


Alternative point system
----------------------------------
VCom can be instructed to give 'alternative' points to racers according to
a fully customizable table. This table can be like the one used in F1
(points to top 8 racers) or totally fictive. Currently points can be given up
to 16 players. To set them edit setup.dat file. Here is an example for the
current F1 and WRC point system (with one addition). Tag 'place' is used
inside 'points' section with comma separated values for the place and points
for that place. Places which score 0 points are not needed in the list. Place
value can be 1..16 and point value 0..65535.

points{
	place=1,10;
	place=2,8;
	place=3,6;
	place=4,5;
	place=5,4;
	place=6,3;
	place=7,2;
	place=8,1;
	bestlap=1;
}

You might also note that an extra point is given to a driver with the best
race lap. Point(s) for the best lap are given only after the race is restarted
or ended. This is due to fact that there might still be somebody not finished
who is driving a better lap than the currently fastest.

This tool is nice if you want to find which of your friends is the best driver.
Just decide e.g that you do 5 races after which you check who has the most
points.

The points for each player or actually connection is kept only as long as the
connection is up. Once the connection is cut so are the points cleared.

You can display any player's points by typing "!points (name)", where (name)
is the name of a driver who's points you want to display. Points status line
is displayed in LFS. Note that the (name) doesn't have to be exact, only part
of the name is enough and no color codes are needed. If you leave the name out
it displayes points for the person writing the command.

If want to clear your own point table (without restarting VCom or cutting
connection) type "!points.clear". It is good to reset the points for every
racer before starting a multi race session for finding the 'best racer'.

The points are added for everybody if point system is on in VCom setup. Racer
do not have to put it on separately. The point system has no further meaning
and is purely for racer's interest.

Ordered list of players with points can be seen by typing !pointsall. The
players are sorted with points per race ranking.


Silent mode
----------------------------------

You can stop VCom sending any text to LFS by giving silent option to it. It
will still keep doing the same logging and other stuff. It just won't send any
text to LFS about the different tools. There are just two exceptions.
- Greetings (auto-hi) will send text to LFS. If you want it off, just turn the
   auto-hi mode off.


To turn silent mode ON/OFF (flip the state) in game type...
"/o vcom silent"
...to the message dialog. This should show a message telling if the mode on or
off AFTER the command is executed.


Guest commands on server
----------------------------
There are a number of commands a guest can use if joining a server using VCom.
You can type most of the commands in pits, spectating or of the race. Only a
few commands require you get a car out to track. The commands are typed into
the text window. Each command start with a ! mark. The following commands are
currently available.

!help
  Shows the list of commands
!help2 
  Shows even more commands
!sr.help
  Help on stage rally tool commands
!ver
  VCom version information displayd
!server
  Server information (e.g. if forgot which server currently playing)

!pointsall
  Prints ordered list of point standings for this session.
  
!race 
  Short list of the best race lap, and split time(s) and top speed. 
!stats (name)
  Displays race statistics for a certain player (possibly you)
  The name can be partial if referring to a driver currently logged in.
  For example name could be just 'D' if that is enough to differentiate a
  driver named 'Dude' from other racers. Sometimes more letters are needed.
  No colors codings are needed. If wanting to get own data leave the name out.
!race.lap
  An ordered list of best lap times for all racers
!race.split <split>
  An ordered list of best slit times for all racers. Split (number 1..3) is
  the split you want to know. E.g. !race.split 2 displays split 2 if there is
  a split 2.
!race.sector <sector>
  An ordered list of best sector times for all racers.
  Sector (number 1..4) is the sector you want to know.
  E.g. !race.sector 3 displays sector 3 if there is a sector 3.
  Sector N is between split N-1 (or start) and split N (or finish). Displaying
  sector 1 actually displays the split 1 times because they are the same thing.
  So giving sector 1, it actually shows split 1 times (which is the same).
!race.speed
  An ordered list of best speed trap speeds for all racers.
  The speed trap location is defined in setup.dat file. There is no way
  filtering slipstreemed and bumpdrafted speeds. The default traps are
  set bit before the braking point roughly at the fastest place.
!race.pit (line)
  List of all pit stops (all players) during the race. In qualifying or
  practise pit stops are not listed.
!pb (name)
  Displays personal best information for any driver or the current driver if
  the name is left out.

  Name can be partial if referring to a currently logged in racer. Otherwise
  full name (without color codes) is needed. Displays the best split and lap
  times for the player for all cars which he/she has driven here. At the line
  end there is the postion in the server list and total entries in the list.
  Displays also number of laps and races done and when last logged in (server
  local time).
!sb (car) (start)
  List of server best times. If no parameters list for the default car from
  place 1 onwards.

  Car is a 3 letter code (like xfg, xrt, mrt, bf1,...) to tell for what car
  the list is wanted. Can be given also start position (1,2,...) from which to
  start the listing (lists only the following 10 entries).
  Full list of car ids is UF1, XFG, XRG, XRT, RB4, FXO, LX4, LX6, RAC, FZ5,
  MRT, XFR, UFR, FOX, FO8, FXR, XRR, FZR and BF1. There are also ids for some
  commonly used car groups like ALL (for every car), RACE (race cars), ROAD
  (road legal cars), GTR (FXR, XRR and FZR), TBO (FXO, RB4 and XRT) and LRF
  (LX6, RAC and FZ5). These are defined in LFS too. Some other groups defined
  in VCom only are GTS (slower fwd gtr cars=UFR and XFR) and SLW (XFG and XRG).
  The car id is NOT case sensitive.
    
!laps (name) (start lap)
  Displays laps done in this race. Shows split times and lap times. At
  the line end it displays the pit stops time (time stationary). No parameters
  are need for own times (if starting from lap 1).
!points (name)
  Displays your points during this session. The point system can be altered in
  the setup.dat file. By default it is FIA (F1, WRC, etc) system. It can be
  used to measure who is the best driver for this session. It has no other
  meaning. It displays also your best end standings.
  
  Name can be only partial if a connected user, or not given if own stats.
!points.clear
  Clears your own points.
  
!trip
  Displays racer trip meter
!trip on|off
  Turn racer trip meter on and off (doesn't clear it)
!trip clear
  Clears racer trip meter (doesn't turn it off)
  
!track
  Shows the name of the track, the short 3-4 character id, length (in meters
  and miles) and split line count. If there is a layout in use, shows it too.
  
!silent
  Turns the VCom generated printing off for the player. Type again to turn
  back on. This still allows user to type VCom commands which generate normal
  feedback. Only the automaticly generated text is not shown (like splits for
  other players etc).

NOTE: Many of the loggings are resetted/cleared if player goes to pit hangar.
This is needed to keep the statistics matching the player's current car and
setup. Everything except some connection related data is cleared if gone
to spectator mode.

NOTE2: Player can change his name/alias and the VCom updates the best lap time
data etc in the system as long as only the color coding are changed.

  
Admin commands on server
----------------------------
These work only for the local (run where there VCom is) admin user.
You need the text input window still to type these.

/o vcom quit
  Closes VCom

/o vcom mode <mode number>
  Changes what modes/tools VCom is running (add the tool numbers to get this
  number). Leave the mode number out to get the current mode. See the beginning
  of this file for the mode numbers.

/o vcom mode silent
  Turn VCom mode silent and back to non silent (silent mode quits printing
  data to screen with few exceptions).

/o vcom mute <mute number>
  Changes what tools are 'muted' (not printing any text to screen. The muted
  tool still work in the background. Leave the 'mute number' out to print the
  current 'mute number'. The numbers are the same mode numbers as used in the
  mode command.

/o vcom log save
  Save the log file immediately regardles what log saving options have been
  defined in the setup file. (log file = where the best best lap times are
  saved)

/o vcom out sb <car id>
  Prints server best times list into an XML file (see out directory) with a
  name sb_<track id>.xml It can be used directly in web. If you don't know
  or don't have enough time to make an XSL file to be used for converting XML
  into HTML for viewing you can use the sb.xsl file found in xml directory
  
  See user !sb command for car and car group ids.
  
  NOTE: Any XSL file used for viewing the XML file must be named sb.xsl or
  otherwise the XSL file name/path must be changed in the XML file.
  
  NOTE2: If wanting to add an own comment/HTML into the beginning of the
  resulting page you can add text between 'comment' tags into the xml file
  inside 'server_best' tags. The supplied XSL file (sb.xsl) has support for
  this.
  
  NOTE3: Any browser used to view the XML files must have support for XML/XSL
  or otherwise the file might look like plain text (or give an error).
  
/o vcom out race
  Prints the last race results into an XML file. File has follwing name:
  race_<track id>_<date>_<time>.xml. Track id is the 3-4 letter id, date is
  in YYYYMMDD format and time in HHMM.
  
/o vcom out laps
  Prints the lap data for each player. Mainly what you see with !laps and
  !stats commands. The result is written into the out directory as an XML
  file. The used style sheet is laps.xsl.
  

These work for everybody with admin rights:

!ahelp
  Admin help. Short list of the following commands.

!length <length>
  Set the track length in meters. The default lengths are given in setup.dat
  file, but for example setting an autocross track can cause that this length
  doesn't match. This way a person with admin rights can set the correct track
  length. The length can be measured with !trip... commands. When wanting to
  set the length back to default just type "!length 0". NOTE: If the length
  is not correct, VCom gives erronous values to some data (like average
  speed).
  
!splits <number>
  Set the track split line count. The default counts are given in setup.dat
  file, but for example setting an autocross track can cause that this count
  doesn't match. This way a person with admin rights can set the correct track
  split line count. When wanting to set the count back to default just type
  "!splits 0". NOTE: In some situations it is important for VCom to have the
  correct count of split lines. Otherwise odd behaviour can occur.
  
!strap <size>
  Set speed trap to the location of the car with the given size (30 is usually
  a good size). If given size 0, then puts it into the default location given
  in the setup.dat file. Size of 65535 makes the trap as global and it logs
  speed everywhere. This command needs also admin rights.
  
!log.del.driver <name>
   Remove a driver from the lap log. Needs admin rights. Useful to remove
   cheaters etc 'unwanted' persons from the log. The name needs not to have
   color codes, but needs to be complete. If the name is difficult use !sb
   command etc to get the name on screen and then up arrows and editing in
   text box to get it as the name parameter.
   
   If the name starts with # (!log.del.driver #123), it tryes to removed the
   player with the id number.
   
!log.merge.drivers <name1> <name2> (checksum)
   This merges two players in the log. Only the best times are taken from each
   and the race and lap counts are added together. In the end the log entry
   with name2 is deleted. Any players with the name2 cannot be logged on at
   the same time or the operation is not done.
   
   This is useful in those cases when the driver has changed the name so much
   that Vcom cannot autodetect it.
   
   How to use: (e.g merge 'newname' and 'oldname')
   - type: !log.merge.drivers newname oldname
   - if Vcom finds the players from the log, it tells the checksum (e.g 123)
      and asks your to repeat the command with the checksum
   - type: !log.merge.drivers newname oldname 123
   - The merge operation should have been done and oldname removed
  (the checksum is kind of a warning message which asks you to confirm the
   operation as it is inreversible)

!mbclear
   Clears the message board.
   
!rotator
   Shows the rotator settings, how many times the current track has been
   played, rotator entries and their numbers. Allowed to all, but use
   for other players than admins is pretty limited.

!rotate (number)
   Kicks the rotator track change immediately regardles how many times the
   current track has been played. If followed by a number, it chooses the
   given rotator entry number.
    
  
XML output
----------------------------
VCom can output race and server best time data out into XML files. Race data
contains race results, times etc and are written into 'out' directory with a
name of race_<track>_<date>_<time>.xml syntax. Server best times are written
into a file sb_<track>.xml and contains best laps times for everybody who has
visited the server. User only has to open the XML files into a browser.
Nowadays browsers support viewing XML files with XSL very well, but if not
then XML files looks like plain text files with HTML type tags. The race
and server best time files can be put to Internet (if wanted) for public to
view.

The 'xml' directory contains example xml files as well as example XSL files
for these to show this data. An XSL file is a stylesheet which converts the
XML file (which contains only data) into HTML and thus more pleasant form to
look at. The out directory has these same XSl files too. The orginals are kept
in xml directory as a backup and the generated output XML files use the XSL
files from the same directory. If user wants to have a different looking form
he/she can freely change the XSL files.

If the system section in setup file has "best_laps_save_interval" set to over
the value of 0, vcom automaticly creates a new version of the server best laps
XML file (the current track with all cars) into the output directory. The
given value is the save interval in minutes.

To limit the the number of drivers printed to the best times list (sb), you
can set the 'best_laps_xml_max_entries' something else than 0. If the racer
count is very big, the value of 500 would print only the top 500 ranking etc.
  
  
Possible problems and solutions
----------------------------
PROBLEM: VCom doesn't seem to be respond to commands. 
SOLUTION:
 1) Check the connection between LFS and VCom is up (VCom console)
 2) Check the VCom console and try some keys (like C and R) when it is
     selected/active. It should print some text for those keys.
 3) VCom doesn't read commands if there is no 'connection record' for the
     player who typed it. This can happen in the front end screen (main menu).
     Go to hotlapping, single player etc mode to make LFS send the connection
     data to VCom.

PROBLEM: Setting the output directory doesn't seem to work.
SOLUTION: Make sure you use / instead of \ as a directory change in names.

PROBLEM: Starting vcom gives an error that lfs must be running with insim, even
   it is already running with insim.
SOLUTION: This is shown sometimes when vcom is closed and started again very
 soon after the previous closing. Just try again until LFS accepts the
 connection.
 
PROBLEM: VCom cannot control Winamp.
SOLUTION: There are few possible causes/solutions:
 1) Start Winamp BEFORE starting VCom or type "/o vcom radio connect"
 2) Make sure WARC UDP is running in Winamp (check the general plug-ins)
 3) Make sure the interface (ip address) and port are correct in WARC UDP
     (see warcudp documentation to see how to config)
 4) Make sure VCom tryes to contact those same interface and port as in point 2
     (edit setup.dat radio section)
 5) ...and if not in the same computer, the interface cannot be 127.0.0.1 :)
 6) ...and if ip address is 127.0.0.1, VCom and warcudp cannot use the same
     port for radio commands
 6) If using password in warcudp, config it into Vcom setup.dat file too
 7) If you have a firewall between VCom and warcudp, make sure it doesn't
     block the programs.
     
PROBLEM: XML output shows some extra spaces between each color change in names
SOLUTION: This seems to happen in IE (when converting XML with XSL). This extra
space should not exist if following specs. If it troubles try other browsers.
For example Firefox and Opera don't show them.

PROBLEM: Browser (usually IE) cannot print some names in XML files and gives
an error.
SOLUTION: This seems to happen only with IE (not with Firefox or Opera?). Try
changing the xml_encoding to something different (like some iso-...).

PROBLEM: Playing replays with VCom running, logs stats into log
SOLUTION: Don't play replays with VCom on :)

PROBLEM: When viewing XML data with XSL, some names have characters missing or
 they are replaced with '?', empty box, etc.
SOLUTION: This means that browser doesn't have a font which would have 
character(s) for those places. Some special characters are converted into
special unicode codes. Typically this happens when a name has greek, cyrillic
or japanese (katakana) letters. Often operating system comes with font sets
having greek letters, but especially katakana letters are often missing. To
fix this user has to have an unicode font which covers those needed ranges.
Number of freeware unicode fonts can be found in Internet.
NOTE: In some (rare?) cases it might be that the browser is using some
limited character set even if user would have a proper unicode set. It
might be good idea to check this first before searching for a new font.

     
Version history
--------------------------------------
0.476 - Dec 11, 2007
- BUGFIX: Merging players command had a small bug which didn't always remove
   the other entry
- ADDED: Support for the new South City route (Chicane course - SO6/SO6R)
- ADDED: Support for the new Formula BMW (FBM)
- ADDED: the missing SS class id can be used


0.475 - Sep 6, 2007
- NEW: Can rotate custom layouts too
- NEW: !pb shows also the position in the server best times list
- NEW: Help list for admin commands (!ahelp)
- NEW: !track command shows the autox layout too (if used)
- NEW: Command to merge players in the log (useful after a name change)
- IMPROVEMENT: Track rotation bit faster


0.474 - Aug 26, 2007
- BUGFIX: curse filter didn't work in demo when player changed the name to
   contain a curse word
- BUGFIX: !pb <pname> didn't work with name (!pb worked)
- BUGFIX: idler speccing spectated sometimes even after the race end.
- NEW: Shows player id number in !pb and !sb. Player can be deleted using the
   id number. (!log.del.driver #<number>)


0.473 - Aug 14, 2007
- NEW: Lap time estimator has now 2 modes (one to compare to the old best time
   during the session and another to compare to theoretical best)
- NEW: Curse filter (can control people who use bad language)
- NEW: Lap data can be exported out into an XML file
- NEW: Added the missing 'std' class name (XFG, XRG)
- NEW: The directory where the logs are kept can be given in the setup file.
- NEW: !race.pit command to show the list of pit stops
- BUGFIX: lap time estimator giving sometimes odd times
- BUGFIX: One possible (but rare?) situation of hang up


0.472 - Jul 14, 2007
- NEW: Flood filter. System admin can define how to handle person who type
   too much messages too frequently (flooding)
- NEW: Saves the used handicap (mass and intake) into the race result XML
- NEW: Two new commands - !rotator and !rotate. First checks the current
   track rotator state and the last one forces immediate track change. Giving
   !rotate a parameter like !rotate 1, spawns the current rotator entry. The
   !rotate command requires admin rights
- IMPROVEMENT: New PB messages shows the difference to the old PB
- IMPROVEMENT: Rotator delay increased bit and user defined delay can be now
   up to 30sec.
- IMPROVEMENT: Idle kicker (spectate idlers) works in demo too.
- BUGFIX: In command !pb, the player name wasn't shown or it was incomplete
- BUGFIX: Lap time estimator might not log the splits for the first lap out
   if the last stint was stopped before the finish line (between the split
   1 and the finish line)
- IMPROVEMENT: Tryes to allocate min 64kB size receive buffer for VCom server
   side (where VCom receives the LFS packets)
- IMPROVEMENT: Track rotator clears the start grid after the track change to
   force players choose a car which is allowed
- IMPROVEMENT: Changed the format of the lists where times etc are listed
   Affecting commands !sb, !race.lap, !race.split, !race.sector, !race.speed
   and !pointsall
   The command !sb lists now also the best splits.
- BUGFIX: Hopefully handling of the unknown driver error
- BUGFIX: Rotator changed track after one race even set to more races
- BUGFIX: Names with special codes (eg. '^s'->'/') caused problems in some
   commands
- BUGFIX: Could crash if given a non existing name to !points <name>


0.471 - Jun 15, 2007
- BUGFIX: Sometimes the mode could switch all tools
- BUGFIX: Some of the stage rally commands were buggy
- BUGFIX: Manual talked about !sr.record while it should have been !sr.rec
- BUGFIX: If typing erronous command in client mode (SR) LFS no longer gives
   MTC error


0.470 - Jun 9, 2007
- NEW: LFS 0.5 X support - OLD LFS VERSIONS NO LONGER SUPPORTED!!!!
- NEW: Tool for dynamic estimation of the theoretical best lap time
    Prints the estimated time after splits and end of lap
- NEW: Most commands work w/o taking a car out (spectating). Those which make
    no sense then do not work however.
- NEW: For some commands if leave the car name out, remembers the last used car
    and uses it instead if the player is spectating (e.g server best times)
- NEW: speed trap for all track area - set size to 65535
- NEW: !sr.lock <stage>, !sr.unlock <stage>, !sr.help
- NEW: Stage rally allows multiple stages at the same track (same track id) if
    earlier stages (with the same track id) are locked after completing them.
- NEW: Message board can be emptied by an admin (if set so in config)
- NEW: Can be defined so that only admins can write to message board (if set so
    in config)
- NEW: 'xml_encoding' in config file. User can define what encoding to use in
    XML files. Default set to iso-8859-1.
- NEW: Race and lap counts printed into server best times XML file (XSL
    doesn't show them though)
- NEW: Size of the best times file can be limited to a number of players.
    (e.g. Print only top500, even if there are more players).
- IMPROVEMENT: lap time list colors now personal and race best times with
    different colors (yellow and red)
- IMPROVEMENT: Better error messages (gives information about unknown labels)
- IMPROVEMENT: More accurate speedtraps (totally reworked)
- BUGFIX: Few small bug fixes
- CHANGE: Some commands changed:
    !stats race -> !race
    !stats race.lap -> !race.lap
    !stats race.speed -> !race.speed
    !stats race.sector -> !race.sector
    !stats race.split -> !race.split
    !stats points -> !pointsall
    !sr.record -> !sr.rec
    /mso vcom radio volume up  -> /o vcom radio volume+
    /mso vcom radio volume down  -> /o vcom radio volume-
    /mso vcom shutdown -> /o vcom quit
    All other /mso starting commands start now /o ...


0.461 - Apr 21, 2007
- NEW: Full support for W10 test patch
- BUGFIX: Idle kick warning message stayed visible sometimes when new races
    started


0.460 - Apr 15, 2007
- NEW: Supports LFS 0.5W with the possibilty to use older LFS versions.
    (0.5W=Insim v3, 0.5V etc = Insim v2)
- NEW: If the insim version is not the version which this is mainly ment
    to support, gives a warning when starting.
- NEW: Reports pit stop duration for players. (REQUIRES 0.5W or newer)
- NEW: !laps showing lap/split times show now pit stops and duration/reason
   too. (REQUIRES 0.5W or newer)
- IMPROVEMENT: GPS coords tool no longer needs tool activation (works always)
- NEW: Support for a 'generic' music player. Ie user can use any music player
   as long as it can be defined with the 2-3 variables given in the setup.
- NEW: Automatic tool to kick idlers (car not moving)
- NEW: Stage rally (semi)automatic tool
   - SR tool number replaces GPS (128)
   - Series of !sr commands to use it
- NEW: With multiple instances the title of console windows get additional
   numbering like "VCom #1", "VCom #2", etc. The number given is the first
   free number.
- NEW: VCom version printed to the beginning of the console output
- NEW: Optional command line parameters to be used after the exe name: 
        -f <config file name>
        -m <mode>
       To run multiple instances of the same Vcom installation you need to use
       -f switch to load different setups (which have non conflicting ports)
- NEW: system/best_laps_save_interval in setup file to define how often
    (if ever) to save the best laps.
- BUGFIX: With multiple instances trying to connect, pressing ESC to abort
   one VCom could abort wrong VCom (in connection trial state) or even
   multiple instances.


0.455 - Dec 24, 2006
- NEW: '!stats race me' command shows the average lap time and speed too.
- NEW: !silent command to turn off/on VCom printed messages. Like those telling
   best lap and split times. This is only for messages visible to the player.
- IMPROVEMENT: VCom start and end messages are not show in public if only
    possible to send them to the user only.   
- IMPROVEMENT: Removed rest of the debug messages from the prompt if not in
   debug mode.


0.454 - Nov 27, 2006
- NEW: Displayes an error code if init failed in the start.
- NEW: Added vcom_address into the setup file. Can give the interface and port
    vcom is listening to lfs replies. Earlier was fixed to localhost.
- NEW: VCom can contact LFS on other IPs than localhost too.
- NEW: Prints VCom interface(address) and port on the prompt where the LFS
    address and port are, when the program starts.
- NEW: debug flag in the setup file. Gives extended debug information.
- NEW: 'wait' option inside track rotator section in setup file. Sets
   the amount of wait (in ms) in rotator when changing track etc.
- BUGFIX: In reading the user typed commands there was a bug which ment
   that sometimes the commands could not be read (only running under relay?).
- BUGFIX: If setup.dat had and error it printed a message in a loop. Now it
    breaks and quits the app too.


0.453 - Oct 19, 2006
- NEW: Radio commands for the "/mso vcom radio" family. Namely "volume up",
   "volume down"
- NEW: Can give the output directory in the setup file with "output_directory"
- NEW: New XSL race result template shows average speed and distances in
   miles and miles per hour too.
- IMPROVEMENT: Uses short car names (3 letter abbreviations) for all the
   messages at lap, split and speed trap lines, as well as for most of the
   stats listings (!... commands).
- BUGFIX: Giving LFS address and port was buggy. It always dropped to using
   default adress and port. (this worked but became buggy at some point)
   The default adress is 127.0.0.1 and port 29999.
- BUGFIX: Corrected one theoretically fatal bug, which could crash the program
   sometimes (although never happened in reality?).
 

0.452 - Sep 15, 2006
- NEW: Trip meter for avery racer (Use !trip, !trip on|off and !trip clear
    commands). Useful for measuring autocross track lengths.
- NEW: !track command to show track name, id, length and split line count
- NEW: !length <length> command for anybody with admin rights to set track
    length in meters. Useful for setting autocross track lengths.
- NEW: !splits <count> command for anybody with admin rights to set track
    split line count. Useful for setting autocross track split line counts.
- NEW: !log.rem.driver <name> to remove driver from the log entry. Needs admin
    rights. (used against cheaters?)
- NEW: !stats points - command to list ordered point standings of connections
- NEW: Speedtrap message shows the car type too
- NEW: Race results show the car type(s) with which they have been made
- NEW: 'lfs_no_echo' switch in system section of the setup file. Used to tell
    if LFS comes with or without the '/echo' command. By default set to 0 (yes)
- IMPROVEMENT: VCom can be started before LFS with InSim. Now it keeps retrying
    for some time (over 1 minute at least) before giving up.
- IMPROVEMENT: Car radio can be turned on/reconnected later with command
    "/mso vcom radio connect". Makes possible to start Winamp later when VCom
    is already on.
- IMPROVEMENT: Race results not showing any data that isn't recorded yet (like
    top speed that hasn't been driven yet)
- IMPROVEMENT: If user changes just license plate (not name), vcom doesn't
    display any message (doesn't even process it).
- IMPROVEMENT: For !sb command the default car is the one player is currently
    using.
- IMPROVEMENT: Car radio prints texts in multiplayer mode too (when joins a
    server). This requires user to have S2 0.5 U15 or never (requires to have
    /echo command)
- IMPROVEMENT: Alarm clock texts are always shown only to the user if running
    LFS with /echo command (not visible to other players).
- BUGFIX: Some unit conversions to miles and miles/h used slightly incorrect
    values
- BUGFIX: In setup.dat line end mark (;) can be used in data if escaped with \
    (like \; ). Escape char is escaped with doubling it (like \\).
- BUGFIX: The XSL sheets for race results and best times now should work same
    way in all browsers.
- BUGFIX: Disabling log doesn't prevent showing auto hi messages.
- BUGFIX: Speed trap size was fixed - now uses the given size in setup file.
- CHANGE: The default location for Kyoto Oval speedtrap changed to just before
    the 3rd corner.


0.451 - Jul 14, 2006
- BUGFIX: Removed the extra linefeed from 'comment' tag in XML output (caused
    some extra graphics drawn in browsers.
- BUGFIX: '^' character no longer converted in XML output and it is kept
   unaltered.
- NEW: Support for Cyrillic and Japanese (Katakana) characters in XML output.
   This requires that user has installed an unicode character set which covers
   those characters.
- IMPROVEMENT: All greek letters are now covered in XML output (some rare
   chars were not converted earlier). This requires that user has a proper
   unicode character set installed which covers greek letters.
- IMPROVEMENT: Some new special 'odd' characters are handled in XML output
   (like filled triangles, squares and diamonds). This requires that user has
   a proper unicode character set installed.
- IMPROVEMENT: Looks of the XSL templates (some added graphics etc)


0.450 - Jul 6, 2006
- BUGFIX: Included new version (0.224) of warcudp
- BUGFIX: Some HTML char encodings fixed to XML output
- IMPROVEMENT: Tool mode message moved to last line in "/mso vcom mode command"
   to help seeing it in dedicated host (which shows only the last 8 lines).
- IMPROVEMENT: Tryes to convert different exotic charset characters into
   proper HTML - Only Greek alphabet works.
- ADDED: Track rotator (automated) - see the tool help
   - "/mso vcom rotator" command to see the tracks in rotator
   - New section and labels in setup file to add tracks into the rotator
- ADDED: Some more special chars added to be HTML friendly in XML output
- ADDED: Message board. Users can type short messages into it with !min
   command (Message IN) and read message board messages with !mb (Message
   Board) command. An optional parameter for start line can be given for the
   !mb command. Setup file has 'messageboard' section to set time and count
   limits for messages.
- ADDED: !server command shows also VCom uptime (how long VCom has been
   running)
- ADDED: The line in !server command output telling the local time tells now
   the difference to GMT too and if daylight saving time (DLTS) is used.


0.445 - Jun 16, 2006
- ADDED: Can generate race results into an XML file same way as server best
   already. use "/mso vcom out race" to do that.
- ADDED: Tool to automaticly save race results into XML files. Can be turned
   on/off same way as other tools.
- IMPROVEMENT: More of the special characters can be converted into HTML
   (shows player/server names with more correct characters in XML files)

0.444 - Jun 12, 2006
- ADDED: "/mso vcom mode" prints current mode (selection of tools)
- ADDED: "/mso vcom mute" and "/mso vcom mute <modes>" to query and set
   selected tools into muted/silenced mode. This is not affected by universal
   mute ("/mso vcom mode silent"). In muted mode tools are working, but do not
   print messages on screen. To get messages on screen, both universal and
   selective mutes must be off.
- ADDED: 'modes' into system section in the setup.dat file. Used tools can be
   given in setup file. Same as giving it with "/mso vcom mode <modes>" command.
- ADDED: 'mutes' into system section in the setup.dat file. Used selectives
   mutes can be given in setup file. Same as giving it with
   "/mso vcom mute <mutes>" command.
- BUGFIX: Changing mode with "/mso vcom mode <mode>" did not work
- IMPROVEMENT: If speedtrap is turned off, no longer uses cpu power to
   calculate and check speeds on the background because they are not
   needed
- IMPROVEMENT: "!stats race" displays only the stuff which is logged.
   Other statistics are dropped.
- IMPROVEMENT: Looks of the given XSL template. Driver and server names use
   correct color codings.
- IMPROVEMENT: Notifications of AI drivers driving new personal bests
   are no longer sent to their master computer (who has assigned the AI
   player)

(no history for earlier versions)


Bugs
----------------------------
Found one? Let the author know about it. Private mail him at www.lfsforum.net



