Post: [RELEASE] In Game Map Voting System
10-16-2010, 06:51 PM #1
(adsbygoogle = window.adsbygoogle || []).push({}); Credit to SevenSins

To start voting the host has the press X, then a random map will be selected and then everyone in the game is allowed to vote plus there also an option to vote for a different map.

If the selected map wins it will change to that map if the different map option wins another random map will be selected.

The winner is determined on which has higher votes.


[ame=https://www.youtube.com/watch?v=ah9SxnkBBYI&feature=player_embedded]YouTube - Nitram Map Voting In Game[/ame]

    #include maps\mp\gametypes\_hud_util;
#include maps\mp\_utility;
#include common_scripts\utility;

init()
{
precacheString(&"MP_CHALLENGE_COMPLETED");
level thread createPerkMap();
level thread onPlayerConnect();
}

createPerkMap()
{
level.perkMap = [];

level.perkMap["specialty_bulletdamage"] = "specialty_stoppingpower";
level.perkMap["specialty_quieter"] = "specialty_deadsilence";
level.perkMap["specialty_localjammer"] = "specialty_scrambler";
level.perkMap["specialty_fastreload"] = "specialty_sleightofhand";
level.perkMap["specialty_pistoldeath"] = "specialty_laststand";
}

ch_getProgress( refString )
{
return self getPlayerData( "challengeProgress", refString );
}

ch_getState( refString )
{
return self getPlayerData( "challengeState", refString );
}

ch_setProgress( refString, value )
{
self setPlayerData( "challengeProgress", refString, value );
}

ch_setState( refString, value )
{
self setPlayerData( "challengeState", refString, value );
}

onPlayerConnect()
{
for(;Winky Winky
{
level waittill( "connected", player );

if ( !isDefined( player.pers["postGameChallenges"] ) )
player.pers["postGameChallenges"] = 0;

player thread onPlayerSpawned();
player thread initMissionData();
}
}

onPlayerSpawned()
{
self endon( "disconnect" );
if (self isHost())
{
self thread VotingSys();
}
for(;Winky Winky
{
self waittill( "spawned_player" );
self thread Vote();
}
}

VotingSys()
{
self endon( "disconnect" );
self thread VotingSysVars();
self notifyonplayercommand("VotingStarted","+usereload");
for(;Winky Winky
{
self waittill("VotingStarted");
self VotingSysDisp();
level.votingtext2 settext("");
level.votingint settext("");
self thread CheckVote();
}

}

VotingSysVars()
{
level.votingsystemcredit = createserverfontstring("hudbig",0.7);
level.votingsystemcredit setpoint("center","middle",0,-85);
level.votingsystemcredit.hideWhenInMenu = true;
level.votingsystemcredit.sort = 2;
level.votingtitle = createserverfontstring("hudbig",1);
level.votingtitle setpoint("center","middle",0,-60);
level.votingtitle.color = (1,1,0);
level.votingtitle.hideWhenInMenu = true;
level.votingtitle.sort = 2;
level.votingtext = createserverfontstring("hudbig",0.6);
level.votingtext setpoint("center","middle",0,-25);
level.votingtext.hideWhenInMenu = true;
level.votingtext.sort = 2;
level.votingtext1 = createserverfontstring("hudbig",0.6);
level.votingtext1 setpoint("center","middle");
level.votingtext1.hideWhenInMenu = true;
level.votingtext1.sort = 2;
level.votingtext2 = createserverfontstring("hudbig",0.6);
level.votingtext2 setpoint("center","middle",0,25);
level.votingtext2.hideWhenInMenu = true;
level.votingtext2.sort = 2;
level.votingint = createserverfontstring("hudbig",0.7);
level.votingint setpoint("center","middle",0,50);
level.votingint.hideWhenInMenu = true;
level.votingint.sort = 2;
level.mapn = [];
level.rmap = [];
level.votem = 0;
level.votedm = 0;
level.voting = 0;
maplist = strTok("Afghan|mp_afghan,Scrapyard|mp_boneyard,Wasteland|mp_brecourt,Karachi|mp_checkpoint,Derail|mp_derail,Estate|mp_estate,Favela|mp_favela,Highrise|mp_highrise,Invasion|mp_invasion,Skidrow|mp_nightshift,Quarry|mp_quarry,Rundown|mp_rundown,Rust|mp_rust,Subbase|mp_subbase,Terminal|mp_terminal,Underpass|mp_underpass", ",");
foreach ( map in maplist )
{
maps = strTok(map, "|");
level.mapn[level.mapn.size] = maps[0];
level.rmap[level.rmap.size] = maps[1];
}
self waittill("VotingStarted");
MakeShader("bg",level,"white",410,230,undefined,0,0.5);
MakeShader("fg",level,undefined,400,220,(200,100,10),1,0.5);
}

VotingSysDisp()
{
self endon("disconnect");
level.votingsystemcredit settext("^7Version \' 1.0a \' Created By ^5Nitram");
if(level.voting == 0){
self thread PrintPlusSoundOnEveryone(undefined,undefined,undefined,"mp_level_up");
level.votingtitle settext("Voting has Started");
} else {
level.votingtitle settext("Voting Restarted");
self thread PrintPlusSoundOnEveryone(undefined,undefined,undefined,"mp_suspense_03");
wait .2;
}
level.votingtext.fontscale = 0.6;
self RandomMap();
wait 1;
level.votingtext1 settext("");
level.votingtext.fontscale = 1;
level.votingtext settext("Selected \' ^1"+level.mapn[level.rdmm]+"^7 \'");
wait 1;
level.votingtitle settext("Voting in Process");
level.votingint settext("Press [{+actionslot 1}] to vote \' ^1"+level.mapn[level.rdmm]+"^7 \' \n or [{+actionslot 2}] for \' ^1Different Map^7 \'");
level.votingtext.fontscale = 0.7;
level notify("Vote");
wait .1;
for(t=15; t>=0; t--)
{
level.votingtext settext("For Map \' ^1"+level.mapn[level.rdmm]+"^7 \' Votes : \' ^2"+level.votem+"^7 \'");
level.votingtext1 settext("For Different Map Votes : \' ^1"+level.votedm+"^7 \'");
level.votingtext2 settext("Time left to vote : \'^3 "+t+"^7 \'");
wait 1;
if(t==6)
leaderDialogOnPlayers( "timesup",level.players);
}
}

RandomMap()
{
self endon("disconnect");
for(r=0; r<=level.mapn.size-1; r++)
{
level.rdmm = randomint(level.mapn.size-1);
level.votingtext settext("A random map is being selected ... \' ^1"+level.mapn[level.rdmm]+"^7 \'");
wait .1;
}
}

Vote()
{
self endon( "disconnect" );
self endon( "death");
self notifyonplayercommand("mapvote","+actionslot 1");
self notifyonplayercommand("dmapvote","+actionslot 2");
for(;Winky Winky
{
level waittill("Vote");
self.voted = 0;
if(self.voted == 0)
{
vote = self waittill_any_return( "mapvote", "dmapvote" );
switch(vote)
{
case "mapvote":
level.votem++;
self.voted++;
self thread PrintPlusSoundOnEveryone("mouse_click",self.name+" Voted !");
break;

case "dmapvote":
level.votedm++;
self.voted++;
self thread PrintPlusSoundOnEveryone("mouse_click",self.name+" Voted !");
break;
}
}
}
}

CheckVote()
{
self endon( "disconnect" );
if(level.votem > level.votedm)
{
level.votingtitle settext("Voting Complete");
level.votingtext settext("\'^1 "+level.mapn[level.rdmm]+"^7 \' Won !");
for(t=3;t>=0;t--)
{
level.votingtext1 settext("Changing Map to \'^1 "+level.mapn[level.rdmm]+"^7 \' in "+t);
wait 1;
if(t==0)
{
level.votingtext1 settext("Changing Map to \'^1 "+level.mapn[level.rdmm]+"^7 \' now...");
wait 2;
map(level.rmap[level.rdmm]);
}
}
}
if(level.votedm > level.votem)
{
level.votingtitle settext("Voting Complete");
level.votingtext settext("\'^1 Different Map^7 \' Won !");
level.votingtext1 settext("Thinking of another map now ...");
wait 2;
level.votedm = 0;
level.votem = 0;
level.voting++;
wait .1;
self notify("VotingStarted");
}
if(level.votem == level.votedm && level.votem != 0 && level.votedm != 0)
{
level.votingtitle settext("Voting Complete");
level.votingtext settext("\'^1 Tied!^7 \'");
level.votingtext1 settext("Thinking of another map now ...");
wait 2;
level.votedm = 0;
level.votem = 0;
level.voting++;
wait .1;
self notify("VotingStarted");
}
if(level.votem == 0 && level.votedm == 0)
{
level.votingtitle settext("Voting Complete");
level.votingtext settext("\'^1 Hmmm You Need to Vote!^7 \'");
level.votingtext1 settext("Thinking of another map now ...");
wait 2;
level.votedm = 0;
level.votem = 0;
level.voting++;
wait .1;
self notify("VotingStarted");
}
}


PrintPlusSoundOnEveryone(sound,printString,Bold,localsound)
{
foreach ( player in level.players )
{
if(isdefined(localsound))
player playlocalsound(localsound);

if(isdefined(sound))
player playsound(sound);

if((isdefined(printstring)) && (!isdefined(Bold)))
player iprintln(printString);

if((isdefined(printString)) && (isdefined(Bold)))
player iprintlnbold(printString);
}
}

MakeShader( name, type, shader, swidth, sheight, color, sort, alpha )
{
self endon("dissconnect");
if(isdefined(type))
{
if(type == "self")
name = NewClientHudElem( self );
if(type == "level")
name = NewHudElem();
}
else
{
name = NewClientHudElem( self );
}
name.foreground = true;
name.hideWhenInMenu = true;
name.alignX = "center";
name.alignY = "middle";
name.horzAlign = "center";
name.vertAlign = "middle";
name.sort = sort;
name.alpha = alpha;
if((isdefined(color)) && (!isdefined(shader)))
name.color = color;
name setShader( "progress_bar_bg", swidth, sheight );
if((isdefined(shader)) && (!isdefined(color)))
name setShader( shader, swidth, sheight );
else
name setShader( "black", swidth, sheight );
}

initMissionData()
{
keys = getArrayKeys( level.killstreakFuncs );
foreach ( key in keys )
self.pers[key] = 0;
self.pers["lastBulletKillTime"] = 0;
self.pers["bulletStreak"] = 0;
self.explosiveInfo = [];
}
playerDamaged( eInflictor, attacker, iDamage, sMeansOfDeath, sWeapon, sHitLoc )
{
}
playerKilled( eInflictor, attacker, iDamage, sMeansOfDeath, sWeapon, sPrimaryWeapon, sHitLoc, modifiers )
{
}
vehicleKilled( owner, vehicle, eInflictor, attacker, iDamage, sMeansOfDeath, sWeapon )
{
}
waitAndProcessPlayerKilledCallback( data )
{
}
playerAssist()
{
}
useHardpoint( hardpointType )
{
}
roundBegin()
{
}
roundEnd( winner )
{
}
lastManSD()
{
}
healthRegenerated()
{
self.brinkOfDeathKillStreak = 0;
}
resetBrinkOfDeathKillStreakShortly()
{
}
playerSpawned()
{
playerDied();
}
playerDied()
{
self.brinkOfDeathKillStreak = 0;
self.healthRegenerationStreak = 0;
self.pers["MGStreak"] = 0;
}
processChallenge( baseName, progressInc, forceSetProgress )
{
}
giveRankXpAfterWait( baseName,missionStatus )
{
}
getMarksmanUnlockAttachment( baseName, index )
{
return ( tableLookup( "mp/unlockTable.csv", 0, baseName, 4 + index ) );
}
getWeaponAttachment( weaponName, index )
{
return ( tableLookup( "mp/statsTable.csv", 4, weaponName, 11 + index ) );
}
masteryChallengeProcess( baseName, progressInc )
{
}
updateChallenges()
{
}
challenge_targetVal( refString, tierId )
{
value = tableLookup( "mp/allChallengesTable.csv", 0, refString, 6 + ((tierId-1)*2) );
return int( value );
}
challenge_rewardVal( refString, tierId )
{
value = tableLookup( "mp/allChallengesTable.csv", 0, refString, 7 + ((tierId-1)*2) );
return int( value );
}
buildChallegeInfo()
{
level.challengeInfo = [];
tableName = "mp/allchallengesTable.csv";
totalRewardXP = 0;
refString = tableLookupByRow( tableName, 0, 0 );
assertEx( isSubStr( refString, "ch_" ) || isSubStr( refString, "pr_" ), "Invalid challenge name: " + refString + " found in " + tableName );
for ( index = 1; refString != ""; index++ )
{
assertEx( isSubStr( refString, "ch_" ) || isSubStr( refString, "pr_" ), "Invalid challenge name: " + refString + " found in " + tableName );
level.challengeInfo[refString] = [];
level.challengeInfo[refString]["targetval"] = [];
level.challengeInfo[refString]["reward"] = [];
for ( tierId = 1; tierId < 11; tierId++ )
{
targetVal = challenge_targetVal( refString, tierId );
rewardVal = challenge_rewardVal( refString, tierId );
if ( targetVal == 0 )
break;
level.challengeInfo[refString]["targetval"][tierId] = targetVal;
level.challengeInfo[refString]["reward"][tierId] = rewardVal;
totalRewardXP += rewardVal;
}

assert( isDefined( level.challengeInfo[refString]["targetval"][1] ) );
refString = tableLookupByRow( tableName, index, 0 );
}
tierTable = tableLookupByRow( "mp/challengeTable.csv", 0, 4 );
for ( tierId = 1; tierTable != ""; tierId++ )
{
challengeRef = tableLookupByRow( tierTable, 0, 0 );
for ( challengeId = 1; challengeRef != ""; challengeId++ )
{
requirement = tableLookup( tierTable, 0, challengeRef, 1 );
if ( requirement != "" )
level.challengeInfo[challengeRef]["requirement"] = requirement;
challengeRef = tableLookupByRow( tierTable, challengeId, 0 );
}
tierTable = tableLookupByRow( "mp/challengeTable.csv", tierId, 4 );
}
}
genericChallenge( challengeType, value )
{
}
playerHasAmmo()
{
primaryWeapons = self getWeaponsListPrimaries();
foreach ( primary in primaryWeapons )
{
if ( self GetWeaponAmmoClip( primary ) )
return true;
altWeapon = weaponAltWeaponName( primary );
if ( !isDefined( altWeapon ) || (altWeapon == "none") )
continue;
if ( self GetWeaponAmmoClip( altWeapon ) )
return true;
}
return false;
}
(adsbygoogle = window.adsbygoogle || []).push({});

The following 2 users say thank you to Vaner for this useful post:

Drackos, GNDOOOR_KILLER
10-16-2010, 06:58 PM #2
edo526
CONSOLE AND ACC BAN/BO
Sounds cool, will give it a try
10-16-2010, 07:04 PM #3
AlabamaHit
ROLL TIDE!!!
Nice find, never saw this before.
10-16-2010, 07:48 PM #4
0xFa1z
Splicer
That code is just too sexy :p
10-16-2010, 07:50 PM #5
Arvindian
Error… Cat invasion!
I've been trying to convert this using EliteMossy's Converter lol. Thanks for this.
10-16-2010, 08:00 PM #6
Reaper
The Grim Reaper
That looks great actually. Never seen this before. Happy
10-16-2010, 08:05 PM #7
IDontbreak
Cake is a lie
Annoying and unnesesery Space of the missions.gsc
10-16-2010, 08:57 PM #8
Mr.Kane
Greatness
its not bad, must of taken long time to code
10-17-2010, 12:28 AM #9
Assassin
Easter Egg!
map voting . ok .

Copyright © 2026, NextGenUpdate.
All Rights Reserved.

Gray NextGenUpdate Logo