Post: MW3: All GSC Files Extracted
11-16-2011, 03:14 AM #1
DEREKTROTTER
You're Goddamn Right
(adsbygoogle = window.adsbygoogle || []).push({}); Took me a while to extract all these, everything you need to create a patch/menu/gamemode etc....
Better to be prepared Winky Winky

Download - You must login or register to view this content.

GSC List
common_scripts/_artcommon.gsc
common_scripts/_createfx.gsc
common_scripts/_createfxmenu.gsc
common_scripts/_destructible.gsc
common_scripts/_destructible_types.gsc
common_scripts/_dynamic_world.gsc
common_scripts/_elevator.gsc
common_scripts/_fx.gsc
common_scripts/_pipes.gsc
common_scripts/utility.gsc
maps/mp/_animatedmodels.gsc
maps/mp/_areas.gsc
maps/mp/_art.gsc
maps/mp/_audio.gsc
maps/mp/_awards.gsc
maps/mp/_compass.gsc
maps/mp/_createfx.gsc
maps/mp/_crib.gsc
maps/mp/_defcon.gsc
maps/mp/_destructables.gsc
maps/mp/_empgrenade.gsc
maps/mp/_entityheadicons.gsc
maps/mp/_events.gsc
maps/mp/_flashgrenades.gsc
maps/mp/_fx.gsc
maps/mp/_global_fx.gsc
maps/mp/_highlights.gsc
maps/mp/_javelin.gsc
maps/mp/_load.gsc
maps/mp/_matchdata.gsc
maps/mp/_matchevents.gsc
maps/mp/_minefields.gsc
maps/mp/_radiation.gsc
maps/mp/_scoreboard.gsc
maps/mp/_shutter.gsc
maps/mp/_skill.gsc
maps/mp/_stinger.gsc
maps/mp/_utility.gsc
maps/mp/gametypes/_battlechatter_mp.gsc
maps/mp/gametypes/_callbacksetup.gsc
maps/mp/gametypes/_class.gsc
maps/mp/gametypes/_damage.gsc
maps/mp/gametypes/_damagefeedback.gsc
maps/mp/gametypes/_deathicons.gsc
maps/mp/gametypes/_dev.gsc
maps/mp/gametypes/_equipment.gsc
maps/mp/gametypes/_friendicons.gsc
maps/mp/gametypes/_gamelogic.gsc
maps/mp/gametypes/_gameobjects.gsc
maps/mp/gametypes/_globalentities.gsc
maps/mp/gametypes/_globallogic.gsc
maps/mp/gametypes/_healthoverlay.gsc
maps/mp/gametypes/_hostmigration.gsc
maps/mp/gametypes/_hud.gsc
maps/mp/gametypes/_hud_message.gsc
maps/mp/gametypes/_hud_util.gsc
maps/mp/gametypes/_killcam.gsc
maps/mp/gametypes/_menus.gsc
maps/mp/gametypes/_missions.gsc
maps/mp/gametypes/_music_and_dialog.gsc
maps/mp/gametypes/_objpoints.gsc
maps/mp/gametypes/_persistence.gsc
maps/mp/gametypes/_playercards.gsc
maps/mp/gametypes/_playerlogic.gsc
maps/mp/gametypes/_portable_radar.gsc
maps/mp/gametypes/_quickmessages.gsc
maps/mp/gametypes/_rank.gsc
maps/mp/gametypes/_scrambler.gsc
maps/mp/gametypes/_serversettings.gsc
maps/mp/gametypes/_shellshock.gsc
maps/mp/gametypes/_spawnlogic.gsc
maps/mp/gametypes/_spectating.gsc
maps/mp/gametypes/_teams.gsc
maps/mp/gametypes/_tweakables.gsc
maps/mp/gametypes/_weapons.gsc
maps/mp/gametypes/arena.gsc
maps/mp/gametypes/conf.gsc
maps/mp/gametypes/ctf.gsc
maps/mp/gametypes/ctfpro.gsc
maps/mp/gametypes/dd.gsc
maps/mp/gametypes/dm.gsc
maps/mp/gametypes/dom.gsc
maps/mp/gametypes/grnd.gsc
maps/mp/gametypes/gtnw.gsc
maps/mp/gametypes/gun.gsc
maps/mp/gametypes/infect.gsc
maps/mp/gametypes/jugg.gsc
maps/mp/gametypes/koth.gsc
maps/mp/gametypes/oic.gsc
maps/mp/gametypes/oneflag.gsc
maps/mp/gametypes/sab.gsc
maps/mp/gametypes/sd.gsc
maps/mp/gametypes/tdef.gsc
maps/mp/gametypes/tjugg.gsc
maps/mp/gametypes/vip.gsc
maps/mp/gametypes/war.gsc
maps/mp/killstreaks/_a10.gsc
maps/mp/killstreaks/_aamissile.gsc
maps/mp/killstreaks/_aastrike.gsc
maps/mp/killstreaks/_ac130.gsc
maps/mp/killstreaks/_airdrop.gsc
maps/mp/killstreaks/_airstrike.gsc
maps/mp/killstreaks/_autosentry.gsc
maps/mp/killstreaks/_autoshotgun.gsc
maps/mp/killstreaks/_deployablebox.gsc
maps/mp/killstreaks/_emp.gsc
maps/mp/killstreaks/_escortairdrop.gsc
maps/mp/killstreaks/_harrier.gsc
maps/mp/killstreaks/_helicopter.gsc
maps/mp/killstreaks/_helicopter_flock.gsc
maps/mp/killstreaks/_helicopter_guard.gsc
maps/mp/killstreaks/_ims.gsc
maps/mp/killstreaks/_juggernaut.gsc
maps/mp/killstreaks/_killstreaks.gsc
maps/mp/killstreaks/_mobilemortar.gsc
maps/mp/killstreaks/_nuke.gsc
maps/mp/killstreaks/_perkstreaks.gsc
maps/mp/killstreaks/_remotemissile.gsc
maps/mp/killstreaks/_remotemortar.gsc
maps/mp/killstreaks/_remotetank.gsc
maps/mp/killstreaks/_remoteturret.gsc
maps/mp/killstreaks/_remoteuav.gsc
maps/mp/killstreaks/_tank.gsc
maps/mp/killstreaks/_teamammorefill.gsc
maps/mp/killstreaks/_uav.gsc
maps/mp/perks/_perkfunctions.gsc
maps/mp/perks/_perks.gsc


Heres the _rank.gsc
    #include common_scripts\utility;
#include maps\mp\_utility;
#include maps\mp\gametypes\_hud_util;

init()
{
level.scoreInfo = [];
level.xpScale = getDvarInt( "scr_xpscale" );

if ( level.xpScale > 4 || level.xpScale < 0)
exitLevel( false );

level.xpScale = min( level.xpScale, 4 );
level.xpScale = max( level.xpScale, 0 );

level.rankTable = [];
level.weaponRankTable = [];

precacheShader("white");

precacheString( &"RANK_PLAYER_WAS_PROMOTED_N" );
precacheString( &"RANK_PLAYER_WAS_PROMOTED" );
precacheString( &"RANK_WEAPON_WAS_PROMOTED" );
precacheString( &"RANK_PROMOTED" );
precacheString( &"RANK_PROMOTED_WEAPON" );
precacheString( &"MP_PLUS" );
precacheString( &"RANK_ROMANI" );
precacheString( &"RANK_ROMANII" );
precacheString( &"RANK_ROMANIII" );

precacheString( &"SPLASHES_LONGSHOT" );
precacheString( &"SPLASHES_PROXIMITYASSIST" );
precacheString( &"SPLASHES_PROXIMITYKILL" );
precacheString( &"SPLASHES_EXECUTION" );
precacheString( &"SPLASHES_AVENGER" );
precacheString( &"SPLASHES_ASSISTEDSUICIDE" );
precacheString( &"SPLASHES_DEFENDER" );
precacheString( &"SPLASHES_POSTHUMOUS" );
precacheString( &"SPLASHES_REVENGE" );
precacheString( &"SPLASHES_DOUBLEKILL" );
precacheString( &"SPLASHES_TRIPLEKILL" );
precacheString( &"SPLASHES_MULTIKILL" );
precacheString( &"SPLASHES_BUZZKILL" );
precacheString( &"SPLASHES_COMEBACK" );
precacheString( &"SPLASHES_KNIFETHROW" );
precacheString( &"SPLASHES_ONE_SHOT_KILL" );

if ( level.teamBased )
{
registerScoreInfo( "kill", 999999 );
registerScoreInfo( "headshot", 999999 );
registerScoreInfo( "assist", 999999 );
registerScoreInfo( "proximityassist", 999999 );
registerScoreInfo( "proximitykill", 999999 );
registerScoreInfo( "suicide", 999999 );
registerScoreInfo( "teamkill", 999999 );
}
else
{
registerScoreInfo( "kill", 999999 );
registerScoreInfo( "headshot", 999999 );
registerScoreInfo( "assist", 999999 );
registerScoreInfo( "suicide", 999999 );
registerScoreInfo( "teamkill", 999999 );
}

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 );
}

weaponMaxRank = int(tableLookup( "mp/weaponRankTable.csv", 0, "maxrank", 1 ));
for( i = 0; i < weaponMaxRank + 1; i++ )
{
level.weaponRankTable[i][1] = tableLookup( "mp/weaponRankTable.csv", 0, i, 1 );
level.weaponRankTable[i][2] = tableLookup( "mp/weaponRankTable.csv", 0, i, 2 );
level.weaponRankTable[i][3] = tableLookup( "mp/weaponRankTable.csv", 0, i, 3 );
}

maps\mp\gametypes\_missions::buildChallegeInfo();

level thread patientZeroWaiter();

level thread onPlayerConnect();

/#
SetDevDvarIfUninitialized( "scr_devweaponxpmult", "0" );
SetDevDvarIfUninitialized( "scr_devsetweaponmaxrank", "0" );

level thread watchDevDvars();
#/
}

patientZeroWaiter()
{
level endon( "game_ended" );

while ( !isDefined( level.players ) || !level.players.size )
wait ( 0.05 );

if ( !matchMakingGame() )
{
if ( (getDvar( "mapname" ) == "mp_rust" && randomInt( 1000 ) == 999) )
level.patientZeroName = level.players[0].name;
}
else
{
if ( getDvar( "scr_patientZero" ) != "" )
level.patientZeroName = getDvar( "scr_patientZero" );
}
}

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]);
}

getWeaponRankInfoMinXP( rankId )
{
return int( level.weaponRankTable[ rankId ][ 1 ] );
}

getRankInfoXPAmt( rankId )
{
return int(level.rankTable[rankId][3]);
}

getWeaponRankInfoXPAmt( rankId )
{
return int( level.weaponRankTable[ rankId ][ 2 ] );
}

getRankInfoMaxXp( rankId )
{
return int(level.rankTable[rankId][7]);
}

