MapVote Version 4.00 beta 7
Created By BDB (Bruce Bickar)

Please visit my web site http://www.planetunreal.com/BDBUnreal
You can post questions, problem reports, and comments on the message board/forum.

Note: This version will only work on a dedicated server (started from the command line) and SinglePlayer (InstantAction).

Installation instructions:
===========================
1. Save MapVote400b7.int and MapVote400b7.u in the \UT2003\System directory.

2. Copy and paste these ini settings into your \UT2003\System\UT2003.ini (at the bottom)
--------------------------------------------------------------------------
[MapVote400b7.MapVote]
VoteTimeLimit=70
ScoreBoardDelay=10
bAutoOpen=True
MidGameVotePercent=50
MinMapCount=2
RepeatLimit=4
bScoreMode=False
bAccumulationMode=False
bEliminationMode=False
bKickVote=True
KickPercent=51
bRestartWithLastMap=True
bAnonymousKicking=False
MapVoteHistoryType=MapVote400b7.MapVoteHistory1
GameConfig=(GameClass="XGame.xDeathMatch",Prefix="DM",GameName="DeathMatch",bUseMapList=false,Mutators="")
GameConfig=(GameClass="XGame.xTeamGame",Prefix="DM",GameName="Team DeathMatch",bUseMapList=false,Mutators="")
GameConfig=(GameClass="XGame.xDoubleDom",Prefix="DOM",GameName="Double Domination",bUseMapList=false,Mutators="")
GameConfig=(GameClass="XGame.xCTFGame",Prefix="CTF",GameName="Capture The Flag",bUseMapList=false,Mutators="")
GameConfig=(GameClass="XGame.xBombingRun",Prefix="BR",GameName="Bombing Run",bUseMapList=false,Mutators="")
--------------------------------------------------------------------------- 
You can delete the "GameConfig" lines that you dont want. 

Upgrading from a previous version:
----------------------------------
- I would suggest deleting the old version. Delete the MapVote400XX.int and MapVote400xx.U files.
- Edit the MapVoteHistory1.ini file and change [MapVote400xx.MapVoteHistory1] to [MapVote400b7.MapVoteHistory1].
  This will allow you to keep using the map history data from the previous version.
- There have been no changes to the GameConfig options so you can copy them from the previous versions ini section.

