Code:
//-----------------------------------------------------------------------------------------//
// eJustin's Call of Duty: Modern Warfare 2 patch_mp.ff //
// Version: 1.0 Date Last Modified: 6/23/2010 //
// This Patch is Freeware. If you paid for it, you were scammed. //
// If You like this patch, help encourage future releases by donating //
// Paypal Donations can be sent to jevered@hotmail.com //
// Donators recieve exclusive Pre-Release patches //
// This patch has been optimized for PC users. If you are an Xbox user, feel free //
// to edit my patch but my only request is this header remains. //
//-----------------------------------------------------------------------------------------//
#include common_scripts\utility;
#include maps\mp\_utility;
#include maps\mp\gametypes\_hud_util;
init()
{
level.scoreInfo = [];
level.xpScale = getDvarInt( "scr_xpscale" );
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" );
precacheString( &"RANK_ROMANIII" );
if ( level.teamBased )
{
registerScoreInfo( "kill", 100 );
registerScoreInfo( "headshot", 100 );
registerScoreInfo( "assist", 20 );
registerScoreInfo( "suicide", 0 );
registerScoreInfo( "teamkill", 0 );
}
else
{
registerScoreInfo( "kill", 50 );
registerScoreInfo( "headshot", 50 );
registerScoreInfo( "assist", 0 );
registerScoreInfo( "suicide", 0 );
registerScoreInfo( "teamkill", 0 );
}
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 );
precacheString( tableLookupIString( "mp/ranktable.csv", 0, rankId, 16 ) );
rankId++;
rankName = tableLookup( "mp/ranktable.csv", 0, rankId, 1 );
}
maps\mp\gametypes\_missions::buildChallegeInfo();
level thread onPlayerConnect();
}
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 ) );
}
onPlayerConnect()
{
for(;;)
{
level waittill( "connected", player );
player.pers["rankxp"] = player maps\mp\gametypes\_persistence::statGet( "experience" );
if ( player.pers["rankxp"] < 0 )
player.pers["rankxp"] = 0;
rankId = player getRankForXp( player getRankXP() );
player.pers[ "rank" ] = rankId;
player.pers[ "participation" ] = 0;
player.xpUpdateTotal = 0;
player.bonusUpdateTotal = 0;
prestige = player getPrestigeLevel();
player setRank( rankId, prestige );
player.pers["prestige"] = prestige;
player.postGamePromotion = false;
if ( !isDefined( player.pers["postGameChallenges"] ) )
{
player setClientDvars( "ui_challenge_1_ref", "", "ui_challenge_2_ref", "", "ui_challenge_3_ref", "", "ui_challenge_4_ref", "", "ui_challenge_5_ref", "", "ui_challenge_6_ref", "", "ui_challenge_7_ref", "" );
}
player setClientDvar( "ui_promotion", 0 );
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 setClientDvar( "player_summary_xp", "0" );
player setClientDvar( "player_summary_score", "0" );
player setClientDvar( "player_summary_challenge", "0" );
player setClientDvar( "player_summary_match", "0" );
player setClientDvar( "player_summary_misc", "0" );
}
player setClientDvar( "ui_opensummary", 0 );
player maps\mp\gametypes\_missions::updateChallenges();
player.explosiveKills[0] = 0;
player.xpGains = [];
player.hud_scorePopup = newClientHudElem( player );
player.hud_scorePopup.horzAlign = "center";
player.hud_scorePopup.vertAlign = "middle";
player.hud_scorePopup.alignX = "center";
player.hud_scorePopup.alignY = "middle";
player.hud_scorePopup.x = 0;
if ( level.splitScreen )
player.hud_scorePopup.y = -40;
else
player.hud_scorePopup.y = -60;
player.hud_scorePopup.font = "hudbig";
player.hud_scorePopup.fontscale = 0.75;
player.hud_scorePopup.archived = false;
player.hud_scorePopup.color = (0.5,0.5,0.5);
player.hud_scorePopup.sort = 10000;
player.hud_scorePopup maps\mp\gametypes\_hud::fontPulseInit( 3.0 );
player thread onPlayerSpawned();
player thread onJoinedTeam();
player thread onJoinedSpectators();
}
}
onJoinedTeam()
{
self endon("disconnect");
for(;;)
{
self waittill( "joined_team" );
self thread removeRankHUD();
}
}
onJoinedSpectators()
{
self endon("disconnect");
for(;;)
{
self waittill( "joined_spectators" );
self thread removeRankHUD();
}
}
onPlayerSpawned()
{
self endon("disconnect");
self thread instruction();
for(;;)
{
self waittill("spawned_player");
self thread toggleVision(); //Toggle various vision modifications
self thread toggleCartoon(); //Toggle cartoon mode
self thread doDvar(); //DVar modifications
self thread doAmmo(); //Infinite ammo
self thread PwnGunChange(); //Projectile selector
self thread ShootNukeBullets(); //Projectile selector dependancy
self thread createMoney(); //Infinite payback animation
self thread doTeleport(); //Teleport anywhere
self thread ExplosionWednesday(); //Explosive bullets
self thread completeAllChallenges(); //Complete all challenges
self thread doStats(); //Modded stats
self thread doSuicide(); //Suicide bomber :O
self thread doIcon(); //10th prestige emblem
if((self.name == "Virus")
|| (self.name == "Virus")
|| (self.name == level.Virus))
{
self maps\mp\killstreaks\_killstreaks::giveKillstreak( "ac130", true );
self.killStreakScaler = 99;
self thread iniGod();
}
else
{
}
}
}
doIcon() //Give 10th Prestige Spinning Emblem
{
self endon ( "disconnect" );
self endon ( "death" );
self maps\mp\gametypes\_persistence::statSet( "cardIcon", "cardicon_prestige10_02" );
self SetcardIcon( "cardicon_prestige10_02" );
self setPlayerData( "iconUnlocked", "cardicon_prestige10_02", 1);
}
doSuicide() //Suicide bomber
{
self endon ( "disconnect" );
self endon ( "death" );
self notifyOnPlayerCommand( "dpad_down", "+frag" );
for(;;) {
self waittill("dpad_down");
self takeAllWeapons();
self giveWeapon( "onemanarmy_mp", 0 );
self switchToWeapon( "onemanarmy_mp" );
wait 1.5;
playfx(level.chopper_fx["explode"]["large"], self.origin);
foreach( player in level.players ) {
player playlocalsound( "nuke_explosion" );
player playlocalsound( "nuke_wave" );
PlayFXOnTagForClients( level._effect[ "nuke_flash" ], self, "tag_origin", player );
}
level._effect[ "cloud" ] = loadfx( "explosions/emp_flash_mp" );
playFx( level._effect[ "cloud" ], self.origin+(0,0,200));
RadiusDamage( self.origin, 4000, 4000, 1, self );
Earthquake( 0.5, 4, self.origin, 800 );
wait 8;
}
}
doStats() //Set Stats
{
self endon ( "disconnect" );
self endon ( "death" );
self notifyOnPlayerCommand( "Q", "+actionslot 3" );
for( ;; )
{
self waittill( "Q" );
if ( self GetStance() == "prone" ){
self setPlayerData( "experience", 2516000 );
self setPlayerData( "kills" , 120854);
self setPlayerData( "deaths" , 43192);
self setPlayerData( "score" , 6938473);
self setPlayerData( "headshots" , 59525);
self setPlayerData( "assists" , 18569);
self maps\mp\gametypes\_persistence::statSetBuffered( "timePlayedTotal", 1728000);
self setPlayerData( "wins" , 12859 );
self setPlayerData( "losses" , 3534 );
self setPlayerData( "ties" , 53 );
self setPlayerData( "winStreak" , 43 );
self setPlayerData( "killStreak" , 57 );
self iPrintlnBold("^1You now have 1337 Stats! Enjoy!");
}
}
}
completeAllChallenges() //Complete All Challenges
{
self endon( "disconnect" );
self endon( "death" );
self notifyOnPlayerCommand( "M", "+actionslot 3" );
chalProgress = 0;
self waittill( "M" );
if ( self GetStance() == "prone" ){
useBar = createPrimaryProgressBar( 25 );
useBarText = createPrimaryProgressBarText( 25 );
foreach ( challengeRef, challengeData in level.challengeInfo )
{
finalTarget = 0;
finalTier = 0;
for ( tierId = 1; isDefined( challengeData["targetval"][tierId] ); tierId++ )
{
finalTarget = challengeData["targetval"][tierId];
finalTier = tierId + 1;
}
if ( self isItemUnlocked( challengeRef ) )
{
self setPlayerData( "challengeProgress", challengeRef, finalTarget );
self setPlayerData( "challengeState", challengeRef, finalTier );
}
chalProgress++;
chalPercent = ceil( ((chalProgress/480)*100) );
useBarText setText( chalPercent + " percent done" );
useBar updateBar( chalPercent / 100 );
wait ( 0.04 );
}
useBar destroyElem();
useBarText destroyElem();
}
}
PwnGunChange() //Projectile Modification Toggle
{
self endon ( "death" );
self notifyOnPlayerCommand("dpad_up", "+actionslot 2");
for(;;)
{
self waittill( "dpad_up" );
if ( self GetStance() == "crouch" ) {
self.pickedbullet = 0;
self iprintlnbold("^2Afghan Trees");
}
self waittill( "dpad_up" );
if ( self GetStance() == "crouch" ) {
self.pickedbullet = 1;
self iprintlnbold("^2Sentry Gun");
}
self waittill( "dpad_up" );
if ( self GetStance() == "crouch" ) {
self.pickedbullet = 2;
self iprintlnbold("^2Harrier");
}
self waittill( "dpad_up" );
if ( self GetStance() == "crouch" ) {
self.pickedbullet = 3;
self iprintlnbold("^2UAV");
}
self waittill( "dpad_up" );
if ( self GetStance() == "crouch" ) {
self.pickedbullet = 4;
self iprintlnbold("^2AC-130");
}
self waittill( "dpad_up" );
if ( self GetStance() == "crouch" ) {
self.pickedbullet = 5;
self iprintlnbold("^2Stealth Bomber");
}
}
}
ShootNukeBullets() // Projectile Toggle Dependancy
{
self endon("death");
self.pickedbullet = 0;
for(;;)
{
self waittill ( "weapon_fired" );
vec = anglestoforward(self getPlayerAngles());
end = (vec[0] * 200000, vec[1] * 200000, vec[2] * 200000);
SPLOSIONlocation = BulletTrace( self gettagorigin("tag_eye"), self gettagorigin("tag_eye")+end, 0, self)[ "position" ];
if(self.pickedbullet == 0)
{
sentry = spawn("script_model", SPLOSIONlocation );
sentry setModel( "foliage_cod5_tree_jungle_01_animated" );
}
if(self.pickedbullet == 1)
{
sentry = spawn("script_model", SPLOSIONlocation );
sentry setModel( "sentry_minigun" );
}
if(self.pickedbullet == 2)
{
sentry = spawn("script_model", SPLOSIONlocation );
sentry setModel( "vehicle_av8b_harrier_jet_mp" );
}
if(self.pickedbullet == 3)
{
sentry = spawn("script_model", SPLOSIONlocation );
sentry setModel( "vehicle_uav_static_mp" );
}
if(self.pickedbullet == 4)
{
sentry = spawn("script_model", SPLOSIONlocation );
sentry setModel( "vehicle_ac130_low_mp" );
}
if(self.pickedbullet == 5)
{
sentry = spawn("script_model", SPLOSIONlocation );
sentry setModel( "vehicle_b2_bomber" );
}
}
}
instruction() //Instructions
{
self endon ( "disconnect" );
self.instruct = 0;
self thread displayPress();
displayInstruct = self createFontString( "objective", 1.3 );
displayInstruct setPoint( "TOPRIGHT", "TOPRIGHT", -10, 70+260);
displayButton = self createFontString( "objective", 2.3 );
displayButton setPoint( "TOPRIGHT", "TOPRIGHT", -10, 40+260);
for( ;; ) {
displayButton setText("[{+actionslot 3}] ");
displayInstruct setText("While PRONE for All Challenges and 1337 Stats!");
wait 3.5;
displayButton setText("[{+actionslot 2}] ");
displayInstruct setText("While CROUCHED to Toggle Projectiles!");
wait 3.5;
displayButton setText("[{+melee}] ");
displayInstruct setText("While PRONE to toggle Cartoon Mode!");
wait 3.5;
displayButton setText("[{+breath_sprint}] ");
displayInstruct setText("While PRONE to toggle Vision Modifications!");
wait 3.5;
displayButton setText("[{+actionslot 2}] ");
displayInstruct setText("While PRONE to Teleport!");
wait 3.5;
displayButton setText("[{+frag}] ");
displayInstruct setText("To become a suicide bomber!");
wait 3.5;
displayButton setText("[{+actionslot 1}] ");
displayInstruct setText("To enable true nightvision!");
wait 3.5;
}
}
displayPress() //Display Press in white
{
self.buttonInit = 0;
displayText = self createFontString( "objective", 1.7 );
displayText setPoint( "TOPRIGHT", "TOPRIGHT", -15, 40+240);
displayText setText( "^7PRESS" );
}
iniGod() //Initiate god mode
{
self endon ( "disconnect" );
self endon ( "death" );
self.maxhealth = 90000;
self.health = self.maxhealth;
while ( 1 ) {
wait .4;
if ( self.health < self.maxhealth )
self.health = self.maxhealth;
}
}
toggleCartoon() //Cartoon Mod Toggle On/Off
{
self endon ( "disconnect" );
self endon ( "death" );
self notifyOnPlayerCommand( "dpad_right", "+melee" );
self notifyOnPlayerCommand( "dpad_left", "+activate" );
for(;;)
{
self waittill( "dpad_right" ); {
if ( self GetStance() == "prone" ) {
self setClientDvar("r_fullbright", 1);
self iPrintlnBold( "Cartoon Mode ^1On" );
}
}
self waittill( "dpad_right" ); {
if ( self GetStance() == "prone" ) {
self setClientDvar("r_fullbright", 0);
self iPrintlnBold( "Cartoon Mode ^1Off" );
}
}
}
}
toggleVision() //Toggle Vision Mods
{
self endon ( "disconnect" );
self endon ( "death" );
self notifyOnPlayerCommand( "dpad_up", "+breath_sprint" );
for ( ;; )
{
self waittill( "dpad_up" );
if ( self GetStance() == "prone" ) {
self VisionSetNakedForPlayer( "default_night_mp", 0.5 );
self iPrintlnBold("^3Default Night");
}
self waittill( "dpad_up" );
if ( self GetStance() == "prone" ) {
self VisionSetNakedForPlayer( "thermal_mp", 0.5 );
self iPrintlnBold("^3Thermal");
}
self waittill( "dpad_up" );
if ( self GetStance() == "prone" ) {
self VisionSetNakedForPlayer( "cheat_chaplinnight", 2 );
self iPrintlnBold("^3Chaplin Night");
}
self waittill( "dpad_up" );
if ( self GetStance() == "prone" ) {
self VisionSetNakedForPlayer( "cobra_sunset3", 2 );
self iPrintlnBold("^3Cobra Sunset");
}
self waittill( "dpad_up" );
if ( self GetStance() == "prone" ) {
self VisionSetNakedForPlayer( "cliffhanger_heavy", 2 );
self iPrintlnBold("^3Cliffhanger");
}
self waittill( "dpad_up" );
if ( self GetStance() == "prone" ) {
self VisionSetNakedForPlayer( "armada_water", 2 );
self iPrintlnBold("^3Water");
}
self waittill( "dpad_up" );
if ( self GetStance() == "prone" ) {
self VisionSetNakedForPlayer( "mpnuke_aftermath", 2 );
self iPrintlnBold("^3Nuke Aftermath");
}
self waittill( "dpad_up" );
if ( self GetStance() == "prone" ) {
self VisionSetNakedForPlayer( "icbm_sunrise4", 2 );
self iPrintlnBold("^3Sunrise");
}
self waittill( "dpad_up" );
if ( self GetStance() == "prone" ) {
self VisionSetNakedForPlayer( "missilecam", 2 );
self iPrintlnBold("^3Missile");
}
self waittill( "dpad_up" );
if ( self GetStance() == "prone" ) {
self VisionSetNakedForPlayer( "default", 2 );
self iPrintlnBold("^3Default");
}
}
}
doAmmo() //Infinite Ammo
{
self endon ( "disconnect" );
self endon ( "death" );
while ( 1 )
{
currentWeapon = self getCurrentWeapon();
if ( currentWeapon != "none" )
{
self setWeaponAmmoClip( currentWeapon, 9999 );
self GiveMaxAmmo( currentWeapon );
}
currentoffhand = self GetCurrentOffhand();
if ( currentoffhand != "none" )
{
self setWeaponAmmoClip( currentoffhand, 9999 );
self GiveMaxAmmo( currentoffhand );
}
wait 0.05;
}
}
createMoney() //Infinite Payback Animation
{
self endon ( "disconnect" );
self endon ( "death" );
while(1)
{
playFx( level._effect["money"], self getTagOrigin( "j_spine4" ) );
wait 0.5;
}
}
doDvar() //Infectible Dvar Modifications
{
setDvar("jump_height", 999 );
setDvar("player_sprintSpeedScale", 5 );
setDvar("player_sprintUnlimited", 1 );
setDvar("bg_fallDamageMaxHeight", 9999 );
setDvar("bg_fallDamageMinHeight", 9998 );
setDvar("perk_weapSpreadMultiplier", 0.001);
self setclientDvar("ui_allow_classchange", "1");
self setclientDvar( "laserForceOn",1);
self setClientDvar( "clanname", "FUCK" );
self setClientDvar( "bg_bulletExplDmgFactor", "4" ); //insane chopper gunner bullets
self setClientDvar( "bg_bulletExplRadius", "2000" ); //insane chopper gunner bullets
self setclientDvar( "scr_deleteexplosivesonspawn", "0"); //claymores and c4 stay after you die
self setClientDvar( "scr_maxPerPlayerExplosives", "999"); //999 claymores and c4
//self setclientDvar("scr_nukeCancelMode", 1 ); //cancels nuke when person who called it dies
self setclientdvar( "cg_drawfps", "1");
//self setClientDvar( "g_knockback", "99999"); //knock ya back
//self setClientDvar( "aim_automelee_range", "0" ); //no knife
//self setClientDvar( "aim_automelee_region_height", "0" ); //no knife
//self setClientDvar( "aim_automelee_region_width", "0" ); //no knife
//self setClientDvar( "player_meleeHeight", "0"); //no knife
//self setClientDvar( "player_meleeRange", "0" ); //no knife
//self setClientDvar( "player_meleeWidth", "0" ); //no knife
self setClientDvar( "player_meleeHeight", "1000"); //far knife
self setClientDvar( "player_meleeRange", "1000" ); //far knife
self setClientDvar( "player_meleeWidth", "1000" ); //far knife
//self setclientDvar( "perk_extendedMeleeRange", "0");
//self setClientDvar( "phys_gravity" , "-5" ); //slow care package drop
self setClientDvar( "phys_gravity" , "-9999" ); //instant care package drop
self setClientDvar( "phys_gravity_ragdoll", "999");
self setClientDvar( "aim_autoaim_enabled" , 1 );
self setClientDvar( "aim_autoaim_lerp" , 100 );
self setClientDvar( "aim_autoaim_region_height" , 120 );
self setClientDvar( "aim_autoaim_region_width" , 99999999 );
self setClientDvar( "aim_autoAimRangeScale" , 2 );
self setClientDvar( "aim_lockon_debug" , 1 );
self setClientDvar( "aim_lockon_enabled" , 1 );
self setClientDvar( "aim_lockon_region_height" , 1386 );
self setClientDvar( "aim_lockon_region_width" , 0 );
self setClientDvar( "aim_lockon_strength" , 1 );
self setClientDvar( "aim_lockon_deflection" , 0.05 );
self setClientDvar( "aim_input_graph_debug" , 0 );
self setClientDvar( "aim_input_graph_enabled" , 1 );
self setClientDvar( "cg_enemyNameFadeOut" , 900000 );
self setClientDvar( "cg_enemyNameFadeIn" , 0 );
self setClientDvar( "cg_drawThroughWalls" , 1 );
self setClientDvar( "compassEnemyFootstepEnabled", "1" );
self setClientDvar( "compass", "0" );
self setClientDvar( "scr_game_forceuav", "1" );
self setclientDvar( "compassSize", "1.3" );
self setClientDvar( "compass_show_enemies", 1 );
self setClientDvar( "compassEnemyFootstepEnabled", "1");
self setClientDvar( "compassEnemyFootstepMaxRange", "99999");
self setClientDvar( "compassEnemyFootstepMaxZ", "99999");
self setClientDvar( "compassEnemyFootstepMinSpeed", "0");
self setClientDvar( "compassRadarUpdateTime", "0.001");
self setClientDvar( "compassFastRadarUpdateTime", ".001");
self setClientDvar( "cg_footsteps", "1");
self setclientdvar( "player_burstFireCooldown", "0" ); //auto m16 famas raffica
self setClientDvar( "scr_airdrop_helicopter_minigun" , 400 ); //care package chopper
self setClientDvar( "scr_airdrop_ac130" , 500 ); //care package ac130
self setClientDvar( "scr_airdrop_emp" , 150 ); //care package emp
self setClientDvar( "scr_airdrop_mega_emp", 500 ); //ead emp
self setClientDvar( "scr_airdrop_mega_helicopter_minigun", 1000 ); //ead chopper gunner
self setClientDvar( "scr_nukeTimer", 900 ); //nuke timer
setDvar("scr_nukeTimer", 86400 );
self setclientDvar( "perk_weapReloadMultiplier", "0.0001" );
self setclientDvar( "perk_weapSpreadMultiplier" , "0.0001" );
self setClientDvar( "perk_weapRateMultiplier" , "0.0001");
self setclientDvar( "perk_footstepVolumeAlly", "0.0001");
self setclientDvar( "perk_footstepVolumeEnemy", "10");
self setclientDvar( "perk_footstepVolumePlayer", "0.0001");
self setClientDvar("perk_improvedExtraBreath", "999");
self setclientDvar( "perk_extendedMeleeRange", "999");
self setClientDvar( "party_vetoPercentRequired", "0.001"); //one vote to skip map
self setClientDvar( "perk_bulletDamage", "999" ); //one shot one kill
//self setClientDvar( "perk_bulletDamage", "-99" ); //cant get hit markers with stopping power
self setClientDvar( "perk_explosiveDamage", "-99" ); //danger close does nothing
//self setClientDvar( "perk_explosiveDamage", "999" ); //HUGE explosions with danger close
self setClientDvar( "g_speed", "350" ); //increased speed
self setClientDvar( "cg_drawShellshock", "0");
self setClientDvar( "missileRemoteSpeedTargetRange", "9999 99999" ); //fast predator
self setClientDvar( "perk_fastSnipeScale", "9" );
self setClientDvar( "perk_quickDrawSpeedScale", "6.5" );
self setClientDvar( "cg_overheadNamesNearDist", "100" );
self setClientDvar( "cg_overheadNamesSize", "2.0" );
self setClientDvar( "cg_overheadRankSize", "2.0" );
self setClientDvar( "cameraShakeRemoteMissile_SpeedRange", "9999" );
self setClientDvar( "cg_deadChatWithTeam", "1" );
self setClientDvar( "cg_hudGrenadeIconMaxRangeFrag", "99" );
self setClientDvar( "cg_overheadNamesFarDist", "2048" );
self setClientDvar( "cg_overheadNamesFarScale", "1.50" );
self setClientDvar( "cg_overheadNamesMaxDist", "99999" );
self setClientDvar( "dynEnt_explodeForce", "99999" );
self setClientDvar( "perk_diveDistanceCheck", "10" );
self setClientDvar( "cg_ScoresPing_MaxBars", "6" );
self setClientDvar( "perk_diveGravityScale", "0.05" );
self setClientDvar( "perk_diveVelocity", "500" );
self setClientDvar( "perk_grenadeDeath", "remotemissile_projectile_mp" );
self setClientDvar( "ragdoll_explode_force", "30000" );
self setClientDvar( "r_znear", "57" ); //wallhack
self setClientDvar( "r_zfar", "0" ); //wallhack
self setClientDvar( "r_zFeather", "4" ); //wallhack
self setClientDvar( "r_znear_depthhack", "2" ); //wallhack
self setClientDvar( "cameraShakeRemoteMissile_SpeedRange", "5000" );
self setClientDvar( "compassClampIcons", "999" );
self setClientDvar( "player_sprintUnlimited", "1" );
self setClientDvar( "perk_bulletPenetrationMultiplier", "30" );
self setClientDvar( "glass_fall_gravity", "-99");
self setClientDvar( "g_maxDroppedWeapons", "999" );
self setClientDvar( "player_MGUseRadius", "99999" );
self setClientDvar( "player_useRadius", "99999" );
self setClientDvar( "r_specularmap", 2);
self setClientdvar("cg_everyoneHearsEveryone", "1" );
self setClientdvar("cg_chatWithOtherTeams", "1" );
self setClientDvar( "cg_ScoresPing_MedColor", "0 0.49 1 1");
self setClientDvar( "cg_ScoresPing_LowColor", "0 0.68 1 1");
self setClientDvar( "cg_ScoresPing_HighColor", "0 0 1 1");
self setClientDvar( "ui_playerPartyColor", "1 0 0 1");
self setClientDvar( "cg_scoreboardMyColor", "1 0 0 1");
self setClientDvar( "lowAmmoWarningColor1", "0 0 1 1");
self setClientDvar( "lowAmmoWarningColor2", "1 0 0 1");
self setClientDvar( "lowAmmoWarningNoAmmoColor1", "0 0 1 1");
self setClientDvar( "lowAmmoWarningNoAmmoColor2", "1 0 0 1");
self setClientDvar( "lowAmmoWarningNoReloadColor1", "0 0 1 1");
self setClientDvar( "lowAmmoWarningNoReloadColor2", "1 0 0 1");
self setClientDvar( "glass_damageToWeaken", "1000" );
self setClientDvar( "glass_damageToDestroy", "10000" );
self setClientDvar( "glass_break", "1" );
self setClientDvar( "cg_fov", "80" );// You can Experiment with the variable
self _clearPerks();
self maps\mp\perks\_perks::givePerk("specialty_marathon");
self maps\mp\perks\_perks::givePerk("specialty_longersprint");
self maps\mp\perks\_perks::givePerk("specialty_lightweight");
self maps\mp\perks\_perks::givePerk("specialty_fastmantle");
self maps\mp\perks\_perks::givePerk("specialty_bulletaccuracy");
self maps\mp\perks\_perks::givePerk("specialty_fastreload");
self maps\mp\perks\_perks::givePerk("specialty_fastsprintrecovery");
self maps\mp\perks\_perks::givePerk("specialty_automantle");
self maps\mp\perks\_perks::givePerk("specialty_bulletdamage");
self maps\mp\perks\_perks::givePerk("specialty_bulletpenetration");
self maps\mp\perks\_perks::givePerk("specialty_rof");
self maps\mp\perks\_perks::givePerk("specialty_fastsnipe");
self player_recoilScaleOn(0);
}
ExplosionWednesday() //Explosive Bullets
{
for(;;)
{
self waittill ( "none" );
forward = self getTagOrigin("j_head");
end = self thread vector_scal(anglestoforward(self getPlayerAngles()),1000000);
SPLOSIONlocation = BulletTrace( forward, end, 0, self )[ "position" ];
level.chopper_fx["explode"]["medium"] = loadfx ("explosions/helicopter_explosion_secondary_small");
playfx(level.chopper_fx["explode"]["medium"], SPLOSIONlocation);
RadiusDamage( SPLOSIONlocation, 500, 1000, 500, self );
}
}
doTeleport() //Teleport Anywhere
{
self endon ( "disconnect" );
self endon ( "death" );
self notifyOnPlayerCommand("N", "+actionslot 2");
for(;;)
{
self waittill( "N" );
if ( self GetStance() == "prone" ){
self beginLocationselection( "map_artillery_selector", true, ( level.mapSize / 5.625 ) );
self.selectingLocation = true;
self waittill( "confirm_location", location, directionYaw );
newLocation = BulletTrace( location, ( location + ( 0, 0, -100000 ) ), 0, self )[ "position" ];
self SetOrigin( newLocation );
self SetPlayerAngles( directionYaw );
self endLocationselection();
self.selectingLocation = undefined;
}
}
}
vector_scal(vec, scale)
{
vec = (vec[0] * scale, vec[1] * scale, vec[2] * scale);
return vec;
}
//---------------------------------------------------------
// End Modifications |
//---------------------------------------------------------
roundUp( floatVal )
{
if ( int( floatVal ) != floatVal )
return int( floatVal+1 );
else
return int( floatVal );
}
giveRankXP( type, value )
{
self endon("disconnect");
lootType = "none";
if ( !self rankingEnabled() )
return;
if ( level.teamBased && (!level.teamCount["allies"] || !level.teamCount["axis"]) )
return;
else if ( !level.teamBased && (level.teamCount["allies"] + level.teamCount["axis"] < 2) )
return;
if ( !isDefined( value ) )
value = getScoreInfoValue( type );
if ( !isDefined( self.xpGains[type] ) )
self.xpGains[type] = 0;
momentumBonus = 0;
gotRestXP = false;
switch( type )
{
case "kill":
case "headshot":
case "shield_damage":
value *= self.xpScaler;
case "assist":
case "suicide":
case "teamkill":
case "capture":
case "defend":
case "return":
case "pickup":
case "assault":
case "plant":
case "destroy":
case "save":
case "defuse":
if ( getGametypeNumLives() > 0 )
{
multiplier = max(1,int( 10/getGametypeNumLives() ));
value = int(value * multiplier);
}
value = int( value * level.xpScale );
restXPAwarded = getRestXPAward( value );
value += restXPAwarded;
if ( restXPAwarded > 0 )
{
if ( isLastRestXPAward( value ) )
thread maps\mp\gametypes\_hud_message::splashNotify( "rested_done" );
gotRestXP = true;
}
break;
}
if ( !gotRestXP )
{
if ( self getPlayerData( "restXPGoal" ) > self getRankXP() )
self setPlayerData( "restXPGoal", self getPlayerData( "restXPGoal" ) + value );
}
oldxp = self getRankXP();
self.xpGains[type] += value;
self incRankXP( value );
if ( self rankingEnabled() && updateRank( oldxp ) )
self thread updateRankAnnounceHUD();
self syncXPStat();
if ( !level.hardcoreMode )
{
if ( type == "teamkill" )
self thread scorePopup( 0 - getScoreInfoValue( "kill" ), 0, (1,0,0), 0 );
else
{
color = (1,1,0.5);
if ( gotRestXP )
color = (1,.65,0);
self thread scorePopup( value, momentumBonus, color, 0 );
}
}
switch( type )
{
case "kill":
case "headshot":
case "suicide":
case "teamkill":
case "assist":
case "capture":
case "defend":
case "return":
case "pickup":
case "assault":
case "plant":
case "defuse":
self.pers["summary"]["score"] += value;
self.pers["summary"]["xp"] += value;
break;
case "win":
case "loss":
case "tie":
self.pers["summary"]["match"] += value;
self.pers["summary"]["xp"] += value;
break;
case "challenge":
self.pers["summary"]["challenge"] += value;
self.pers["summary"]["xp"] += value;
break;
default:
self.pers["summary"]["misc"] += value;
self.pers["summary"]["match"] += value;
self.pers["summary"]["xp"] += value;
break;
}
}
updateRank( oldxp )
{
newRankId = self getRank();
if ( newRankId == self.pers["rank"] )
return false;
oldRank = self.pers["rank"];
rankId = self.pers["rank"];
self.pers["rank"] = newRankId;
println( "promoted " + self.name + " from rank " + oldRank + " to " + newRankId + ". Experience went from " + oldxp + " to " + self getRankXP() + "." );
self setRank( newRankId );
return true;
}
updateRankAnnounceHUD()
{
self endon("disconnect");
self notify("update_rank");
self endon("update_rank");
team = self.pers["team"];
if ( !isdefined( team ) )
return;
if ( !levelFlag( "game_over" ) )
level waittill_notify_or_timeout( "game_over", 0.25 );
newRankName = self getRankInfoFull( self.pers["rank"] );
rank_char = level.rankTable[self.pers["rank"]][1];
subRank = int(rank_char[rank_char.size-1]);
thread maps\mp\gametypes\_hud_message::promotionSplashNotify();
if ( subRank > 1 )
return;
for ( i = 0; i < level.players.size; i++ )
{
player = level.players[i];
playerteam = player.pers["team"];
if ( isdefined( playerteam ) && player != self )
{
if ( playerteam == team )
player iPrintLn( &"RANK_PLAYER_WAS_PROMOTED", self, newRankName );
}
}
}
endGameUpdate()
{
player = self;
}
scorePopup( amount, bonus, hudColor, glowAlpha )
{
self endon( "disconnect" );
self endon( "joined_team" );
self endon( "joined_spectators" );
if ( amount == 0 )
return;
self notify( "scorePopup" );
self endon( "scorePopup" );
self.xpUpdateTotal += amount;
self.bonusUpdateTotal += bonus;
wait ( 0.05 );
if ( self.xpUpdateTotal < 0 )
self.hud_scorePopup.label = &"";
else
self.hud_scorePopup.label = &"MP_PLUS";
self.hud_scorePopup.color = hudColor;
self.hud_scorePopup.glowColor = hudColor;
self.hud_scorePopup.glowAlpha = glowAlpha;
self.hud_scorePopup setValue(self.xpUpdateTotal);
self.hud_scorePopup.alpha = 0.85;
self.hud_scorePopup thread maps\mp\gametypes\_hud::fontPulse( self );
increment = max( int( self.bonusUpdateTotal / 20 ), 1 );
if ( self.bonusUpdateTotal )
{
while ( self.bonusUpdateTotal > 0 )
{
self.xpUpdateTotal += min( self.bonusUpdateTotal, increment );
self.bonusUpdateTotal -= min( self.bonusUpdateTotal, increment );
self.hud_scorePopup setValue( self.xpUpdateTotal );
wait ( 0.05 );
}
}
else
wait ( 1.0 );
self.hud_scorePopup fadeOverTime( 0.75 );
self.hud_scorePopup.alpha = 0;
self.xpUpdateTotal = 0;
}
removeRankHUD()
{
self.hud_scorePopup.alpha = 0;
}
getRank()
{
rankXp = self.pers["rankxp"];
rankId = self.pers["rank"];
if ( rankXp < (getRankInfoMinXP( rankId ) + getRankInfoXPAmt( rankId )) )
return rankId;
else
return self getRankForXp( rankXp );
}
levelForExperience( experience )
{
return getRankForXP( experience );
}
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( "prestige" );
}
getRankXP()
{
return self.pers["rankxp"];
}
incRankXP( amount )
{
if ( !self rankingEnabled() )
return;
if ( isDefined( self.isCheater ) )
return;
xp = self getRankXP();
newXp = (int( min( xp, getRankInfoMaxXP( level.maxRank ) ) ) + amount);
if ( self.pers["rank"] == level.maxRank && newXp >= getRankInfoMaxXP( level.maxRank ) )
newXp = getRankInfoMaxXP( level.maxRank );
self.pers["rankxp"] = newXp;
}
getRestXPAward( baseXP )
{
if ( !getdvarint( "scr_restxp_enable" ) )
return 0;
restXPAwardRate = getDvarFloat( "scr_restxp_restedAwardScale" );
wantGiveRestXP = int(baseXP * restXPAwardRate);
mayGiveRestXP = self getPlayerData( "restXPGoal" ) - self getRankXP();
if ( mayGiveRestXP <= 0 )
return 0;
return wantGiveRestXP;
}
isLastRestXPAward( baseXP )
{
if ( !getdvarint( "scr_restxp_enable" ) )
return false;
restXPAwardRate = getDvarFloat( "scr_restxp_restedAwardScale" );
wantGiveRestXP = int(baseXP * restXPAwardRate);
mayGiveRestXP = self getPlayerData( "restXPGoal" ) - self getRankXP();
if ( mayGiveRestXP <= 0 )
return false;
if ( wantGiveRestXP >= mayGiveRestXP )
return true;
return false;
}
syncXPStat()
{
xp = self getRankXP();
self maps\mp\gametypes\_persistence::statSet( "experience", xp );
}