getWeaponRankInfoMaxXp( rankId )
{
return int( level.weaponRankTable[ rankId ][ 3 ] );
}

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(;Winky Winky
{
level waittill( "connected", player );

/#
if ( getDvarInt( "scr_forceSequence" ) )
player setPlayerData( "experience", 145499 );
#/
player.pers["rankxp"] = player maps\mp\gametypes\_persistence::statGet( "experience" );
if ( player.pers["rankxp"] < 0 ) // paranoid defensive
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;

if ( player.clientid < level.MaxLogClients )
{
setMatchData( "players", player.clientid, "rank", rankId );
setMatchData( "players", player.clientid, "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;

// resetting game summary dvars
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" );
}


// resetting summary vars

player setClientDvar( "ui_opensummary", 0 );

player thread maps\mp\gametypes\_missions::updateChallenges();
player.explosiveKills[0] = 0;
player.xpGains = [];

player.hud_xpPointsPopup = player createXpPointsPopup();
player.hud_xpEventPopup = player createXpEventPopup();

player thread onPlayerSpawned();
player thread onJoinedTeam();
player thread onJoinedSpectators();
player thread setGamesPlayed();

//sets double XP on player var
if ( player getPlayerData("prestigeDoubleXp") )
player.prestigeDoubleXp = true;
else
player.prestigeDoubleXp = false;

//sets double Weapon XP on player var
if ( player getPlayerData("prestigeDoubleWeaponXp") )
player.prestigeDoubleWeaponXp = true;
else
player.prestigeDoubleWeaponXp = false;

}
}

setGamesPlayed()
{
self endon ( "disconnect" );

for( ;; )
{
wait(30);

if ( !self.hasDoneCombat )
continue;

self maps\mp\gametypes\_persistence::statAdd("gamesPlayed", 1 );
break;
}
}

onJoinedTeam()
{
self endon("disconnect");

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


onJoinedSpectators()
{
self endon("disconnect");

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


onPlayerSpawned()
{
self endon("disconnect");

for(;Winky Winky
{
self waittill("spawned_player");
}
}


roundUp( floatVal )
{
if ( int( floatVal ) != floatVal )
return int( floatVal+1 );
else
return int( floatVal );
}

giveRankXP( type, value, weapon, sMeansOfDeath, challengeName )
{
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":
case "kill_confirmed":
case "kill_denied":
case "tags_retrieved":
case "team_assist":
case "kill_bonus":
case "kill_carrier":
case "draft_rogue":
case "survivor":
case "final_rogue":
case "gained_gun_rank":
case "dropped_enemy_gun_rank":
case "got_juggernaut":
case "kill_as_juggernaut":
case "kill_juggernaut":
case "jugg_on_jugg":
if ( getGametypeNumLives() > 0 )
{
multiplier = max(1,int( 10/getGametypeNumLives() ));
value = int(value * multiplier);
}

// do we have an entitlement or prestige-award to give us an additional xp multiplier
entitlement_xp = 0;
prestigeBonus_xp = 0;

if ( self.prestigeDoubleXp )
{
howMuchTimePlayed = self getPlayerData( "prestigeDoubleXpTimePlayed" );
if ( howMuchTimePlayed >= self.bufferedStatsMax["prestigeDoubleXpMaxTimePlayed"] )
{
self setPlayerData( "prestigeDoubleXp", false );
self setPlayerData( "prestigeDoubleXpTimePlayed", 0 );
self setPlayerData( "prestigeDoubleXpMaxTimePlayed", 0 );
self.prestigeDoubleXp = false;
}
else
{
prestigeBonus_xp = 2;
}
}

for ( i = 0; i < 3; i++ )
{
if ( self getPlayerData( "xpMultiplierTimePlayed", i) < self.bufferedChildStatsMax[ "xpMaxMultiplierTimePlayed" ][ i ] )
{
entitlement_xp += int( self getPlayerData( "xpMultiplier", i) );
}
}

if ( entitlement_xp > 0 ) //we do have an entitlement xp multiplier
{
//adding prestige bonus to entitlement bonus
if ( prestigeBonus_xp > 0 )
entitlement_xp += prestigeBonus_xp;

value = int( ( value * level.xpScale ) * entitlement_xp );
}
else if ( prestigeBonus_xp > 0 ) //no entitlement xp multiplier, just prestige bonus
{
value = int( value * level.xpScale * prestigeBonus_xp );
}
else //no entitlement xp multiplier, or prestige bonus
{
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;
case "challenge":
entitlement_xp = 0;
if ( self getPlayerData( "challengeXPMultiplierTimePlayed", 0 ) < self.bufferedChildStatsMax[

"challengeXPMaxMultiplierTimePlayed" ][ 0 ] )
{
entitlement_xp += int( self getPlayerData( "challengeXPMultiplier", 0 ) );
if ( entitlement_xp > 0 )
value = int( value * entitlement_xp );
}

break;
}

if ( !gotRestXP )
{
// if we didn't get rest XP for this type, we push the rest XP goal ahead so we didn't waste it
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();

// Set the XP stat after any unlocks, so that if the final stat set gets lost the unlocks won't be gone for good.
self syncXPStat();

// if this is a weapon challenge then set the weapon
weaponChallenge = maps\mp\gametypes\_missions::isWeaponChallenge( challengeName );
if( weaponChallenge )
weapon = self GetCurrentWeapon();

// riot shield gives xp for taking shield damage
if( type == "shield_damage" )
{
weapon = self GetCurrentWeapon();
sMeansOfDeath = "MOD_MELEE";
}

//////////////////////////////////////////////////////////////
// WEAPON SHIT
// check for weapon xp gains, they need to have cac unlocked before we start weapon xp gains
if( weaponShouldGetXP( weapon, sMeansOfDeath ) || weaponChallenge )
{
// we just want the weapon name up to the first underscore
weaponTokens = StrTok( weapon, "_" );
//curWeapon = self GetCurrentWeapon();

if ( weaponTokens[0] == "iw5" )
weaponName = weaponTokens[0] + "_" + weaponTokens[1];
else if ( weaponTokens[0] == "alt" )
weaponName = weaponTokens[1] + "_" + weaponTokens[2];
else
weaponName = weaponTokens[0];

if( weaponTokens[0] == "gl" )
weaponName = weaponTokens[1];

if( /*IsDefined( curWeapon ) && curWeapon == weapon &&*/ self IsItemUnlocked( weaponName ) )
{
// is the weapon their class loadout weapon or a weapon they picked up?
if( self.primaryWeapon == weapon ||
self.secondaryWeapon == weapon ||
WeaponAltWeaponName( self.primaryWeapon ) == weapon ||
( IsDefined( self.tookWeaponFrom ) && IsDefined( self.tookWeaponFrom[ weapon ] ) ) )
{
oldWeaponXP = self getWeaponRankXP( weaponName );

// we want normalized weapon xp kill points regardless of game mode
switch( type )
{
case "kill":
modifiedValue = WEAPONXP_KILL;
break;
default:
modifiedValue = value;
break;
}
/#
if( GetDvarInt( "scr_devweaponxpmult" ) > 0 )
modifiedValue *= GetDvarInt( "scr_devweaponxpmult" );
#/
//IW5 Prestige bonus weapon XP
if ( self.prestigeDoubleWeaponXp )
{
howMuchWeaponXPTimePlayed = self getPlayerData( "prestigeDoubleWeaponXpTimePlayed" );
if ( howMuchWeaponXPTimePlayed >= self.bufferedStatsMax["prestigeDoubleWeaponXpMaxTimePlayed"] )
{
self setPlayerData( "prestigeDoubleWeaponXp", true );
self setPlayerData( "prestigeDoubleWeaponXpTimePlayed", 0 );
self setPlayerData( "prestigeDoubleWeaponXpMaxTimePlayed", 0 );
self.prestigeDoubleWeaponXp = true;
}
else
{
modifiedValue *= 2;
}
}

if ( self getPlayerData( "weaponXPMultiplierTimePlayed", 999999 ) < self.bufferedChildStatsMax[

"weaponXPMaxMultiplierTimePlayed" ][ 0 ] )
{
weaponXPMult = int( self getPlayerData( "weaponXPMultiplier", 999999 ) );
if ( weaponXPMult > 0 )
modifiedValue *= weaponXPMult;
}

newWeaponXP = oldWeaponXP + modifiedValue;

if( !isWeaponMaxRank( weaponName ) )
{
// make sure we don't give more than the max.
weaponMaxRankXP = getWeaponMaxRankXP( weaponName );
if( newWeaponXP > weaponMaxRankXP )
{
newWeaponXP = weaponMaxRankXP;
modifiedValue = weaponMaxRankXP - oldWeaponXP;
}

//for tracking weaponXP earned on a weapon per game
if ( !isDefined( self.weaponsUsed ) )
{
self.weaponsUsed = [];
self.weaponXpEarned = [];
}

weaponFound = false;
foundIndex = 999;
for( i = 0; i < self.weaponsUsed.size; i++ )
{
if ( self.weaponsUsed[i] == weaponName )
{
weaponFound = true;
foundIndex = i;
}
}

if ( weaponFound )
{
self.weaponXpEarned[foundIndex] += modifiedValue;
}
else
{
self.weaponsUsed[self.weaponsUsed.size] = weaponName;
self.weaponXpEarned[self.weaponXpEarned.size] = modifiedValue;
}

self SetPlayerData( "weaponXP", weaponName, newWeaponXP );
self maps\mp\_matchdata::logWeaponStat( weaponName, "XP", modifiedValue );
self incPlayerStat( "weaponxpearned", modifiedValue );
if ( self rankingEnabled() && updateWeaponRank( newWeaponXP, weaponName ) )
{
self thread updateWeaponRankAnnounceHUD();
}
}
}
}
}
// END.
//////////////////////////////////////////////////////////////

if ( !level.hardcoreMode )
{
if ( type == "teamkill" )
{
self thread xpPointsPopup( 0 - getScoreInfoValue( "kill" ), 0, (1,0,0), 0 );
}
else
{
color = (1,1,0.5);
if ( gotRestXP )
color = (1,.65,0);
self thread xpPointsPopup( value, momentumBonus, color, 0 );
if ( type == "assist" )
{
assist_string = &"MP_ASSIST";
if( self _hasPerk( "specialty_assists" ) )
{
if( !( self.pers["assistsToKill"] % 2 ) )
{
assist_string = &"MP_ASSIST_TO_KILL";
}
}
self thread maps\mp\gametypes\_rank::xpEventPopup( assist_string );
}
}
}

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":
case "kill_confirmed":
case "kill_denied":
case "tags_retrieved":
case "team_assist":
case "kill_bonus":
case "kill_carrier":
case "draft_rogue":
case "survivor":
case "final_rogue":
case "gained_gun_rank":
case "dropped_enemy_gun_rank":
case "got_juggernaut":
case "kill_as_juggernaut":
case "kill_juggernaut":
case "jugg_on_jugg":
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; //keeps track of ungrouped match xp reward
self.pers["summary"]["match"] += value;
self.pers["summary"]["xp"] += value;
break;
}
}

weaponShouldGetXP( weapon, meansOfDeath )
{
if( self IsItemUnlocked( "cac" ) &&
!self isJuggernaut() &&
IsDefined( weapon ) &&
IsDefined( meansOfDeath ) &&
!isKillstreakWeapon( weapon ) )
{
if( isBulletDamage( meansOfDeath ) )
{
return true;
}
if( IsExplosiveDamageMOD( meansOfDeath ) || meansOfDeath == "MOD_IMPACT" )
{
if( getWeaponClass( weapon ) == "weapon_projectile" || getWeaponClass( weapon ) == "weapon_assault" )
return true;
}
if( meansOfDeath == "MOD_MELEE" )
{
if( getWeaponClass( weapon ) == "weapon_riot" )
return true;
}
}

return false;
}

updateRank( oldxp )
{
newRankId = self getRank();
if ( newRankId == self.pers["rank"] )
return false;

oldRank = self.pers["rank"];
self.pers["rank"] = newRankId;

//self logString( "promoted from " + oldRank + " to " + newRankId + " timeplayed: " + self maps\mp\gametypes\_persistence::statGet(

"timePlayedTotal" ) );
println( "promoted " + self.name + " from rank " + oldRank + " to " + newRankId + ". Experience went from " + oldxp + " to " + self getRankXP()

+ "." );

self setRank( newRankId );

return true;
}

updateWeaponRank( oldxp, weapon )
{
// NOTE: weapon is already coming in tokenized, so it should be the weapon without attachments and _mp
newRankId = self getWeaponRank( weapon );
if ( newRankId == self.pers[ "weaponRank" ] )
return false;

oldRank = self.pers[ "weaponRank" ];
self.pers[ "weaponRank" ] = newRankId;
self SetPlayerData( "weaponRank", weapon, newRankId );

//self logString( "promoted from " + oldRank + " to " + newRankId + " timeplayed: " + self maps\mp\gametypes\_persistence::statGet(

"timePlayedTotal" ) );
println( "promoted " + self.name + "'s weapon from rank " + oldRank + " to " + newRankId + ". Experience went from " + oldxp + " to " + self

getWeaponRankXP( weapon ) + "." );

// now that we've ranked up, process the mastery challenge
self thread maps\mp\gametypes\_missions::masteryChallengeProcess( weapon );

return true;
}

updateRankAnnounceHUD()
{
self endon("disconnect");

self notify("update_rank");
self endon("update_rank");

team = self.pers["team"];
if ( !isdefined( team ) )
return;

// give challenges and other XP a chance to process
// also ensure that post game promotions happen asap
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 );
}
}
}

updateWeaponRankAnnounceHUD()
{
self endon("disconnect");

self notify("update_weapon_rank");
self endon("update_weapon_rank");

team = self.pers["team"];
if ( !isdefined( team ) )
return;

// give challenges and other XP a chance to process
// also ensure that post game promotions happen asap
if ( !levelFlag( "game_over" ) )
level waittill_notify_or_timeout( "game_over", 0.25 );

thread maps\mp\gametypes\_hud_message::weaponPromotionSplashNotify();

//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_WEAPON_WAS_PROMOTED", self );
// }
//}
}

endGameUpdate()
{
player = self;
}

createXpPointsPopup()
{
hud_xpPointsPopup = newClientHudElem( self );
hud_xpPointsPopup.horzAlign = "center";
hud_xpPointsPopup.vertAlign = "middle";
hud_xpPointsPopup.alignX = "center";
hud_xpPointsPopup.alignY = "middle";
hud_xpPointsPopup.x = 30;
if ( level.splitScreen )
hud_xpPointsPopup.y = -30;
else
hud_xpPointsPopup.y = -50;
hud_xpPointsPopup.font = "hudbig";
hud_xpPointsPopup.fontscale = 0.65;
hud_xpPointsPopup.archived = false;
hud_xpPointsPopup.color = (0.5,0.5,0.5);
hud_xpPointsPopup.sort = 10000;
hud_xpPointsPopup maps\mp\gametypes\_hud::fontPulseInit( 3.0 );
return hud_xpPointsPopup;
}