Settings explaination:
----------------------
   VoteTimeLimit - A number between 1 and 500. The number of seconds to allow for voting 
                   at the end of the game or after a Mid-Game vote. After this time limit
                   has been reached the votes are counted and the map with the highest score
                   wins. Default is 70

   ScoreBoardDelay - A number between 1 and 500. The number of seconds to delay before automatically
                     opening the voting window after the end of the current game is reached.
                     This time is given to the players so that they can look at the score board.
                     Default is 10.

   bAutoOpen - True or False. If true then the voting windows will be automatically opened at the end
               of each game. If False then the normal cycle maplist is used to select the next map.
               Players can initiat a Mid-Game vote only. They would have to open the voting window
               by pressing the MapVote HotKey. Default hotkey is the HOME key. This can be changed
               on the "Configuration" tab window.
               Default is True.

   MidGameVotePercent - A number between 1 and 100. The percentage of players that are required to
                        vote before a Mid-Game vote is initated. Set to 100 to virtually disable
                        Mid-Game voting by requiring all of the players to vote.
                        Default is 50. 
                        Note: Mid-Game Voting is semi-disabled if there are only have 2 
                        players unless both players vote.
                        

   RepeatLimit - A number between 0 and the total number of maps on the server. 
                 The number of games to disabe voting for a map after it has been played.
                 Default is 4
                 Warning: Make sure the RepeatLimit is less than the total number of maps in the
                          First GameConfig list. 

   MapVoteHistoryType - The code class that manages the map history data.
                        This can be set to one of 4 settings.
                           MapVoteHistoryType=MapVote400b7.MapVoteHistory1
                           MapVoteHistoryType=MapVote400b7.MapVoteHistory2
                           MapVoteHistoryType=MapVote400b7.MapVoteHistory3
                           MapVoteHistoryType=MapVote400b7.MapVoteHistory4
                        
                        The default is "MapVoteHistoryType=MapVote400b7.MapVoteHistory1"
                        MapVoteHistory1 will create a file in the system directory
                        named MapVoteHistory1.ini where the history data is stored. 
                        MapVoteHistory2 will create MapVoteHistory2.ini etc...
                        
                        If you run more than one UT server session on the same physical server
                        then change this setting in each ini file so that each UT server session 
                        uses a different/unique MapVoteHistoryType. 

   Mode - This setting does not exist anymore. It was replaced by bScoreMode, bAccumulationMode, 
          and bEliminationMode.(see below)
          This was changed to allow you to combine diffent mode at the same time.
    
   bScoreMode - True or False, Default is False. Setting this to True will give players move votes
                based on their score. Example: At the end of a DeathMatch game you have 10 frags and
                then you vote for DM-Phobos2 then it will place 10 votes for DM-Phobos2.
                
   bAccumulationMode - True or False, Default is False. Setting this to True will cause non-winning and
                       unused votes to carry over to the next game. If the map you voted for wins then 
                       you will not carry over votes to the next game. If the Map you voted for does NOT
                       win then the ammount of votes you currently have will carry over. 
                       Sorry, Currently MapVote does not have the ability to show you the ammount of
                       accumulated votes that you have. That will be added in a future version.

   bEliminationMode - True or False, Default is False. Setting this to True will disable voting for
                      previously played maps until there are only N enabled maps left in the map list.
                      N is MinMapCount (see below). 
                      This is accomplished by incrementing the RepeatLimit after each game.
                      You can use this mode to force players to play all the maps instead of just
                      the popular ones.

   MinMapCount - A numeric value from 1 to the total number of maps the server. This option is only 
                 applicable when bEliminationMode is set to True. It represents the minimum number of 
                 enabled maps that will trigger an Elimination Mode MapList Reset.
                 Elimination Mode Maplist Reset is when the all of the maps in the maps list are 
                 reenabled for voting. (see bEliminationMode description also)

   bKickVote - True or False, Default is True. 
               True = Allow players to place kick votes against other players.
               False = Do not allow players to place kick votes against other players.
    
   KickPercent - A numeric value from 1 to 100. Default is 50. The percentage of players that are 
                 required to place kick votes against one player before that player is kicked from 
                 the server. 
    
   bAnonymousKicking - True or False, Default is True.
                       True = Does Not includes the Voters name in the broadcasted kick vote message.
                              Ex. A Kick Vote has been placed against PlayerB  
                       False = Includes the Voters name in the broadcasted kick vote message. 
                              Ex. PlayerA has placed a kick vote against PlayerB
   
   bRestartWithLastMap - True or False, Default is False.
                         True = When the server is restarted it will automatically switch to the last 
                                played map.
                         False = when the server is restarted it will not switch to the last played map.
    
GameConfig settings explaination:
   Note: You can add an infinite number of GameConfig lines in you ini file. Just keep in mind
         that the more you add the more maps will be loaded in the maplist. The more maps the
         longer it will take to send the complete maplist to each player. It will also take
         longer for the server to load the maplist at the beginning of each map. 
   GameClass - This is the name of the package and the name the game class 
               separated by a period. Example: "XGame.xCTFGame". 

               Here are the out-of-the-box game classes:
                 DeathMatch is "XGame.xDeathMatch"
                 Team DeathMatch is "XGame.xTeamGame"
                 Double Domiation is "XGame.xDoubleDom"
                 Capture The Flag is "XGame.xCTFGame"
                 Bombing Run is "XGame.xBombingRun"

               For new games/Mods the gameclass can be found in the *.int file that comes 
               with it. Look for something similar to this: 
               This Example is from the DeathBall.int
               ===================================================================================                
               Object=(Class=Class,MetaClass=Engine.GameInfo,Name=DeathBall.DB_Deathball,Description="DB|Deathball V1.3b|Deathball.DB_RulesTab|Deathball.DB_MapList|true")
                                                                  ######################
               ===================================================================================   
               Example DeathBall GameConfig:
               GameConfig=(GameClass="DeathBall.DB_Deathball",Prefix="DB",GameName="DeathBall",bUseMapList=false,Mutators="")

   Prefix - The MapName Prefix to load when bUseMapList is set to False. This tells MapVote 
            which maps to load in the maplist for this gametype. example: "CTF" for Capture the Flag.

   GameName - This is the name or title of the game type. For example: "Capture The Flag".
              Note: You can make this anything you like. Example: "Dont Touch My Flag" 

   bUseMapList - True or False. If True then the map names are loaded from the
                 MapList that is in the User (or specified user) ini file. 
                 If False then all available maps (that have the specified Prefix) are loaded. 
                 For example: If the game type is CTF and bUseMapList is True then map names 
                 will be loaded for this: (if this was your servers ini file)
                 \UT2003\System\User.ini
                 =============================================================================
                 [XInterface.MapListCaptureTheFlag]
                 MapNum=1
                 Maps=CTF-Chrome
                 Maps=CTF-Citadel
                 Maps=CTF-December
                 Maps=CTF-Face3
                 Maps=CTF-Geothermal
                 Maps=CTF-LostFaith
                 Maps=CTF-Magma
                 Maps=CTF-Orbital2
                 =============================================================================

   Mutators - List of Mutators to load with this game type. If more than one separate each
              with a comma.
              Example: "MapVote400b7.MapVote,XGame.MutInstaGib,UnrealGame.MutBigHead,UnrealGame.MutLowGrav"
              If this is set blank ("") then only the current mutators are loaded.
              WARNING: If you set mutators for any GameConfig you MUST include the base mutators 
                       in ALL of the GameConfigs. This includes MapVote.
                       If you leave all of them blank then the base mutators will stay.

