*******************************************************************************
*** MW4 Monitor 1.7.7 open beta, readme file. ***
*** Author: Giovanni "EvilCow" Di Sirio ***
*** ***
*** E-Mail: herpes@ngi.it ICQ: 1302108 ***
*** Developed with MekTek contribution: http://www.mektek.net ***
*** Homepage: http://mw4.ngi.it/evilbot ***
*** Open Beta Forum: http://www.mektek.net/forums/index.php?act=SF&f=12 ***
*******************************************************************************

This is a beta release of the MW4-Monitor, bugs are very possible.
Bug reports and new ideas are really welcome.

******************************
*** MW4-Monitor background ***
******************************

MW4 games have a poor server support, this makes the life for server admins
really hard at times. Other multiplayer games (Tribes as example) are really
server features rich compared to MW4.
The DEV team acknowledged this and made the Win32 dedicated server, a step in
the right direction but still poor compared to other popular games.
The idea at the base of MW4-Monitor project is to bring some features of the
Tribes dedicated server into MW4.

******************************
*** Basic list of features ***
******************************

- Players votes: map, kick, admin.
- Warnings and auto-kicks for suicides, TKs, bad language.
- Programmable taunt bot, this makes the players aware that something different
exists on the server, players feedback is usually positive.
- Tournament mode, the maps don't cycle but are selected by players or by a
public admin (a player can become public admin by vote).
- Telnet admin interface.
- Integrated FTP server for remote server management.

******************************
*** Design choices ***
******************************

- The monitor offers a limited GUI, all options must be set into the configuration
files, all operations are possible by inside the game or the telnet
interface. I prefer features over "easy to use" because usually server admins
are technically skilled people.
- The monitor doesn't search for a started server, it starts the server by itself
and monitors it all the time, closing the monitor you shutdown the server too.
- The monitor is designed for dedicated, remotely-operated servers not for the
usual desktop user.
- The monitor is tested on W2K SP2 and XP. It **does not work** under W95, W98,
W98SE and WME, there are no plans to support those "operating systems".
- The monitor is only tested on English and German versions of the games.

******************************
*** Installation ***
******************************

- If you have a previous MW4 Monitor installation save you configuration files:
Server.ini, EvilBot.ini, MapCycle.ini, Admin.ini.
- Unzip the files into your main game directory.

******************************
*** Monitor setup ***
******************************

- Edit Server.ini, insert you server configuration here, documentation is
inside the file as remarks.
- If needed edit Mapcycle.ini with the Map Cycle Editor included with the
monitor. You don't have to do this unless you want a different mapcycle or
you modified your NFM files.

******************************
*** Server setup ***
******************************

It is done inside Server.ini, make sure to have a connection configured inside
the game.

******************************
*** Server execution. ***
******************************

Run the MW4Monitor.exe program, after that the following things will happen.

1 - The monitor starts a dedicated server.
2 - The monitor automatically cycles server setup screens.

While the server is starting *do not* try to move or click the monitor or the
server, this often stops the starting process.
After the server started and the monitor goes into the "logging" state you can
safely rearrange windows.

******************************
*** Multiple servers ***
******************************

To run multiple servers within the same Mercs directory you can create multiple
Server.ini files renaming them: Server1.ini, Server2.ini etc etc.
After that you have to launch the monitor with the config file as command line
parameter. I suggest to make 2 desktop shortcuts to MW4Monitor.exe and edit the
properties to add the config files as parameter.
Note that you can make different mapcycles and bots too.
UPDATE: It seems that the Win32 Dedicated Server does reload some server
parameters at any map change, if you run multiple servers with different
settings I suggest to run them from different directories.
You have not to reinstall the game, just copy all files in another
directory, if you need to save space you can erase movie files from
the second directory.

******************************
*** REPORT A PROBLEM ***
******************************

Send me a description of the problem (as detailed as possible) and following
files:

- Option.ini
- Server.ini
- Evilbot.ini
- Mapcycle.ini
- ErrorLog.txt

herpes@ngi.it

******************************
*** Versions History ***
******************************

Version 1.7.7
- Added game type 4 to launch a different mercs executable name:
mw4mercs_win32.exe