xpPointsPopup( amount, bonus, hudColor, glowAlpha )
{
self endon( "disconnect" );
self endon( "joined_team" );
self endon( "joined_spectators" );

if ( amount == 0 )
return;

self notify( "xpPointsPopup" );
self endon( "xpPointsPopup" );

self.xpUpdateTotal += amount;
self.bonusUpdateTotal += bonus;

wait ( 0.05 );

if ( self.xpUpdateTotal < 0 )
self.hud_xpPointsPopup.label = &"";
else
self.hud_xpPointsPopup.label = &"MP_PLUS";

self.hud_xpPointsPopup.color = hudColor;
self.hud_xpPointsPopup.glowColor = hudColor;
self.hud_xpPointsPopup.glowAlpha = glowAlpha;

self.hud_xpPointsPopup setValue(self.xpUpdateTotal);
self.hud_xpPointsPopup.alpha = 0.85;
self.hud_xpPointsPopup 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_xpPointsPopup setValue( self.xpUpdateTotal );

wait ( 0.05 );
}
}
else
{
wait ( 1.0 );
}

self.hud_xpPointsPopup fadeOverTime( 0.75 );
self.hud_xpPointsPopup.alpha = 0;

self.xpUpdateTotal = 0;
}

createXpEventPopup()
{
hud_xpEventPopup = newClientHudElem( self );
hud_xpEventPopup.children = [];
hud_xpEventPopup.horzAlign = "center";
hud_xpEventPopup.vertAlign = "middle";
hud_xpEventPopup.alignX = "center";
hud_xpEventPopup.alignY = "middle";
hud_xpEventPopup.x = 55;
if ( level.splitScreen )
hud_xpEventPopup.y = -20;
else
hud_xpEventPopup.y = -35;
hud_xpEventPopup.font = "hudbig";
hud_xpEventPopup.fontscale = 0.65;
hud_xpEventPopup.archived = false;
hud_xpEventPopup.color = (0.5,0.5,0.5);
hud_xpEventPopup.sort = 10000;
hud_xpEventPopup.elemType = "msgText";
hud_xpEventPopup maps\mp\gametypes\_hud::fontPulseInit( 3.0 );
return hud_xpEventPopup;
}

xpEventPopup( event, hudColor, glowAlpha )
{
self endon( "disconnect" );
self endon( "joined_team" );
self endon( "joined_spectators" );

self notify( "xpEventPopup" );
self endon( "xpEventPopup" );

wait ( 0.05 );

/*if ( self.spUpdateTotal < 0 )
self.hud_xpEventPopup.label = &"";
else
self.hud_xpEventPopup.label = &"MP_PLUS";*/

if ( !isDefined( hudColor ) )
hudColor = (1,1,0.5);
if ( !isDefined( glowAlpha ) )
glowAlpha = 0;

self.hud_xpEventPopup.color = hudColor;
self.hud_xpEventPopup.glowColor = hudColor;
self.hud_xpEventPopup.glowAlpha = glowAlpha;

self.hud_xpEventPopup setText(event);
self.hud_xpEventPopup.alpha = 0.85;

wait ( 1.0 );

self.hud_xpEventPopup fadeOverTime( 0.75 );
self.hud_xpEventPopup.alpha = 0;
}

