******************************************************************************* *** MW4 Monitor 1.5.10 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 *** ****************************** - Unzip the files into your main game directory, no files will be overwritten. ****************************** *** 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 *** ****************************** - Run your dedicated server manually and setup all required options, then close it. ****************************** *** 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.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.