TitleMap-Vote 3
GameUnreal Tournament
Version3.04
Release Date8/14/2003
FilenamesBDBMapVote304.u, BDBMapVote304.int, BDBMapVote304.u.uz , MapVoteHistoryX16.u, ServerInfo.u, ServerInfo.htm
AuthorBruce Bickar aka BDB
Email Address Please check my Message Board and the trouble shooting guide before emailing me.
Thanks
I've removed my email address from this to avoid SPAM
Web Pagehttp://www.planetunreal.com/BDBUnreal
DescriptionThis mutator allows players to control what maps are played on a server through voting.
Features
- Graphical user interface. At the end of each game a Voting Window will pop up automatically,
  so no key binding is required and there are no console commands to remember.
  
- Screen-Shot preview. When a map is selected a screen-shot (picture) of the map will be displayed 
  along with information about the map such as the author and the recommended number of players. 
  If the player doesn't have the selected map file on their computer then it will indicate that 
  downloading is required.
  
- Mid game map change option. The players can vote for a map at any time during the course of the 
  game. If the required percentage of players place votes a Mid-Game vote will be initiated and all
  of the players voting windows will be opened. They will have a limited time to vote.
  
- Players can configure a keyboard key that can be used at any time during the game to open the 
  voting window. This is not required because the voting window can/will automatically open it 
  self at the end of each game. But if the players want to take advantage of the player kick voting
  or the early map voting features then this would be required. Also, the key configuration does not
  require any console commands or opening of the preferences menu. This key configuration is built 
  in to the voting window which makes it much easier to do. It also will work with-out a Mod Menu 
  INT file, this is important because INT files are not automatically downloaded from the server in 
  network play and Mod Menu configuration windows require an INT file.
  
- A KeyBinder window will automatically pop-up when a player joins to the server. This KeyBinder 
  will allow the player to select a keyboard key by pressing the key and then clicking the 
  "Set/Save" button. If a player joins a server and already has a key bound the window will pop up
  and remind him/her what the hot-key is and the close it self after 4 seconds. They can also 
  prevent the keybinder from poping up.
  
- Tie breaker feature. Each player can only vote for one map. If all of the players vote the votes
  will be counted and the map with the highest vote count will win. If there is a tie, then a map 
  will be choosen at random from the maps that tied for first place. 
  
- Player Kick feature. Players can place "kick" votes against other players. If the percentage of
  players that vote against a particular player reaches the configurable kick requirement 
  percentage then that player will be disconnected from the server. If the kicked player reconnects
  to the server during the same game that he was kicked from, he/she will be re-kicked automatically.
  To clairify, This kick/ban only lasts until the end of the current game, or until the map is 
  changed. Note: The server administrator can not be kicked. Also, kick votes are tracked by 
  PlayerID and not name so changing names will not affect it.  
  
- Remote dedicated server configuration window, which can be used by remote administrators to 
   configure Map-Vote. There are no console configuration commands to look up and remember.
  
- Works with all games types. The server administrator can configure which types of maps will be 
  loaded in to the map voting list. The following Map types can be turned on or off:
  - Auto Detect - Automatically detects the game type that the server was started with.
  - Death Match (DM)
  - Team Death Match (DM)
  - Last Man Standing (DM)
  - Assault (AS)
  - Capture The Flag (CTF)
  - Domination (DOM)
  - Other Game Type - This is a configurable game type. It can be used for Mods like Rocket-Arena,
    Tactical-Ops, Strike-Force and any other mod. (It has only been tested with Rocket-Arena 
    ,Tactical Ops, Strike-Force, and Unreal Fortress)
    
- Configurable message expiration time. Players can use this feature to change the amount of time
  that messages remain on their HUD/screen. This is good for people who can't speed read messages
  in 3 seconds.
  
- Voting status. The main window displays a list of maps that were voted for and the amount of 
  votes for each. It also shows player names that were had kick votes cast against them.
  You can now click the name of a map or player and it will select that map in the map list.
  
- Configurable End-Game voting time limit. At the end of a game the players have a set about of 
  time to place their votes. If all players have not voted with in this time limit then a map 
  change will be forced.
  
- MapVoteHistory - MapVote now keeps track of all winning maps and supplies a report that shows 
  how many times each map has been played. Note: running the report take a bit of time. It was 
  made to be slow on pupose to avoid adding lag to the server.
  
- Welcome Window - MapVote now has an optional welcome window the will open up when a player 
  joins the server. This welcome window can be used to communicate server specific information
  , schedules, rules, etc. Note: it requires an HTTP web server. (more details below)
  
- New Modes: MapVote now has 4 voting modes: 
  1. Majority - Each player gets to place 1 vote and the map with the most votes wins.
  2. Elimination - Maps are removed from the list until there are only X number of maps left.
  3. Accumulation - If the map that a player has voted for does not win that vote is carried 
     to the next game.
  4. Score - Player scores are used as the ammount of votes placed. So basically, the top 
     players get choose the map.
  
- Configurable No Repeat limit - You can now configure MapVote to remove the last X number 
  of maps that have been played. X being some number.
RequirementsRequired version 413 or better of Unreal Tournament. (This include the players as well as the server)
Installation Instruction
  1. Place BDBMapVote304.int in the \UnrealTournament\System directory.
  2. Place BDBMapVote304.u in the \UnrealTournament\System directory.
  3. ***Note: this if very important, it will not work without this.
    Add "ServerPackages=BDBMapVote304" to the \UnrealTournament\system\UnrealTournament.ini file under the "[Engine.GameEngine]" section.