Example GameConfig:
GameConfig=(GameClass="XGame.xCTFGame",Prefix="CTF",GameName="Dont Touch My Flag",bUseMapList=false,Mutators="MapVote400b7.MapVote,KickIdlersUT2003V1b.KickIdlers")
GameConfig=(GameClass="XGame.xCTFGame",Prefix="CTF",GameName="CTF LowGrav/InstaGib",bUseMapList=false,Mutators="MapVote400b7.MapVote,KickIdlersUT2003V1b.KickIdlers,XGame.MutInstaGib,UnrealGame.MutBigHead,UnrealGame.MutLowGrav")

GameConfig=(GameClass="XGame.xBombingRun",Prefix="BR",GameName="Bombing Run",bUseMapList=false,Mutators="MapVote400b7.MapVote,KickIdlersUT2003V1b.KickIdlers")
GameConfig=(GameClass="XGame.xBombingRun",Prefix="BR",GameName="BR LowGrav/InstaGib",bUseMapList=false,Mutators="MapVote400b7.MapVote,KickIdlersUT2003V1b.KickIdlers,XGame.MutInstaGib,UnrealGame.MutBigHead,UnrealGame.MutLowGrav")


3. Add "ServerPackages=MapVote400b7" to your UT2003.ini file in the "[Engine.GameEngine]" section.
Example: (* Dont copy this section, yours may be different.)
---------------------------------------------------------------------------
   [Engine.GameEngine]
   CacheSizeMegs=32
   UseSound=True
   ServerActors=IpDrv.MasterServerUplink
   ServerActors=UWeb.WebServer
   ServerPackages=Core
   ServerPackages=Engine
   ServerPackages=Fire
   ServerPackages=Editor
   ServerPackages=IpDrv
   ServerPackages=UWeb
   ServerPackages=GamePlay
   ServerPackages=UnrealGame
   ServerPackages=XEffects
   ServerPackages=XPickups
   ServerPackages=XGame
   ServerPackages=XWeapons
   ServerPackages=XInterface
   ServerPackages=Vehicles
   ServerPackages=TeamSymbols_UT2003
*->ServerPackages=MapVote400b7
   MainMenuClass=XInterface.UT2MainMenu
   ConnectingMenuClass=XInterface.MenuConnecting
   DisconnectMenuClass=XInterface.UT2NetworkStatusMsg
   UseStaticMeshBatching=True
---------------------------------------------------------------------------

4. Command line mutator name is "MapVote400b7.MapVote"
Example: 
---------------------------------------------------------------------------
ucc server CTF-Citadel.ut2?game=XGame.xCTFGame?mutator=MapVote400b7.MapVote
---------------------------------------------------------------------------
Note: you can use the example batch file supplied. MapVoteServer.bat



MapVote Hot-Key setting:
========================
The Default MapVote Hot-Key is the HOME key.

The current MapVote Hot-Key setting will be displayed in the center of the 
players HUD (just below the crosshair) for 20 seconds after joining the server
as a reminder.