Version 1.7.6
- Now the Print() API expands the /n and %$ macros. The other macros are
available in PrintMacro() and PrintMessage() APIs as usual.
This fixes a bug that did not allow the /n into the EvilBot.dll scheduled
messages.
- Fixed a bug in the Print() API, automatic lines wrapping was not working.
NOTE: you dont have to manually put the /n, the bot wraps lines automatically.

Version 1.7.5
- Fixed another incompatibility between MW4 Monitor and the MekPak 1.1.

Version 1.7.4
- Now all the Print() APIs can insert the bot name if the message starts with a
'$'.
The APIs BotPrint() and BotPrintMacro() are no more available (still present
but works exactly as Print() and PrintMacro()). This mean that if you want the
bot name you must start your messages into the .ini files with a $.
- Fixed a small incompatibility between MW4 Monitor and the MekPak 1.1.

Version 1.7.3
- Enhanced the PrintMacro() to handle multi lines messages, the line separator
is the /n macro, the list of macro is enhanced, the documentation of all the
available macros is in the EvilBot.ini file as a remark. The API also
automatically wraps the text to not exceed the 90 total characters, the text
is wrapped when a space, a tab or a dot is met in the text.
Now adding new macros to the monitor automatically enhances all the DLLs using
this API.
Note, now this API DOES NOT add the bot name before the lines.
- New API BotPrintMacro(), same as PrintMacro() but inserts the bot name.
- New API ExpandMacros() that expand the bot macros into a string.
- Modified the Options->Prompt setting in Server.ini to not default to "Bot: "
when empty, not it is possible to not give the bot a name.
- Now the new macros work even for the monitor commands: -tip, -help, -hello,
-hi.
- Added new APIs to Enable/Disable the Votes, the Randomizer and the monitor
chat output.
- Fixed a bug that made the monitor not read correctly the mech names for MW4
Vengeance and MW4 Black Knight games.

Version 1.7.2
- NEW FEATURE: Added settins into Server.ini to override any setting in the
Options.ini file inside the [server] section, this will allow to modify
settings not handled in the GUI like the Mission Review, the restrictions and
others.
- Fixed a bug that made the monitor crash when only a map was in the mapcycle
and the random cycle mode was enabled.
- Fixed an error in GermanServer.ini, changed from:
JoinTimeLimit='Unlimited'
to
JoinTimeLimit='Unbegrenzt'

Version 1.7.1
- NEW FEATURE: Implemented APIs to allow the plugin DLLs to create menu items in
the MW4 Monitor GUI.
- NEW FEATURE: Plugin manager function, it shows name, status and version of all
the installed plugins. It is also possible to activate/deactivate the plugins
from the monitor GUI.
Thanks to this feature the most common plugins will be released bundled with
the monitor but deactivated by default. The download will be a bit bigger but
the installation much much simpler.
- Small change to the tournament mode: when the tournament mode is enabled the
monitor no more selects the next mission when the current mission ends. It
stays on the same mission (useful when having to replay a drop).
- Fixed a bug that made not possible delete map cycle countdown messages as in
versions before 1.7.0.
- Fixed a bug with votes built into DLLs.
- Implemented a mechanism that allow plugins to expose their own APIs to other
plugins and to the monitor. The plugins just have to implement a
_QueryServices@0 entry point that returns a pointer to the APIs jump table.
Look PluginsInterface.pas for details.
- Implemented a new API to query other plugins APIs. Now plugins can talk each
other.
- Implemented a new API that allows to retrieve Win32 Dedicated server controls
window handles from within plugins DLLs. This will allow the implementation of
complex functions as DLLs (bot control as example). The window handle can be
searched by class name, window text or client relative coordinates.
The window handles can be manipulated with the usual Win32 APIs like
SendMessage();
- Modified the API Print() to prefix all the messages with the string "* ", this
may require some fixes into the plugins. The change is needed to make all the
plugins look the same when printing something. Only the ExtraCommands plugin
required a change because this (new version 1.0.3).
- Introduced a new event for plugins: _OnUnknownServerMessage@4, this event is
triggered when the server prints a message that is not recognized by the
MW4 Monitor parser, this will allow to write plugin DLLs that handle messages
specific of Mission Play or CTF or of a custom map.
The messages prefixed with "* " do not trigger this event preventing possible
deadlock situations with plugins that print messages.
- Introduced a new event for plugins: _OnRawMessage@4, it is fired for each line
that appears into the server chat box. The plugins MUST NOT PRINT MESSAGES
while executing this event handler or a deadlock condition may happen.

