Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include maps\mp\_utility;
- #include common_scripts\utility;
- #include maps\mp\gametypes\_hud_util;
- /**********
- ** Vote system by banz v1.0
- ** Edited by |UzD|GaZa
- **
- ** Edited for use with client mouse vote menu
- **
- **
- **
- ***********/
- init()
- {
- level thread onPlayerConnect();
- /******************************SETTINGS*******************************************************************/
- setDvar("sv_changemethod", 1); //0 - RPRIVATE MATCH, 1 - DEDICATED SERVER. (If wrong your game will crash).
- setDvarIfUninitialized( "sv_votemaps", "Favela,Afghan,Skidrow,Estate,Invasion,Karachi,Subbase,Rundown,Quarry,Terminal,Underpass,Wasteland,Scrapyard,Derail,Rust" ); //Maps - you can set this in server.cfg too
- setDvar("scr_vote_time", 18.0); //Time available to vote
- setDvar("vote_winner_time", 4.0); //Time the winning map is displayed for
- setDvar("scr_intermission_time", 8.0); //Time the scoreboard is shown for
- /******************************SETTINGS*******************************************************************/
- game["menu_vote"] = "vote";
- precacheMenu(game["menu_vote"]);
- level.changeMode = getDvarInt( "sv_changemethod" );
- level.voteMaps = getDvar( "sv_votemaps" );
- level.mapTok = strTok( level.voteMaps, "," );
- checkMaps = level.mapTok;
- thread checkDvars( checkMaps );//check for invalid maps
- randomArray = [];
- for(i = 0; i < 9; i++)
- {
- selectedRand = randomintrange(0, level.mapTok.size);
- randomArray[i] = level.mapTok[selectedRand];
- level.mapTok = restructMapArray(level.mapTok, selectedRand);
- }
- level.mapTok = randomArray;
- for( i=0; i < level.mapTok.size; i++ )
- {
- level.mapVotes[i] = 0;
- }
- }
- onPlayerConnect()
- {
- for(;;)
- {
- level waittill("connected", player);
- player thread onMenuResponse();
- player setClientDvar( "vote_map", "" );
- }
- }
- onMenuResponse()
- {
- self endon("disconnect");
- for(;;)
- {
- self waittill("menuresponse", menu, response);
- if(menu==game["menu_vote"])
- {
- switch(response)
- {
- case "map1":
- self thread castMap(0);
- break;
- case "map2":
- self thread castMap(1);
- break;
- case "map3":
- self thread castMap(2);
- break;
- case "map4":
- self thread castMap(3);
- break;
- case "map5":
- self thread castMap(4);
- break;
- case "map6":
- self thread castMap(5);
- break;
- case "map7":
- self thread castMap(6);
- break;
- case "map8":
- self thread castMap(7);
- break;
- case "map9":
- self thread castMap(8);
- break;
- default:
- break;
- }
- }
- if ( response == "back" && menu==game["menu_class"] && getDvar("ui_inVote") == "1")
- {
- self closepopupMenu();
- self closeInGameMenu();
- wait 0.25;
- self openPopupMenu("vote");
- continue;
- }
- }
- }
- checkDvars( maps )
- {
- level endon( "check_done" );
- mapError = 0;
- //check for typos / invalid maps
- if ( !checkMaps( maps ) )
- {
- mapError = 1;
- }
- if( mapError )
- thread errorMessage( mapError );
- level notify( "check_done" );
- }
- errorMessage( error1 )
- {
- level endon("game_ended");
- for(;;)
- {
- if( error1 )
- iprintlnbold("^7Error in ^1sv_votemaps ^7dvar!");
- wait 5;
- }
- }
- checkMaps( maps )
- {
- foreach( map in maps)
- {
- map = toLower( map );
- switch( map )
- {
- case "favela":
- case "crash":
- case "skidrow":
- case "estate":
- case "wasteland":
- case "strike":
- case "vacant":
- case "highrise":
- case "invasion":
- case "karachi":
- case "bailout":
- case "subbase":
- case "afghan":
- case "carnival":
- case "fuel":
- case "salvage":
- case "scrapyard":
- case "derail":
- case "quarry":
- case "rundown":
- case "rust":
- case "underpass":
- case "overgrown":
- case "storm":
- case "trailerpark":
- case "terminal": //added
- case "nuketown":
- case "oilrig":
- case "burgertown":
- case "credits":
- case "gulag":
- case "contingency":
- case "pripyat":
- //dlc4
- case "crossfire":
- case "bloc":
- case "wetwork":
- case "killhouse":
- continue;
- default:
- return false;
- }
- }
- return true;
- }
- restructMapArray(oldArray, index)
- {
- restructArray = [];
- for( i=0; i < oldArray.size; i++) {
- if(i < index)
- restructArray[i] = oldArray[i];
- else if(i > index)
- restructArray[i - 1] = oldArray[i];
- }
- return restructArray;
- }
- updateMenuDisplay()
- {
- self endon("disconnect");
- for(;;)
- {
- for(i=0; i < level.mapTok.size; i++)
- {
- self setClientDvar("hud_gamesize", level.players.size);
- self setClientDvar(("hud_picName"+i), getPreviewName(toLower(level.mapTok[i])));
- self setClientDvar(("hud_mapName"+i), level.mapTok[i]);
- self setClientDvar(("hud_mapVotes"+i), level.mapVotes[i]);
- if(level.mapVotes[i] != 0)
- {
- self setClientDvar(("hud_mapVotes"+getHighestVotedMap()), ("^3"+level.mapVotes[getHighestVotedMap()]));
- self setClientDvar(("hud_mapName"+getHighestVotedMap()), ("^3"+level.mapTok[getHighestVotedMap()]));
- }
- }
- wait 0.25;
- }
- }
- getHighestVotedMap()
- {
- highest = 0;
- position = randomInt(level.mapVotes.size);
- for(i=0; i < level.mapVotes.size; i++ )
- {
- if( level.mapVotes[i] > highest )
- {
- highest = level.mapVotes[i];
- position = i;
- }
- }
- return position;
- }
- castMap( number )
- {
- if( !isDefined(self.hasVoted) || !self.hasVoted ) {
- self.hasVoted = 1;
- level.mapVotes[number]++;
- self.votedNum = number;
- self iprintln("You voted for ^3"+level.mapTok[self.votedNum]);
- }
- else if( self.hasVoted && isDefined( self.votedNum ) && self.votedNum != number )
- {
- level.mapVotes[self.votedNum]--;
- level.mapVotes[number]++;
- self.votedNum = number;
- self iprintln("You ^3re-voted ^7for ^3"+level.mapTok[self.votedNum]);
- }
- }
- onDisconnect()
- {
- level endon ( "time_over" );
- self waittill ( "disconnect" );
- if ( isDefined( self.votedNum ) )
- {
- level.mapVotes[self.votedNum]--;
- }
- }
- handleVoting()
- {
- level endon( "time_over" );
- level endon( "game_ended" );
- level.RandomMap = toLower( level.mapTok[randomInt(level.mapTok.size)] );
- level.winMap = getMapName( level.RandomMap );
- while( level.player.size > 0 )
- {
- winNumberA = getHighestVotedMap();
- level.winMap = getMapName( toLower( level.mapTok[winNumberA] ) );
- foreach (player in level.players)
- {
- player setClientDvar(("hud_WinningName"), getPreviewName(toLower(level.mapTok[winNumberA])));
- player setClientDvar(("hud_WinningMap"), ("^3" + level.mapTok[winNumberA]));
- }
- wait 0.25;
- }
- }
- getMapName( map )
- {
- switch( map )
- {
- case "bailout":
- return "complex";
- case "carnival":
- return "abandon";
- case "fuel":
- return "fuel2";
- case "karachi":
- return "checkpoint";
- case "salvage":
- return "compact";
- case "scrapyard":
- return "boneyard";
- case "skidrow":
- return "nightshift";
- case "wasteland":
- return "brecourt";
- case "nuketown":
- return "nuked";
- case "burgertown":
- return "invasion2";
- case "pripyat":
- return "so_ghillies";
- case "credits":
- return "iw4_credits";
- case "crossfire":
- return "cross_fire";
- case "wetwork":
- return "cargoship";
- default:
- return map;
- }
- }
- getPreviewName( map )
- {
- switch( map )
- {
- case "scrapyard":
- return "preview_mp_boneyard";
- case "skidrow":
- return "preview_mp_nightshift";
- case "wasteland":
- return "preview_mp_brecourt";
- case "karachi":
- return "preview_mp_checkpoint";
- case "crash":
- return "white";
- case "strike":
- return "white";
- case "vacant":
- return "white";
- case "bailout":
- return "white";
- case "carnival":
- return "white";
- case "fuel":
- return "white";
- case "salvage":
- return "white";
- case "overgrown":
- return "white";
- case "storm":
- return "white";
- case "trailerpark":
- return "white";
- case "nuketown":
- return "white";
- case "oilrig":
- return "white";
- case "burgertown":
- return "white";
- case "credits":
- return "white";
- case "gulag":
- return "white";
- case "contingency":
- return "white";
- case "pripyat":
- return "white";
- case "crossfire":
- return "white";
- case "bloc":
- return "white";
- case "wetwork":
- return "white";
- case "killhouse":
- return "white";
- default:
- return ("preview_mp_" + map);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement