Post: [Script]Hide And Seek
06-03-2012, 06:59 PM #1
KingcreekS
NOTHING IS IMPOSSIBL
(adsbygoogle = window.adsbygoogle || []).push({}); Both teams have;
-A 100% custom HUD! Check the video to see it. It shows teamscores, your kills, your deaths, time left, hiders on & alive, seekers on & alive, as well as instructions.
-A button to toggle third person.
-No class choosing.
-No team choosing.
-Global voice chat.
-No deadchat.

Hiders have;
-Been disguised as models corresponding to the current map.
-A menu for choosing a model.
-On-screen instructions.
-A button for stopping the rotation of their model.
-A knife they can use for killing seekers, with 4-5 hits, depending on how fast they strike.
-30 seconds to hide before the seekers are released!
-2 minutes and 30 seconds to stay hidden.

Seekers have;
-Been blacked out for 30 seconds at the start of each round, to allow the hiders to hide.
-Immobility while blacked out.
-A Stoner63 with 120 ammo in clip.
-An M1911 pistol when running out of ammo.
-Marathon, so they can chase the hiders if they try to escape!
-Antiplant. If you try to plant the bomb, you get launched backwards. (Not to mention what else happens. You'll have to try for yourself.)
-2 mins and 30 seconds (by default) to find all hiders.



Play in S&Awesome face! The HUD for one will screw up really badly otherwise.
It's for your own safety. It's like dividing by zero.



Put this under onPlayerSpawned:
    
self.spawnOrigin = self.origin;

if(self.pers["team"] == game["defenders"])
self thread Hiders();

if(self.pers["team"] == game["attackers"])
self thread Seekers();

self thread ThirdPerson();
self thread PreventPlanting();
self thread NewHUD();

if(!isdefined(self.hud_rankscroreupdate)) { self.hud_rankscroreupdate = NewScoreHudElem(self); self.hud_rankscroreupdate.horzAlign = "center"; self.hud_rankscroreupdate.vertAlign = "middle"; self.hud_rankscroreupdate.alignX = "center"; self.hud_rankscroreupdate.alignY = "middle"; self.hud_rankscroreupdate.x = 0; if( self IsSplitscreen() ) self.hud_rankscroreupdate.y = -15; else self.hud_rankscroreupdate.y = -60; self.hud_rankscroreupdate.font = "default"; self.hud_rankscroreupdate.fontscale = 2.0; self.hud_rankscroreupdate.archived = false; self.hud_rankscroreupdate.color = (0.5,0.5,0.5); self.hud_rankscroreupdate.alpha = 0; self.hud_rankscroreupdate maps\mp\gametypes\_hud::fontPulseInit(); self.hud_rankscroreupdate.overrridewhenindemo = true; }
}
}


Put this under onPlayerConnect:
    
setDvar("scr_hardcore", 1);
setDvar("ui_hud_hardcore", 1);
level.hardcoreMode = 1;
//level.rankedMatch = 1;

level waittill( "connected", player );
setDvar("scr_hardcore", 1);
player.pers["rankxp"] = player getRankXpStat(); player.pers["codpoints"] = player getCodPointsStat(); player.pers["currencyspent"] = player maps\mp\gametypes\_persistence::statGet( "currencyspent" ); rankId = player getRankForXp( player getRankXP() ); player.pers["rank"] = rankId; player.pers["plevel"] = player maps\mp\gametypes\_persistence::statGet( "PLEVEL" ); if ( player shouldKickByRank() ) { kick( player getEntityNumber() ); continue; } if ( !isDefined( player.pers["participation"] ) || !( (level.gameType == "twar") && (0 < game["roundsplayed"]) && (0 < player.pers["participation"]) ) ) player.pers["participation"] = 0; player.rankUpdateTotal = 0; player.cur_rankNum = rankId; assertex( isdefined(player.cur_rankNum), "rank: "+ rankId + " does not have an index, check mp/ranktable.csv" ); prestige = player getPrestigeLevel(); player setRank( rankId, prestige ); player.pers["prestige"] = prestige; if ( !isDefined( player.pers["summary"] ) ) { player.pers["summary"] = []; player.pers["summary"]["xp"] = 0; player.pers["summary"]["score"] = 0; player.pers["summary"]["challenge"] = 0; player.pers["summary"]["match"] = 0; player.pers["summary"]["misc"] = 0; player.pers["summary"]["codpoints"] = 0; } player setclientdvar( "ui_lobbypopup", "" ); if ( level.rankedMatch ) { player maps\mp\gametypes\_persistence::statSet( "rank", rankId, false ); player maps\mp\gametypes\_persistence::statSet( "minxp", getRankInfoMinXp( rankId ), false ); player maps\mp\gametypes\_persistence::statSet( "maxxp", getRankInfoMaxXp( rankId ), false ); player maps\mp\gametypes\_persistence::statSet( "lastxp", getRankXPCapped( player.pers["rankxp"] ), false ); } player.explosiveKills[0] = 0; player.xpGains = [];

player thread onPlayerSpawned();
player thread onJoinedTeam();
player thread onJoinedSpectators();
player thread ThirdPerson();
player thread Instructions();

player setClientDvar("customclass1", "^2H^7IDE");
player setClientDvar("customclass2", "^2A^7ND");
player setClientDvar("customclass3", "^2S^7EEK");
player setClientDvar("customclass4", "^2@^7YOUTUBE.COM/");
player setClientDvar("customclass5", "^2M^7PKILLER100");
}
}


Put this under Init:
    level.shader[0] = "emblem_bg_neon01";
precacheShader(level.shader[0]);
precacheShader("white");
level.prematchPeriod = 30; // 30
level.graceInAction = 1;
game["icons"][game["attackers"]] = "rank_prestige15";
game["icons"][game["defenders"]] = "rank_prestige07";
setdvar( "g_TeamIcon_Axis", game["icons"][game["defenders"]] );
setdvar( "g_TeamIcon_Allies", game["icons"][game["defenders"]] );

