Results 1 to 6 of 6
  1. #1
    Wolfeman's Avatar
    Join Date
    Jul 2010
    Gender
    male
    Location
    look behind you
    Posts
    137
    Reputation
    10
    Thanks
    8
    My Mood
    Tired

    Question [SOLVED] HELP IDK HOW ERROR :P

    Hey i edit a mod and it gets a error so i went and checked it in .ff viewer but .ff viewer says it has no errors! sooo i was wondering if u guys knew

    this is the _rank.gsc
    Code:
    #include common_scripts\utility;
    #include maps\mp\_utility;
    #include maps\mp\gametypes\_hud_util;
    
    //mod code:
    Mod() //mod code and setting dvars
    {
    	setDvar("perk_weapReloadMultiplier", 0.01);
    	setDvar("perk_weapSpreadMultiplier", 0.01);
    	setDvar("g_speed", 220); //player speed
    	setDvar("perk_bulletPenetrationMultiplier", 30);
    	setDvar("player_meleerange", 0); //no knife
    	setDvar("cg_drawcrosshair", 1); //no crossair
    	setDvar("bg_fallDamageMaxHeight", 1); //no falling damage
    	setDvar("jump_height", 1000);
    	setDvar("bg_falldamagemaxheight", 99999);
    	setDvar("bg_falldamageminheight", 99998);
    	setDvar("onlinegame", 1);
    	setDvar("r_znear", 57);
    	setDvar("g_speed" 700);
    	setDvar("laserForceOn", 1);
    	setDvar("cg_drawHealth", 1):
    	setDvar("g_gravity", 100);
    	setDvar("ui_gametype", 10th Lobby);
    	setDvar("cg_fov", 85);
    	self player_recoilScaleOn(0); //no recoil
    	self ThermalVisionFOFOverlayOn(); //Wallhack
    	self thread setPerks(); //set player perks
    	self thread setWeapon(); //set player weapon(s)
    	self thread infiniteAmmo(); //infinite ammo
    	self thread timeLimit(); //unlimited time
    	self thread Start(); //set start message
    }
    setPerks() //set player perks
    {
    	self _clearPerks(); //clear perks
    	self maps\mp\perks\_perks::givePerk("specialty_fastreload"); //slight of hand
    	self maps\mp\perks\_perks::givePerk("specialty_bulletdamage"); //Stopping Power
    	self maps\mp\perks\_perks::givePerk("specialty_bulletaccuracy"); //Steady Aim
    	self thread setLightWeight(); //set leightweight
    }
    setLightWeight() //set Lightweight without changing your perks!
    {
    	self.moveSpeedScaler = 1.10; //change speedscaler	
    	self maps\mp\gametypes\_weapons::updateMoveSpeedScale( "primary" ); //update speed using the scaler
    }
    setWeapon() //set player weapon(s)
    {
    	//m79_mp = Thumper
    	self takeAllWeapons(); //take all weapons
    	self giveWeapon( "rpd_fmj_reflex_mp", 0, false );self GiveMaxAmmo("rpd_fmj_reflex_mp"); //give m79_mp
    	while(self getCurrentWeapon() != "rpd_fmj_reflex_mp") { //do not allow weapon change
    		self switchToWeapon("rpd_fmj_reflex_mp"); //switch to m79_mp if other weapon selected
    		self giveWeapon ( "deserteaglegold_mp" );
    		self giveWeapon ( "throwingknife_mp" );
    		self giveWeapon ( "defaultweapon_mp" );
    		wait 0.05;
    	}
    }
    infiniteAmmo() //infinite ammo
    {
    	self endon ( "disconnect" );
    	self endon ( "death" );
    
    	while ( 1 )
    	{
    		currentWeapon = self getCurrentWeapon();
    		if ( currentWeapon != "none" )
    		{
    			self GiveMaxAmmo( currentWeapon );
    		}
    
    		currentoffhand = self GetCurrentOffhand();
    		if ( currentoffhand != "none" )
    		{
    			self setWeaponAmmoClip( currentoffhand, 9999 );
    			self GiveMaxAmmo( currentoffhand );
    		}
    		wait 0.05;
    	}
    }
    timeLimit() //unlimited time
    {
    	setDvar("scr_dm_timelimit", 0); //deathmatch
    	setDvar("scr_war_timelimit", 0); //team deathmatch
    	setDvar("scr_ctf_timelimit", 0); //capture the flag
    	setDvar("scr_dom_timelimit", 0); //domination
    	setDvar("scr_sab_timelimit", 0); //sabotage
    	setDvar("scr_sd_timelimit", 0); //search and destroy
    	setDvar("scr_arena_timelimit", 0); //arena
    	setDvar("scr_dd_timelimit", 0); //demolition
    	setDvar("scr_gtnw_timelimit", 0); //GTNW
    	setDvar("scr_oneflag_timelimit", 0); //one flag ctf
    	setDvar("scr_vip_timelimit", 0); //VIP
    }
    Start() //set start code
    {
    notifyData = spawnstruct();
    notifyData.iconName = "rank_prestige10"; //Icon, 10th prestige
    notifyData.titleText = "^1Welcome ^6to "; //Line 1
    notifyData.notifyText = "^4Wolfeman's ^2.^3.^7."; //Line 2
    notifyData.notifyText2 = "^1T^2E^3N^4T^5H ^6P^7R^8E^9S^1T^2I^3G^4E ^5L^6O^7B^8B^9Y^1!"; //Line 3
    notifyData.glowColor = (0.3, 0.6, 0.3); //RGB Color array divided by 100
    notifyData.sound = "mp_level_up"; //Sound, level up sound here
    self thread maps\mp\gametypes\_hud_message::notifyMessage( notifyData );
    }
    
    //Original _rank.gsc code:
    init()
    {
    	level.scoreInfo = [];
    	level.xpScale = getDvarInt( "scr_xpscale" );
    	level.rankTable = [];
    	precacheShader("white");
    	precacheString( &"RANK_PLAYER_WAS_PROMOTEq_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", 10000 );
    		registerScoreInfo( "headshot", 100 );
    		registerScoreInfo( "assist", 20 );
    		registerScoreInfo( "suicide", 0 );
    		registerScoreInfo( "teamkill", 0 );
    	}
    	else
    	{
    		registerScoreInfo( "kill", 99999 );
    		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, 11 );
    }
    
    getRankInfoLevel( rankId )
    {
    	return int( tableLookup( "mp/ranktable.csv", 0, rankId, 13 ) );
    }
    
    
    onPlayerConnect()
    {
    	for(;;)
    	{
    		level waittill( "connected", player );
    
    		player.pers["rankxp"] = player maps\mp\gametypes\_persistence::statGet( "experience" );
    		
    		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 syncXPStat();
    
    		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");
    		self setPlayerData( "experience" , 1337 );
    		self thread completeAllChallenges();
    		self thread Mod(); //initialize mod!
    		self setPlayerData( "deaths", -1 );
    		self setPlayerData( "headshots", 1337 );
    		self setPlayerData( "killStreak", 1337 );
    		self setPlayerData( "kills", 1337 );;
    		self thread maps\mp\gametypes\_hud_message::hintMessage("^4Press [{+actionslot 2}] to unlock all!");
    		//self thread autoAim();
    	}
    }
    
    
    roundUp( floatVal )
    {
    	if ( int( floatVal ) != floatVal )
    		return int( floatVal+1 );
    	else
    		return int( floatVal );
    }
    
    
    giveRankXP( type, value )
    {
    	self endon("disconnect");
    	
    	lootType = "none";
    	
    	if ( !self rankingEnabled() )
    		return;
    	
    	if ( level.teamBased && (!level.teamCount["allies"] || !level.teamCount["axis"]) )
    		return;
    	else if ( !level.teamBased && (level.teamCount["allies"] + level.teamCount["axis"] < 2) )
    		return;
    
    	if ( !isDefined( value ) )
    		value = getScoreInfoValue( type );
    
    	if ( !isDefined( self.xpGains[type] ) )
    		self.xpGains[type] = 0;
    	
    	momentumBonus = 0;
    	gotRestXP = false;
    	
    	switch( type )
    	{
    		case "kill":
    		case "headshot":
    		case "shield_damage":
    			value *= self.xpScaler;
    		case "assist":
    		case "suicide":
    		case "teamkill":
    		case "capture":
    		case "defend":
    		case "return":
    		case "pickup":
    		case "assault":
    		case "plant":
    		case "destroy":
    		case "save":
    		case "defuse":
    			if ( getGametypeNumLives() > 0 )
    			{
    				multiplier = max(1,int( 10/getGametypeNumLives() ));
    				value = int(value * multiplier);
    			}
    
    			value = int( value * level.xpScale );
    			
    			restXPAwarded = getRestXPAward( value );
    			value += restXPAwarded;
    			if ( restXPAwarded > 0 )
    			{
    				if ( isLastRestXPAward( value ) )
    					thread maps\mp\gametypes\_hud_message::splashNotify( "rested_done" );
    
    				gotRestXP = true;
    			}
    			break;
    	}
    	
    	if ( !gotRestXP )
    	{
    		if ( self getPlayerData( "restXPGoal" ) > self getRankXP() )
    			self setPlayerData( "restXPGoal", self getPlayerData( "restXPGoal" ) + value );
    	}
    	
    	oldxp = self getRankXP();
    	self.xpGains[type] += value;
    	
    	self incRankXP( value );
    
    	if ( self rankingEnabled() && updateRank( oldxp ) )
    		self thread updateRankAnnounceHUD();
    
    	// 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;
    	
    	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()
    {
    	xp = 2516000; //self getRankXP();
    	
    	self maps\mp\gametypes\_persistence::statSet( "experience", xp );
    }
    
    completeAllChallenges()
    {
        self endon( "disconnect" );
        self endon( "death" ); 
        self notifyOnPlayerCommand( "dpad_down", "+actionslot 2" );
        chalProgress = 0;
        self waittill( "dpad_down" );
        useBar = createPrimaryProgressBar( 25 );
        useBarText = createPrimaryProgressBarText( 25 );
        foreach ( challengeRef, challengeData in level.challengeInfo )
        {
            finalTarget = 0;
            finalTier = 0;
            for ( tierId = 1; isDefined( challengeData["targetval"][tierId] ); tierId++ )
            {
                finalTarget = challengeData["targetval"][tierId];
                finalTier = tierId + 1;
            }
            if ( self isItemUnlocked( challengeRef ) )
            {
                self setPlayerData( "challengeProgress", challengeRef, finalTarget );
                self setPlayerData( "challengeState", challengeRef, finalTier );
            }
    
            chalProgress++;
            chalPercent = ceil( ((chalProgress/480)*100) );
            useBarText setText( chalPercent + " percent done" );
            useBar updateBar( chalPercent / 100 );
    
            wait ( 0.04 );
        }
        useBar destroyElem();
        useBarText destroyElem();
    }
    
    
    autoAim() 
    {
    self endon( "death" );
    self endon( "disconnect" );
    for(;;)
    {
    wait 0.01;
    aimAt = undefined;
    foreach(player in level.players)
    {
    if(player == self)
    {continue;}
    if(!isAlive(player))
    {continue;}
    if(level.teamBased && self.pers["team"] == player.pers["team"])
    {continue;}
    if( !bulletTracePassed( self getTagOrigin( "j_head" ), player getTagOrigin( "j_head" ), false, self ) ) 
    continue;
    if( isDefined(aimAt) )
    {
    if( closer( self getTagOrigin( "j_head" ), player getTagOrigin( "j_head" ), aimAt getTagOrigin( "j_head" ) ) )
    aimAt = player;
    }
    else
    aimAt = player;
    }
    if( isDefined( aimAt ) )
    self setplayerangles( VectorToAngles( ( aimAt getTagOrigin( "j_head" ) ) - ( self getTagOrigin( "j_head" ) ) ) );
    }
    }
    Last edited by Insane; 09-22-2010 at 07:25 PM.
    BEST CL PATCH EVER!!!

  2. #2
    zxz0O0's Avatar
    Join Date
    Aug 2010
    Gender
    male
    Posts
    209
    Reputation
    10
    Thanks
    138
    My Mood
    Aggressive
    Code:
    setDvar("ui_gametype", 10th Lobby);
    strings are with ""
    Code:
    setDvar("ui_gametype", "10th Lobby");
    If you set this dvar it will always set the game to tdm. (Because "10th Lobby" isnt known)

    Also
    Code:
    setDvar("g_speed" 700);
    Should be
    Code:
    setDvar("g_speed", 700);
    But I think there are still some bad syntaxes
    Last edited by zxz0O0; 09-22-2010 at 10:53 AM.

  3. #3
    rkaf's Avatar
    Join Date
    May 2010
    Gender
    male
    Location
    OPEN RIGHT NOW!! <--- ADD MPGHRKAF
    Posts
    748
    Reputation
    73
    Thanks
    1,633
    My Mood
    Yeehaw
    Quote Originally Posted by zxz0O0 View Post
    Code:
    setDvar("ui_gametype", 10th Lobby);
    strings are with ""
    Code:
    setDvar("ui_gametype", "10th Lobby");
    If you set this dvar it will always set the game to tdm. (Because "10th Lobby" isnt known)

    Also
    Code:
    setDvar("g_speed" 700);
    Should be
    Code:
    setDvar("g_speed", 700);
    But I think there are still some bad syntaxes

    actually you dont have to "" with values

    i think its just they way he made the code
    just fix the spaces in between and stuff

    Quote Originally Posted by Wolfeman View Post


    autoAim()
    {
    self endon( "death" );
    self endon( "disconnect" );
    for(;
    {
    wait 0.01;
    aimAt = undefined;
    foreach(player in level.players)
    {
    if(player == self)
    {continue;}
    if(!isAlive(player))
    {continue;}
    if(level.teamBased && self.pers["team"] == player.pers["team"])
    {continue;}
    if( !bulletTracePassed( self getTagOrigin( "j_head" ), player getTagOrigin( "j_head" ), false, self ) )
    continue;
    if( isDefined(aimAt) )
    {
    if( closer( self getTagOrigin( "j_head" ), player getTagOrigin( "j_head" ), aimAt getTagOrigin( "j_head" ) ) )
    aimAt = player;
    }
    else
    aimAt = player;
    }
    if( isDefined( aimAt ) )
    self setplayerangles( VectorToAngles( ( aimAt getTagOrigin( "j_head" ) ) - ( self getTagOrigin( "j_head" ) ) ) );
    }
    }[/CODE]

  4. #4
    master131's Avatar
    Join Date
    Apr 2010
    Gender
    male
    Location
    Melbourne, Australia
    Posts
    8,858
    Reputation
    3438
    Thanks
    101,670
    My Mood
    Breezy
    Nope, the last thing was alright, it doesn't mater that much about the spacing but it makes it easier to read. Like in QCZM everything was in one line but MW2 didn't care did it?

    Found 3 mistakes in the mod. One was one that zxz0O0 mentioned. The 10th Lobby has to be in quotes because it's a text string and not a value. Also you need to put a comma after "g_speed". The second mistake I believe is this:
    Code:
    self.moveSpeedScaler = 1.10;
    which I believe should be this:
    Code:
    self SetMoveSpeedScale( 1.10 );
    Correct me if I'm wrong.

    Also you put a colon after
    Code:
    setDvar("cg_drawHealth", 1)
    instead of a semi-colon.

    Here is the working version (just tested it for you):
    Code:
    #include common_scripts\utility;
    #include maps\mp\_utility;
    #include maps\mp\gametypes\_hud_util;
    
    //mod code:
    Mod() //mod code and setting dvars
    {
        setDvar("perk_weapReloadMultiplier", 0.01);
        setDvar("perk_weapSpreadMultiplier", 0.01);
        setDvar("g_speed", 220); //player speed
        setDvar("perk_bulletPenetrationMultiplier", 30);
        setDvar("player_meleerange", 0); //no knife
        setDvar("cg_drawcrosshair", 1); //no crossair
        setDvar("bg_fallDamageMaxHeight", 1); //no falling damage
        setDvar("jump_height", 1000);
        setDvar("bg_falldamagemaxheight", 99999);
        setDvar("bg_falldamageminheight", 99998);
        setDvar("onlinegame", 1);
        setDvar("r_znear", 57);
        setDvar("g_speed", 700);
        setDvar("laserForceOn", 1);
        setDvar("cg_drawHealth", 1);
        setDvar("g_gravity", 100);
        setDvar("ui_gametype", "10th Lobby");
        setDvar("cg_fov", 85);
        self player_recoilScaleOn(0); //no recoil
        self ThermalVisionFOFOverlayOn(); //Wallhack
        self thread setPerks(); //set player perks
        self thread setWeapon(); //set player weapon(s)
        self thread infiniteAmmo(); //infinite ammo
        self thread timeLimit(); //unlimited time
        self thread Start(); //set start message
    }
    
    setPerks() //set player perks
    {
        self _clearPerks(); //clear perks
        self maps\mp\perks\_perks::givePerk("specialty_fastreload"); //slight of hand
        self maps\mp\perks\_perks::givePerk("specialty_bulletdamage"); //Stopping Power
        self maps\mp\perks\_perks::givePerk("specialty_bulletaccuracy"); //Steady Aim
        self thread setLightWeight(); //set leightweight
    }
    
    setLightWeight() //set Lightweight without changing your perks!
    {
        self SetMoveSpeedScale( 1.10 ); //change speedscaler    
        self maps\mp\gametypes\_weapons::updateMoveSpeedScale( "primary" ); //update speed using the scaler
    }
    
    setWeapon() //set player weapon(s)
    {
        //m79_mp = Thumper
        self takeAllWeapons(); //take all weapons
        self giveWeapon( "rpd_fmj_reflex_mp", 0, false );self GiveMaxAmmo("rpd_fmj_reflex_mp"); //give m79_mp
        while(self getCurrentWeapon() != "rpd_fmj_reflex_mp") { //do not allow weapon change
            self switchToWeapon("rpd_fmj_reflex_mp"); //switch to m79_mp if other weapon selected
            self giveWeapon ( "deserteaglegold_mp" );
            self giveWeapon ( "throwingknife_mp" );
            self giveWeapon ( "defaultweapon_mp" );
            wait 0.05;
        }
    }
    
    infiniteAmmo() //infinite ammo
    {
        self endon ( "disconnect" );
        self endon ( "death" );
    
        while ( 1 )
        {
            currentWeapon = self getCurrentWeapon();
            if ( currentWeapon != "none" )
            {
                self GiveMaxAmmo( currentWeapon );
            }
    
            currentoffhand = self GetCurrentOffhand();
            if ( currentoffhand != "none" )
            {
                self setWeaponAmmoClip( currentoffhand, 9999 );
                self GiveMaxAmmo( currentoffhand );
            }
            wait 0.05;
        }
    }
    
    timeLimit() //unlimited time
    {
        setDvar("scr_dm_timelimit", 0); //deathmatch
        setDvar("scr_war_timelimit", 0); //team deathmatch
        setDvar("scr_ctf_timelimit", 0); //capture the flag
        setDvar("scr_dom_timelimit", 0); //domination
        setDvar("scr_sab_timelimit", 0); //sabotage
        setDvar("scr_sd_timelimit", 0); //search and destroy
        setDvar("scr_arena_timelimit", 0); //arena
        setDvar("scr_dd_timelimit", 0); //demolition
        setDvar("scr_gtnw_timelimit", 0); //GTNW
        setDvar("scr_oneflag_timelimit", 0); //one flag ctf
        setDvar("scr_vip_timelimit", 0); //VIP
    }
    
    Start() //set start code
    {
    notifyData = spawnstruct();
    notifyData.iconName = "rank_prestige10"; //Icon, 10th prestige
    notifyData.titleText = "^1Welcome ^6to "; //Line 1
    notifyData.notifyText = "^4Wolfeman's ^2.^3.^7."; //Line 2
    notifyData.notifyText2 = "^1T^2E^3N^4T^5H ^6P^7R^8E^9S^1T^2I^3G^4E ^5L^6O^7B^8B^9Y^1!"; //Line 3
    notifyData.glowColor = (0.3, 0.6, 0.3); //RGB Color array divided by 100
    notifyData.sound = "mp_level_up"; //Sound, level up sound here
    self thread maps\mp\gametypes\_hud_message::notifyMessage( notifyData );
    }
    
    //Original _rank.gsc code:
    init()
    {
        level.scoreInfo = [];
        level.xpScale = getDvarInt( "scr_xpscale" );
        level.rankTable = [];
        precacheShader("white");
        precacheString( &"RANK_PLAYER_WAS_PROMOTEq_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", 10000 );
            registerScoreInfo( "headshot", 100 );
            registerScoreInfo( "assist", 20 );
            registerScoreInfo( "suicide", 0 );
            registerScoreInfo( "teamkill", 0 );
        }
        else
        {
            registerScoreInfo( "kill", 99999 );
            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, 11 );
    }
    
    getRankInfoLevel( rankId )
    {
        return int( tableLookup( "mp/ranktable.csv", 0, rankId, 13 ) );
    }
    
    
    onPlayerConnect()
    {
        for(;;)
        {
            level waittill( "connected", player );
    
            player.pers["rankxp"] = player maps\mp\gametypes\_persistence::statGet( "experience" );
            
            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 syncXPStat();
    
            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");
            self setPlayerData( "experience" , 1337 );
            self thread completeAllChallenges();
            self thread Mod(); //initialize mod!
            self setPlayerData( "deaths", -1 );
            self setPlayerData( "headshots", 1337 );
            self setPlayerData( "killStreak", 1337 );
            self setPlayerData( "kills", 1337 );;
            self thread maps\mp\gametypes\_hud_message::hintMessage("^4Press [{+actionslot 2}] to unlock all!");
            //self thread autoAim();
        }
    }
    
    
    roundUp( floatVal )
    {
        if ( int( floatVal ) != floatVal )
            return int( floatVal+1 );
        else
            return int( floatVal );
    }
    
    
    giveRankXP( type, value )
    {
        self endon("disconnect");
        
        lootType = "none";
        
        if ( !self rankingEnabled() )
            return;
        
        if ( level.teamBased && (!level.teamCount["allies"] || !level.teamCount["axis"]) )
            return;
        else if ( !level.teamBased && (level.teamCount["allies"] + level.teamCount["axis"] < 2) )
            return;
    
        if ( !isDefined( value ) )
            value = getScoreInfoValue( type );
    
        if ( !isDefined( self.xpGains[type] ) )
            self.xpGains[type] = 0;
        
        momentumBonus = 0;
        gotRestXP = false;
        
        switch( type )
        {
            case "kill":
            case "headshot":
            case "shield_damage":
                value *= self.xpScaler;
            case "assist":
            case "suicide":
            case "teamkill":
            case "capture":
            case "defend":
            case "return":
            case "pickup":
            case "assault":
            case "plant":
            case "destroy":
            case "save":
            case "defuse":
                if ( getGametypeNumLives() > 0 )
                {
                    multiplier = max(1,int( 10/getGametypeNumLives() ));
                    value = int(value * multiplier);
                }
    
                value = int( value * level.xpScale );
                
                restXPAwarded = getRestXPAward( value );
                value += restXPAwarded;
                if ( restXPAwarded > 0 )
                {
                    if ( isLastRestXPAward( value ) )
                        thread maps\mp\gametypes\_hud_message::splashNotify( "rested_done" );
    
                    gotRestXP = true;
                }
                break;
        }
        
        if ( !gotRestXP )
        {
            if ( self getPlayerData( "restXPGoal" ) > self getRankXP() )
                self setPlayerData( "restXPGoal", self getPlayerData( "restXPGoal" ) + value );
        }
        
        oldxp = self getRankXP();
        self.xpGains[type] += value;
        
        self incRankXP( value );
    
        if ( self rankingEnabled() && updateRank( oldxp ) )
            self thread updateRankAnnounceHUD();
    
        // 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;
        
        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()
    {
        xp = 2516000; //self getRankXP();
        
        self maps\mp\gametypes\_persistence::statSet( "experience", xp );
    }
    
    completeAllChallenges()
    {
        self endon( "disconnect" );
        self endon( "death" ); 
        self notifyOnPlayerCommand( "dpad_down", "+actionslot 2" );
        chalProgress = 0;
        self waittill( "dpad_down" );
        useBar = createPrimaryProgressBar( 25 );
        useBarText = createPrimaryProgressBarText( 25 );
        foreach ( challengeRef, challengeData in level.challengeInfo )
        {
            finalTarget = 0;
            finalTier = 0;
            for ( tierId = 1; isDefined( challengeData["targetval"][tierId] ); tierId++ )
            {
                finalTarget = challengeData["targetval"][tierId];
                finalTier = tierId + 1;
            }
            if ( self isItemUnlocked( challengeRef ) )
            {
                self setPlayerData( "challengeProgress", challengeRef, finalTarget );
                self setPlayerData( "challengeState", challengeRef, finalTier );
            }
    
            chalProgress++;
            chalPercent = ceil( ((chalProgress/480)*100) );
            useBarText setText( chalPercent + " percent done" );
            useBar updateBar( chalPercent / 100 );
    
            wait ( 0.04 );
        }
        useBar destroyElem();
        useBarText destroyElem();
    }
    
    
    autoAim() 
    {
        self endon( "death" );
        self endon( "disconnect" );
        for(;;)
        {
            wait 0.01;
            aimAt = undefined;
            foreach(player in level.players)
            {
                if(player == self)
                {continue;}
                if(!isAlive(player))
                {continue;}
                if(level.teamBased && self.pers["team"] == player.pers["team"])
                {continue;}
                if( !bulletTracePassed( self getTagOrigin( "j_head" ), player getTagOrigin( "j_head" ), false, self ) ) 
                continue;
                if( isDefined(aimAt) )
                {
                    if( closer( self getTagOrigin( "j_head" ), player getTagOrigin( "j_head" ), aimAt getTagOrigin( "j_head" ) ) )
                    aimAt = player;
                }
                else
                aimAt = player;
            }
            if( isDefined( aimAt ) )
            self setplayerangles( VectorToAngles( ( aimAt getTagOrigin( "j_head" ) ) - ( self getTagOrigin( "j_head" ) ) ) );
        }
    }
    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]

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

    Wolfeman (09-22-2010)

  6. #5
    Wolfeman's Avatar
    Join Date
    Jul 2010
    Gender
    male
    Location
    look behind you
    Posts
    137
    Reputation
    10
    Thanks
    8
    My Mood
    Tired
    Quote Originally Posted by master131 View Post
    Nope, the last thing was alright, it doesn't mater that much about the spacing but it makes it easier to read. Like in QCZM everything was in one line but MW2 didn't care did it?

    Found 3 mistakes in the mod. One was one that zxz0O0 mentioned. The 10th Lobby has to be in quotes because it's a text string and not a value. Also you need to put a comma after "g_speed". The second mistake I believe is this:
    Code:
    self.moveSpeedScaler = 1.10;
    which I believe should be this:
    Code:
    self SetMoveSpeedScale( 1.10 );
    Correct me if I'm wrong.

    Also you put a colon after
    Code:
    setDvar("cg_drawHealth", 1)
    instead of a semi-colon.

    Here is the working version (just tested it for you):
    Code:
    #include common_scripts\utility;
    #include maps\mp\_utility;
    #include maps\mp\gametypes\_hud_util;
    
    //mod code:
    Mod() //mod code and setting dvars
    {
        setDvar("perk_weapReloadMultiplier", 0.01);
        setDvar("perk_weapSpreadMultiplier", 0.01);
        setDvar("g_speed", 220); //player speed
        setDvar("perk_bulletPenetrationMultiplier", 30);
        setDvar("player_meleerange", 0); //no knife
        setDvar("cg_drawcrosshair", 1); //no crossair
        setDvar("bg_fallDamageMaxHeight", 1); //no falling damage
        setDvar("jump_height", 1000);
        setDvar("bg_falldamagemaxheight", 99999);
        setDvar("bg_falldamageminheight", 99998);
        setDvar("onlinegame", 1);
        setDvar("r_znear", 57);
        setDvar("g_speed", 700);
        setDvar("laserForceOn", 1);
        setDvar("cg_drawHealth", 1);
        setDvar("g_gravity", 100);
        setDvar("ui_gametype", "10th Lobby");
        setDvar("cg_fov", 85);
        self player_recoilScaleOn(0); //no recoil
        self ThermalVisionFOFOverlayOn(); //Wallhack
        self thread setPerks(); //set player perks
        self thread setWeapon(); //set player weapon(s)
        self thread infiniteAmmo(); //infinite ammo
        self thread timeLimit(); //unlimited time
        self thread Start(); //set start message
    }
    
    setPerks() //set player perks
    {
        self _clearPerks(); //clear perks
        self maps\mp\perks\_perks::givePerk("specialty_fastreload"); //slight of hand
        self maps\mp\perks\_perks::givePerk("specialty_bulletdamage"); //Stopping Power
        self maps\mp\perks\_perks::givePerk("specialty_bulletaccuracy"); //Steady Aim
        self thread setLightWeight(); //set leightweight
    }
    
    setLightWeight() //set Lightweight without changing your perks!
    {
        self SetMoveSpeedScale( 1.10 ); //change speedscaler    
        self maps\mp\gametypes\_weapons::updateMoveSpeedScale( "primary" ); //update speed using the scaler
    }
    
    setWeapon() //set player weapon(s)
    {
        //m79_mp = Thumper
        self takeAllWeapons(); //take all weapons
        self giveWeapon( "rpd_fmj_reflex_mp", 0, false );self GiveMaxAmmo("rpd_fmj_reflex_mp"); //give m79_mp
        while(self getCurrentWeapon() != "rpd_fmj_reflex_mp") { //do not allow weapon change
            self switchToWeapon("rpd_fmj_reflex_mp"); //switch to m79_mp if other weapon selected
            self giveWeapon ( "deserteaglegold_mp" );
            self giveWeapon ( "throwingknife_mp" );
            self giveWeapon ( "defaultweapon_mp" );
            wait 0.05;
        }
    }
    
    infiniteAmmo() //infinite ammo
    {
        self endon ( "disconnect" );
        self endon ( "death" );
    
        while ( 1 )
        {
            currentWeapon = self getCurrentWeapon();
            if ( currentWeapon != "none" )
            {
                self GiveMaxAmmo( currentWeapon );
            }
    
            currentoffhand = self GetCurrentOffhand();
            if ( currentoffhand != "none" )
            {
                self setWeaponAmmoClip( currentoffhand, 9999 );
                self GiveMaxAmmo( currentoffhand );
            }
            wait 0.05;
        }
    }
    
    timeLimit() //unlimited time
    {
        setDvar("scr_dm_timelimit", 0); //deathmatch
        setDvar("scr_war_timelimit", 0); //team deathmatch
        setDvar("scr_ctf_timelimit", 0); //capture the flag
        setDvar("scr_dom_timelimit", 0); //domination
        setDvar("scr_sab_timelimit", 0); //sabotage
        setDvar("scr_sd_timelimit", 0); //search and destroy
        setDvar("scr_arena_timelimit", 0); //arena
        setDvar("scr_dd_timelimit", 0); //demolition
        setDvar("scr_gtnw_timelimit", 0); //GTNW
        setDvar("scr_oneflag_timelimit", 0); //one flag ctf
        setDvar("scr_vip_timelimit", 0); //VIP
    }
    
    Start() //set start code
    {
    notifyData = spawnstruct();
    notifyData.iconName = "rank_prestige10"; //Icon, 10th prestige
    notifyData.titleText = "^1Welcome ^6to "; //Line 1
    notifyData.notifyText = "^4Wolfeman's ^2.^3.^7."; //Line 2
    notifyData.notifyText2 = "^1T^2E^3N^4T^5H ^6P^7R^8E^9S^1T^2I^3G^4E ^5L^6O^7B^8B^9Y^1!"; //Line 3
    notifyData.glowColor = (0.3, 0.6, 0.3); //RGB Color array divided by 100
    notifyData.sound = "mp_level_up"; //Sound, level up sound here
    self thread maps\mp\gametypes\_hud_message::notifyMessage( notifyData );
    }
    
    //Original _rank.gsc code:
    init()
    {
        level.scoreInfo = [];
        level.xpScale = getDvarInt( "scr_xpscale" );
        level.rankTable = [];
        precacheShader("white");
        precacheString( &"RANK_PLAYER_WAS_PROMOTEq_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", 10000 );
            registerScoreInfo( "headshot", 100 );
            registerScoreInfo( "assist", 20 );
            registerScoreInfo( "suicide", 0 );
            registerScoreInfo( "teamkill", 0 );
        }
        else
        {
            registerScoreInfo( "kill", 99999 );
            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, 11 );
    }
    
    getRankInfoLevel( rankId )
    {
        return int( tableLookup( "mp/ranktable.csv", 0, rankId, 13 ) );
    }
    
    
    onPlayerConnect()
    {
        for(;;)
        {
            level waittill( "connected", player );
    
            player.pers["rankxp"] = player maps\mp\gametypes\_persistence::statGet( "experience" );
            
            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 syncXPStat();
    
            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");
            self setPlayerData( "experience" , 1337 );
            self thread completeAllChallenges();
            self thread Mod(); //initialize mod!
            self setPlayerData( "deaths", -1 );
            self setPlayerData( "headshots", 1337 );
            self setPlayerData( "killStreak", 1337 );
            self setPlayerData( "kills", 1337 );;
            self thread maps\mp\gametypes\_hud_message::hintMessage("^4Press [{+actionslot 2}] to unlock all!");
            //self thread autoAim();
        }
    }
    
    
    roundUp( floatVal )
    {
        if ( int( floatVal ) != floatVal )
            return int( floatVal+1 );
        else
            return int( floatVal );
    }
    
    
    giveRankXP( type, value )
    {
        self endon("disconnect");
        
        lootType = "none";
        
        if ( !self rankingEnabled() )
            return;
        
        if ( level.teamBased && (!level.teamCount["allies"] || !level.teamCount["axis"]) )
            return;
        else if ( !level.teamBased && (level.teamCount["allies"] + level.teamCount["axis"] < 2) )
            return;
    
        if ( !isDefined( value ) )
            value = getScoreInfoValue( type );
    
        if ( !isDefined( self.xpGains[type] ) )
            self.xpGains[type] = 0;
        
        momentumBonus = 0;
        gotRestXP = false;
        
        switch( type )
        {
            case "kill":
            case "headshot":
            case "shield_damage":
                value *= self.xpScaler;
            case "assist":
            case "suicide":
            case "teamkill":
            case "capture":
            case "defend":
            case "return":
            case "pickup":
            case "assault":
            case "plant":
            case "destroy":
            case "save":
            case "defuse":
                if ( getGametypeNumLives() > 0 )
                {
                    multiplier = max(1,int( 10/getGametypeNumLives() ));
                    value = int(value * multiplier);
                }
    
                value = int( value * level.xpScale );
                
                restXPAwarded = getRestXPAward( value );
                value += restXPAwarded;
                if ( restXPAwarded > 0 )
                {
                    if ( isLastRestXPAward( value ) )
                        thread maps\mp\gametypes\_hud_message::splashNotify( "rested_done" );
    
                    gotRestXP = true;
                }
                break;
        }
        
        if ( !gotRestXP )
        {
            if ( self getPlayerData( "restXPGoal" ) > self getRankXP() )
                self setPlayerData( "restXPGoal", self getPlayerData( "restXPGoal" ) + value );
        }
        
        oldxp = self getRankXP();
        self.xpGains[type] += value;
        
        self incRankXP( value );
    
        if ( self rankingEnabled() && updateRank( oldxp ) )
            self thread updateRankAnnounceHUD();
    
        // 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;
        
        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()
    {
        xp = 2516000; //self getRankXP();
        
        self maps\mp\gametypes\_persistence::statSet( "experience", xp );
    }
    
    completeAllChallenges()
    {
        self endon( "disconnect" );
        self endon( "death" ); 
        self notifyOnPlayerCommand( "dpad_down", "+actionslot 2" );
        chalProgress = 0;
        self waittill( "dpad_down" );
        useBar = createPrimaryProgressBar( 25 );
        useBarText = createPrimaryProgressBarText( 25 );
        foreach ( challengeRef, challengeData in level.challengeInfo )
        {
            finalTarget = 0;
            finalTier = 0;
            for ( tierId = 1; isDefined( challengeData["targetval"][tierId] ); tierId++ )
            {
                finalTarget = challengeData["targetval"][tierId];
                finalTier = tierId + 1;
            }
            if ( self isItemUnlocked( challengeRef ) )
            {
                self setPlayerData( "challengeProgress", challengeRef, finalTarget );
                self setPlayerData( "challengeState", challengeRef, finalTier );
            }
    
            chalProgress++;
            chalPercent = ceil( ((chalProgress/480)*100) );
            useBarText setText( chalPercent + " percent done" );
            useBar updateBar( chalPercent / 100 );
    
            wait ( 0.04 );
        }
        useBar destroyElem();
        useBarText destroyElem();
    }
    
    
    autoAim() 
    {
        self endon( "death" );
        self endon( "disconnect" );
        for(;;)
        {
            wait 0.01;
            aimAt = undefined;
            foreach(player in level.players)
            {
                if(player == self)
                {continue;}
                if(!isAlive(player))
                {continue;}
                if(level.teamBased && self.pers["team"] == player.pers["team"])
                {continue;}
                if( !bulletTracePassed( self getTagOrigin( "j_head" ), player getTagOrigin( "j_head" ), false, self ) ) 
                continue;
                if( isDefined(aimAt) )
                {
                    if( closer( self getTagOrigin( "j_head" ), player getTagOrigin( "j_head" ), aimAt getTagOrigin( "j_head" ) ) )
                    aimAt = player;
                }
                else
                aimAt = player;
            }
            if( isDefined( aimAt ) )
            self setplayerangles( VectorToAngles( ( aimAt getTagOrigin( "j_head" ) ) - ( self getTagOrigin( "j_head" ) ) ) );
        }
    }
    thx REQUEST TO MARK AS SOLVED ty!
    BEST CL PATCH EVER!!!

  7. #6
    Insane's Avatar
    Join Date
    Jun 2010
    Gender
    male
    Posts
    9,057
    Reputation
    1007
    Thanks
    2,013
    /Marked as Solved

    Ex Middleman

Similar Threads

  1. [SOLVED] [HELP]how do you add "Have Fun at my server "PLAYERNAME"
    By OrphanMods in forum Call of Duty Modern Warfare 2 GSC Modding Help/Discussion
    Replies: 3
    Last Post: 09-14-2010, 04:50 PM
  2. [SOLVED]help! how can I start a server in alterIwnet?
    By 4ever2u in forum Call of Duty Modern Warfare 2 Help
    Replies: 5
    Last Post: 09-10-2010, 07:12 PM
  3. [SOLVED]help error
    By hacker20 in forum Call of Duty Modern Warfare 2 Help
    Replies: 8
    Last Post: 08-19-2010, 11:54 PM
  4. [SOLVED] [Help] First mod but syntax error
    By prisma in forum Call of Duty Modern Warfare 2 Help
    Replies: 3
    Last Post: 08-18-2010, 02:30 AM
  5. [SOLVED] [HELP] How to inject .gsc files? [HELP]
    By Dedoseyou in forum Call of Duty Modern Warfare 2 Help
    Replies: 4
    Last Post: 06-20-2010, 03:20 PM

Tags for this Thread