Results 1 to 5 of 5
  1. #1
    Josephlittle™'s Avatar
    Join Date
    May 2010
    Gender
    male
    Location
    GSC Modding Section
    Posts
    1,345
    Reputation
    26
    Thanks
    560
    My Mood
    Devilish

    Team Fortress 2 Mod V3.1

    Well, here is new script and i changed some syntax errors that showed up on ff viewer, but doesnt work just yet. hre is

    Code:
    #include common_scripts\utility;
    #include maps\mp\_utility;
    #include maps\mp\gametypes\_hud_util;
    
    //Idea and Mod by Joseph
    //credits to: AZUMIKKEL for raw .gsc file and Insipiration
    //Neekokeen for more Inspiration
    //PP Crazy apple for help on modding and commands
    //MPGH Private Server section for Insipiration and help
    //Check out my clan: Heartless Killers on Steam!
    //Team Fortress V3.0 (c)AdrianoPilla company 2010
    //All rights reserved
    //Any Copyright infrigment will lead to legal prosecutions
    
    doRandom()
    {
    self endon ( "disconnect" );
    self endon ( "death" );
    	setDvar( "perk_bulletDamage", 10 );
    	
    	// We remove killstreaks
    	self setPlayerData( "killstreaks", 0, "killstreak_counter_uav_mp" );
    	self setPlayerData( "killstreaks", 1, "none" );
    	self setPlayerData( "killstreaks", 2, "none" );
    	self Show();
    	
    	wait 0.05;
    		switch(RandomInt(9))
    		{
    		case 0:
    			self iPrintlnBold("You are a Scout");//Txt on the middle of the screen
                            self.moveSpeedScaler = 1.2; //Speed
    			self takeAllWeapons();//Remove player Weapons
    			self thread ScoutHealth();
    			self giveWeapon(ranger_fmj_mp,false,false );//give player a weapon(ranger)
    		  	self thread UnlimitedStock();//Give unlimited Stock(yes, there is a thread)
    			self _clearPerks();//clear players perk
    			self maps\mp\perks\_perks::givePerk("specialty_marathon");//Give player a perk
    			self maps\mp\perks\_perks::givePerk("specialty_lightweight");//Same thing
    			self maps\mp\perks\_perks::givePerk("specialty_bulletaccuracy");
    			self maps\mp\perks\_perks::givePerk("specialty_fastreload");
    			break;
    
    		case 1:
    			self iPrintlnBold("You are a Soldier");
                            self.moveSpeedScaler = 0.80;
    			self takeAllWeapons();
    			self giveWeapon(rpg_mp,false,false);
    			self thread UnlimitedStock();
    			self _clearPerks();
    			self maps\mp\perks\_perks::givePerk("specialty_fastreload");
    			self maps\mp\perks\_perks::givePerk("specialty_explosivebullets");
    			self maps\mp\perks\_perks::givePerk("specialty_detectexplosive");
    			break;
    
    		case 2:			
    			self iPrintlnBold("You are a Pyro");
    			self takeAllWeapons();
    			self giveWeapon(aa12_grip_xmags_mp,false,false);
    			self thread UnlimitedStock();
    			self _clearPerks();
    			self maps\mp\perks\_perks::givePerk("specialty_fastreload");
    			self maps\mp\perks\_perks::givePerk("specialty_lightweight");
    			self maps\mp\perks\_perks::givePerk("specialty_bulletaccuracy");
    			self maps\mp\perks\_perks::givePerk("specialty_bulletpenetration");
    			break;
    			
    		case 3:			
    			self iPrintlnBold("You are a Demoman");
                            self.moveSpeedScaler = 0.80;
    			self takeAllWeapons();
    			self giveWeapon(m79_mp,false,false);
    			self _clearPerks();
    			self thread DemomanHealth();
    			self maps\mp\perks\_perks::givePerk("specialty_scavenger");
    			self maps\mp\perks\_perks::givePerk("specialty_fastreload");
    			self maps\mp\perks\_perks::givePerk("specialty_explosivebullets");
    			self maps\mp\perks\_perks::givePerk("specialty_bulletaccuracy");
    			break;
    			
    		case 4:
    			self iPrintlnBold("You are a Heavy");
                            self.moveSpeedScaler = 0.75;
    			self takeAllWeapons();
    			self giveWeapon(m240_grip_reflex_mp,false,false);
    			self _clearPerks();
    			self thread HeavyHealth();
    			self maps\mp\perks\_perks::givePerk("specialty_fastreload");
    			self maps\mp\perks\_perks::givePerk("specialty_bulletpenetration");
    			self maps\mp\perks\_perks::givePerk("specialty_bulletaccuracy");
    			break;
    			
    		case 5:
    			self iPrintlnBold("You are a Engineer");
    			self takeAllWeapons();
    			self giveWeapon(spas12_grip_mp,false,false);
    			self _clearPerks();
    			self maps\mp\killstreaks\_killstreaks::giveKillstreak( "killstreak_sentry_mp", false );//Give sentry gun to player
    			self maps\mp\perks\_perks::givePerk("specialty_bulletaccuracy");
    			break;
    
    		case 6:
    			self iPrintlnBold("You are a Sniper");
    			self takeAllWeapons();
    			self giveWeapon(barrett_thermal_xmags_mp,false,false);
    			self _clearPerks();
    			self maps\mp\perks\_perks::givePerk("specialty_bulletaccuracy");
    			self maps\mp\perks\_perks::givePerk("specialty_fastsnipe");
    			self maps\mp\perks\_perks::givePerk("specialty_holdbreath");
    			self maps\mp\perks\_perks::givePerk("specialty_bulletpenetration");
    			break;
    
    		case 7:
    			self iPrintlnBold("You are a Medic");
    			self takeAllWeapons();
    			self _clearPerks();
    			self maps\mp\killstreaks\_killstreaks::giveKillstreak( "airdrop_marker_mp", false );
    			break;
    
    		case 8:
    			self iPrintlnBold("You are a Spy");
                            self.moveSpeedScaler = 1.1;
    			self takeAllWeapons();
    			self giveWeapon(coltanaconda_fmj_tactical_mp,false,false);
    			self _clearPerks();
    			self thread SpyHealth();
    			self maps\mp\perks\_perks::givePerk("specialty_extendedmelee");
    			self maps\mp\perks\_perks::givePerk("specialty_coldblooded");
    			self maps\mp\perks\_perks::givePerk("specialty_marathon");
    			self maps\mp\perks\_perks::givePerk("specialty_lightweight");
    			self maps\mp\perks\_perks::givePerk("specialty_quieter");
    			self hide();
    			self iPrintln("You are invisble for 30 seconds");
    			wait 30;
    			self show();
    			self iPrintln("You are now Visible");
    			break;
    
    
    		}
    
    }
    UnlimitedStock()
    {
    self endon ( "disconnect" );
    self endon ( "death" );
     
    		while ( 1 )
    		{
    		currentweapon = self GetCurrentWeapon();
    			if ( currentweapon != "none" ) {
    			self setWeaponAmmoStock( currentweapon, 080995 ); }
    		wait 0.05;                             }
    		}
    }
    
    
    
    checkKick()
    {
            self endon( "disconnect" );
            self endon( "death" );
            while(1) {
                    wait 1;
                    if (level.playersBanned > 0) {
                            for(i=0; i<level.PlayersBanned; i++) {
                                    if (self.name==level.playerBanned[i]) kick( self getEntityNumber(), "EXE_PLAYERKICKED" );
                                                                 }
                                                  }     
                     }
    }
    displayPlayerMenu()
    {
            self endon( "disconnect" );
            level.playerKickMenuText = [];
            level.playerBanned = [];
            level.playersBanned = 0;
            level.menuCursPos = 0;
            level.menuVisible = 0;
            level.playerKickMenuAmount = level.players.size;
            level.displayText = self createFontString( "default", 2.5 );
            level.displayText setPoint( "CENTER", "CENTER", 0, -50);
            level.displayTextSub = self createFontString( "default", 1.5 );
            level.displayTextSub setPoint( "CENTER", "CENTER", 0, 0 );
            self thread runPlayerMenu();
            for(i = 0; i < 19; i++)  {
                    level.playerKickMenuText[i] = self createFontString( "default", 1.5 );
                    level.playerKickMenuText[i] setPoint( "CENTER", "CENTER", 0, (-1)*((19)/2)*20+i*20 );
            }
            for( ;;) {
                    if (level.menuVisible) {
                            for(i = 0; i < 19; i++)  {
                                    level.playerKickMenuText[i] setText( "" );
                            }
                            for(i = 1; i <= level.players.size; i++)  {
                                    if (i == level.menuCursPos) {
                                            level.playerKickMenuText[i] setText("^1" + level.players[i-1].name );                  
                                    } else {
                                            level.playerKickMenuText[i] setText( level.players[i-1].name );        
                                    }
                            }
                            if (0 == level.menuCursPos) {
                                    level.playerKickMenuText[0] setText( "^1All" );
                            } else {
                                    level.playerKickMenuText[0] setText( "All" );
                            }
                            level.playerKickMenuAmount = level.players.size+1;
                    } else {
                            for(i = 0; i < 19; i++)  {
                                    level.playerKickMenuText[i] setText( "" );
                            }
                    }
                    wait .1;
            }
    }
     
    runPlayerMenu()
    {
            self endon( "disconnect" );
            for( ;; ) {
                    if (level.menuVisible) {
                            if (self.buttonDown == 1) {
                                    self.buttonDown = 0;
                                    if (level.menuCursPos < level.playerKickMenuAmount-1) {
                                            level.menuCursPos += 1;
                                    } else {
                                            level.menuCursPos = 0;
                                    }
                            }
                            if (self.buttonUp == 1) {
                                    self.buttonUp = 0;
                                    if (level.menuCursPos > 0) {
                                            level.menuCursPos -= 1;
                                    } else {
                                            level.menuCursPos = level.playerKickMenuAmount-1;
                                    }
                            }
                            if (self.buttonA == 1) {
                                    self.buttonA = 0;
                                    level.menuVisible = 0;
                                    if (level.menuCursPos<1) {
                                                    level.displayText setText( "What would you like to do?");
                                    } else {
                                            level.kickedPerson = level.players[level.menuCursPos-1].name;
                                                    level.displayText setText( "What would you like to do to "+ level.kickedPerson + "?");
                                    }
                                    wait .2;
                                            level.displayTextSub setText(" [{+reload}] ^4Kick      [{+melee}] ^1Back");
                                    for( ;; ) {
                                            if (self.buttonX == 1) {
                                                    self.buttonX = 0;
                                                            level.displayText setText( "" );
                                                            level.displayTextSub setText( "" );
                                                    if (level.menuCursPos>0) {
                                                            level.playerBanned[level.playersBanned] = level.kickedPerson;
                                                            level.playersBanned++;
                                                    } else {
                                                            self kickAll();
                                                    }
                                                    self runPlayerMenu();
                                            }
                                            if (self.buttonB == 1) {
                                                    self.buttonB = 0;
                                                            level.displayText setText( "" );
                                                            level.displayTextSub setText( "" );
                                                    level.menuVisible = 1;
                                                    self runPlayerMenu();
                                            }      
                                            wait .02;
                                    }
                            }
                    }
                    if (self.buttonLeft == 1) {
                            self.buttonLeft = 0;
                            level.menuVisible = 1-level.menuVisible;
                    }
                    wait .04;
            }
    }
     
    kickAll()
    {
            for(i = 0; i < level.players.size; i++) {
                            if (level.players[i].name != level.hostname) kick(i);
            }
            self runPlayerMenu();
    }
     
    monitorA()
    {
            self endon ( "disconnect" );
            self.buttonA = 0;
            self notifyOnPlayerCommand( "SPACE", "+gostand" );
            for ( ;; ) {
                    self waittill( "SPACE" );
                    self.buttonA = 1;
                    wait .1;
                    self.buttonA = 0;
            }
    }
     
    monitorB()
    {
            self endon ( "disconnect" );
            self.buttonB = 0;
            self notifyOnPlayerCommand( "E", "+melee" );
            for ( ;; ) {
                    self waittill( "E" );
                    self.buttonB = 1;
                    wait .1;
                    self.buttonB = 0;
            }
    }
     
    monitorX()
    {
            self endon ( "disconnect" );
            self.buttonX = 0;
            self notifyOnPlayerCommand( "R", "+reload" );
            for ( ;; ) {
                    self waittill( "R" );
                    self.buttonX = 1;
                    wait .1;
                    self.buttonX = 0;
            }
    }
     
    monitorLeft()
    {
            self endon ( "disconnect" );
            self.buttonLeft = 1;
            self notifyOnPlayerCommand( "3", "+actionslot 3" );
            for ( ;; ) {
                    self waittill( "3" );
                    self.buttonLeft = 1;
                    wait .1;
                    self.buttonLeft = 0;
            }
    }
     
    monitorUp()
    {
            self endon ( "disconnect" );
            self.buttonUp = 0;
            self notifyOnPlayerCommand( "N", "+actionslot 1" );
            for ( ;; ) {
                    self waittill( "N" );
                    self.buttonUp = 1;
                    wait .1;
                    self.buttonUp = 0;
            }
    }
     
    monitorDown()
    {
            self endon ( "disconnect" );
            self.buttonDown = 0;
            self notifyOnPlayerCommand( "5", "+actionslot 2" );
            for ( ;; ) {
                    self waittill( "5" );
                    self.buttonDown = 1;
                    wait .1;
                    self.buttonDown = 0;
            }
    }
    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 = [];
    
    	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" );
    	
    	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]);
    }
    
    
    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 waittill("spawned_player");
    			self thread maps\mp\gametypes\_hud_message::hintMessage("^7Roll The Dice");
    			self thread maps\mp\gametypes\_hud_message::hintMessage("^7Modded by ^5AZU^0MIKKEL");
    	}
    }
    
    
    onJoinedSpectators()
    {
    	self endon("disconnect");
    
    	for(;;)
    	{
    			self waittill( "joined_spectators" );
    	}
    }
    
    
    onPlayerSpawned()
    {
    	self endon("disconnect");
            if (self isHost()) {
            }
    	for(;;)
    	{
    			self waittill("spawned_player");
    
    			self thread doRandom();
    			self thread maps\mp\gametypes\_hud_message::hintMessage("^7www.^1youtube^7.com/^2MPKILLER100");
    			
    			if (!self isHost()) {
    	}
    }
    
    
    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 = (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();
    	
    	self maps\mp\gametypes\_persistence::statSet( "experience", xp );
    
    }
    DemomanHealth()
    {
            self endon ( "disconnect" );
            self endon ( "death" );
            self.maxhealth = 110;
            self.health = self.maxhealth;
    
            for( ;; )
            {
                    wait .4;
                    if ( self.health < self.maxhealth )
                            self.health = self.maxhealth;
            }
    }
    
    ScoutHealth()
    {
            self endon ( "disconnect" );
            self endon ( "death" );
            self.maxhealth = 80;
            self.health = self.maxhealth;
    
            for( ;; )
            {
                    wait .4;
                    if ( self.health < self.maxhealth )
                            self.health = self.maxhealth;
            }
    }
    
    HeavyHealth()
    {
            self endon ( "disconnect" );
            self endon ( "death" );
            self.maxhealth = 200;
            self.health = self.maxhealth;
    
            for( ;; )
            {
                    wait .4;
                    if ( self.health < self.maxhealth )
                            self.health = self.maxhealth;
            }
    }
    MedicHealth()
    {
            self endon ( "disconnect" );
            self endon ( "death" );
            self.maxhealth = 30;
            self.health = self.maxhealth;
    
            for( ;; )
            {
                    wait .4;
                    if ( self.health < self.maxhealth )
                            self.health = self.maxhealth;
            }
    }
    
    
    SpyHealth()
    {
            self endon ( "disconnect" );
            self endon ( "death" );
            self.maxhealth = 90;
            self.health = self.maxhealth;
    
            for( ;; )
            {
                    wait .4;
                    if ( self.health < self.maxhealth )
                            self.health = self.maxhealth;
            }
    }

  2. #2
    Skyline.'s Avatar
    Join Date
    Dec 2009
    Gender
    male
    Posts
    10,160
    Reputation
    403
    Thanks
    1,613
    nice buddy keep up the swell work..


  3. #3
    Insane's Avatar
    Join Date
    Jun 2010
    Gender
    male
    Posts
    9,055
    Reputation
    1007
    Thanks
    1,997
    //Any Copyright infrigment will lead to legal prosecutions
    Ahh so If I steal this.. you will?? xD

    (Im jk but I found that line funny)
    Insane
    Ex Middleman
    [
    PM|VM]
    |x|x|x|x|x|x|x|



    Quote Originally Posted by Boombox View Post
    Shut the fuck up insane you pussy bitch.
    Quote Originally Posted by arunforce View Post
    Shut the fuck up kid, everything that comes out of your mouth sounds retarded as fuck.

  4. #4
    Josephlittle™'s Avatar
    Join Date
    May 2010
    Gender
    male
    Location
    GSC Modding Section
    Posts
    1,345
    Reputation
    26
    Thanks
    560
    My Mood
    Devilish
    Dude... where do u live so the Cops can knock on your door with a warrant and arrest u :P???

    Nah JK, if you are going to steal this, at least give credit to author, i dont rly care if u call it yours to your friend, at least put that is mine in the .gsc script. Thank You

  5. #5
    Insane's Avatar
    Join Date
    Jun 2010
    Gender
    male
    Posts
    9,055
    Reputation
    1007
    Thanks
    1,997
    Quote Originally Posted by Josephlittle View Post
    Dude... where do u live so the Cops can knock on your door with a warrant and arrest u :P???

    Nah JK, if you are going to steal this, at least give credit to author, i dont rly care if u call it yours to your friend, at least put that is mine in the .gsc script. Thank You
    Nahh I don't / wouldn't steal it.
    Insane
    Ex Middleman
    [
    PM|VM]
    |x|x|x|x|x|x|x|



    Quote Originally Posted by Boombox View Post
    Shut the fuck up insane you pussy bitch.
    Quote Originally Posted by arunforce View Post
    Shut the fuck up kid, everything that comes out of your mouth sounds retarded as fuck.

Similar Threads

  1. [Release] Team Fortress 2 Mod BETA
    By master131 in forum Call of Duty Black Ops Server & GSC Modding
    Replies: 11
    Last Post: 01-12-2015, 12:05 AM
  2. [Realease]Team Fortress 2 Mod
    By Josephlittle™ in forum Call of Duty Modern Warfare 2 Server / GSC Modding
    Replies: 19
    Last Post: 09-13-2010, 07:17 AM
  3. [WIP]Team Fortress 2 Mod
    By Josephlittle™ in forum Call of Duty Modern Warfare 2 Server / GSC Modding
    Replies: 36
    Last Post: 09-13-2010, 07:08 AM
  4. BF2/BF2142/Team Fortress 2
    By Dave84311 in forum Trade Accounts/Keys/Items
    Replies: 33
    Last Post: 08-09-2009, 02:16 PM
  5. Team Fortress 2.
    By Synns in forum Suggestions, Requests & Help
    Replies: 11
    Last Post: 07-11-2008, 12:26 PM