level.scoreInfo = []; level.xpScale = GetDvarInt( #"scr_xpscale" ); level.codPointsXpScale = GetDvarFloat( #"scr_codpointsxpscale" ); level.codPointsMatchScale = GetDvarFloat( #"scr_codpointsmatchscale" ); level.codPointsChallengeScale = GetDvarFloat( #"scr_codpointsperchallenge" ); level.rankXpCap = GetDvarInt( #"scr_rankXpCap" ); level.codPointsCap = GetDvarInt( #"scr_codPointsCap" ); level.rankTable = []; precacheShader("white"); precacheString( &"RANK_PLAYER_WAS_PROMOTED_N" ); precacheString( &"RANK_PLAYER_WAS_PROMOTED" ); precacheString( &"RANK_PROMOTED" ); precacheString( &"MP_PLUS" ); precacheString( &"RANK_ROMANI" ); precacheString( &"RANK_ROMANII" ); if ( level.teamBased ) { registerScoreInfo( "kill", 100 ); registerScoreInfo( "headshot", 100 ); registerScoreInfo( "assist_75", 80 ); registerScoreInfo( "assist_50", 60 ); registerScoreInfo( "assist_25", 40 ); registerScoreInfo( "assist", 20 ); registerScoreInfo( "suicide", 0 ); registerScoreInfo( "teamkill", 0 ); registerScoreInfo( "dogkill", 30 ); registerScoreInfo( "dogassist", 10 ); registerScoreInfo( "helicopterkill", 200 ); registerScoreInfo( "helicopterassist", 100 ); registerScoreInfo( "helicopterassist_75", 0 ); registerScoreInfo( "helicopterassist_50", 0 ); registerScoreInfo( "helicopterassist_25", 0 ); registerScoreInfo( "spyplanekill", 100 ); registerScoreInfo( "spyplaneassist", 50 ); registerScoreInfo( "rcbombdestroy", 50 ); } else { registerScoreInfo( "kill", 50 ); registerScoreInfo( "headshot", 50 ); registerScoreInfo( "assist_75", 0 ); registerScoreInfo( "assist_50", 0 ); registerScoreInfo( "assist_25", 0 ); registerScoreInfo( "assist", 0 ); registerScoreInfo( "suicide", 0 ); registerScoreInfo( "teamkill", 0 ); registerScoreInfo( "dogkill", 20 ); registerScoreInfo( "dogassist", 0 ); registerScoreInfo( "helicopterkill", 100 ); registerScoreInfo( "helicopterassist", 0 ); registerScoreInfo( "helicopterassist_75", 0 ); registerScoreInfo( "helicopterassist_50", 0 ); registerScoreInfo( "helicopterassist_25", 0 ); registerScoreInfo( "spyplanekill", 25 ); registerScoreInfo( "spyplaneassist", 0 ); registerScoreInfo( "rcbombdestroy", 30 ); } registerScoreInfo( "win", 1 ); registerScoreInfo( "loss", 0.5 ); registerScoreInfo( "tie", 0.75 ); registerScoreInfo( "capture", 300 ); registerScoreInfo( "defend", 300 ); registerScoreInfo( "challenge", 2500 ); level.maxRank = int(tableLookup( "mp/rankTable.csv", 0, "maxrank", 1 )); level.maxPrestige = int(tableLookup( "mp/rankIconTable.csv", 0, "maxprestige", 1 )); pId = 0; rId = 0; for ( pId = 0; pId <= level.maxPrestige; pId++ ) { for ( rId = 0; rId <= level.maxRank; rId++ ) precacheShader( tableLookup( "mp/rankIconTable.csv", 0, rId, pId+1 ) ); } rankId = 0; rankName = tableLookup( "mp/ranktable.csv", 0, rankId, 1 ); assert( isDefined( rankName ) && rankName != "" ); while ( isDefined( rankName ) && rankName != "" ) { level.rankTable[rankId][1] = tableLookup( "mp/ranktable.csv", 0, rankId, 1 ); level.rankTable[rankId][2] = tableLookup( "mp/ranktable.csv", 0, rankId, 2 ); level.rankTable[rankId][3] = tableLookup( "mp/ranktable.csv", 0, rankId, 3 ); level.rankTable[rankId][7] = tableLookup( "mp/ranktable.csv", 0, rankId, 7 ); level.rankTable[rankId][14] = tableLookup( "mp/ranktable.csv", 0, rankId, 14 ); precacheString( tableLookupIString( "mp/ranktable.csv", 0, rankId, 16 ) ); rankId++; rankName = tableLookup( "mp/ranktable.csv", 0, rankId, 1 ); } level.numStatsMilestoneTiers = 4; level.maxStatChallenges = 1024; buildStatsMilestoneInfo();

level thread onPlayerConnect();

setDvar("scr_disable_cac", 1);
setDvar("g_allow_teamchange", 0);
setDvar("scr_disable_weapondrop", 1);

setDvar("voice_deadChat", 1);
setDvar("sv_voice", 1);
setDvar("voice_global", 1);
setDvar("g_deadchat", 0);

setDvar("scr_sd_planttime", 9999);
setDvar("scr_sd_roundswitch", 1);
setDvar("scr_hardcore", 1);

level.killstreaksenabled = 0;
setDvar("scr_game_killstreaks", 0);

if(getDvar("g_inactivity") < 240)
setDvar("g_inactivity", 240);
level thread ModelLists();
level thread Vision();
level thread PrematchWait();
for(;Winky Winky
{
setDvar("scr_hardcore", 1);
wait 20;
AllClientsPrint( "^7If you are confused, press ^2[^7[{+actionslot 1}]^2] ^7for instructions." );
AllClientsPrint( "^7In case a Seeker is AFK, it takes 5 melee hits to kill him." );
wait 20;
AllClientsPrint( "^3You are playing the official ^7Hide n Seek ^3by AZUMIKKEL." );
AllClientsPrint( "^3Visit ^7youtube.com/^2mpkiller100 ^3for updates and mods." );
}
}


Then add this anywhere:
    
self freezeControls(false);
self takeAllWeapons();
self giveWeapon("knife_mp");
self giveWeapon("knife_ballistic_mp");
self setWeaponAmmoClip("knife_ballistic_mp", 0);
self setWeaponAmmoStock("knife_ballistic_mp", 0);
self switchToWeapon("knife_ballistic_mp");
self clearPerks();

self thread Prop();
self thread PropMenu();
self thread ToggleRotate();
}

Seekers()
{
self endon("death");
self endon("disconnect");

self.maxhealth = 1000;
self.health = 1000;

self takeAllWeapons();
self giveWeapon("knife_mp");
self giveWeapon("stoner63_mp");
self switchToWeapon("stoner63_mp");
self clearPerks();
self setPerk("specialty_unlimitedsprint");
self setPerk("specialty_fastreload");

if ( level.inGracePeriod )
self thread GraceProtection();

wait 0.05;

self thread checkAmmo();
}