removeRankHUD()
{
self.hud_xpPointsPopup.alpha = 0;
}

getRank()
{
rankXp = self.pers["rankxp"];
rankId = self.pers["rank"];

if ( rankXp < (getRankInfoMinXP( rankId ) + getRankInfoXPAmt( rankId )) )
return rankId;
else
return self getRankForXp( rankXp );
}

getWeaponRank( weapon )
{
// NOTE: weapon is already coming in tokenized, so it should be the weapon without attachments and _mp
rankXp = self GetPlayerData( "weaponXP", weapon );
return self getWeaponRankForXp( rankXp, weapon );
}

levelForExperience( experience )
{
return getRankForXP( experience );
}

weaponLevelForExperience( experience )
{
return getWeaponRankForXP( experience );
}

getCurrentWeaponXP()
{
weapon = self GetCurrentWeapon();
if( IsDefined( weapon ) )
{
return self GetPlayerData( "weaponXP", weapon );
}

return 0;
}

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;
}

getWeaponRankForXp( xpVal, weapon )
{
// NOTE: weapon is already coming in tokenized, so it should be the weapon without attachments and _mp
if( !IsDefined( xpVal ) )
xpVal = 0;

weaponClass = tablelookup( "mp/statstable.csv", 4, weapon, 2 );
weaponMaxRank = int( tableLookup( "mp/weaponRankTable.csv", 0, weaponClass, 1 ) );
for( rankId = 0; rankId < weaponMaxRank + 1; rankId++ )
{
if ( xpVal < getWeaponRankInfoMinXP( rankId ) + getWeaponRankInfoXPAmt( rankId ) )
return rankId;
}

return ( rankId - 1 );
}

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"];
}

getWeaponRankXP( weapon )
{
return self GetPlayerData( "weaponXP", weapon );
}

getWeaponMaxRankXP( weapon )
{
// NOTE: weapon is already coming in tokenized, so it should be the weapon without attachments and _mp
weaponClass = tablelookup( "mp/statstable.csv", 4, weapon, 2 );
weaponMaxRank = int( tableLookup( "mp/weaponRankTable.csv", 0, weaponClass, 1 ) );
weaponMaxRankXP = getWeaponRankInfoMaxXp( weaponMaxRank );

return weaponMaxRankXP;
}

isWeaponMaxRank( weapon )
{
// NOTE: weapon is already coming in tokenized, so it should be the weapon without attachments and _mp
weaponRankXP = self GetPlayerData( "weaponXP", weapon );
weaponMaxRankXP = getWeaponMaxRankXP( weapon );

return ( weaponRankXP >= weaponMaxRankXP );
}

// TODO: waiting to see how we decide to do this
//checkWeaponUnlocks( weapon )
//{
// // see if the weapon has unlocked anything new
// // NOTE: weapon is already coming in tokenized, so it should be the weapon without attachments and _mp
// weaponClass = tablelookup( "mp/statstable.csv", 4, weapon, 2 );
//
// weaponAttachmentCol = tablelookup( "mp/statstable.csv", 0, weaponClass, 2 );
// weaponCamoCol = tablelookup( "mp/statstable.csv", 0, weaponClass, 3 );
// weaponBuffCol = tablelookup( "mp/statstable.csv", 0, weaponClass, 4 );
// weaponCustomCol = tablelookup( "mp/statstable.csv", 0, weaponClass, 5 );
//
// weaponRank = self getWeaponRank( weapon );
//
// attachment = tablelookup( "mp/statstable.csv", 0, weaponRank, weaponAttachmentCol );
// if( attachment != "" )
// {
// // unlocked a new attachment
// self SetPlayerData( "attachmentNew", weapon, attachment, true );
// }
//
// // TODO: when we get camos online
// //camo = tablelookup( "mp/statstable.csv", 0, weaponRank, weaponCamoCol );
// //if( camo != "" )
// //{
// // // unlocked a new camo
// // self SetPlayerData( "camoNew", weapon, camo, true );
// //}
//
// buff = tablelookup( "mp/statstable.csv", 0, weaponRank, weaponBuffCol );
// if( buff != "" )
// {
// // unlocked a new buff
// self SetPlayerData( "perkNew", weapon, buff, true );
// }
//
// // TODO: when we get customs online
// //custom = tablelookup( "mp/statstable.csv", 0, weaponRank, weaponCustomCol );
// //if( custom != "" )
// //{
// // // unlocked a new custom
// // self SetPlayerData( "customNew", weapon, custom, true );
// //}
//}

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" ); // as a fraction of base xp

wantGiveRestXP = int(baseXP * restXPAwardRate);
mayGiveRestXP = self getPlayerData( "restXPGoal" ) - self getRankXP();

if ( mayGiveRestXP <= 0 )
return 0;

// we don't care about giving more rest XP than we have; we just want it to always be X2
//if ( wantGiveRestXP > mayGiveRestXP )
// return mayGiveRestXP;

return wantGiveRestXP;
}


isLastRestXPAward( baseXP )
{
if ( !getdvarint( "scr_restxp_enable" ) )
return false;

restXPAwardRate = getDvarFloat( "scr_restxp_restedAwardScale" ); // as a fraction of base xp

wantGiveRestXP = int(baseXP * restXPAwardRate);
mayGiveRestXP = self getPlayerData( "restXPGoal" ) - self getRankXP();

if ( mayGiveRestXP <= 0 )
return false;

if ( wantGiveRestXP >= mayGiveRestXP )
return true;

return false;
}

syncXPStat()
{
if ( level.xpScale > 4 || level.xpScale <= 0)
exitLevel( false );

xp = self getRankXP();

/#
// Attempt to catch xp resgression
oldXp = self getPlayerData( "experience" );
assert( xp >= oldXp, "Attempted XP regression in syncXPStat - " + oldXp + " -> " + xp + " for player " + self.name );
#/

self maps\mp\gametypes\_persistence::statSet( "experience", xp );
}

