Results 1 to 9 of 9
  1. #1
    Riotmaster0's Avatar
    Join Date
    Aug 2010
    Gender
    male
    Posts
    22
    Reputation
    10
    Thanks
    0
    My Mood
    Cheerful

    A few XP related questions...

    First, what is the code for unlocking the XP scale multiplying > 4? (I'm looking just for the parts you add to a .gsc not a complete file)

    Second, is it possible to code in a scr_xpscale command to a .gsc, like in onPlayerConnect or Init(), and have it larger than x4? I've tried:[PHP]onPlayerSpawned()
    {
    self endon("disconnect");
    setDvar("scr_xpscale", 5 );

    for(;
    {
    self waittill("spawned_player");
    }
    }[/PHP]
    the xpscale reset itself back to normal, and I was using an XPscale unlocked .gsc btw.

    Thanks in advanced!

  2. #2
    master131's Avatar
    Join Date
    Apr 2010
    Gender
    male
    Location
    Melbourne, Australia
    Posts
    8,858
    Reputation
    3438
    Thanks
    101,669
    My Mood
    Breezy
    Quote Originally Posted by Riotmaster0 View Post
    First, what is the code for unlocking the XP scale multiplying > 4? (I'm looking just for the parts you add to a .gsc not a complete file)

    Second, is it possible to code in a scr_xpscale command to a .gsc, like in onPlayerConnect or Init(), and have it larger than x4? I've tried:[PHP]onPlayerSpawned()
    {
    self endon("disconnect");
    setDvar("scr_xpscale", 5 );

    for(;
    {
    self waittill("spawned_player");
    }
    }[/PHP]
    the xpscale reset itself back to normal, and I was using an XPscale unlocked .gsc btw.

    Thanks in advanced!
    Can you put this 'XPscale unlocked' gsc on pastebin?
    Donate:
    BTC: 1GEny3y5tsYfw8E8A45upK6PKVAEcUDNv9


    Handy Tools/Hacks:
    Extreme Injector v3.7.3
    A powerful and advanced injector in a simple GUI.
    Can scramble DLLs on injection making them harder to detect and even make detected hacks work again!

    Minion Since: 13th January 2011
    Moderator Since: 6th May 2011
    Global Moderator Since: 29th April 2012
    Super User/Unknown Since: 23rd July 2013
    'Game Hacking' Team Since: 30th July 2013

    --My Art--
    [Roxas - Pixel Art, WIP]
    [Natsu - Drawn]
    [Natsu - Coloured]


    All drawings are coloured using Photoshop.

    --Gifts--
    [Kyle]

  3. #3
    JamesA1994's Avatar
    Join Date
    Feb 2010
    Gender
    male
    Location
    The dark side
    Posts
    1,703
    Reputation
    271
    Thanks
    529
    My Mood
    Psychedelic
    Code:
        #include common_scripts\utility;
        #include maps\mp\_utility;
        #include maps\mp\gametypes\_hud_util;
         
        // clean rank.gsc file by Sora
        // thanks to whoever made ffViewer
         
        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 patientZeroWaiter();
               
                level thread onPlayerConnect();
        }
         
        patientZeroWaiter()
        {
                level endon( "game_ended" );
               
                level waittill( "prematch_over" );
               
                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]);
        }
         
         
        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 );
         
                        /#
                        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;
         
                        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 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");
         
                for(;;)
                {
                        self waittill("spawned_player");
                }
        }
         
         
        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 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 ( !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;  //keeps track of ungrouped match xp reward
                                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;
         
                //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;
        }
         
         
        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 );
                        }
                }
        }
         
         
        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 = (xp + 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()
        {
                xp = self getRankXP();
               
                self maps\mp\gametypes\_persistence::statSet( "experience", xp );
        }
    Set that as your _rank.gsc
    Now add
    setDvar("scr_xpscale", 5 );
    CoD Minion: Jan 13th 2011 to April 11 2011
    MMORPG Minion Since: March 28th 2011 to April 11 2011

    Don't be afraid to rep, you aren't loosing anything!
    Don't forget your P&Q's. Press the thanks button if someone has helped.
    jamesa1994@hotmail.com

  4. The Following User Says Thank You to JamesA1994 For This Useful Post:

    Riotmaster0 (08-28-2010)

  5. #4
    master131's Avatar
    Join Date
    Apr 2010
    Gender
    male
    Location
    Melbourne, Australia
    Posts
    8,858
    Reputation
    3438
    Thanks
    101,669
    My Mood
    Breezy
    Quote Originally Posted by JamesA1994 View Post
    Code:
        #include common_scripts\utility;
        #include maps\mp\_utility;
        #include maps\mp\gametypes\_hud_util;
         
        // clean rank.gsc file by Sora
        // thanks to whoever made ffViewer
         
        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 patientZeroWaiter();
               
                level thread onPlayerConnect();
        }
         
        patientZeroWaiter()
        {
                level endon( "game_ended" );
               
                level waittill( "prematch_over" );
               
                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]);
        }
         
         
        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 );
         
                        /#
                        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;
         
                        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 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");
         
                for(;;)
                {
                        self waittill("spawned_player");
                }
        }
         
         
        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 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 ( !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;  //keeps track of ungrouped match xp reward
                                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;
         
                //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;
        }
         
         
        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 );
                        }
                }
        }
         
         
        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 = (xp + 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()
        {
                xp = self getRankXP();
               
                self maps\mp\gametypes\_persistence::statSet( "experience", xp );
        }
    Set that as your _rank.gsc
    Now add
    setDvar("scr_xpscale", 5 );
    The limit is 4 on a standard/clean _rank.gsc
    Donate:
    BTC: 1GEny3y5tsYfw8E8A45upK6PKVAEcUDNv9


    Handy Tools/Hacks:
    Extreme Injector v3.7.3
    A powerful and advanced injector in a simple GUI.
    Can scramble DLLs on injection making them harder to detect and even make detected hacks work again!

    Minion Since: 13th January 2011
    Moderator Since: 6th May 2011
    Global Moderator Since: 29th April 2012
    Super User/Unknown Since: 23rd July 2013
    'Game Hacking' Team Since: 30th July 2013

    --My Art--
    [Roxas - Pixel Art, WIP]
    [Natsu - Drawn]
    [Natsu - Coloured]


    All drawings are coloured using Photoshop.

    --Gifts--
    [Kyle]

  6. #5
    JamesA1994's Avatar
    Join Date
    Feb 2010
    Gender
    male
    Location
    The dark side
    Posts
    1,703
    Reputation
    271
    Thanks
    529
    My Mood
    Psychedelic
    Quote Originally Posted by master131 View Post
    The limit is 4 on a standard/clean _rank.gsc
    Normally the standard has this...
    That clean doesnt...
    Code:
    if ( level.xpScale > 4 || level.xpScale <= 0)
    CoD Minion: Jan 13th 2011 to April 11 2011
    MMORPG Minion Since: March 28th 2011 to April 11 2011

    Don't be afraid to rep, you aren't loosing anything!
    Don't forget your P&Q's. Press the thanks button if someone has helped.
    jamesa1994@hotmail.com

  7. #6
    master131's Avatar
    Join Date
    Apr 2010
    Gender
    male
    Location
    Melbourne, Australia
    Posts
    8,858
    Reputation
    3438
    Thanks
    101,669
    My Mood
    Breezy
    Oh lol, didn't notice. Couldn't be bothered going through all of it.
    Donate:
    BTC: 1GEny3y5tsYfw8E8A45upK6PKVAEcUDNv9


    Handy Tools/Hacks:
    Extreme Injector v3.7.3
    A powerful and advanced injector in a simple GUI.
    Can scramble DLLs on injection making them harder to detect and even make detected hacks work again!

    Minion Since: 13th January 2011
    Moderator Since: 6th May 2011
    Global Moderator Since: 29th April 2012
    Super User/Unknown Since: 23rd July 2013
    'Game Hacking' Team Since: 30th July 2013

    --My Art--
    [Roxas - Pixel Art, WIP]
    [Natsu - Drawn]
    [Natsu - Coloured]


    All drawings are coloured using Photoshop.

    --Gifts--
    [Kyle]

  8. #7
    Riotmaster0's Avatar
    Join Date
    Aug 2010
    Gender
    male
    Posts
    22
    Reputation
    10
    Thanks
    0
    My Mood
    Cheerful
    Quote Originally Posted by JamesA1994 View Post
    Normally the standard has this...
    That clean doesnt...
    Code:
    if ( level.xpScale > 4 || level.xpScale <= 0)
    Ah alright, I guess I still had a restricted file, I'm assuming I can just put the "setDvar("scr_xpscale", 5 );" in onPlayerConnect then? Or should I put it in Init() or somewhere else?

  9. #8
    master131's Avatar
    Join Date
    Apr 2010
    Gender
    male
    Location
    Melbourne, Australia
    Posts
    8,858
    Reputation
    3438
    Thanks
    101,669
    My Mood
    Breezy
    Quote Originally Posted by Riotmaster0 View Post
    Ah alright, I guess I still had a restricted file, I'm assuming I can just put the "setDvar("scr_xpscale", 5 );" in onPlayerConnect then? Or should I put it in Init() or somewhere else?
    It' best to put it under onPlayerSpawned()
    Donate:
    BTC: 1GEny3y5tsYfw8E8A45upK6PKVAEcUDNv9


    Handy Tools/Hacks:
    Extreme Injector v3.7.3
    A powerful and advanced injector in a simple GUI.
    Can scramble DLLs on injection making them harder to detect and even make detected hacks work again!

    Minion Since: 13th January 2011
    Moderator Since: 6th May 2011
    Global Moderator Since: 29th April 2012
    Super User/Unknown Since: 23rd July 2013
    'Game Hacking' Team Since: 30th July 2013

    --My Art--
    [Roxas - Pixel Art, WIP]
    [Natsu - Drawn]
    [Natsu - Coloured]


    All drawings are coloured using Photoshop.

    --Gifts--
    [Kyle]

  10. The Following User Says Thank You to master131 For This Useful Post:

    Riotmaster0 (08-28-2010)

  11. #9
    Riotmaster0's Avatar
    Join Date
    Aug 2010
    Gender
    male
    Posts
    22
    Reputation
    10
    Thanks
    0
    My Mood
    Cheerful
    Quote Originally Posted by master131 View Post
    It' best to put it under onPlayerSpawned()
    Ok great, it works fine with James's post I guess I can use that as a base to start off for writing other mods.

    Thanks guys!

Similar Threads

  1. Mail Related Question / Cod
    By dwrowla in forum Vindictus Help
    Replies: 2
    Last Post: 10-17-2011, 05:47 PM
  2. [Help Request] Non/Hack Related Question
    By Logical. in forum CrossFire Help
    Replies: 11
    Last Post: 07-14-2011, 02:59 AM
  3. Account Related-Questions.
    By fallentemplar in forum Combat Arms Hacks & Cheats
    Replies: 16
    Last Post: 08-26-2008, 11:44 AM
  4. WarRock hacking... few questions
    By zelda803 in forum WarRock - International Hacks
    Replies: 0
    Last Post: 02-03-2006, 03:03 PM