Version 1.7.0
- NEW FEATURE: Anti cheats protection, this version includes a "Pure Server"
checker, the users will be able to verify using the "-pureserver" command that
the server files are not modified. The Monitor makes a full CRC of all
relevant server files at start, this may require some time however, time
depending on the CPU power. Modified files will not stop the monitor to work
but differences will be reported to players.
The feature is available only for English PR1 version of Mercs in this
version.
- NEW FEATURE: Implemented a votes interface for plugins DLL, now DLLs can add
new vote types. Lots of new APIs for Plugin DLLs.
- Corrected errors in some built-in monitor messages.
- Removed the EvilBot from the MW4 Monitor, the bot is now available as a plugin
DLL, this will allow extreme personalizations to the bot and a lighter Monitor
for who does not need the bot.
- Removed the TeamKill, Suicide, Rejoin, BadWords, Nickname filters from the
core monitor, the filters are now available (enhanced) as a separate Plugin
DLL.
- Some optimizations in code: smaller memory footprint.

Version 1.6.3
- Made the "RestrictMecs" setting in Server.ini optional it now can be disabled
by inserting a # before the name or just deleting the whole line.
- NEW FEATURE: Added to the GUI an option to reinitialize the mapcycle, now it
is possible to change the mapcycle without have to restart the server, however
the current map is terminated when the new mapcycle is loaded.
Tournament Mode and Randomizer are reset to the default state too.

Version 1.6.2
- NEW FEATURE: New API BotPrint() that prints messages prefixed with the bot
name, useful if a DLL wants to impersonate the server bot.
- NEW FEATURE: New chat command "-version" that prints the monitor version.
- NEW FEATURE: New setting in Server.ini "RestrictMecs" that enables/disables
the mech/components restriction checkbox.

Version 1.6.1
- NEW FEATURE: Opetion in Server.ini to disable all the monitor output to the
server (GlobalOutputDisable).
- Fixed a bug that generated errors in ErrorsLog.ini when a player type a % in
chat.
- Fixed a bug with CanListCycle and CanListMaps settings.
- Fixed the commands "-List Cycle" and "-List Players".
- Fixed a bug in GermanServer.ini.
- Fixed a problem that did not allow very long mapcycles, now the limit is 100
times higher.
- Fixed a problem with BK and Vengeance.
- Fixed a problem with Teams Tonnage Randomizer.
- Fixed a problem with Teams CBills Randomizer.

Version 1.6.0
- NEW FEATURE: Mix/Max Players Tonnage settings in MapCycle.ini.
- NEW FEATURE: Mix/Max Players Tonnage chat commands (admin commands):
-set minton "45"
-set maxton "80"
- NEW FEATURE: Mix/Max Players Tonnage telnet commands:
set minton "45"
set maxton "80"
- NEW FEATURE: Teams Tonnage settings in MapCycle.ini.
- NEW FEATURE: Teams Tonnage/Cbills chat commands (admin commands):
-set tonnage "450"
-set cbills "100000000"
- NEW FEATURE: Teams Tonnage/Cbills telnet commands:
set tonnage "450"
set cbills "100000000"
- NEW FEATURE: New server APIs to allow plugin DLLs to change teams/players
settings.
- NEW FEATURE: MapCycleEditor upgraded with Tonnage/CBills Limits settings,
the new version number is 1.1.0.
- NEW FEATURE: New chat command "-list cycle" that prints all maps in mapcycle.
- NEW FEATURE: New settings in Server.ini to enable/disable specific commands.
- NEW FEATURE: MapCycle countdown messages now programmable in MapCycle.ini.
- Fixed small bug, the % character, when typed in chat, generated an error in
ErrorLog.txt.
- Better randomization for random mapcycles and conditions randomizer.