Other files:
  • BDBMapVote304.u.uz - this is the compressed version for servers that have redirected downloads enabled.
  • ServerInfo.htm - this is an example server information file for the Welcome Window
Upgrading To Keep you existing MapVote configuration settings follow these steps:
Note: * is a wildcard in the following lines.

Server.bat - change mutator=BDBMapVote3*.BDBMapVote* to BDBMapVote304.BDBMapVote

UnrealTournament.ini - change "[BDBMapVote3*.BDBMapVote*]" to "[BDBMapVote304.BDBMapVote]"
                     - change "MapVoteHistoryType=BDBMapVote*.MapVoteHistory1" to
                              "MapVoteHistoryType=BDBMapVote304.MapVoteHistory1"
                     
MapVoteHistory1.ini - Change [BDBMapVote3*.MapVoteHistory1] to
                             [BDBMapVote304.MapVoteHistory1]
Server Setup
  1. Set the settings that you want for each game type using the normal UT menus or edit the UnrealTournament.ini file.
  2. For example set the number of frags in deathmatch before the match ends and then change to CTF and change the number of flag capture's before the match ends. Close the Multiplayer window to save the settings.
  3. Select any mutators that you want plus the "Map-Vote" mutator.
  4. Start the game. (see dedicated server setup below for dedicated servers)
Configuration There are two ways to configure Map Vote on a server. Configuration Methods: (choose one and only one) Note: There is No MOD menu configuration menu with version 3.
A.
  1. Open the UnrealTournament.ini file, located in the \UnrealTournament\System directory, with any text editor.
  2. Modify the values for each configuration setting.
Example UnrealTournament.ini file contents (Note: DO NOT add this to your ini file):
-----------------------------------------
[BDBMapVote304.BDBMapVote]
bAutoDetect=True          <= used this to automatically set the gametype to what ever gametype the server was 
                             started with