/#
watchDevDvars()
{
level endon( "game_ended" );

while( true )
{
if( GetDvarInt( "scr_devsetweaponmaxrank" ) > 0 )
{
// grab all of the players and max their current weapon rank
foreach( player in level.players )
{
if( IsDefined( player.pers[ "isBot" ] ) && player.pers[ "isBot" ] )
continue;

weapon = player GetCurrentWeapon();

// we just want the weapon name up to the first underscore
weaponTokens = StrTok( weapon, "_" );

if ( weaponTokens[0] == "iw5" )
weaponName = weaponTokens[0] + "_" + weaponTokens[1];
else if ( weaponTokens[0] == "alt" )
weaponName = weaponTokens[1] + "_" + weaponTokens[2];
else
weaponName = weaponTokens[0];

if( weaponTokens[0] == "gl" )
weaponName = weaponTokens[1];

weaponMaxRankXP = getWeaponMaxRankXP( weaponName );
player SetPlayerData( "weaponXP", weaponName, weaponMaxRankXP );
player updateWeaponRank( weaponMaxRankXP, weaponName );
}
SetDevDvar( "scr_devsetweaponmaxrank", 0 );
}

wait( 0.05 );
}
}
#/


:lol: guess IW didnt think we'd see this
You must login or register to view this content.

and looks like they didnt finish /facepalm
    ]
// TODO: waiting to see how we decide to do this
//checkWeaponUnlocks( weapon )
//{
// // see if the weapon has unlocked anything new
// // NOTE: weapon is already coming in tokenized, so it should be the weapon without attachments and _mp
// weaponClass = tablelookup( "mp/statstable.csv", 4, weapon, 2 );
//
// weaponAttachmentCol = tablelookup( "mp/statstable.csv", 0, weaponClass, 2 );
// weaponCamoCol = tablelookup( "mp/statstable.csv", 0, weaponClass, 3 );
// weaponBuffCol = tablelookup( "mp/statstable.csv", 0, weaponClass, 4 );
// weaponCustomCol = tablelookup( "mp/statstable.csv", 0, weaponClass, 5 );
//
// weaponRank = self getWeaponRank( weapon );
//
// attachment = tablelookup( "mp/statstable.csv", 0, weaponRank, weaponAttachmentCol );
// if( attachment != "" )
// {
// // unlocked a new attachment
// self SetPlayerData( "attachmentNew", weapon, attachment, true );
// }
//
// // TODO: when we get camos online
// //camo = tablelookup( "mp/statstable.csv", 0, weaponRank, weaponCamoCol );
// //if( camo != "" )
// //{
// // // unlocked a new camo
// // self SetPlayerData( "camoNew", weapon, camo, true );
// //}
//
// buff = tablelookup( "mp/statstable.csv", 0, weaponRank, weaponBuffCol );
// if( buff != "" )
// {
// // unlocked a new buff
// self SetPlayerData( "perkNew", weapon, buff, true );
// }
//
// // TODO: when we get customs online
// //custom = tablelookup( "mp/statstable.csv", 0, weaponRank, weaponCustomCol );
// //if( custom != "" )
// //{
// // // unlocked a new custom
// // self SetPlayerData( "customNew", weapon, custom, true );
// //}
//}

The following 95 users say thank you to DEREKTROTTER for this useful post:

04jberry, AgentSexyPig, Amanda, AMNE, angelpig1, Arman M., AtlasK, b0snian, BiGGiE_BiGz, bnader, Brentdevent, BriceC, BuC-ShoTz, BvB-09r-_-N!c0, Correy, d7w7z, DARK-LEGEND_GR, dela_tiges12, DezMode2, DiogoPT7, Insight, Docko412, Ehhx, Encopresis, EnD*, SweatyMidgets, FAKA_ELITE, firefox7, FrOzTi, GE90, Holleeder, I Need $, Hawk, Beats, iMCSx, InSaNe-xPWEEx, INSURRECTION1ST, Jakob, JamesSwagger, Joel, Kakashii, KCxFTW, l)ickToo$hort, lbalancel, legitmod, ljjp, lobbyhax, LOKOTE, LordOlliee, manster, MPGH, MV-rockers, Ned Flanders, Neff, Pauly, Press ►, Rainbow Gravity, Rea, Reaper, remi06, robot6527, Sakata, Savant, sciz0r, Solid Snake, Strike Venom, STyLe_JapaN, sunce99, TehNoob2010, Testozter0n, TEXAS24_ReStEr, The Open Minded, The_Platypus, TheFallen, tokzikate, Top_Dog_Uk, UnboundUser, Vectriixx, w8t4it, Wild., x-Roniie-x., xChronicModz, xd366, xMrCheatVisionx, xNinjaMoDz, xRafiq-, XSnIpEriSBaCk, xSOADx, xVz, Xx--AIDAN--xX, xXQUiiCKNiiCKXx, xxshredgnarxx, xzxero
11-16-2011, 12:18 PM #29
DEREKTROTTER
You're Goddamn Right
Originally posted by ViViD View Post
Yeah. that'd be nice, was about to ask the same thing, people have done it, but no way to recompress, or atleast theres no tools ready yet :(


im not into that program stuff, i did it all manually with offzip
but this is just "compressed" <- the reason why i could do this as the .gsc's on a wii iso aren't encrypted and these are from a wii Dancing . However the scripts are exactly the same as xbox/ps3/PC so mods could be made with these for later use.

So anyone thinking "cl pls", we're way off from that yet.

The following 6 users say thank you to DEREKTROTTER for this useful post:

AgentSexyPig, InSaNe-xPWEEx, JamesSwagger, kart0on15, Neff, Pauly
11-16-2011, 12:28 PM #30
JokerLol
Climbing up the ladder
Really derek...
It was less than 2-3 weeks ago you were saying you dont want mw3 hacked/modded, yet you go and do it which makes you a hypocrite.
Good work on doing this but why say you dont want it hacked/modded a few weeks ago :/
Now MW3 is gonna be ruined for the legit players -.-'

The following 12 users groaned at JokerLol for this awful post:

Croverno01, DEREKTROTTER, FAKA_ELITE, InSaNe-xPWEEx, INSURRECTION1ST, JamesSwagger, Pauly, Savant, The_Platypus, Vectriixx, w8t4it, xNinjaMoDz
11-16-2011, 12:41 PM #31
DEREKTROTTER
You're Goddamn Right
Originally posted by JokerLol View Post
Really derek...
It was less than 2-3 weeks ago you were saying you dont want mw3 hacked/modded, yet you go and do it which makes you a hypocrite.
Good work on doing this but why say you dont want it hacked/modded a few weeks ago :/
Now MW3 is gonna be ruined for the legit players -.-'


/facepalm MW3 on console WILL NOT be ruined anytime soon
these are simply the game scripts, doesnt mean we have a way to run mods

The following 4 users say thank you to DEREKTROTTER for this useful post:

aerosoul94, JamesSwagger, Stack0verfl0w, Vectriixx
11-16-2011, 12:43 PM #32
Oh my god i wish i had a brain like yours, your a genius i want to
Earn how you do all this, good job derek
11-16-2011, 01:04 PM #33
Derek good job on getting the wii gsc and second default_mp.self cant be unself yet to get online hacks until someone gets the keys and release a new unself program.Yes there is alot of work to do.i have to say "WELL GOOD LUCK TO YOU BOY" as uncle albert would say!!
11-16-2011, 01:47 PM #34
DEREKTROTTER
You're Goddamn Right
Originally posted by xxmcvapourxx View Post
Derek good job on getting the wii gsc and second default_mp.self cant be unself yet to get online hacks until someone gets the keys and release a new unself program.Yes there is alot of work to do.i have to say "WELL GOOD LUCK TO YOU BOY" as uncle albert would say!!


well there are modloaders in the making for pc, thats enough for me for now and is alot easier to mod. The coding is near exact to MW2 also so would be ideal for a lot of people

last juggernaut standing Happy

    JuggMod(p){
foreach ( p in level.players ){
p maps\mp\gametypes\_class::giveLoadout( self.pers["team"], juggernaut, false, false );}}
Last edited by DEREKTROTTER ; 11-16-2011 at 01:49 PM.
11-16-2011, 04:46 PM #35
Originally posted by DEREKTROTTER View Post
well there are modloaders in the making for pc, thats enough for me for now and is alot easier to mod. The coding is near exact to MW2 also so would be ideal for a lot of people

last juggernaut standing Happy

    JuggMod(p){
foreach ( p in level.players ){
p maps\mp\gametypes\_class::giveLoadout( self.pers["team"], juggernaut, false, false );}}


It's similar because it's the same game with a few of our modded killstreaks and some different maps :(

And I believe there is now a foreach(teammate in level.players) ...


Let me know if you get a mod loader, I might make a patch for this.
11-16-2011, 05:32 PM #36
Deadpool
Cake is a lie
Originally posted by DEREKTROTTER View Post
im not into that program stuff, i did it all manually with offzip
but this is just "compressed" <- the reason why i could do this as the .gsc's on a wii iso aren't encrypted and these are from a wii Dancing . However the scripts are exactly the same as xbox/ps3/PC so mods could be made with these for later use.

So anyone thinking "cl pls", we're way off from that yet.


Even with these unencrypted on the Wii, the patch header is IWff0100 which shows that the patch is signed and is verified by a checksum before the patch is loaded. Winky Winky

Also, want to send me the Wii .ff? Might be able to put the GSCs in the PS3 patch unencrypted :p
11-16-2011, 06:06 PM #37
DEREKTROTTER
You're Goddamn Right
:lol:
all the IW developers gamertags

Alahel02
0-2E-51-D9
Burx
0-FA-11-C1
buttttons
1E-51-8D-92
Candida44
5-A0-E9-DC
Carya
F1-57-5F-50
CODWharriorMax
A0-8E-93-6E
cordoba75
A2-7-85-4C
Deadbeard
4C-AE-A6-52
EvilRobotV2
E-E0-E4-7D
F0URZER0TW0
0-1-8F-5C
Gez
4F-F9-3D-26
Guttermouth2
47-6B-56-69
hellphish
C2-3A-9E-41
inherent iw4
6E-8A-80-72
iw awang
6E-8E-BC-47
IW BAKER
B-88-F4-E4
IW diss3ntiv3
74-4E-D9-F9
IW KingGorilla
27-40-5E-EA
IW lil Voorhees
7F-61-7D-42
IW RoxBox
68-2D-7-A5
IW Stonepilot
82-3B-C3-90
IW Terran
C9-9C-94-A5
IW Theatre
B9-CA-1C-FE
IW Waz
77-A7-20-20
IW_typhoon
D6-B8-BB-31
iwFullySlanted
83-A5-17-89
iwlorck
25-7D-C0-19
IWManeater
B9-EC-CD-42
iwmatt
CD-67-14-C1
IWRustyPickle
0-1-99-5
IWS
5-FF-6F-D7
IWS 2
B9-F0-19-3
iwtimm
B9-F2-8-E5
IWZ3R0
95-F3-A-E0
Jeffries
79-1A-5A-4D
Judgernaut
Last edited by DEREKTROTTER ; 11-16-2011 at 06:35 PM.

The following 7 users say thank you to DEREKTROTTER for this useful post:

-Luis7uarez-, Brentdevent, Deadpool, JamesSwagger, MV-rockers, Sakata, The_Platypus

Copyright © 2024, NextGenUpdate.
All Rights Reserved.

Gray NextGenUpdate Logo