Version 1.5.14
- Fixed a bug in GetMissionTime() API.
- Public release.

Version 1.5.13
- Fixed a bug with Teams/NoTeams mission type detection. This screwed the
teamkills detection too.
- New API to get mission time left as a string.
- Little change in the mission randomizer, now an empty entry in the randomizer
lists is allowed and means "default" (keep the setting in the mapcycle).
- New event handler for plugin DLLs: OnMissionSelect (_OnMissionSelect@4). The
parameter is a pointer to a TMissionData structure. The TeamMission boolean
of TMissionData structure is always false at this time.
- Modified the monitor to generate events OnDisconnect for all the players when
the server crashes or is terminated. This will allow plugins DLL to safely
free the memory attached to TPlayersData structures when the server is
terminated.
- NEW FEATURE: Added "Save as..." menu entry to the MapCycleEditor utility, the
new version number is 1.0.5.

Version 1.5.12
- NEW FEATURE: MW4 Monitor remote update, thanks Sir Rex for this grea idea.
To use the autoupdate feature you need to start the monitor with the Start.bat
batch file. With the FTP upload the new MW4 Monitor files into a directory
with name {mercs}\autoupdate then use the telnet "shutdown" command. For
details open the batch file and read it yourself :)
NOTE: You have to upload files tested and working because if the monitor is
not able to start again (may be because an error in the new Server.ini) you
will not able to regain control of the server from remote. Use this feature
ONLY if you know exactly what are you doing.
- Added to the TPlayersData structure the Players Connect Time, it is now
accessible from Plugins DLLs.
- Fixed a small problem in GermanServer.ini.
- Fixed a small bug about the Mech Tonnage on non-english versions of the OS.
- Greatly optimized the server binding phase, now it takes only a couple of
seconds.
- Added an event handler for "Team Balance" server messages to allow the
creation of DLLs for team balance enforcement (_OnTeamBalance@4) the parameter
is a pointer to an array of 8 integers.

Version 1.5.11
- Fixed a small bug of the "Admin" telnet command not updating the players list
in the Monitor GUI.
- Changed the telnet "Quit" command in "Shutdown" to make it harder to type by
mistake :)
- New Plugin DLLs API to get the monitor version as a DWord.

Version 1.5.10
- Fixed an error introduced in 1.5.9 that broke the mapcycle mechanism under
some conditions.
- NOTE: From version 1.5.9 the boolean settings (those with True/False) under
the [Server] section in Server.ini are no more optional, if you use an old
version of Server.ini make sure to remove the # before the setting or it will
be set to True by default.
The mandatory settings are: ForceFirstPersonView, LimitedAmmunitions,
HeatManagement, FriendlyFire, SplashDamage, ForceRespawn, DeadMechsCantTalk,
DeadMechsCantSee, AllowJoinInProgress. Make sure to use the new Server.ini OR
to edit the old one.

Version 1.5.9
- NEW FEATURE: Added a new API to return the list of available maps.
- NEW FEATURE: Added new APIs to set map and missions by name even if not
declared into MapCycle.ini, as example you can select "Aspen - Aspen" as map
and "Team Battle" as mission". This will allow plugin DLLs to override the
MapCycle mechanism.
- NEW FEATURE: Now the monitor always sets the server parameters, the -1 is no
more a possible value into the TServerData structure.
- Added "ForceRespawn", "SplashDamage" and "FriendlyFire" to the "status" telnet
command, forgot that in 1.5.8.
- Fixed a bug with OnUnknownTelnetCommand() event handler.
- Fixed a bug with the short telnet echo command "$".