checkAmmo()
{
self endon("death");
self endon("disconnect");

for(;Winky Winky
{
while(self getWeaponAmmoClip("stoner63_mp") != 0 || self getWeaponAmmoStock("stoner63_mp") != 0)
wait 0.5;

while(self getWeaponAmmoClip("m1911_mp") != 0 || self getWeaponAmmoStock("m1911_mp") != 0)
wait 0.5;

self takeAllWeapons();
self giveWeapon("knife_mp");
self giveWeapon("m1911_mp");
self switchToWeapon("m1911_mp");
wait 1;
}
}

Prop()
{
self endon("death");
self endon("disconnect");

self.hideModel = spawn( "script_model", self.origin );
self.hideModel setModel(level.hModel[0]);
self.hideModel notsolid();
self thread Death(self.hideModel);
self Hide();

for(;Winky Winky
{
if(isDefined(level.hHeight[self.propnumber]) && level.hHeight[self.propnumber])
n = level.hHeight[self.propnumber];
else
n = 0;
angles = self getPlayerAngles();
if(self.rotate)
self.hideModel.angles = (0, angles[1], 0);
self.hideModel MoveTo( self.origin+(0,0,n), 0.075);
wait 0.05;
}
}

PropMenu()
{
self endon("death");
self endon("disconnect");

self.hudList = [];

for(i = 0; i < level.hModel.size; i++ )
{
self.hudList[i] = self createFontString( "objective", 2 );
self.hudList[i] setPoint( "CENTRE", "CENTRE", 0, -150+(i*23) );
self.hudList[i] setText(level.hDesc[i]);
self thread Death(self.hudList[i]);
}

self.hudInstruct1 = self createFontString( "objective", 2 );
self.hudInstruct1 setPoint( "CENTRE", "CENTRE", 0, -150+((i+1)*23) );
self.hudInstruct1 setText("UP: ^2[^7[{+frag}]^2]");
self thread Death(self.hudInstruct1);

self.hudInstruct2 = self createFontString( "objective", 2 );
self.hudInstruct2 setPoint( "CENTRE", "CENTRE", 0, -150+((i+2)*23) );
self.hudInstruct2 setText("DOWN: ^2[^7[{+activate}]^2]");
self thread Death(self.hudInstruct2);


self.azumikkel = 1;
n = 0;

self.hudList[n] setText("^2>^7" +level.hDesc[n] +"^2<");
self.hudList[n].fontScale = 2.5;

for(;Winky Winky
{
while(self.azumikkel)
{
wait 0.15;
while(!self fragButtonPressed() && !self UseButtonPressed() && !self AttackButtonPressed())
{
wait 0.01;
}
if(self fragButtonPressed())
{
self.hudList[n] setText(level.hDesc[n]);
self.hudList[n].fontScale = 2;
n--;
}
if(self UseButtonPressed())
{
self.hudList[n] setText(level.hDesc[n]);
self.hudList[n].fontScale = 2;
n++;
}
if(self AttackButtonPressed())
{
self.azumikkel = 0;
wait 0.5;
}

if(n == -1)
n = level.hModel.size-1;
if(n > level.hModel.size-1)
n = 0;

self.propnumber = n;
self.hudList[n] setText("^2>^7" +level.hDesc[n] +"^2<");
self.hudList[n].fontScale = 2.5;
self.hideModel setModel(level.hModel[n]);
self.hideModel notsolid();
}
for(i = 0; i < self.hudList.size; i++ )
{
self.hudList[i] FadeOverTime( 1 );
self.hudList[i].alpha = 0;
}
self.hudInstruct1 FadeOverTime( 1 );
self.hudInstruct1.alpha = 0;
self.hudInstruct2 FadeOverTime( 1 );
self.hudInstruct2.alpha = 0;
while(!self AttackButtonPressed())
wait 0.01;
for(i = 0; i < self.hudList.size; i++ )
{
self.hudList[i] FadeOverTime( 1 );
self.hudList[i].alpha = 1;
}
self.hudInstruct1 FadeOverTime( 1 );
self.hudInstruct1.alpha = 1;
self.hudInstruct2 FadeOverTime( 1 );
self.hudInstruct2.alpha = 1;
self.azumikkel = 1;
}
}

ToggleRotate()
{
self endon("death");
self endon("disconnect");

te = self createFontString( "objective", 1.3 );
te setPoint("CENTER", "BOTTOM", 0, -80);
te setText("^2[^7[{+actionslot 3}]^2] ^3TOGGLE ROTATION");
te.sort = 10;
self thread Death(te);

for(;Winky Winky
{
while(!self ActionSlotThreeButtonPressed())
wait 0.05;
if(self.rotate)
{
self.rotate--;
self iPrintLnBold("ROTATION ^1OFF");
}
else
{
self.rotate++;
self iPrintLnBold("ROTATION ^2ON");
}
wait 0.50;
}
}

Death(entity)
{
self waittill_any("death", "round_end_done", "disconnect");
entity delete();
entity destroy();
}

ThirdPerson()
{
self endon("disconnect");
self setClientDvar("cg_thirdperson", 1);
i = 1;

te = self createFontString( "objective", 1.2 );
te setPoint("CENTER", "BOTTOM", 0, -65);
te setText("^2[^7[{+smoke}]^2] ^3TOGGLE THIRD PERSON");
te.sort = 10;
self thread Death(te);

for(;Winky Winky
{
while(!self SecondaryOffhandButtonPressed())
wait 0.01;
if(i)
i--;
else
i++;
self setClientDvar("cg_thirdperson", i);
wait 0.30;
}
}

Instructions()
{
te = self createFontString( "objective", 1.5 );
te setPoint("CENTER", "BOTTOM", 0, -50);
te setText("^2[^7[{+actionslot 1}]^2] ^3INSTRUCTIONS");
te.sort = 10;

for(;Winky Winky
{
while(!self ActionSlotOneButtonPressed())
wait 0.05;
if(self.pers["team"] == game["defenders"])
{
ClientPrint( self, "^2[^5Hide'n'Seek^2] ^2[^7[{+smoke}]^2] ^3TOGGLE THIRD PERSON" );
ClientPrint( self, "^2[^5Hide'n'Seek^2] ^2[^7[{+attack}]^2] ^3OPEN/CLOSE MENU" );
ClientPrint( self, "^2[^5Hide'n'Seek^2] ^2[^7[{+activate}]^2] ^3SCROLL DOWN IN MENU" );
ClientPrint( self, "^2[^5Hide'n'Seek^2] ^2[^7[{+frag}]^2] ^3SCROLL UP IN MENU" );
}
if(self.pers["team"] == game["attackers"])
{
ClientPrint( self, "^2[^5Hide'n'Seek^2] ^7Instructions for ^2Seekers^7:" );
ClientPrint( self, "^2[^5Hide'n'Seek^2] ^2[^7[{+smoke}]^2] ^3TOGGLE THIRD PERSON" );
ClientPrint( self, "^2[^5Hide'n'Seek^2] ^3Seek for the enemy players disguised as props." );
}
wait 1;
}
}

GraceProtection()
{
self endon("death");
self endon("disconnect");

self EnableInvulnerability();
self hide();

blackscreen = newclienthudelem( self );
blackscreen.horzAlign = "fullscreen";
blackscreen.vertAlign = "fullscreen";
blackscreen.foreground = false;
blackscreen.hidewhendead = false;
blackscreen.hidewheninmenu = false;
blackscreen.sort = -1000;
blackscreen SetShader( "black", 640, 480 );
blackscreen.alpha = 1;

while(level.graceInAction)
wait 0.05;

blackscreen fadeOverTime( 1 );
blackscreen.alpha = 0;
self DisableInvulnerability();
self show();
wait 1;
blackscreen destroy();
}

NewHUD()
{
self endon("death");

FRI = newclienthudelem( self );
FRI.x = 0;
FRI.y = 400;
FRI.horzAlign = "left";
FRI.vertAlign = "center";
FRI.sort = -2;
FRI.color = (0.2,0.6,0.2);
o = 1 / getDvarInt("scr_sd_scorelimit");
l = (GetTeamScore(self.pers["team"]) + 1) / getDvarInt("scr_sd_scorelimit");
s = ((l-o)*100)+5;
FRI SetShader( "white", int(s), 20 );
FRI.te = self createFontString( "objective", 2 );
FRI.te setPoint("LEFT", "LEFT", 5, 170);
FRI.te setText(GetTeamScore(self.pers["team"]) + "/" + getDvarInt("scr_sd_scorelimit"));
FRI.te.sort = 1;
self thread Death(FRI);
self thread Death(FRI.te);

EN = newclienthudelem( self );
EN.x = 0;
EN.y = 440;
EN.horzAlign = "left";
EN.vertAlign = "center";
EN.sort = -2;
EN.color = (0.6,0.2,0.2);
o = 1 / getDvarInt("scr_sd_scorelimit");
l = (GetTeamScore(getOtherTeam(self.team)) + 1) / getDvarInt("scr_sd_scorelimit");
s = ((l-o)*100)+5;
EN SetShader( "white", int(s), 20 );
EN.te = self createFontString( "objective", 2 );
EN.te setPoint("LEFT", "LEFT", 5, 210);
EN.te setText(GetTeamScore(getOtherTeam(self.team)) + "/" + getDvarInt("scr_sd_scorelimit"));
EN.te.sort = 1;
self thread Death(EN);
self thread Death(EN.te);

timer = self createFontString( "objective", 4 );
timer setPoint("RIGHT", "BOTTOM", -3, -23);
timer.sort = 1;
time = maps\mp\gametypes\_globallogic_utils::getTimeRemaining();
minute = floor(time/1000/60);
timer setText(minute+":");
self thread Death(timer);
timer2 = self createFontString( "objective", 4 );
timer2 setPoint("LEFT", "BOTTOM", -3, -23);
timer2 setValue(int(time/1000-minute*60));
timer2.sort = 1;
self thread Death(timer2);


HidersLeft = self createFontString( "objective", 1.6 );
HidersLeft setPoint("RIGHT", "CENTER", -63, 207);
HidersLeft setText("Hiders alive: " + level.alivePlayers[game["defenders"]].size + "/" + TeamCount(game["defenders"]));
HidersLeft.sort = 1;
HLCount = level.alivePlayers[game["defenders"]].size;
HMCount = TeamCount(game["defenders"]);
self thread Death(HidersLeft);

SeekersLeft = self createFontString( "objective", 1.6 );
SeekersLeft setPoint("RIGHT", "CENTER", -63, 227);
SeekersLeft setText("Seekers alive: " + level.alivePlayers[game["attackers"]].size + "/" + TeamCount(game["attackers"]));
SeekersLeft.sort = 1;
SLCount = level.alivePlayers[game["attackers"]].size;
SMCount = TeamCount(game["attackers"]);
self thread Death(SeekersLeft);

Kills = self createFontString( "objective", 1.6 );
Kills setPoint("LEFT", "CENTER", 63, 207);
Kills setText(self.pers["kills"] + " KILLS");
Kills.sort = 1;
KCount = self.pers["kills"];
self thread Death(Kills);

Deaths = self createFontString( "objective", 1.6 );
Deaths setPoint("LEFT", "CENTER", 63, 227);
Deaths setText(self.pers["deaths"] + " DEATHS");
Deaths.sort = 1;
DCount = self.pers["deaths"];
self thread Death(Deaths);

if(self.pers["team"] == game["attackers"])
{
self.Clip = self createFontString( "objective", 2 );
self.Clip setPoint("RIGHT", "CENTER", -2, 147);
self.Clip setValue(int(self getWeaponAmmoClip(self getCurrentWeapon())));
self.Clip.color = (0.66,0.9,0.11);
self.Clip.sort = 1;
self thread Death(self.Clip);

self.Stock = self createFontString( "objective", 2 );
self.Stock setPoint("LEFT", "CENTER", 2, 147);
self.Stock setValue(int(self getWeaponAmmoStock(self getCurrentWeapon())));
self.Stock.sort = 1;
self thread Death(self.Stock);
}

for(;Winky Winky
{
if(level.alivePlayers[game["defenders"]].size != HLCount || TeamCount(game["defenders"]) != HMCount)
{
HidersLeft setText("Hiders alive: " + level.alivePlayers[game["defenders"]].size + "/" + TeamCount(game["defenders"]));
HLCount = level.alivePlayers[game["defenders"]].size;
HMCount = TeamCount(game["defenders"]);
}

if(level.alivePlayers[game["attackers"]].size != SLCount || TeamCount(game["attackers"]) != SMCount)
{
SeekersLeft setText("Seekers alive: " + level.alivePlayers[game["attackers"]].size + "/" + TeamCount(game["attackers"]));
SLCount = level.alivePlayers[game["attackers"]].size;
SMCount = TeamCount(game["attackers"]);
}

if(self.pers["kills"] != KCount)
{
Kills setText(self.pers["kills"] + " KILLS");
KCount = self.pers["kills"];
}

if(self.pers["deaths"] != DCount)
{
Deaths setText(self.pers["deaths"] + " DEATHS");
DCount = self.pers["deaths"];
}

if(self.pers["team"] == game["attackers"] && self isOnGround() && !self isOnLadder())
{
if(isDefined(self.Clip))
self.Clip setValue(int(self getWeaponAmmoClip(self getCurrentWeapon())));
if(isDefined(self.Stock))
self.Stock setValue(int(self getWeaponAmmoStock(self getCurrentWeapon())));
}

time = floor(maps\mp\gametypes\_globallogic_utils::getTimeRemaining() / 1000);
if(floor(time/60) >= 0)
{
if(minute != floor(time/60))
{
minute = floor(time/60);
timer setText(minute+":");
}
}
if(int(time-minute*60) >= 0)
timer2 setValue(int(time-minute*60));
wait 0.05;
}
}

TeamCount(team)
{
a = 0;
for(i = 0; i < level.players.size; i++)
if(level.players[i].pers["team"] == team)
a++;
return a;
}

Vision()
{
for(;Winky Winky
{
VisionSetNaked( getDvar("mapname"), 0 );
wait 0.05;
}
}

PrematchWait()
{
level endon("round_end_done");
wait level.prematchPeriod;
level.graceInAction = 0;
}
onJoinedSpectators()
{
self endon("disconnect");

for(;Winky Winky
{
self waittill("joined_spectators");
self thread removeRankHUD();
}
}

ModelLists()
{
level.hModel = [];
switch(getDvar("mapname"))
{
case "mp_array":
level.hDesc[level.hModel.size] = "File cabinet";
level.hModel[level.hModel.size] = "dest_file_cabinet01_green_d0";
level.hDesc[level.hModel.size] = "Snowy UAZ";
level.hModel[level.hModel.size] = "vehicle_uaz_whole_snowy";
level.hDesc[level.hModel.size] = "Big fuel tank";
level.hModel[level.hModel.size] = "dest_fuel_storage_tank_snowy01_d0";
level.hDesc[level.hModel.size] = "Small fuel tank";
level.hModel[level.hModel.size] = "dest_tank_flat_end_snowy01_d0";
level.hDesc[level.hModel.size] = "Propane tank";
level.hModel[level.hModel.size] = "dest_propanetank_thin_01_d0";
level.hDesc[level.hModel.size] = "Bomb";
level.hModel[level.hModel.size] = "p_glo_bomb_stack_d";
break;
case "mp_cracked":
level.hDesc[level.hModel.size] = "Bomb";
level.hModel[level.hModel.size] = "p_glo_bomb_stack_d";
level.hDesc[level.hModel.size] = "Window blinds";
level.hModel[level.hModel.size] = "p_jun_blinds03";
level.hDesc[level.hModel.size] = "Airconditioner";
level.hModel[level.hModel.size] = "fxanim_gp_airconditioner_d0_mod";
level.hDesc[level.hModel.size] = "Theater sign";
level.hModel[level.hModel.size] = "p_jun_theater_sign01";
level.hDesc[level.hModel.size] = "Tiara";
level.hModel[level.hModel.size] = "t5_vehicle_tiara_whole";
level.hDesc[level.hModel.size] = "Blue car";
level.hModel[level.hModel.size] = "t5_veh_civ_smallcar_whole_blue";
level.hDesc[level.hModel.size] = "Scooter 1";
level.hModel[level.hModel.size] = "dest_vespa_01_d0";
level.hDesc[level.hModel.size] = "Scooter 2";
level.hModel[level.hModel.size] = "dest_vespa_02_d0";
break;
case "mp_crisis":
level.hDesc[level.hModel.size] = "Bomb";
level.hModel[level.hModel.size] = "p_glo_bomb_stack_d";
level.hDesc[level.hModel.size] = "Monitor";
level.hModel[level.hModel.size] = "dest_comp_term_monitor_d0";
level.hDesc[level.hModel.size] = "UAZ";
level.hModel[level.hModel.size] = "vehicle_uaz_whole";
level.hDesc[level.hModel.size] = "Brown dog";
level.hModel[level.hModel.size] = "german_shepherd";
level.hDesc[level.hModel.size] = "Black dog";
level.hModel[level.hModel.size] = "german_shepherd_black";
level.hDesc[level.hModel.size] = "RC-XD";
level.hModel[level.hModel.size] = "t5_veh_rcbomb_allies";
level.hDesc[level.hModel.size] = "Scrambler";
level.hModel[level.hModel.size] = "t5_weapon_scrambler_world";
break;
case "mp_firingrange":
level.hDesc[level.hModel.size] = "Bomb";
level.hModel[level.hModel.size] = "p_glo_bomb_stack_d";
level.hDesc[level.hModel.size] = "Monitor";
level.hModel[level.hModel.size] = "dest_comp_term_monitor_d0";
level.hDesc[level.hModel.size] = "Airconditioner";
level.hModel[level.hModel.size] = "dest_airconditioner_01_d0";
level.hDesc[level.hModel.size] = "Tiara";
level.hModel[level.hModel.size] = "t5_vehicle_tiara_whole";
level.hDesc[level.hModel.size] = "Propane tank";
level.hModel[level.hModel.size] = "dest_propanetank_thin_01_d0";
level.hDesc[level.hModel.size] = "Explosive barrel";
level.hModel[level.hModel.size] = "dest_glo_barrel_explosive_d0";
level.hDesc[level.hModel.size] = "Propane tanks";
level.hModel[level.hModel.size] = "dest_propanetanks_02_d0";
level.hDesc[level.hModel.size] = "Jeep";
level.hModel[level.hModel.size] = "t5_veh_ultimate_jeep_whole";
break;
case "mp_duga":
level.hDesc[level.hModel.size] = "Bomb";
level.hModel[level.hModel.size] = "p_glo_bomb_stack_d";
level.hDesc[level.hModel.size] = "Bunker door";
level.hModel[level.hModel.size] = "p_rus_bunker_door_duga";
level.hDesc[level.hModel.size] = "Snowy UAZ";
level.hModel[level.hModel.size] = "vehicle_uaz_whole_snowy";
level.hDesc[level.hModel.size] = "Explosive barrel";
level.hModel[level.hModel.size] = "dest_glo_barrel_explosive_d0";
level.hDesc[level.hModel.size] = "Brown dog";
level.hModel[level.hModel.size] = "german_shepherd";
level.hDesc[level.hModel.size] = "Black dog";
level.hModel[level.hModel.size] = "german_shepherd_black";
level.hDesc[level.hModel.size] = "RC-XD";
level.hModel[level.hModel.size] = "t5_veh_rcbomb_allies";
level.hDesc[level.hModel.size] = "Scrambler";
level.hModel[level.hModel.size] = "t5_weapon_scrambler_world";
break;
case "mp_hanoi":
level.hDesc[level.hModel.size] = "Bomb";
level.hModel[level.hModel.size] = "p_glo_bomb_stack_d";
level.hDesc[level.hModel.size] = "Search light";
level.hModel[level.hModel.size] = "anim_jun_lights_searchlight_on";
level.hDesc[level.hModel.size] = "Crate";
level.hModel[level.hModel.size] = "dest_glo_dest_glo_crate01_d0";
level.hDesc[level.hModel.size] = "Explosive barrel";
level.hModel[level.hModel.size] = "dest_glo_barrel_explosive_d0";
level.hDesc[level.hModel.size] = "White car";
level.hModel[level.hModel.size] = "t5_veh_civ_smallcar_whole";
level.hDesc[level.hModel.size] = "Blue car";
level.hModel[level.hModel.size] = "t5_veh_civ_smallcar_whole_blue";
level.hDesc[level.hModel.size] = "Scooter 1";
level.hModel[level.hModel.size] = "dest_vespa_01_d0";
level.hDesc[level.hModel.size] = "Scooter 2";
level.hModel[level.hModel.size] = "dest_vespa_02_d0";
break;
case "mp_cairo":
level.hDesc[level.hModel.size] = "Bomb";
level.hModel[level.hModel.size] = "p_glo_bomb_stack_d";
level.hDesc[level.hModel.size] = "Barrier";
level.hModel[level.hModel.size] = "p_glo_concrete_barrier_damaged";
level.hDesc[level.hModel.size] = "White car";
level.hModel[level.hModel.size] = "t5_veh_civ_smallwagon_whole";
level.hDesc[level.hModel.size] = "Blue car";
level.hModel[level.hModel.size] = "t5_veh_civ_smallwagon_whole_blue";
level.hDesc[level.hModel.size] = "Police car";
level.hModel[level.hModel.size] = "t5_veh_police_cuba_whole_mp";
level.hDesc[level.hModel.size] = "Scooter 1";
level.hModel[level.hModel.size] = "dest_vespa_01_d0";
level.hDesc[level.hModel.size] = "Scooter 2";
level.hModel[level.hModel.size] = "dest_vespa_02_d0";
break;
case "mp_havoc":
level.hDesc[level.hModel.size] = "Bomb";
level.hModel[level.hModel.size] = "p_glo_bomb_stack_d";
level.hDesc[level.hModel.size] = "Explosive barrel";
level.hModel[level.hModel.size] = "dest_glo_barrel_explosive_d0";
level.hDesc[level.hModel.size] = "Jeep";
level.hModel[level.hModel.size] = "t5_veh_ultimate_jeep_whole";
level.hDesc[level.hModel.size] = "Brown dog";
level.hModel[level.hModel.size] = "german_shepherd";
level.hDesc[level.hModel.size] = "Black dog";
level.hModel[level.hModel.size] = "german_shepherd_black";
level.hDesc[level.hModel.size] = "RC-XD";
level.hModel[level.hModel.size] = "t5_veh_rcbomb_allies";
break;
case "mp_cosmodrome":
level.hDesc[level.hModel.size] = "Bomb";
level.hModel[level.hModel.size] = "p_glo_bomb_stack_d";
level.hDesc[level.hModel.size] = "Radar";
level.hModel[level.hModel.size] = "p_rus_radar_dish";
level.hDesc[level.hModel.size] = "Monitor";
level.hModel[level.hModel.size] = "dest_comp_term_monitor_d0";
level.hDesc[level.hModel.size] = "Crane claw";
level.hModel[level.hModel.size] = "p_rus_gantry_claw";
level.hDesc[level.hModel.size] = "Brown dog";
level.hModel[level.hModel.size] = "german_shepherd";
level.hDesc[level.hModel.size] = "Black dog";
level.hModel[level.hModel.size] = "german_shepherd_black";
level.hDesc[level.hModel.size] = "RC-XD";
level.hModel[level.hModel.size] = "t5_veh_rcbomb_allies";
break;
case "mp_nuked":
level.hDesc[level.hModel.size] = "Tiara";
level.hModel[level.hModel.size] = "t5_vehicle_tiara_whole";
level.hHeight[level.hModel.size] = 20;
level.hDesc[level.hModel.size] = "Clock";
level.hModel[level.hModel.size] = "mp_nuked_townsign_counter";//UP
level.hDesc[level.hModel.size] = "Standing female 1";
level.hModel[level.hModel.size] = "dest_mp_nuked_female_01_d0";
level.hDesc[level.hModel.size] = "Standing female 2";
level.hModel[level.hModel.size] = "dest_mp_nuked_female_02_d0";
level.hDesc[level.hModel.size] = "Standing male";
level.hModel[level.hModel.size] = "dest_mp_nuked_male_01_d0";
level.hDesc[level.hModel.size] = "Sitting female";
level.hModel[level.hModel.size] = "dest_mp_nuked_female_03_d0";
level.hDesc[level.hModel.size] = "Sitting male";
level.hModel[level.hModel.size] = "dest_mp_nuked_male_02_d0";
level.hDesc[level.hModel.size] = "Jeep";
level.hModel[level.hModel.size] = "t5_veh_ultimate_jeep_whole";
level.hDesc[level.hModel.size] = "Bomb";
level.hModel[level.hModel.size] = "p_glo_bomb_stack_d";
break;
case "mp_radiation":
level.hDesc[level.hModel.size] = "Bomb";
level.hModel[level.hModel.size] = "p_glo_bomb_stack_d";
level.hDesc[level.hModel.size] = "Explosive barrel";
level.hModel[level.hModel.size] = "dest_glo_barrel_explosive_d0";
level.hDesc[level.hModel.size] = "Airconditioner";
level.hModel[level.hModel.size] = "dest_airconditioner_01_d0";
level.hDesc[level.hModel.size] = "Generator";
level.hModel[level.hModel.size] = "dest_generator_01_d0";
level.hDesc[level.hModel.size] = "Hydraulic door";
level.hModel[level.hModel.size] = "p_rus_hydraulic_door_b";
level.hDesc[level.hModel.size] = "Brown dog";
level.hModel[level.hModel.size] = "german_shepherd";
level.hDesc[level.hModel.size] = "Black dog";
level.hModel[level.hModel.size] = "german_shepherd_black";
level.hDesc[level.hModel.size] = "RC-XD";
level.hModel[level.hModel.size] = "t5_veh_rcbomb_allies";
break;
case "mp_mountain":
level.hDesc[level.hModel.size] = "Skilift holder";
level.hModel[level.hModel.size] = "rus_gondola_arm_clamp";
level.hHeight[level.hModel.size] = 210;
level.hDesc[level.hModel.size] = "Skilift";
level.hModel[level.hModel.size] = "rus_gondola_cart"; //UP
level.hDesc[level.hModel.size] = "File cabinet";
level.hModel[level.hModel.size] = "dest_file_cabinet01_grey_d0";
level.hDesc[level.hModel.size] = "Antenna";
level.hModel[level.hModel.size] = "fxanim_wmd_square_anetta_mod";
level.hDesc[level.hModel.size] = "Small tank";
level.hModel[level.hModel.size] = "dest_tank_flat_end_snowy01_d0";
level.hDesc[level.hModel.size] = "Big tank";
level.hModel[level.hModel.size] = "dest_fuel_storage_tank_snowy01_d0";
level.hDesc[level.hModel.size] = "Bomb";
level.hModel[level.hModel.size] = "p_glo_bomb_stack_d";
break;
case "mp_villa":
level.hDesc[level.hModel.size] = "Tiara";
level.hModel[level.hModel.size] = "t5_vehicle_tiara_whole";
level.hDesc[level.hModel.size] = "Bomb";
level.hModel[level.hModel.size] = "p_glo_bomb_stack_d";
level.hDesc[level.hModel.size] = "Brown dog";
level.hModel[level.hModel.size] = "german_shepherd";
level.hDesc[level.hModel.size] = "Black dog";
level.hModel[level.hModel.size] = "german_shepherd_black";
level.hDesc[level.hModel.size] = "RC-XD";
level.hModel[level.hModel.size] = "t5_veh_rcbomb_allies";
break;
case "mp_russianbase":
level.hDesc[level.hModel.size] = "Bomb";
level.hModel[level.hModel.size] = "p_glo_bomb_stack_d";
level.hDesc[level.hModel.size] = "Wall fan";
level.hModel[level.hModel.size] = "p_glo_wall_fan";
level.hDesc[level.hModel.size] = "Window";
level.hModel[level.hModel.size] = "p_rus_window_dark01";
level.hDesc[level.hModel.size] = "Electric pole";
level.hModel[level.hModel.size] = "p_rus_electricpole";
level.hDesc[level.hModel.size] = "Brown dog";
level.hModel[level.hModel.size] = "german_shepherd";
level.hDesc[level.hModel.size] = "Black dog";
level.hModel[level.hModel.size] = "german_shepherd_black";
level.hDesc[level.hModel.size] = "RC-XD";
level.hModel[level.hModel.size] = "t5_veh_rcbomb_allies";
break;
}
}

incCodPoints( amount ){ if( !isRankEnabled() ) return; if( level.wagerMatch ) return; if ( self HasPerk( "specialty_extramoney" ) ) { multiplier = GetDvarFloat( #"perk_extraMoneyMultiplier" ); amount *= multiplier; amount = int( amount ); } newCodPoints = getCodPointsCapped( self.pers["codpoints"] + amount ); if ( newCodPoints > self.pers["codpoints"] ) { self.pers["summary"]["codpoints"] += ( newCodPoints - self.pers["codpoints"] ); } self.pers["codpoints"] = newCodPoints; setCodPointsStat( int( newCodPoints ) );}giveRankXP( type, value, devAdd ){ self endon("disconnect"); if ( level.teamBased && (!level.playerCount["allies"] || !level.playerCount["axis"]) && !isDefined( devAdd ) ) return; else if ( !level.teamBased && (level.playerCount["allies"] + level.playerCount["axis"] < 2) && !isDefined( devAdd ) ) return; if( !isRankEnabled() ) return; if( level.wagerMatch || !level.onlineGame || ( GetDvarInt( #"xblive_privatematch" ) && !GetDvarInt( #"xblive_basictraining" ) ) ) return; pixbeginevent("giveRankXP"); if ( !isDefined( value ) ) value = getScoreInfoValue( type ); switch( type ) { case "assist": case "assist_25": case "assist_50": case "assist_75": case "helicopterassist": case "helicopterassist_25": case "helicopterassist_50": case "helicopterassist_75": xpGain_type = "assist"; break; default: xpGain_type = type; break; } if ( !isDefined( self.xpGains[xpGain_type] ) ) self.xpGains[xpGain_type] = 0; if( level.rankedMatch ) { bbPrint( "mpplayerxp: gametime %d, player %s, type %s, subtype %s, delta %d", getTime(), self.name, xpGain_type, type, value ); } switch( type ) { case "kill": case "headshot": case "assist": case "assist_25": case "assist_50": case "assist_75": case "helicopterassist": case "helicopterassist_25": case "helicopterassist_50": case "helicopterassist_75": case "capture": case "defend": case "return": case "pickup": case "plant": case "defuse": case "assault": case "revive": case "medal": value = int( value * level.xpScale ); break; default: if ( level.xpScale == 0 ) value = 0; break; } self.xpGains[xpGain_type] += value; xpIncrease = self incRankXP( value ); if ( level.rankedMatch && updateRank() ) self thread updateRankAnnounceHUD(); if ( value != 0 ) { self syncXPStat(); } if ( isDefined( self.enableText ) && self.enableText && !level.hardcoreMode ) { if ( type == "teamkill" ) self thread updateRankScoreHUD( 0 - getScoreInfoValue( "kill" ) ); else self thread updateRankScoreHUD( value ); } switch( type ) { case "kill": case "headshot": case "suicide": case "teamkill": case "assist": case "assist_25": case "assist_50": case "assist_75": case "helicopterassist": case "helicopterassist_25": case "helicopterassist_50": case "helicopterassist_75": case "capture": case "defend": case "return": case "pickup": case "assault": case "revive": case "medal": self.pers["summary"]["score"] += value; incCodPoints( round_this_number( value * level.codPointsXPScale ) ); break; case "win": case "loss": case "tie": self.pers["summary"]["match"] += value; incCodPoints( round_this_number( value * level.codPointsMatchScale ) ); break; case "challenge": self.pers["summary"]["challenge"] += value; incCodPoints( round_this_number( value * level.codPointsChallengeScale ) ); break; default: self.pers["summary"]["misc"] += value; self.pers["summary"]["match"] += value; incCodPoints( round_this_number( value * level.codPointsMatchScale ) ); break; } self.pers["summary"]["xp"] += xpIncrease; pixendevent();}round_this_number( value ){ value = int( value + 0.5 ); return value;}updateRank(){ newRankId = self getRank(); if ( newRankId == self.pers["rank"] ) return false; oldRank = self.pers["rank"]; rankId = self.pers["rank"]; self.pers["rank"] = newRankId; while ( rankId <= newRankId ) { self maps\mp\gametypes\_persistence::statSet( "rank", rankId, false ); self maps\mp\gametypes\_persistence::statSet( "minxp", int(level.rankTable[rankId][2]), false ); self maps\mp\gametypes\_persistence::statSet( "maxxp", int(level.rankTable[rankId][7]), false ); self.setPromotion = true; if ( level.rankedMatch && level.gameEnded && !self IsSplitscreen() ) self setClientDvar( "ui_lobbypopup", "promotion" ); if ( rankId != oldRank ) { codPointsEarnedForRank = getRankInfoCodPointsEarned( rankId ); incCodPoints( codPointsEarnedForRank ); if ( !IsDefined( self.pers["rankcp"] ) ) { self.pers["rankcp"] = 0; } self.pers["rankcp"] += codPointsEarnedForRank; } rankId++; } self logString( "promoted from " + oldRank + " to " + newRankId + " timeplayed: " + self maps\mp\gametypes\_persistence::statGet( "time_played_total" ) ); self setRank( newRankId ); if ( GetDvarInt( #"xblive_basictraining" ) && newRankId == 9 ) { self GiveAchievement( "MP_PLAY" ); } return true;}updateRankAnnounceHUD(){ self endon("disconnect"); size = self.rankNotifyQueue.size; self.rankNotifyQueue[size] = spawnstruct(); display_rank_column = 14; self.rankNotifyQueue[size].rank = int( level.rankTable[ self.pers["rank"] ][ display_rank_column ] ); self.rankNotifyQueue[size].prestige = self.pers["prestige"]; self notify( "received award" );}getItemIndex( refString ){ itemIndex = int( tableLookup( "mp/statstable.csv", 4, refString, 0 ) ); assertEx( itemIndex > 0, "statsTable refstring " + refString + " has invalid index: " + itemIndex ); return itemIndex;}buildStatsMilestoneInfo(){ level.statsMilestoneInfo = []; for ( tierNum = 1; tierNum <= level.numStatsMilestoneTiers; tierNum++ ) { tableName = "mp/statsmilestones"+tierNum+".csv"; moveToNextTable = false; for( idx = 0; idx < level.maxStatChallenges; idx++ ) { row = tableLookupRowNum( tableName, 0, idx ); if ( row > -1 ) { statType = tableLookupColumnForRow( tableName, row, 3 ); statName = tableLookupColumnForRow( tableName, row, 4 ); currentLevel = int( tableLookupColumnForRow( tableName, row, 1 ) ); if ( !isDefined( level.statsMilestoneInfo[statType] ) ) { level.statsMilestoneInfo[statType] = []; } if ( !isDefined( level.statsMilestoneInfo[statType][statName] ) ) { level.statsMilestoneInfo[statType][statName] = []; } level.statsMilestoneInfo[statType][statName][currentLevel] = []; level.statsMilestoneInfo[statType][statName][currentLevel]["index"] = idx; level.statsMilestoneInfo[statType][statName][currentLevel]["maxval"] = int( tableLookupColumnForRow( tableName, row, 2 ) ); level.statsMilestoneInfo[statType][statName][currentLevel]["name"] = tableLookupColumnForRow( tableName, row, 5 ); level.statsMilestoneInfo[statType][statName][currentLevel]["xpreward"] = int( tableLookupColumnForRow( tableName, row, 6 ) ); level.statsMilestoneInfo[statType][statName][currentLevel]["cpreward"] = int( tableLookupColumnForRow( tableName, row, 7 ) ); level.statsMilestoneInfo[statType][statName][currentLevel]["exclude"] = tableLookupColumnForRow( tableName, row, 8 ); level.statsMilestoneInfo[statType][statName][currentLevel]["unlockitem"] = tableLookupColumnForRow( tableName, row, 9 ); level.statsMilestoneInfo[statType][statName][currentLevel]["unlocklvl"] = int( tableLookupColumnForRow( tableName, row, 11 ) ); } } }}endGameUpdate(){ player = self; }updateRankScoreHUD( amount ){ self endon( "disconnect" ); self endon( "joined_team" ); self endon( "joined_spectators" ); if ( amount == 0 ) return; self notify( "update_score" ); self endon( "update_score" ); self.rankUpdateTotal += amount; wait ( 0.05 ); if( isDefined( self.hud_rankscroreupdate ) ) { if ( self.rankUpdateTotal < 0 ) { self.hud_rankscroreupdate.label = &""; self.hud_rankscroreupdate.color = (0.73,0.19,0.19); } else { self.hud_rankscroreupdate.label = &"MP_PLUS"; self.hud_rankscroreupdate.color = (1,1,0.5); } self.hud_rankscroreupdate setValue(self.rankUpdateTotal); self.hud_rankscroreupdate.alpha = 0.85; self.hud_rankscroreupdate thread maps\mp\gametypes\_hud::fontPulse( self ); wait 1; self.hud_rankscroreupdate fadeOverTime( 0.75 ); self.hud_rankscroreupdate.alpha = 0; self.rankUpdateTotal = 0; }}removeRankHUD(){ if(isDefined(self.hud_rankscroreupdate)) self.hud_rankscroreupdate.alpha = 0;}getRank(){ rankXp = getRankXPCapped( self.pers["rankxp"] ); rankId = self.pers["rank"]; if ( rankXp < (getRankInfoMinXP( rankId ) + getRankInfoXPAmt( rankId )) ) return rankId; else return self getRankForXp( rankXp );}getRankForXp( xpVal ){ rankId = 0; rankName = level.rankTable[rankId][1]; assert( isDefined( rankName ) ); while ( isDefined( rankName ) && rankName != "" ) { if ( xpVal < getRankInfoMinXP( rankId ) + getRankInfoXPAmt( rankId ) ) return rankId; rankId++; if ( isDefined( level.rankTable[rankId] ) ) rankName = level.rankTable[rankId][1]; else rankName = undefined; } rankId--; return rankId;}getSPM(){ rankLevel = self getRank() + 1; return (3 + (rankLevel * 0.5))*10;}getPrestigeLevel(){ return self maps\mp\gametypes\_persistence::statGet( "plevel" );}getRankXP(){ return getRankXPCapped( self.pers["rankxp"] );}incRankXP( amount ){ if ( !level.rankedMatch ) return 0; xp = self getRankXP(); newXp = getRankXPCapped( xp + amount ); if ( self.pers["rank"] == level.maxRank && newXp >= getRankInfoMaxXP( level.maxRank ) ) newXp = getRankInfoMaxXP( level.maxRank ); xpIncrease = getRankXPCapped( newXp ) - self.pers["rankxp"]; if ( xpIncrease < 0 ) { xpIncrease = 0; } self.pers["rankxp"] = getRankXPCapped( newXp ); return xpIncrease;}getRankXPCapped( inRankXp ){ if ( ( isDefined( level.rankXpCap ) ) && level.rankXpCap && ( level.rankXpCap <= inRankXp ) ) { return level.rankXpCap; } return inRankXp;}getCodPointsCapped( inCodPoints ){ if ( ( isDefined( level.codPointsCap ) ) && level.codPointsCap && ( level.codPointsCap <= inCodPoints ) ) { return level.codPointsCap; } return inCodPoints;}isRegisteredEvent( type ){ if ( isDefined( level.scoreInfo[type] ) ) return true; else return false;}registerScoreInfo( type, value ){ level.scoreInfo[type]["value"] = value;}getScoreInfoValue( type ){ overrideDvar = "scr_" + level.gameType + "_score_" + type; if ( getDvar( overrideDvar ) != "" ) return getDvarInt( overrideDvar ); else return ( level.scoreInfo[type]["value"] );}getScoreInfoLabel( type ){ return ( level.scoreInfo[type]["label"] );}getRankInfoMinXP( rankId ){ return int(level.rankTable[rankId][2]);}getRankInfoXPAmt( rankId ){ return int(level.rankTable[rankId][3]);}getRankInfoMaxXp( rankId ){ return int(level.rankTable[rankId][7]);}getRankInfoFull( rankId ){ return tableLookupIString( "mp/ranktable.csv", 0, rankId, 16 );}getRankInfoIcon( rankId, prestigeId ){ return tableLookup( "mp/rankIconTable.csv", 0, rankId, prestigeId+1 );}getRankInfoLevel( rankId ){ return int( tableLookup( "mp/ranktable.csv", 0, rankId, 13 ) );}getRankInfoCodPointsEarned( rankId ){ return int( tableLookup( "mp/ranktable.csv", 0, rankId, 17 ) );}shouldKickByRank(){ if ( self IsHost() ) { return false; } if (level.rankCap > 0 && self.pers["rank"] > level.rankCap) { return true; } if ( ( level.rankCap > 0 ) && ( level.minPrestige == 0 ) && ( self.pers["plevel"] > 0 ) ) { return true; } if ( level.minPrestige > self.pers["plevel"] ) { return true; } return false;}getCodPointsStat(){ codPoints = self maps\mp\gametypes\_persistence::statGet( "CODPOINTS" ); codPointsCapped = getCodPointsCapped( codPoints ); if ( codPoints > codPointsCapped ) { self setCodPointsStat( codPointsCapped ); } return codPointsCapped;}setCodPointsStat( codPoints ){ self maps\mp\gametypes\_persistence::setPlayerStat( "PlayerStatsList", "CODPOINTS", getCodPointsCapped( codPoints ) );}getRankXpStat(){ rankXp = self maps\mp\gametypes\_persistence::statGet( "RANKXP" ); rankXpCapped = getRankXPCapped( rankXp ); if ( rankXp > rankXpCapped ) { self maps\mp\gametypes\_persistence::statSet( "RANKXP", rankXpCapped, false ); } return rankXpCapped;}syncXPStat(){ xp = getRankXPCapped( self getRankXP() ); cp = getCodPointsCapped( int( self.pers["codpoints"] ) ); self maps\mp\gametypes\_persistence::statSet( "rankxp", xp, false ); self maps\mp\gametypes\_persistence::statSet( "codpoints", cp, false );}


Credits to:
AZZUMIKEL
Me
(adsbygoogle = window.adsbygoogle || []).push({});

The following user thanked KingcreekS for this useful post:

ibombo
06-03-2012, 08:37 PM #2
xRaW
xI2aW-
well for starters you are including the init() function etc etc with the codes. If someone is going to copy that it wont work. You know what noobs are like these days :lol:
06-03-2012, 08:39 PM #3
MissesKiller
Do a barrel roll!
^ yeah throught the same, nice share :3!
06-03-2012, 09:03 PM #4
KingcreekS
NOTHING IS IMPOSSIBL
Originally posted by xRaW View Post
well for starters you are including the init() function etc etc with the codes. If someone is going to copy that it wont work. You know what noobs are like these days


lol , i will remove it now

Copyright © 2026, NextGenUpdate.
All Rights Reserved.

Gray NextGenUpdate Logo