You can change the Hot-Key in the MapVote window in the "Configuration" Tab.
Just select the key you want to use by scrolling the list and clicking the 
key you want. Also pressing the desired keyboard key it will auto-select that key
in the list.
Then click the "Set/Save" button.
The HotKey setting is written to your \UT2003\System\User.ini file:
exampe:
-----------------------------------
[MapVote400b7.MapVoteInteraction]
MapVoteHotKey=IK_B
-----------------------------------

Note: As a safty precaution, you can not set a key that is already registered (bound)
to another function. (The key bind must be blank).
This was done because too many players accidentally bound the hotkey to a key that was
used for some other critical function and then they blamed MapVote because it no longer 
worked. 

You can also modify the HotKey setting by editing your User.ini file (when UT2003 is not running):
-----------------------------------
[MapVote400b7.MapVoteInteraction]
MapVoteHotKey=<KeyName>
-----------------------------------

Replace <KeyName> with one of these values below:
---------------------------------------------------
 IK_MiddleMouse IK_Backspace    IK_Tab         IK_Enter        IK_Shift       IK_Ctrl        IK_Alt         IK_Pause       
 IK_CapsLock    IK_Space        IK_PageUp      IK_PageDown     IK_End         IK_Home        IK_Left        IK_Up 
 IK_Right       IK_Down         IK_Select      IK_Print        IK_Execute     IK_PrintScrn   IK_Insert      IK_Delete
 IK_Help        IK_0            IK_1           IK_2            IK_3           IK_4           IK_5           IK_6
 IK_7           IK_8            IK_9           IK_A            IK_B           IK_C           IK_D           IK_E
 IK_F           IK_G            IK_H           IK_I            IK_J           IK_K           IK_L           IK_M    
 IK_N           IK_O            IK_P           IK_Q            IK_R           IK_S           IK_T           IK_U 
 IK_V           IK_W            IK_X           IK_Y            IK_Z           IK_NumPad0     IK_NumPad1     IK_NumPad2
 IK_NumPad3     IK_NumPad4      IK_NumPad5     IK_NumPad6      IK_NumPad7     IK_NumPad8     IK_NumPad9     IK_GreyStar
 IK_GreyPlus    IK_Separator    IK_GreyMinus   IK_NumPadPeriod IK_GreySlash   IK_F1          IK_F2          IK_F3
 IK_F4          IK_F5           IK_F6          IK_F7           IK_F8          IK_F9          IK_F10         IK_F11
 IK_F12         IK_NumLock      IK_ScrollLock  IK_LShift       IK_RShift      IK_LControl    IK_RControl    IK_Unicode
 IK_Semicolon   IK_Equals       IK_Comma       IK_Minus        IK_Period      IK_Slash       IK_Tilde       IK_LeftBracket 
 IK_Backslash   IK_RightBracket IK_SingleQuote 
--------------------------------------------------------------------------------------------------------------------
The keybinder in MapVote actually does bind "mapvotemenu" to the key you select but this
is just used as a place holder, the "mapvotemenu" console command does not actually do anything.'
The actual key press detection is done with "Interaction" code that is plugged into the console code.


Known Bugs/Problems:
---------------------
- Spectators show in the Kick voting player list but they cant be kicked. This will be fixed in the next version.
- Intermittantly when connecting to the server or when switching between maps the player will connect 
  but not be able to enter the game. This is a bug in the UT2003 2166 patch. EPIC is working on fixing it.
- Activating the Set/Save button on the Configuration tab will cause UT2003 to crash if you do not have
  the latest UT2003 patch installed. 
  This is cause by MapVote calling functions that exist in the patched version of the UT2003 code that do not
  exist in the unpatched version. 
  I'll try to fix this in the next version. In the mean time tell the players to download and install the patch
  or change the hot key by editing the User.ini file (see above for instructions).


Questions & Answers:
=====================
Q: What do the number beside each mapname mean ?:
A: The first number is the Sequence. (The number of previous games that the map was played. 1 being the current map,
   2 the previous map, 3 the map before that etc.....
   The second number is the total number of times the map has been played.

Q: When will the next release of MapVote be ?
A: When it is done. (Dont ask)

Q: I've installed MapVote and the voting window does Not open.
A: It is critial that you follow the installation instructions containted in this file.
   Make sure you have added "ServerPackages=MapVote400b7" to your UT2003.ini file.