Version 1.5.8
- NEW FEATURE: Added "ForceRespawn", "SplashDamage" and "FriendlyFire" settings
in Server.ini and to "Server" telnet command. The settings are available to
plugins DLLs as well into the TServerData structure.
- NEW FEATURE: New telnet command "set waves" to change the number of waves in
no respawn mode. Examples:
Set waves "1"
Set waves "Unlimited"
The command has effect only if in "NoRespawn" mode.
- NEW FEATURE: New chat admin command "-set waves" to change the number of waves
in no respawn mode. Examples:
-Set waves "1"
-Set waves "Unlimited"
The command has effect only if in "NoRespawn" mode.
- NEW FEATURE: New telnet command "set lock on|off" to set the server lock.
- NEW FEATURE: New chat admin command "-set lock on|off" to set the server lock.
- NEW FEATURE: Now the "Set" and "-Set" commands are useable even in normal mode
(in previuos versions it was available only in tournament mode).
Of course the command will be accepted only while the game is forming.
- NEW FEATURE: Short Telnet "say" command, example: $hello everybody
- NEW FEATURE: Now it is possible to set the number of waves directly into
MapCycle.ini, you dont have to change your NFMs to make Classic No Respawn
missions (This feature only works with Mercs PR1).
- NEW FEATURE: New server APIs to set all mission parameters from a DLL.
- NEW FEATURE: New server API that allows to retrieve the mission list from a
DLL as a null terminated string with map names separated by CRLF.
- NEW FEATURE: New version 1.0.4 of MapCycleEditor, it allows to define the
Number of Waves on MapCycle entries.
- Fixed the bug that allowed to crash the monitor by using characters on the
server chat.

Version 1.5.7
- NEW FEATURE: Improved Telnet Status command, now it reports all the server
parameters.
- NEW FEATURE: Custom Telnet commands are now possible into the plugin DLLs.
- NEW FEATURE: Custom Chat commands are now possible into the plugin DLLs.
- NEW FEATURE: Tournament mode accessible from plugins DLLs as a new API.
- NEW FEATURE: Map cycle related messages moved in Server.ini, those messages
were hardcoded in previous versions. Now they can be changed or suppressed.
- NEW FEATURE: Server name on the Win32 Dedicated server window title bar,
very useful when multiple servers run on the same host.
- NEW FEATURE: Admin chat command to globally enable/disable votes
(-votes on|off).
- NEW FEATURE: Admin telnet command to globally enable/disable votes
(votes on|off).
- NEW FEATURE: Admin telnet command to change all the server settings, the
command has the following syntax "Server ".
Examples:
Server name "My server"
Server n "My server"
Server password "secret"
Server p "secret"
Server ForceFirstPersonView on
Server ffpv on
Note that the param names can be abbreviated, the available params are those
available as settings in Server.ini. The effect of the "Server" command is not
immediate, a "Reboot" command is required to reinitialize the server.
- Removed the redundant telnet commands "name" and "password".
- Fixed a bug (only for V and BK): the server.ini keys "AllowJoinInProgress" and
"JoinTimeLimit" did not work.
- Fixed a problem not allowing bot dictionaries longer than 2048 bytes, now the
limit is 32768.

Version 1.5.6
- NEW FEATURE: Now it is possible to create unit taunts for those units that
have the tag at the end of the nickname.
- NEW FEATURE: Added an option (Server.ini) to make admins immune to kick votes.
- NEW FEATURE: Admin telnet command now accept player ID too.
- Fixed a problem with map votes born in 1.5.5.
- Fixed again the setting "Force 1st person perspective".
- Fixed again the autokick for illegal chars in nicknames.
- Modified the interface to plugins DLL to make useable more easly with other
languages, mainly C and C++, this mean you have to use the newer versions of
ServerScript.dll and AutoReboot.dll.
- Fixed a bug that allowed players to not be recognized by the bot by using
duplicate nicknames. From this version duplicate nicknames can be kicked
automatically (strongly suggested).

Version 1.5.5
- NEW FEATURE: Randomize mode. This feature allows to change map settings
randomly. Affected settings are: Visibility, TimeOfDay, Weather, Stock mechs.
In MapCycle.ini there are settings to: enable/disable the feature and change
the probability that a setting is changed. New vote "-vote randomize on|off",
new admin command "-randomize on|off" and new telnet command
"randomize on|off".
- NEW FEATURE: Stock Mechs and Radar setting for mapcycle.ini entries.
- NEW FEATURE: MapCycleEditor updated to support Radar and Stock settings.
- Fixed the setting "Force 1st person perspective", it never worked in Mercs PR1
because the string on the server GUI was different (they finally corrected
that "persion" in "person").
- Fixed a bug in autokick for illegal chars in nicknames.

