Title | Map-Vote 3 |
Game | Unreal Tournament |
Version | 3.00 |
Release Date | 4/16/2001 |
Filenames | BDBMapVote3.u, BDBMapVote3.int |
Author | Bruce Bickar aka BDB |
Email Address | BDB@planetunreal.com or BBickar@carolina.rr.com |
Web Page | http://www.planetunreal.com/BDBUnreal |
Description | This 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. |
Requirements | Required version 413 or better of Unreal Tournament. (This include the players as well as the server) |
Installation Instruction |
Note: If you currently have a previous version of MapVote installed you may want to uninstall it by
deleting BDBMapVote2.u and BDBMapVote2.int. If you downloaded the UMOD version just double click it and it should install it self. If you downloaded the ZIP version:
|
Server Setup |
|
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.
| |
Example UnrealTournament.ini file contents:----------------------------------------- [BDBMapVote3.BDBMapVote3] bAutoDetect=True bDM=False bLMS=False bTDM=False bDOM=False bCTF=False bAS=False bOther=False MsgTimeOut=30 OtherClass=SFGame.SFTeamDM VoteTimeLimit=70 KickPercent=51 bUseMapList=True ScoreBoardDelay=10 bAutoOpen=True bKickVote=True bTOTieGameFix=True bCheckOtherGameTie=False ... there are more ------------------------------------------ Note: This section will not be present until you run UT and save the configuration. | |
B. (This method is for configuring a remote dedicated server)
| |
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 - s_SWAT.s_SWATGame Strike-Force - SFGame.SFTeamDM SFGame.SFDM SFGame.SFHostageRescue SFGame.SFEscape SFGame.SFAssault SFGame.SFJailBreak 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=BDBMapVote3.BDBMapVote3 UCC server DM-Morpheus.unr?Game=Botpack.TeamGamePlus?mutator=BDBMapVote3.BDBMapVote3 UCC server DM-Morpheus.unr?Game=Botpack.LastManStanding?mutator=BDBMapVote3.BDBMapVote3 UCC server AS-Guardia.unr.unr?Game=Botpack.Assault?mutator=BDBMapVote3.BDBMapVote3 UCC server CTF-LavaGiant.unr?Game=Botpack.CTFGame?mutator=BDBMapVote3.BDBMapVote3 UCC server DOM-Cinder.unr?Game=Botpack.Domination?mutator=BDBMapVote3.BDBMapVote3 | |
Rocket-Arena: ----------------------------- UCC server RA-Cliffyb.unr?Game=RocketArena.RocketArenaGame?mutator=BDBMapVote3.BDBMapVote3 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: (as of Version 1.6) ----------------------------- UCC server SW-OilRig.unr?Game=s_SWAT.s_SWATGame?mutator=BDBMapVote3.BDBMapVote3 | |
Strike-Force: ----------------------------- UCC server SFTDM-Canal_140.unr?Game=SFGame.SFTeamDM?mutator=BDBMapVote3.BDBMapVote3 -userini=SFUser.ini -ini=StrikeForce.ini ***Note: Since StrikeForce uses it's own ini file you need to edit the StrikeForce.ini file and add "ServerPackages=BDBMapVote3" under the "[Engine.GameEngine]" section. It will not work with-out this. | |
Unreal-Fortress: --------------------------- UCC server UNF-Cliffside.unr?Game=UnrealFortress.Game_UnrealFortress?mutator=BDBMapVote3.BDBMapVote3 ***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=BDBMapVote3.BDBMapVote3 ***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=BDBMapVote3.BDBMapVote3 ***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 potental 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 ------------------------------------------------------------------------------ [BDBMapVote3.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: - BDBMapVote3.MapVoteHistory1 - stores history info in MapVoteHistory1.ini - BDBMapVote3.MapVoteHistory2 - stores history info in MapVoteHistory2.ini - BDBMapVote3.MapVoteHistory3 - stores history info in MapVoteHistory3.ini - BDBMapVote3.MapVoteHistory4 - stores history info in MapVoteHistory4.ini If you have the need for more contact me and I can build an add-in file that will provide more. 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 also opens when joining after a map switch/travel, but the player has the option to disable this by unchecking the check box at the bottom of the window titled "Show this window on Connect". This option will persist as until the player exits UT. For example: 1. The player connect to your server and the Welcome window shows. 2. The player unchecks the "Show this window" option and closes the window. 3. The current game ends , everyone votes , the map is changed. 4. Everyone rejoins the server after the new map is loaded. 5. The player does not see the Welcome window. 6. The player Exits UnrealTournament because he has to feed his dog or cat (or whatever). 7. The player comes back and restarts UT and reconnects to your server. 8. The Welcome Window will show again. This was done on purpose so that server admins can post new information and be sure the players have the chance to see it. 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. 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. |
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/ |
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. Strike-Force (version 1.55) disables auto downloading by defaulting the AllowDownloads option to False in the StrikeForce.ini file. (found under the [IpDrv.TcpNetDriver] section), Therefore; if you setup a SF server players who do not have this mutator installed on their computer will not be able to connect. There are two ways to fix this: a. Edit the StrikeForce.ini files on both the Server and every Client and change AllowDownloads to True. This is not practical considering the ammount of Clients out there that wouldn't know how to open a file let alone change the value in one. b. Require all Clients/Players to download and install this mutator. * I've been in contact with Gruff from StrikeForce and they are going to include Map-Vote with the download of their next version (1.6). This will solve the AutoDownload problem. 3. 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). 4. During testing with Tactical Ops I got client side GPF crashes after a map switch and during garbage collection if I connected to the server directly using "UnrealTournament.exe unreal://servername" command. (Error refers to "Ladder.LadderFont...") Weird thing is that I got the same results with MapVote version 2 and also once without MapVote. So I don't think this was caused by MapVote, probably something buggy with my server. |
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. |
Thanks To: |
|
Copyright / Permissions ----------------------- Copyright Bruce D. Bickar 2000 - 2001 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. |