bDM=False                 <= Load DeathMatch maps only
bLMS=False                <= Load Last Man Standing Maps  (DM-* , shows in list as LMS-*)
bTDM=False                <= Load Team Death Match Maps 
bDOM=False                <= Load Domination maps
bCTF=False                <= Load CTF maps
bAS=False                 <= Load Assault Maps
bOther=False              <= Load the specified Custom MOD (use this for Mods like RocketArena, UnF, etc...
OtherClass=               <= This would be the Package name and the Class name of the MOD. 
                             Example "SFGame.SFDM" for StrikeForce.
PreFixSwap=               <= This can be used to change the way the map names show for the OtherGame type.
                             This swapps the map name prefix of the maps to this value.
bSortWithPreFix=True      <= Set to True to sort the map list with the mapname prefix (this is faster) or
                             Set to False to sort the map list with out the mapname prefix (much slower loading).
VoteTimeLimit=50          <= Number of seconds to allow for voting at the end of the game. 
                             After this time is expired a map switch is forced.
KickPercent=51            <= The percentage of Player votes that are required to kick someone
bUseMapList=False         <= If True it will use the default MapList for the gametype to load the map names from, 
                             if False it will load all maps for the game type
ScoreBoardDelay=6         <= Number of seconds to show the Score board at the end of the game before opening 
                             the mapvote windows
bAutoOpen=True            <= if True it will automatically open the MapVote windows at the end of the game. 
                             If false the server will just travel to the next map in the cycle
bKickVote=True            <= If true players can place votes against other players to kick them
bCheckOtherGameTie=True   <= For MODs there is no way for MapVote to know if there can be Sudden Death Overtime 
                             when there is a tie game. If there is a tie and the game goes into Overtime MapVote
                             might think it is the end of the game and open the windows. 
RepeatLimit=4             <= This will cause MapVote to disable (shows in red) the last 4 maps that were played 
                             from the list of maps that you can vote for.
MapVoteHistoryType=BDBMapVote304.MapVoteHistory1   <= This points to the MapVoteHistory code. 
                                                    Read the MapVote History section. 
MidGameVotePercent=75     <= This is the percentage of players that must place votes to initiate a Mid Game vote. 
Mode=Majority             <= This is the voting mode that effects how many votes each player gets. 
                             See documentation or Admin window for possible values.
MinMapCount=1             <= This is for Elimination Mode only. In Elimation mode maps are removed from the list 
                             after being played. When the map list count reaches this limit, it will reload the 
                             list with all available maps. 
ServerInfoURL=www.planetunreal.com/bdbunreal/serverinfo.htm  <= this is the Web site URL to use in the Welcome 
                             window (see doc) Leave this blank if you are not goint to use this option.
                             (Note: This URL is an example only. Please do not point your server at this URL.)
MapInfoURL=www.planetunreal.com/bdbunreal/  <= This is the web site url to look for Map Information (see doc)
                                               Leave this blank if you are not going to use this option.
MapPreFixOverRide=        <= This can be used for the Other game types  (MODs) only. 
                             It allows you to specify a different Map Prefix. eg. "DM-", "CTF-"
AccName[0]=               <= Dont mess with these Acc settings. They are used to store player names and vote
                             counts when Accumulation Mode is enabled.
AccName[1]=
~~~~~~~~~~~~              <= Same as above.
AccVotes[0]=0
AccVotes[1]=0
~~~~~~~~~~~~
HasStartWindow=Auto       <= This is only for the Other Game types (Mods). It indicates if the Mod has a 
                              Starting window or not. For Example, Unreal Fortress has a starting window. 
                              Valide valuse are - Yes, No, or  Auto. 
bEntryWindows=True        <= If you set this to false it will not open the Welcome Window or the KeyBinder 
                             window when a player joins the server.
MsgTimeOut=30             <= This changes the amount of time that messages stay on the HUD, 
                             This is Client Side only and is not dictated by the server.
bLoadScreenShot=True      <= If True it shows the screen shot of the map when it is selected, if false it does not.
                             This is a Client side only setting.
bDebugMode=False          <= Dont mess with this unless I tell you too. It is used for debugging problems.
                             If you set this to True it will increase the size of your log file.

------------------------------------------
The above section will not be present in you ini file until you run UT with MapVote.
If you perfer you can copy & paste the following to your ini file.
;----------------------------------------------------
[BDBMapVote304.BDBMapVote]
bAutoDetect=True
bDM=False
bLMS=False
bTDM=False
bDOM=False
bCTF=False
bAS=False
bOther=False
OtherClass=
MapPreFixOverRide=
PreFixSwap=
bSortWithPreFix=True
VoteTimeLimit=70
KickPercent=51
bUseMapList=False
ScoreBoardDelay=10
bAutoOpen=True
bKickVote=True
bCheckOtherGameTie=False
RepeatLimit=4
RelativelyNewLimit=3
MapVoteHistoryType=BDBMapVote304.MapVoteHistory1
ServerInfoURL=
MapInfoURL=
MidGameVotePercent=50
Mode=Majority
MinMapCount=2
HasStartWindow=Auto
bEntryWindows=True
bDebugMode=False
;----------------------------------------------------
MapVote INI file configuration settings reference.

bAS=<True|False> True = Load map names that start with AS in the map list.(Assault) False = Do not load map names that start with AS in the map list.
bAutoDetect=<True|False> True = Automatically detects the game-type that the server was started with and loads only the maps that were made for it. False = Uses the gametypes specified by bDM,bLMS,bTDM,bCTF,bDOM,bAS and bOther settings. Note: Do NOT set this to True if bDM,bLMS,bTDM,bCTF,bDOM,bAS or bOther is set to true.
bAutoOpen=<True|False> True = Automatically open the voting windows at the end of each game. False = Do not automatically open the voting windows at the end of each game. At the end of each game the server will switch to the next map in the rotation list. Users can initiate Mid-Game voting by placing a vote.
bCheckOtherGameTie=<True|False> True = When playing the OtherClass gametype, check for Sudden Death Overtime and do not open the MapVote window if the scores are tied and the end of the end of the game has been reached. False = Do Not check for Sudden Death Overtime and always open the MapVote window when the end of the game has been reached. (except if bAutoOpen is False)
bCTF=<True|False> True = Load map names that start with CTF in the map list.(Capture The Flag) False = Do not load map names that start with CTF in the map list.
bDebugMode=<True|False> True = Write extra debugging information to the log file. False = Do not Write extra debugging information to the log file. Warning: Do NOT turn this on unless I ask you to. Only I can understand the the debug log data.
bDM=<True|False> True = Load map names that start with DM in the map list.(DeathMatch) False = Do not load map names that start with DM in the map list.
bDOM=<True|False> True = Load map names that start with DOM in the map list.(Domination) False = Do not load map names that start with DOM in the map list.
bEntryWindows=<True|False> True = Open the Welcome Window and the KeyBinder window when a player joins the server. False = Do Not open the Welcome Window or the KeyBinder window.
bKickVote=<True|False> True = Allow players to place kick votes against other players. False = Do not allow players to place kick votes against other players.
bLMS=<True|False> True = Load Last Man Standing maps (starts with DM) in the map list and change their prefixes to LMS. False = Do not load LMS maps in the map list.
bOther=<True|False> True = Load map names that belong to the OtherClass GameType in the map list. False = Do not load map names that belong to the OtherClass GameType in the map list.
bSortWithPreFix=<True|False> True = Sort the map list with the mapname prefix (faster loading). False = Sort the map list without the mapname prefix (slower loading).
bTDM=<True|False> True = Load Team Death Match maps (starts with DM) in the map list and change their prefixes to TDM False = Do not load map names that start with SFHR in the map list.
bUseMapList=<True|False> True = Load the list of available map names from the map rotation list. False = Load the list of available map names with all available maps on the server that have the specified gametype map prefix.
HasStartWindow=<Auto | Yes | No> This is only for the OtherClass Game types (Mods). It indicates if the Mod has a Starting window or not.
KickPercent=<1 - 100> The percentage of players that are required to place kick votes against one player before that player is kicked from the server. Set this to 100 to disable kick voting since most players will not place a kick vote against them selves.
MapInfoURL=<www.servername.com/subdirectory> The web URL address to use to get the Map Information html file. See MapInfo section of doc.
MapPreFixOverRide=<DM> This can be used for the OtherClass game types (MODs) only. It allows you to specify a different Map Prefix. eg. "DM-", "CTF-" Use this setting to load a different type of map than the default.
MapVoteHistoryType=<BDBMapVote304.MapVoteHistory1| BDBMapVote304.MapVoteHistory2| BDBMapVote304.MapVoteHistory3| BDBMapVote304.MapVoteHistory4> Defines the class that contains the code for managing the Map Vote History data. See the MapVoteHistory section of this document for more details. This can also be set to name a custom made 3rd party class in a different package.
MidGameVotePercent=<0 - 100> The percentage players that are required to place votes for any maps before a "Mid-Game Vote" is initiated. When a Mid-Game vote is initiated all the voting windows will be forced open and the voting time limit clock will start. When time runs out the server will switch to the winning map.
MinMapCount=<1 - 1000> Only used when the Mode is set to "Elimination". It is the number of map names that will be present before the map list is refreshed with all the maps.
Mode=<Majority | Elimination | Accumulation | Score> Majority - Each player gets to place 1 vote and the map with the most votes wins. Elimination - Maps are removed from the list until there are only X number of maps left. Accumulation - If the map that a player has voted for does not win that vote is carried to the next game. Therefore players can multiple accumulate votes. Score - Player scores are used as the amount of votes placed. So basically, the top players get choose the map.
OtherClass=<WFCode.WFGame> This would be the Package name and the Class name of the MOD, See the documentation that came with the MOD that you are trying to use MapVote with for the name of the Game class. Leave this setting blank if bOther is False. Also NOTE: Sorry, you can can NOT list more than on class here. MapVote will not work with more than one Mod.
PreFixSwap=<MyPreFix> This can be used to change the way the map names show for the OtherClass Gametype. This value can be blank. This swaps the map name prefix of the maps belonging to the OtherClass gametype to this value.
RepeatLimit=<0 - 1024> The number of previously played maps to remove from the list of available maps. This is used to prevent players from voting for the same maps over and over. Set this to 0 to disable it and show all available maps or maps in the rotation list.
ScoreBoardDelay=<1 - 300> The number of seconds after the end of the game to delay the automatic opening of the voting windows. During this delay the players have a chance to view the score board. If bAutoOpen is set to false then this setting does nothing.
ServerInfoURL=<www.servername.com/subdirectory/HTMLFileToShow.htm> The web URL address to use to fill the ServerInfo window. Leave this blank to disable the server info window. This is also used in the Welcome Window that can pops up when a player joins the server. See the Welcome Window instructions for more details.
VoteTimeLimit=<1 - 300> The number of seconds to allow players to place votes after the end of a game or after a mid-game vote was initiated. When this time limit expires the server will be forced to swich to the map with the highest votes. If there are no votes then a map will be chosen at random.
B. (This method is for configuring a remote dedicated server)
  1. Start the server with the "Map-Vote" mutator. (See decicated server setup instructions below)
  2. Connect to your server with UT.
  3. Login as Admin with the "ADMINLOGIN password" console command. Note: If you don't see a message like "YourPlayerName has become the administrator" then the password was wrong.
  4. Press you MapVote HotKey. You should have seen the KeyBinder window when you first joined the server.
  5. Click the "Admin" tab which should be all the way to the right. If there is No "Admin" tab then you have not successfully logged in as administrator, close the window and go back to step 3.
  6. Change the options in the scrolling Admin window. There is a second half of the page which does not show. Just use the scroll bar on the far right to scroll down.
  7. Click the "Save" button. This will save your selected options on the remote server and reload the maplist on the server.
  8. Now close and reopen the voting window to refresh the map list.
OtherGame Classes If you want to use Map-Vote with a MOD then you can just use the Auto Detect option. This will setup the game class automatically when the server is stared.
You still have the option of specifing the Other Game Class option and Check the Other Mod Game check box in the Configuration window. You would have to do this if you wanted to have a MOD and UT maps/games types available for voting in the same list at the same time.
Known Mod Game Classes:
-----------------------
Rocket-Arena      - RocketArena.RocketArenaGame
Tactical-Ops      - Download TOMapVote from my site
Strike-Force      - SFMapVote is included with the StrikeForce download
Unreal-Fortress   - UnrealFortress.Game_UnrealFortress
Infiltration 2.85 - InfiltrationUT.InfilDeathMatchPlus
                    InfiltrationUT.InfilTeamGamePlus
                    InfiltrationUT.InfilCTFGame
                    InfiltrationUT.InfilDomination
                    InfiltrationUT.InfilAssault
                    InfiltrationUT.InfilLastManStanding
WeaponsFactory    - WFCode.WFGame 
Multi-CTF         - MultiCTF.MultiCTFGame
Advanced Server Setup For decicated server owners. Put the appropriate command and parameters (found below) in your server batch file.
Unreal-Tournament Game Types:
----------------------------
UCC server DM-Morpheus.unr?Game=Botpack.DeathMatchPlus?mutator=BDBMapVote304.BDBMapVote 
UCC server DM-Morpheus.unr?Game=Botpack.TeamGamePlus?mutator=BDBMapVote304.BDBMapVote 
UCC server DM-Morpheus.unr?Game=Botpack.LastManStanding?mutator=BDBMapVote304.BDBMapVote 
UCC server AS-Guardia.unr.unr?Game=Botpack.Assault?mutator=BDBMapVote304.BDBMapVote 
UCC server CTF-LavaGiant.unr?Game=Botpack.CTFGame?mutator=BDBMapVote304.BDBMapVote
UCC server DOM-Cinder.unr?Game=Botpack.Domination?mutator=BDBMapVote304.BDBMapVote 
Rocket-Arena:
-----------------------------
UCC server RA-Cliffyb.unr?Game=RocketArena.RocketArenaGame?mutator=BDBMapVote304.BDBMapVote 
Note: There is a small conflict with the MapVote Welcome & KeyBinder windows and the 
      RocketArena Start Menu. So you will want to disable these windows in the Admin 
      configuration window under the Advanced section.
Tactical Ops: 
-----------------------------
BDB MapVote is not compatible with Tactical Ops version 2 and higher. 
Download TOMapVote from my site.
Strike-Force:
-----------------------------
A special version of MapVote (SFMapVote) was included with the StrikeForce download.
See the SFMapVoteReadMe.htm file for instructions.
Unreal-Fortress:
---------------------------
UCC server UNF-Cliffside.unr?Game=UnrealFortress.Game_UnrealFortress?mutator=BDBMapVote304.BDBMapVote
***Note: UnrealFortress games can have Sudden Death OverTime during a tied game,
therefore you need to change the "Check Sudden Death Overtime" option in the configuration.
Or change bCheckOtherGameTie to True in the UnrealTournament.ini file.
Infiltration 2.85:
-----------------------------
UCC server CTF-Face.unr?Game=InfiltrationUT.InfilCTFGame?mutator=BDBMapVote304.BDBMapVote
***Note: You must enable the "Check Sudden Death Overtime" option in the configuration
         for MapVote to work correctly with Infiltration. 
Weapons-Factory:
-----------------------------
UCC server CTF-Face.unr?Game=WFCode.WFGame?mutator=BDBMapVote304.BDBMapVote
***Note: You must enable the "Check Sudden Death Overtime" option in the 
         configuration for MapVote to work correctly with Weapons-Factory. 
MapVoteHistory
MapVote now keeps a record of maps played , the number of times each was played 
and the sequence each was played. This information is stored separate from the default 
UT ini file because of the potential large size (up to 1020 maps). By default this
information is stored in the MapVoteHistory1.ini file. I do not recommend editing 
this file manually, but if you do here is the layout: 
Example: MapVoteHistory1.ini
------------------------------------------------------------------------------
[BDBMapVote304.MapVoteHistory1]
M[0]=                <== Note: this is left blank on purpose
M[1]=AS-Coldsteel    <== M = MapName, maintained in alphabetic order
M[2]=CTF-2symple                  
M[3]=CTF-4Faces
M[4]=CTF-AAhuNui
...etc.
M[1022]=
M[1023]=
P[0]=0
P[1]=1               <== P = PlayCount
P[2]=7
P[3]=11
P[4]=9
...etc.
P[1022]=0
P[1023]=0
S[0]=0
S[1]=41              <== S = Sequence
S[2]=197
S[3]=166
S[4]=10
S[1022]=0
S[1023]=0
LastMapIndex=251                 <== This is the index nuber of the last map
----------------------------------------------------------------------------
If you run multiple servers on the same computer and want to keep history 
information separated, you can do so by configuring the MapVoteHistory 
type in the Advanced section of the Admin configuration window.
You have 4 options:
- BDBMapVote304.MapVoteHistory1  - stores history info in MapVoteHistory1.ini
- BDBMapVote304.MapVoteHistory2  - stores history info in MapVoteHistory2.ini
- BDBMapVote304.MapVoteHistory3  - stores history info in MapVoteHistory3.ini
- BDBMapVote304.MapVoteHistory4  - stores history info in MapVoteHistory4.ini 

If are running more than 4 UT servers on the same physical server then you can 
do this. 
Included in the Zip file is a MapVote History plug-in that allows you to keep 
up to 16 different history files (one for each instance of UT on a single server). 
You Do Not need this if you are only running 4 or less servers on the same computer.
Just save the MapVoteHistoryX16.u file to your \UnrealTournament\System directory.
Then in the UnrealTournment.ini file for each server change the 
"MapVoteHistoryType" setting under the  "[BDBMapVote304.BDBMapVote]" section 
to "MapVoteHistoryX16.MapVoteHistoryZZ"
Change the last "ZZ" to a unique number between 1 and 16.
 
So you might have (for example):
 
Server1.ini
MapVoteHistoryType=MapVoteHistoryX16.MapVoteHistory1
 
Server2.ini
MapVoteHistoryType=MapVoteHistoryX16.MapVoteHistory2
 
Server3.ini
MapVoteHistoryType=MapVoteHistoryX16.MapVoteHistory3
 
....
Server16.ini
MapVoteHistoryType=MapVoteHistoryX16.MapVoteHistory16

Additional Feature:
-------------------
There are two in-game console command that you can use to set
the Play Count and Sequence of each map in the History.
You have to login as Admin with the ADMINLOGIN command first.
MUTATE BDBMAPVOTE SETPC mapname play_count
MUTATE BDBMAPVOTE SETSEQ mapname sequence_number
examples:
MUTATE BDBMAPVOTE SETPC CTF-FACE 10
MUTATE BDBMAPVOTE SETSEQ CTF-FACE -1

Note: Setting the Sequence of a map to -1 forces it to never show in the 
map list. This can come in handy if you discover have a bad or just 
ill conceived map on your server but don't want to actually delete the 
file.
Welcome Window
The Welcome Window is a new feature that allows server owners to post
information for the players to see when they join the server.
When configured the Welcome Window will open as soon as the player 
joins the server. The player can then read the inforamation or just close
the window by clicking the "Close" button. 
Note: The window only opens the first time they join a server.

Requirements: 1. HTTP Web server (Micro$oft IIS, HTTP server, etc.)
              2. An HTML file.
      
Welcome Window Setup:
---------------------
First you need to make the Welcome Window HTML source file.

*** The in-game web browser is very very limited.
You can not use images,tables tags,java-script, style-sheets, etc.

So, What can you use ?
Here are the comments directly from the "UWindowHTMLTextArea" class 
that is used to render the HTML:
-------------------------------------------------------------------
HTML Currently Supported
========================
Parsed on add
-------------
<body bgcolor=#ffffff link=#ffffff alink=#ffffff>...</body>
<font color=#ffffff bgcolor=#ffffff>...</font>
<br>
<center>....</center>
<p>
<h1>...</h1>

Parsed on add and display
-------------------------
<nobr>...</nobr>
<a href="...">...</a>
<b>...</b>
<u>...</u>
<blink>...</blink>

Parsed only on display
----------------------
& gt;
& lt;
& amp;
& nbsp;

Planned improvements
--------------------
<ul><li>item 1<li>item 2...</ul>
<table>...</table>

Bugs
----
The parsing is pretty slack!
------------------------------------------------------------------ 

So create an HTML and place it on your HTTP web server.
Note: Do not use FrontPage or Visual Interdev to create this page.
Then goto the Admin configuration window in MapVote and scroll down to 
the Advanced section.
In the "Welcome Page Web Server URL" text box enter the web server address,
port, path, and filename.
Syntax:
webservername.domainname:port/path/filename.htm

Note: The port is not required, the default is 80. 
      Do Not include "http://" 

Example: www.planetunreal.com:80/BDBUnreal/serverinfo.htm

Note: Leaving the URL blank disables the Welcome Window.

Also, I have include an example ServerInfo.htm file in the zip file.

---------------------------------------------------------------------
New
If you want to use the Welcome Window or the ServerInfo window and do not have access to an HTTP web server or software then you can try the ingame web server included in ServerInfo.u. This is something I whipped up real quick and have not tested it under a full load, so be warned. If this causes lag on your server remove it. It will make you UT server act as a web server for the Server information page in mapvote. It will only serve one page and that page has to be named ServerInfo.htm Installation Instructions: 1. Save the ServerInfo.u file to the \UnrealTournament\System directory. 2. Save the ServerInfo.htm file to the \UnrealTournament\Web directory. 3. Edit the ServerInfo.htm file with a text editor and change it to show what you want to show. 4. Edit UnrealTournament.ini file with a text editor and change the following: (marked with <==== *) [UWeb.WebServer] Applications[0]=UTServerAdmin.UTServerAdmin ApplicationPaths[0]=/ServerAdmin Applications[1]=UTServerAdmin.UTImageServer ApplicationPaths[1]=/images DefaultApplication=0 bEnabled=True <==== * Applications[2]=ServerInfo.ServerInfo <==== * ApplicationPaths[2]=/ServerInfo <==== * .....~ Note: if Applications[2] is already in use by another addon then change it to one that isnt in use.(ie, 3 or 4) [BDBMapVote304.BDBMapVote] .....~ ServerInfoURL=192.168.1.100/ServerInfo/ServerInfo.htm <==== * Note: Replace "192.168.1.100" with the IP address of your server. ....~
Map Info
Map Info is a new feature in MapVote that can be setup to provide 
players with information about about maps. There are two ways the player
can request information about a map.

1. Select a map in the Map List on the Map Voting window and click the
   "Info" button. This will cause the window to switch to the "Info" tab
   and then use the in game web browser to display information if 
   it is avaliable.
   
2. Select the "Info" tab window in the Map Voting window and click the 
   "Map Info" button. This will cause the in game web browser to display
   information about the current map if it is avaliable.  

Map Info Setup:
---------------
You will need an HTTP web server to provide the map information.
You will also need to take all the ReadMe text files that are were provided
with custom maps and convert them to HTML format.
I have ask someone to write a converter program that will do this for you
and will make it available for download when it is ready.
The name of the map information file has to follow this scheme:

MapName.htm

For example: If there was a readme file for CTF-Face.unr then the info file 
would be have to be named CTF-Face.htm

All of the map info files must be in the same directory on the web server.

To enable this go to the Admin configuration window in MapVote and scroll
down to the Advanced section.
Enter your web server URL and the path to the map info directory in the 
"Map Information Web Server URL" text box.
Note: do not use "http://" and end the path with a "/"
Example: www.myserver.com:80/MapInfoDirectory/
Trouble Shooting Check the Online MapVote Trouble Shooting Guide at http://www.planetunreal.com/BDBUnreal/MapVoteTrouble.htm
Known bugs
1. When tested with "DOM-LittleThings" map , it always played under 
   DeathMatch and dropped the mutator. I couldnt figure out the problem , 
   but it works fine with all the other maps. I might have a corrupted map file.

2. Both the Welcome window and KeyBinder window hide the RocketArena and 
   the UnrealFortress Starting Menu Window when they are closed. 
   This is acceptable with UnrealFortress because the player just has to
   click his/her fire button to bring back the menu. But with RocketArena
   that doesnt work. To solve this problem you can turn off the welcome 
   window and keybinder windows in the MapVote Admin configuration window
   (option is at bottom).

3. I broke the map name quick search box under the maplist in this version.  

Version History
1.0 DM-MapVote.unr Map (3D Voting, cool idea but not practical)

2.0 Initial Testing Version (Dropped the Map and used UWindows and Mutator)

2.1 Fixed the Assault mid-game RestartWait problem. (game waited 5 minutes 
    before continuing to second half of match) Add a Config tab window to 
    the MapVote window for players who autodownloaded the mutator and do 
    not have the .int file. This will allow them to configure a keyboard 
    key to launch the voting window.
    
2.2 Added a 20 second voting restriction at the beginning of the game so 
    that the first player to enter the game after a level switch can not
    vote and force a level switch before the other players have joined the 
    game. Also changed the voting message type from critical to normal so 
    that others can see the message that tells which map you voted for.
    
2.3 Added a 20 second timer at the end of the game that when triggered 
    forces open the players voting window if they have not voted and the 
    window is not already open. This will help out any player who has 
    closed the window and dont have a key bound to reopen it.
    
2.4 a. Fixed the RestartWait-ini problem by setting bDontRestart to true
       instead of messing with the RestartWait.
    b. Add a configurable "Message Expiration Time" option. This allows 
       you to configure the amount of time a Say & TeamSay message stays 
       on your HUD. 
    c. Also added a little note at the bottom of the config screen that 
       explains that the Load Map options only apply on the server.
    d. Added "Download Required" text to the map screenshot window to 
       indicate when a player doesn't have the map that he/she selected.
    f. Add client message to tell the player that they can not kick 
       the server.
    g. Changed tie detection function so that it always returns false 
       for Domination games because once during testing I encountered
       a tie game and it did not go into over-time.
       
2.5 a. Added a configurable Kick Vote Requirement percentage.  
    b. Added a configurable voting time limit at game end. 
    c. Increased the size of the map list box and screen shot.
    d. Moved the game type configuration options to an "Admin" tab that
       only shows up for the player that is logged in as the admin. 
       (via adminlogin console command). This Admin tab can save the 
       configuration values to a remote server.
    e. Added LMS, Team Deathmatch, and an "Other" game type. The Other
       game type can be configured to work with custom Mods such as 
       Rocket-Arena,Tactical Ops, and Strike-Force. 
       (These are the only Mods that have been tested.)
    f. Added a "Status" tab that shows a report of the maps and players 
       that were voted for and the number of votes for each.
    k. Added an "About" tab and renamed the "Players" tab to "Kick" to 
       make more room for tabs.                          
       
2.6 Fixed the problem that prevented voting windows from opening when 
    connected to a listening server.                          
          
2.7 - Added an option to load map names from the map cycle list instead
      of all maps.
    - Added mouse wheel and keyboard (up,down,pageup,pagedown) scrolling
      support for list boxes.
    - Added a 1 second screen-shot loading delay to the map window. This
      reduces scrolling delays caused by the loading of the screen-shot image. 
    - Integrated message sender. Pops up when the Talk button is pressed.
    - After placing a vote the window will now switch to the "Status" tab.
    - Moved the configuration settings into UnrealTournament.ini instead of 
      MapVote.ini.
    - Add a configurable Score Board time Delay. This is the amount of time 
      that it waits before opening the voting windows after the end of the 
      game. This will allow players to look at the final scores before voting. 
    - Added an option to disable player kick voting.
    - Added an option to disable End-of-Game voting. Allows server to run as
      normal and cycle through the map list. Players can only vote during 
      the game. 
    - Added code that eliminates the currently played map from a tie. 
      This was requested by a user.
    - The "Remove Save" button on the "Admin" configuation window will now 
      reload the map list with the new configuation. In other words you can
      change game types and the map list will change right away.
      Note: Any open voting windows will have to be closed and reopened to
      refresh the map list on the player/client side.
    - Added a 3 second delay between the closing of all voting windows to 
      the switching of the level on the server. 
    - Fixed the "Failed to load 'NULL': Can't resolve package name" error 
      log message by preventing the loading of the Other game class if the
      Other Game type has not been checked.
    - Changed the WRI class back to the original code. This will break 
      compatiblity with V400 of UT.
    - Added a fix for the Tactical Ops v1.6 Tie Game problem where the 
      voting window would not open at game end because of sudden death 
      overtime. Also added a config option to disable this if needed.
    - Added an option that determines if a tie game is checked for when 
      using a Other Game type (Mods). This is used to tell Map-Vote if 
      the Mod game can go into OverTime so that it will not open the voting 
      windows during a sudden death overtime situation.

2.8 - Added an "Auto Detect" option that will automatically detect the game 
      type that the server was started with and load the appropriate maps. 
      This will make configuration incredibly easy, especially for MODs.
    - Fixed Spectator voting problem. Spectators can not vote now.

2.9 - Fix the 256 map limit bug. In network play the Unreal engine will not 
      replicate arrays that have more than 256 items in them. So, I created
      4 arrays. The limit is now 1020 maps. 
    - Removed the ".unr" from map names. 
    - The map list is now sorted correctly and NOT case sensitive. 
    - Client side GPF crash fix - Removed the MyWRI variable from the 
      MapVoteTabWindow to eliminate the GPF crash caused by garbage 
      collection and converted all Client-To-Server replicated function 
      into Mutate console commands. 
         
2.9a - Fixed the Map Rotation list problem that was introduced in 2.9

3.0 - Main Voting Window redesigned. Consolidated the Map, Kick, Status,
      and Message sending windows into one.(Thanks to Ouch for the idea.)
    - Added Welcome Window
    - Added KeyBinder Window
    - Moved code for detecting players entering the game from the 
      ModifyPlayer() fuction to Tick().
      This fixes StrikeForce,TactOps, and UnF Kick vote problems.
    - Added Accumulation,Scoring, and Elimination modes.                
    - Added MapPreFix OverRide. So that users playing MODs 
      can filter out maps.
    - Added Configurable Mid-Game voting percentage.               
    - Added Configurable Map Repeat limit. (Don't load previous X maps)
    - Added PlayerIDs to the KickVote player list.
    - Added MapVoteHistory which keeps track of how many times each map
      has been played.
    - Added Double Click voting. Just double click the name of the map 
      in the list.
    - Doesn't broadcast a message when the player votes for the same 
      map again. 
    - Fixed Spectator detection so that Dead Tactical Ops players can 
      still vote.
    - Added client side option to disable screen shot loading.
    - You can now click the name of a map or player in the voting 
      Status list and it will select the map or player for you in
      the main list.
    - Map Search option. Users can type the beginning of a maps name
      to find it faster.
    - Added the total map count to display on the window.
    - Spectators now show in the kick vote list box, (in gray) so 
      that you can kick them.
    - Player names are shown in Red or Blue to indicate which team 
      they are on.
    - Fixed Player Kick percentage detection. Had a rounding error
      in version 2.x.
    - Added Map Information viewer.

3.01- Added a Debug Logging option (to the mutator code) that logs extra 
      code execution flow identification information  to the log. 
    - Fixed the Keybinder button on the Config tab.
    - Added a 20 tick delay in the processing of new players that join the server.
    - Changed the KeyBinder Window so that it is only opened if the player doesn't 
      have a hot key bound. Once he binds a key it will never pop up again.
    - Added a new "Reload Maps" button to the Admin tab window and moved the 
      reloading of maps out of the "Save" button code. Now you can save configuration 
      changes without reloading maps. This was a problem with servers that have a 
      large number of maps, it would cause bad lag while reloading maps.

3.02- Fixed the OtherGame type PreFixOverride option. 
    - Added map name prefix swapping. This allows you to change the map prefix when
      displayed in the maplist. For example you could show all CTF-* maps as FLAG-*.
    - Added Debug config option to Admin window.
    - Added option to specify sorting with or with out prefixes. 
    - Automatically closes admin window after reloading maps.
    - Added ability to load LMS, TDM, and DM maps at the same time.
      It changes the map names for TDM and LMS 
      (ie , DM-Conveyor would become TDM-Conveyor and LMS-Conveyor)
    - Removed "show welcome window" check box from config window tab
    - Admin override that will allow an instant map changes and kicks by the server admin.
    - Added automatic suicide and disconnect if "AIMCHEAT" keybind is detected.
    - Change Eliminated maps names instead of removing them from the list.
      Displays them in red and prevents players from voting for them.
      Note: The admin can vote for them.
    - Limited history reports to 100 map names results to prevent lag
    - Detects Map Switch failure. Sometimes map switching fails because the server is
      missing a texture or music file that the map depends on. When this happened the
      server would keep retrying the map switch and end up in an infinite loop.
      If a map switch failure is detected then MapVote automatically select another map
      from the list at random and switch to it instead.
    - Included the new MapVoteHistoryX16 addon that allows you to keep your map history
      information separated for up to 16 servers on the same physical server.
    - Included the new ServerInfo UT web server addon that allows you to server up a 
      single HTML page for the Welcome Window without web server software. 

3.03- Fixed PlayerID array indexing bug in CleanUpPlayerIDs function. 
      (Thanks to [CTCR]TheCatcher for catching this one.)
    - Added extra safegards to trap invalid player indexes. 
    - Fixed post LevelSwitchPending voting bug that allowed votes to be calculated after 
      a map has already won. Also prevents windows from being opened while level switch is pending.
    - Fix bug that prevented admins from voting for eliminated maps.
    - Fix bug that prevented other mutators from getting the HandleEndGame mutator function call   

3.04- Decreased WRI NetPriority from 10 to 1 (server network performance)
    - Decreased WRI NetUpdateFrequency to 1 (server network performance)
    - Fixed Elimination mode bug, Thanks to Mr.Mitchell from the Bad-Lands mod for finding this bug.
      
Thanks To:
Copyright / Permissions
-----------------------
Copyright Bruce D. Bickar 2000 - 2003
Authors may NOT use this code with out my permission.
You are NOT allowed to commercially exploit this release, i.e. put it on a CD
or any other electronic medium that is sold for money without my explicit
permission!
You MAY distribute this release through any electronic network (internet,
FIDO, local BBS etc.), provided you include this file and leave the archive
intact.
----------------------
UNREAL TOURNAMENT (c)1999 Epic Megagames, Inc.  All Rights Reserved.  
Distributed by GT Software, Inc. under license.  UNREAL TOURNAMENT and 
the UNREAL TOURNAMENT logo are registered trademarks of Epic Megagames, Inc. 
All other trademarks and trade names are properties of their respective owners.