Version 1.5.4
- NEW FEATURE: Unit taunts. Now it is possible to define a taunts set for a
whole unit. The bot checks name prefixes, see the example in EvilBot.ini
file.
- Fixed the chat command "-tournament on/off".
- Fixed the bug that prevented to create custom taunts for nicknames containing
'[' or ']' chars.
This workaround must be used while defining custom taunts: write the '[' char
as '((' and the ']' char as '))' into the ini file section labels.
Example: write [((XYZ))Hammer] instead of [[XYZ]Hammer].
- Removed the bot name from lines generated by "-list maps" and "-list players"
to reduce chat spam.

Version 1.5.3
- NEW FEATURE: Added settings in server.ini for AllowJoinInProgress and
JoinTimeLimit.
- NEW FEATURE: Added optional command to start/stop tournament mode for public
admins.

Version 1.5.2
- Added support for Mercs PR1, it is gametype 3, remember to modify your
server.ini. The support for PR1 will be improved in next releases, this one
just makes it work. Support for CNR is needed and some modifications to the
MapCycleEditor and tournament commands too.

Version 1.5.1
- Fixed the problem that prevented votes, the classic < instead of >=...

Version 1.5.0
- NEW FEATURE: FTP Server (limited to game directory and subtree).
- NEW FEATURE: Experimental support for Vengeance and Black Knight is back.
- NEW FEATURE: New parameter "MinVotesPercentage" for votes, it allows to set
a minimum percentage of players voting to make the vote valid.
- NEW FEATURE: New "quit" telnet command, it quits both server and monitor, use
this command only if you have something that restarts the monitor
automatically or you want to restart it manually. It is just like clicking
the "Stop server" button.

Version 1.4.12
- NEW FEATURE: The kick now puts player names into a temporary internal ban
list (ban by name), by default now the kick keeps the player out of the server
for 5 minutes, of course this time is configurable in server.ini.
- NEW FEATURE: Warning (on connect) and kick (on join) for nicknames containing
bad words.
- NEW FEATURE: Daily logs, you can insert the %d macro into logs filename,
the macro will expand to current date string in the form "yyyy-mm-dd" (to keep
filenames correctly ordered if sorted by name). If you use this macro I
suggest to put logs into a subdirectory. Example:
LogFile=logs\Log %d.txt
You have to create the subdirectory or the monitor will generate no logs.
- NEW FEATURE: Admin log file, votes, public admin actions and telnet
actions are logged here.
- NEW FEATURE: Commands "-kick" and "-vote kick" now accept the numeric player
ID too, the player ID is visible by using the new command "-list players".
- NEW FEATURE: Command "-ban" for public admins.
- NEW FEATURE: All public admin commands (-kick, -ban, -map etc) can be
enabled or disabled in server.ini.
- NEW FEATURE: New vote to start/stop tournament mode. The command syntax is
"-vote tournament on|off".
- Fix for the experimental non-English versions support, a German compatible
server.ini file is included (GermanServer.ini, rename it before use).
- Fixed a problem with the votes system that can be used to alter vote results.
- Improved bad language filter, now it allows to define words that must be
matched alone by inserting a leading and/or a trailing space, example: " ass "
will only match "ass", "@ss", "a55" but not "password".
The general rule is the following:
"XXX" - Match XXX in any position.
" XXX" - Match words starting with XXX.
"XXX " - Match words ending with XXX.
" XXX " - Match the word XXX (not inside other words).

Version 1.4.11
- NEW FEATURE: Kick and Ban by ID from telnet. The kick/ban by name now does
not require quotes but only if the name does not contain spaces or symbols
(almost impossible).
- NEW FEATURE: Tournament mode commands available to public admins too with the
command "-set", exactly the same syntax of the telnet "set" command.
- Added a PlayerId field to the player structure, this identifier is assigned
at player connect time and is unique in the monitor session lifetime. The
telnet command "list players" now shows the player ID.
- "-map" and "-vote map" chat commands now accept the map name without quotes
if the map name does not contain spaces or symbols.
- "map" telnet command ow accept the map name without quotes if the map name do
not contains spaces or symbols.
- Made all the strings that the monitor searches in the chat box configurable
into server.ini under the [Parser] section, this is required by non-English
versions of dedicated server.
- Introduced a fix for the bug that makes sometimes players not assigned into
the right team. I think this happened when a player disconnect **while** the
monitor is reading player's data from the players list box (the lines scroll).
The bug was rare, so we have to wait to see if the fix really helps.
- Improved the bad word filter by transforming some symbols to alpha chars,
now "sh!t" will be detected as "shit".
- Disabled suicide/teamkill/rejoin autokick when the server is in tournament
mode.

Version 1.4.10
- Modified the monitor to initialize COM with CoInitialize(). The scripting DLL
requires this.
- Added the "Custom Battle", "Custom Campaign" and "Custom Mission Playe" to the
mission type combo box of the MapCycleEditor (version 1.0.2).

Version 1.4.9
- NEW FEATURE: Bad words filter. It works just like suicides and team kills. New
macro %l (L) for bot taunts, it is the bad words counter.
- NEW FEATURE: Added a ServerTimeout setting in Server.ini that defines the time
in seconds that the monitor waits for the server window to appear.
- NEW FEATURE: Tournament Mode ON/OFF menu item on Monitor GUI.
- Some minor changes in PluginsInterface.pas.

Version 1.4.8
- Fixed a bug that prevented the monitor to correctly count joins (screwed in
1.4.0), the effects were the following:
1 - %j macro always reported zero.
2 - The "list players" did not show the "*" for playing players.
3 - The GUI did not show the "*" for playing players.
4 - The join/warning and join/kick were not working.
5 - The teamkill/warning and teamkill/kick were not working.
- Fixed more bugs about taunt macros.
- Fixed an error on ErrorLog.txt about a ESocketException, this happened
restarting the server while some telnet clients were connected. The error was
harmless but it is now handled properly, thanks Sir Rex.

Version 1.4.7
- Minor fixes in chat parser, thanks ns13draco.
- Added more messages types to ErrorLog.txt for unexpected conditions.
- Fixed a bug that made the taunt macros %t, %m and %v not work (broken since
1.4.0), thanks Elisor.
- Fixed a bug with team kill detection (broken since 1.4.0).
- NEW FEATURE: Added commands "set StockMechs" and "set Radar" to the telnet
interface (tournament mode), thanks VVarDog.
- NEW FEATURE: Added settings for DelayBetweenMaps, DeadMechCantSee and
DeadMechCantTalk to Server.ini, thanks Dark Phoenix.

Version 1.4.6
- Fixed a bug with "Reboot" server API.
- Fixed a problem with nicknames starting with *, the bot did not recognize
them.
- Better debug support and detailed errors/exceptions report in ErrorLog.txt.
- Fixed minor bugs here and there and inserted code to catch unexpected
exceptions.
- NEW FEATURE: Auto-Reboot plugin DLL that allows to restart server after a
configurable number of hours. Delphi source code available.
- Restored the bot name in front of MW4-Monitor generated messages as it was
in version 1.3.*.

Version 1.4.5
- Rewrote the chat handling code, hopefully this will fix the phantom chat box
bug and some other problems with chat logging.

Version 1.4.4
- NEW FEATURE: Added settings for FFP, Heat and Ammo in Server.ini.

Version 1.4.3
- Fixed a small bug on the GUI that made the popup menu shows clicking on any
page instead of just players page.
- Diet for the bot, internal optimizations resulted in smaller and faster code.
- Made the server binding procedure safer and faster. Now the monitor no more
uses the EnumChildWindows() to collect server data but statically linked
controls.
- Included version 1.0.1 of MapCycleEditor.exe that includes support for
"Custom Team Battle" game type.

Version 1.4.2
- This is a test version that includes better error handling and some test code
to try to correct the bug that on some servers stops the mapcycle.
- NEW FEATURE: Included in this version there i the Map Cycle Editor 1.0.0 that
allows to edit mapcycles files. To run it just double click MapCycleEditor.exe.

Version 1.4.1
- Fixed chat commands, totally broken in 1.4.0.
- Fixed Player name showing as "ScannerForm" in Monitor GUI.

Version 1.4.0
- NEW FEATURE: Now the monitor is "plugable" with DLLs, you can enhance your
server by writing the code you need and use the monitor services with a set
of "Server API". The source code of a simple DLL is included (Delphi) as a
demo. Most new feature will be implemented as plugins so the core monitor will
stay as stable as possible over time. Some of existing features will be moved
into plugins in next releases (probably the taunts and logs).
- NEW FEATURE: Telnet command to change server password.
- NEW FEATURE: Telnet command to change server name.
- NEW FEATURE: Telnet command to reboot the Mercs server.
- This version contains a *lot* of code rework needed for next tool enhancements,
this mean that this version is potentially less stable than 1.3.14.
The code is more efficient, this mean a smaller load on the server but I
think the difference is not noticeable because the program was already really
light. Some big classes were split in smaller classes to make code more
readable.
Use this version for **testing only**, critical servers should use version
1.3.14.
- Votes and auto-kick settings moved from Evilbot.ini to Server.ini.
- Moved server-dependent messages from Evilbot.ini:[_Messages] to
Server.ini:[Messages], now users don't *have* to edit Evilbot.ini but only
Server.ini when installing the MW4-Monitor.
- Added the %o macro to bot messages, it is replaced with connection time of the
player as HH:MM:SS.

Version 1.3.14
- Added a contex menu on the players box in the GUI, it allows to set/reset
admin status to players from there. May be i will add more functions there in
next versions (kick, ban).
- Added an admin status flag into players box.
- Added a setting for server password in Server.ini
- Added a setting for number of players in Server.ini
- Fixed a very small memory leak (on server restart).
- Fixed a bug with the telnet line parser (a parser is needed for each
connected client).
- Modified the telnet server to close the connections while Mercs server is
restarting.
- Removed a lot of dead code for Vengeance/Black Knight, the monitor will no
more support that games.
- Raised the synchronization timeout to 60 seconds for systems with a really
slow startup.

Version 1.3.13
- Fixed a small bug that made a vote mission override another vote mission
already running.
- Fixed same problem for vote kicks and vote admins.
- Fixed a problem with telnet ban command.

Version 1.3.12
- Fixed a bug that always locked on the nickname-kick option.
- Fixed a bug that prevented the NoRespawn setting to work in mapcycles.
- Changed some sentences of EvilBot to make them not gender specific.

Version 1.3.11
- New feature, kick on rejoin (see settings in Evilbot.ini).
- New feature, kick on unreadable nicknames (see settings in Evilbot.ini).
- Fixed a problem that prevented to set the random mapcycle mode.
- Fixed a problem that prevented to set a map interval different from 120.
- Fixed a problem that prevented to set the tournament mode from config file.
- Improved the random mapcycle so that a map cannot repeat immediately.

Version 1.3.10
- Fixed a bug that caused the Mercs server to crash at maps end on slower host
machines. It was a time dependent problem, not easy to track.
The code is now inherently safer.
- Fixed a bug that made the status telnet command and status panel in the GUI
don't show informations (bug introduced with 1.3.9).
- Fixed the teamkill detection (bug introduced with version 1.3.9).

Version 1.3.9
- Fixed a bug that prevented the program to work under Windows XP. Changed the
method of calculating windows coordinates (GetWindowInfo() instead of
GetWindowRect()).

Version 1.3.8
- Fixed the wrong Streak Kills count when a TK happen.
- Fixed the wrong rejoin count, it is a join count.
- Increased synchronization timeout from 20 to 30 seconds.

Version 1.3.7
- Fixed a small bug that caused a small message box to popup if the server
crashes while the mission is running, the bug is harmless but the message box
was not supposed to appear.
- Fixed a problem that caused an exception when the monitor was used with MW4
server mapcycle.

Version 1.3.6
- Start of the beta test. Bugs tracking starts here.