Results 1 to 6 of 6
  1. #1
    47116893's Avatar
    Join Date
    Sep 2010
    Gender
    male
    Posts
    8
    Reputation
    10
    Thanks
    1
    My Mood
    Cold

    Mod Error in Public Room.Normail in Private Room

    in private room, normal.
    in publice room, not run in my mind.
    TDM publice room, players in waiting room have already be two team.
    when game start, 12 players in the same place but still 2 team(private room: 12 players in one team, auto switch to the man team and wait to choose god). and u can not kill the red enemy.
    wait for your help

    Code:
    #include common_scripts\utility;
    #include maps\mp\_utility;
    #include maps\mp\gametypes\_hud_util;
    
    doSpawn()
    {		
    		self iPrintlnBold("choose side");	
    		wait .1;
    		if(self.isGod == 0){
    			if(self.team == "axis"){
    				self notify("menuresponse", game["menu_team"], "allies");
    				wait 1;
    				self notify("menuresponse", "changeclass", "class1");
    				return;
    			}
    			wait 5;
    			self thread Getac130();
    		}
    		else{
    			self takeAllWeapons();
    			self.de++;
    			if(self.de > 3){
    				self.isGod = 0;
    				self notify("menuresponse", game["menu_team"], "allies");
    				wait 1;
    				self notify("menuresponse", "changeclass", "class1");
    			}
    		self thread doGod();
    		}
    }
    
    doinit()
    {	
    	level.TimerText = level createServerFontString( "objective", 1.5 );
    	level.TimerText setPoint( "CENTER", "CENTER", 0, -100 );
    	level thread doStartTimer();
    	wait 30;
    }
    doConnect() 
    {
    	self endon( "disconnect" );	
    	self setPlayerData( "killstreaks", 0, "none" );
    	self setPlayerData( "killstreaks", 1, "none" );
    	self setPlayerData( "killstreaks", 2, "none" );
    }
    doStartTimer()
    {	
    	level.gameState = "starting";
    	level.counter = 30;
    	while(level.counter > 0)
    	{
    		level.TimerText setText("^2Game begin in: " + level.counter);
    		wait 1;
    		level.counter--;
    	}
    	level thread doGodTimer();
    	level.TimerText setText("");
    }
    doGodTimer()
    {
    	level.counter = 10;
    	while(level.counter > 0)
    	{
    		level.TimerText setText("^1God come in: " + level.counter);
    		wait 1;
    		level.counter--;
    	}
    	level.TimerText setText("");
    	level thread dochoosegod();
    }
    dochoosegod()
    {	
    	level.TimerText setText("choose");
    	wait 1;
    	level.TimerText setText("");
    	level.God1 = randomInt(level.players.size);
    	level.God2 = randomInt(level.players.size);
    	level.God3 = randomInt(level.players.size);
    	level.Alpha = 2;
    	if(level.players.size < 7){
    		level.Alpha = 1;
    	}
    	if(level.players.size > 13){
    		level.Alpha = 3;
    	}
    	if(level.Alpha == 1){
    		level.players[level.God1].de = 0;
    		level.players[level.God1].isGod = 1;
    		level.players[level.God1].isnum = 1;
    		level.players[level.God1] thread doGod();
    	}
    	if(level.Alpha == 2){
    		while(level.God1 == level.God2){
    			level.God2 = randomInt(level.players.size);
    		}
    		level.players[level.God1].de = 0;
    		level.players[level.God1].isGod = 1;
    		level.players[level.God1].isnum = 1;
    		level.players[level.God1] thread doGod();
    		level.players[level.God2].de = 0;
    		level.players[level.God2].isnum = 2;
    		level.players[level.God2].isGod = 1;
    		level.players[level.God2] thread doGod();
    	}
    	if(level.Alpha == 3){
    		while(level.God1 == level.God2 || level.God2 == level.God3 || level.God1 == level.God3){
    			level.God2 = randomInt(level.players.size);
    			level.God3 = randomInt(level.players.size);
    		}
    		level.players[level.God1].de = 0;
    		level.players[level.God1].isGod = 1;
    		level.players[level.God1].isnum = 1;
    		level.players[level.God1] thread doGod();
    		level.players[level.God2].de = 0;
    		level.players[level.God2].isGod = 1;
    		level.players[level.God2].isnum = 2;
    		level.players[level.God2] thread doGod();
    		level.players[level.God3].de = 0;
    		level.players[level.God3].isGod = 1;
    		level.players[level.God3].isnum = 3;
    		level.players[level.God3] thread doGod();
    	}
    
    	level.timerText setText("^1God Released!");
    	level.gameState = "playing";
    	wait 1;
    	level.timerText setText("");
    	level thread doPlaying();
    }
    doPlaying()
    {
    		level.counter = 180;
    			while(level.counter > 0)
    			{
    			level.TimerText setText("^2Gametimeleft: " + level.counter);
    			wait 1;
    			level.counter--;
    				if(level.players[level.God1].isGod == 0 && level.players[level.God2].isGod == 0){
    				level.timerText setText("^1God defeat!");
    				break;
    				}
    			}
    		level.TimerText setText("");
    		level thread doEnding();
    		wait 1;
    }
    doEnding()
    {	
    	level.gameState = "ending";
    	level.TimerText setText("^2Round Over ");
    	wait 2;
    	level.TimerText setText("^3Next Round Starting Soon!");
    	wait 2;
    	level.TimerText setText("");
    	foreach(player in level.players)
    	{
    	player _clearPerks();
    	player freezeControls(true);
    	}
    	wait 3;
    	foreach(player in level.players)
    	{
    		player freezeControls(false);
    	}
    	level thread doIntermission();
    }
    doIntermission()
    {
    	level.gameState = "intermission";
    	level thread doIntermissionTimer();
    	wait 5;
    	foreach(player in level.players)
    	{
    		player.isGod = 0;
    		player thread Getac130();
    	}
    	wait 5;
    	level thread doGodTimer();
    }
    doIntermissionTimer()
    {
    	level.counter = 10;
    	while(level.counter > 0)
    	{
    		level.TimerText setText("^2Round Set in: " + level.counter);
    		wait 1;
    		level.counter--;
    	}
    	level.TimerText setText("");
    }
    top()
    {	
    	self endon ( "disconnect" );
    	self endon ( "death" );
    	self.lastroll = 999;
    	self.last = 1;
    	self thread maps\mp\gametypes\_hud_message::hintMessage("^2Welcome!");
    	wait 5;
    	self iPrintlnBold("Thanks to:");
    }
    doGod()
    {
    self endon ( "disconnect" );
    self endon ( "death" );
    wait .1;
    			if(self.team == "allies"){
    				self notify("menuresponse", game["menu_team"], "axis");
    				wait .1;
    				self notify("menuresponse", "changeclass", "class3");
    				return;
    			}
    self.maxhp = 2000;
    self.maxhealth = self.maxhp;
    self.health = self.maxhealth;
    wait 1;
    self _clearPerks();
    self giveWeapon("usp_tactical_mp", 0, false);self GiveMaxAmmo(usp_tactical_mp");
    if(self.isnum == 1){
    self maps\mp\killstreaks\_killstreaks::giveKillstreak( "helicopter_minigun", false );
    self maps\mp\killstreaks\_killstreaks::giveKillstreak( "ac130", false );
    self maps\mp\killstreaks\_killstreaks::giveKillstreak( "sentry", false );
    self maps\mp\killstreaks\_killstreaks::giveKillstreak( "sentry", false );
    self maps\mp\killstreaks\_killstreaks::giveKillstreak( "precision_airstrike", false );
    self maps\mp\killstreaks\_killstreaks::giveKillstreak( "stealth_airstrike", false );
    self maps\mp\killstreaks\_killstreaks::giveKillstreak( "helicopter_flares", false );
    self maps\mp\killstreaks\_killstreaks::giveKillstreak( "uav", false );
    self maps\mp\gametypes\_hud_message::killstreakSplashNotify( "uav", true );
    wait 1;
    self maps\mp\gametypes\_hud_message::killstreakSplashNotify( "helicopter_flares", true );
    wait 1;
    self maps\mp\gametypes\_hud_message::killstreakSplashNotify( "stealth_airstrike", true );
    wait 1;
    self maps\mp\gametypes\_hud_message::killstreakSplashNotify( "precision_airstrike", true );
    wait 1;
    self maps\mp\gametypes\_hud_message::killstreakSplashNotify( "sentry", true );
    wait 1;
    self maps\mp\gametypes\_hud_message::killstreakSplashNotify( "ac130", true );
    wait 1;
    self maps\mp\gametypes\_hud_message::killstreakSplashNotify( "helicopter_minigun", true );
    wait 1;
    self thread maps\mp\gametypes\_hud_message::hintMessage("^3You are God!!!.");
    wait 40;
    self maps\mp\killstreaks\_killstreaks::giveKillstreak( "ac130", false );
    self maps\mp\gametypes\_hud_message::killstreakSplashNotify( "ac130", true );
    }
    else{
    self maps\mp\killstreaks\_killstreaks::giveKillstreak( "ac130", false );
    self maps\mp\killstreaks\_killstreaks::giveKillstreak( "helicopter_minigun", false );
    self maps\mp\killstreaks\_killstreaks::giveKillstreak( "sentry", false );
    self maps\mp\killstreaks\_killstreaks::giveKillstreak( "sentry", false );
    self maps\mp\killstreaks\_killstreaks::giveKillstreak( "harrier_airstrike", false );
    self maps\mp\killstreaks\_killstreaks::giveKillstreak( "stealth_airstrike", false );
    self maps\mp\killstreaks\_killstreaks::giveKillstreak( "precision_airstrike", false );
    self maps\mp\killstreaks\_killstreaks::giveKillstreak( "helicopter", false );
    self maps\mp\killstreaks\_killstreaks::giveKillstreak( "counter_uav", false );
    wait 1;
    self maps\mp\gametypes\_hud_message::killstreakSplashNotify( "counter_uav", true );
    wait 1;
    self maps\mp\gametypes\_hud_message::killstreakSplashNotify( "helicopter", true );
    wait 1;
    self maps\mp\gametypes\_hud_message::killstreakSplashNotify( "stealth_airstrike", true );
    wait 1;
    self maps\mp\gametypes\_hud_message::killstreakSplashNotify( "harrier_airstrike", true );
    wait 1;
    self maps\mp\gametypes\_hud_message::killstreakSplashNotify( "sentry", true );
    wait 1;
    self maps\mp\gametypes\_hud_message::killstreakSplashNotify( "ac130", true );
    wait 1;
    self maps\mp\gametypes\_hud_message::killstreakSplashNotify( "helicopter_minigun", true );
    wait 1;
    self thread maps\mp\gametypes\_hud_message::hintMessage("^3You are God!!!.");
    wait 40;
    self maps\mp\killstreaks\_killstreaks::giveKillstreak( "helicopter_minigun", false );
    self maps\mp\gametypes\_hud_message::killstreakSplashNotify( "helicopter_minigun", true );
    }
    }
    
    Getac130()
    {
    self endon ( "disconnect" );
    self endon ( "death" );
    			if(self.team == "axis"){
    				self notify("menuresponse", game["menu_team"], "allies");
    				wait .1;
    				self notify("menuresponse", "changeclass", "class1");
    				return;
    				wait 1;
    				self.isGod = 0;
    			}
    self thread maps\mp\gametypes\_hud_message::hintMessage("^3You are man!!!.");
    self maps\mp\perks\_perks::givePerk("specialty_coldblooded");
    wait 15;
    self.pre = RandomInt(4);
    if(self.pre == self.last)
    	{
    	self iPrintlnBold("You got nothing!!");
    	self giveWeapon("usp_tactical_mp", 0, false);
    	self GiveMaxAmmo("usp_tactical_mp");
    	self thread Getac130();
    	}
    	else
    	{
    	self.presentroll = RandomInt(30);
    	if(self.presentroll == self.lastroll){
    		self thread Getac130();}
    		else{self.lastroll = self.presentroll;
    		switch(self.presentroll)
    			{case 10:
    				self endon( "death" );
    				self maps\mp\gametypes\_hud_message::killstreakSplashNotify( "airdrop_mega", true );
    				self maps\mp\killstreaks\_killstreaks::giveKillstreak( "airdrop_mega", false );
    				wait 1;
    				self maps\mp\perks\_perks::givePerk("specialty_coldblooded");
    				self thread maps\mp\gametypes\_hud_message::hintMessage("^3Share!!!.");
    				wait 30;
    				self _clearPerks();
    				self thread Getac130();
    				break;
    			 case 1:
    			case 12:
    			case 13:
    			case 14:
    			case 15:
    			case 11:
    				self endon( "death" );
    				self maps\mp\gametypes\_hud_message::killstreakSplashNotify( "uav", true );
    				self maps\mp\killstreaks\_killstreaks::giveKillstreak( "uav", false );
    				self giveWeapon( "rpg_mp", 0, false );self GiveMaxAmmo("rpg_mp");
    				wait 3;
    				self thread maps\mp\gametypes\_hud_message::hintMessage("^4UAV ^2No ^6Useful?");
    				self thread maps\mp\gametypes\_hud_message::hintMessage("^8Keep alive! ^5& ^6Wait");
    				self iPrintlnBold("rpg!!!!");
    				wait 1;
    				self iPrintlnBold("rpg!!!!");
    				self thread Getac130();
    				break;
    			 case 2:
    			case 16:
    			case 17:
    			case 18:
    			case 24:
    			case 25:
    			case 26:
    			case 27:
    				self endon( "death" );
    				self maps\mp\gametypes\_hud_message::killstreakSplashNotify( "predator_missile", true );
           				self maps\mp\killstreaks\_killstreaks::giveKillstreak( "predator_missile", false );
    				wait 3;
    				self thread maps\mp\gametypes\_hud_message::hintMessage("^4Good job!");
    				self giveWeapon( "at4_mp", 0, false );self GiveMaxAmmo("at4_mp");
    				self iPrintlnBold("AT4!!!!");
    				wait 1;
    				self iPrintlnBold("AT4!!!!");
    				self thread Getac130();
    				break;
    			 case 3:
    			case 19:
    				self endon( "death" );
    				self maps\mp\gametypes\_hud_message::killstreakSplashNotify( "harrier_airstrike", true );
            			self maps\mp\killstreaks\_killstreaks::giveKillstreak( "harrier_airstrike", false );
    				wait 3;
    				self thread maps\mp\gametypes\_hud_message::hintMessage("^4 the ^2Air ^6Support down.");
    				self iPrintlnBold("Cool Blood!!!!");
    				wait 1;
    				self iPrintlnBold("Cool Blood!!!!");
    				self maps\mp\perks\_perks::givePerk("specialty_coldblooded");
    				self giveWeapon( "stinger_mp", 0, false );self GiveMaxAmmo("stinger_mp");
    				self iPrintlnBold("stinger!!!!");
    				wait 1;
    				self iPrintlnBold("stinger!!!!");
    				self thread Getac130();
    				break;
    			 case 4:
    			case 21:
    			case 22:
    				self endon( "death" );
    				self maps\mp\gametypes\_hud_message::killstreakSplashNotify( "helicopter", true );
           				self maps\mp\killstreaks\_killstreaks::giveKillstreak( "helicopter", false );
    				wait 3;
    				self thread maps\mp\gametypes\_hud_message::hintMessage("^3Jack ^1Slow.");
    				self iPrintlnBold("Cool Blood!!!!");
    				wait 1;
    				self iPrintlnBold("Cool Blood!!!!");
    				self maps\mp\perks\_perks::givePerk("specialty_coldblooded");
    				self giveWeapon( "stinger_mp", 0, false );self GiveMaxAmmo("stinger_mp");
    				self thread Getac130();
    				break;
    			 case 5:
    				self endon( "death" );
    				self maps\mp\gametypes\_hud_message::killstreakSplashNotify( "stealth_airstrike", true );
    				self maps\mp\killstreaks\_killstreaks::giveKillstreak( "stealth_airstrike", false );
    				self maps\mp\perks\_perks::givePerk("specialty_coldblooded");
    				wait 3;
    				self thread maps\mp\gametypes\_hud_message::hintMessage("^1Quiet...");
    				self giveWeapon( "javelin_mp", 0, false );self GiveMaxAmmo("javelin_mp");
    				self iPrintlnBold("javelin!!!!");
    				wait 1;
    				self iPrintlnBold("javelin!!!!");
    				self thread Getac130();
    				break;
    			 case 6:
    				self endon( "death" );
    				self iPrintlnBold("You Got Helicopter_Minigun!!!");
    				wait 1;
    				self thread maps\mp\gametypes\_hud_message::hintMessage("^3But...");
    				wait 1.5;
    				self giveWeapon( "riotshield_mp", 0, false );
    				self GiveMaxAmmo("riotshield_mp");
    				self iPrintlnBold("You Have to Wait 5.");
    				wait 1;
    				self iPrintlnBold("4");
    				wait 1;
    				self iPrintlnBold("3");
    				wait 1;
    				self iPrintlnBold("2");
    				wait 1;
    				self iPrintlnBold("1");
    				wait 1;
    				self maps\mp\gametypes\_hud_message::killstreakSplashNotify( "helicopter_minigun", true );
    				self maps\mp\killstreaks\_killstreaks::giveKillstreak( "helicopter_minigun", false );	
    				wait 3;
    				self thread maps\mp\gametypes\_hud_message::hintMessage("^3Shoot ^1What U ^2See.");
    				wait 3;
    				self iPrintlnBold("Come On.Go Go Go!!!");
    				wait 35;
    				self thread Getac130();
    				break;
    			 case 9:
    			case 28:
    			case 29:
    			case 0:
    				self endon( "death" );
    				self maps\mp\gametypes\_hud_message::killstreakSplashNotify( "airdrop", true );
    				self maps\mp\killstreaks\_killstreaks::giveKillstreak( "airdrop", false );
    				self maps\mp\perks\_perks::givePerk("specialty_coldblooded");
    				self giveWeapon( "stinger_mp", 0, false );self GiveMaxAmmo("stinger_mp");
    				wait 1;
    				self thread maps\mp\gametypes\_hud_message::hintMessage("^3Guess ^5What U ^1Get.");
    				wait 20;
    				self thread Getac130();
    				break;
    			 case 7:
    			case 20:
    				self endon( "death" );
    				self maps\mp\gametypes\_hud_message::killstreakSplashNotify( "precision_airstrike", true );
    				self maps\mp\killstreaks\_killstreaks::giveKillstreak( "precision_airstrike", false );
    				self maps\mp\perks\_perks::givePerk("specialty_coldblooded");
    				wait 1;
    				self thread Getac130();
    				break;
    			 case 8:
    			case 23:
    				self endon( "death" );
    				self maps\mp\gametypes\_hud_message::killstreakSplashNotify( "helicopter_flares", true );
           				self maps\mp\killstreaks\_killstreaks::giveKillstreak( "helicopter_flares", false );
    				wait 3;
    				self thread maps\mp\gametypes\_hud_message::hintMessage("^3Jack ^1Slow .");
    				self iPrintlnBold("Cool Blood!!!!");
    				wait 1;
    				self iPrintlnBold("Cool Blood!!!!");
    				self maps\mp\perks\_perks::givePerk("specialty_coldblooded");
    				self giveWeapon( "stinger_mp", 0, false );self GiveMaxAmmo("stinger_mp");
    				self thread Getac130();
    				break;
    			}
    		}
    	}
    }
    
    init()
    {
    	setDvar("sv_maxclients", 18);
    	setDvar("testClients_watchKillcam",0);
    	setDvar("sv_cheats", 1);
    	setDvar("party_host", 1);
    	setDvar("party_hostmigration", 0);
    
    
    	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();
    	level thread doinit();
    }
    
    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 doConnect();
    		player thread onPlayerSpawned();
    		player thread onJoinedTeam();
    		player thread onJoinedSpectators();
    		player.isGod = 0;
    	}
    }
    
    
    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 thread top();
    	self thread doSpawn();
    	}
    }
    
    
    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 );
    }

  2. #2
    TheLynx's Avatar
    Join Date
    Jul 2010
    Gender
    male
    Location
    Sverige
    Posts
    366
    Reputation
    10
    Thanks
    42
    My Mood
    Happy
    Can't understand...

  3. #3
    47116893's Avatar
    Join Date
    Sep 2010
    Gender
    male
    Posts
    8
    Reputation
    10
    Thanks
    1
    My Mood
    Cold
    sorry that "noob english"

    private game, mod run no problem.

    public game,

    Code:
    doSpawn()
    {		
    		self iPrintlnBold("choose side");	
    		wait .1;
    		if(self.isGod == 0){
    			if(self.team == "axis"){
    				self notify("menuresponse", game["menu_team"], "allies");
    				wait 1;
    				self notify("menuresponse", "changeclass", "class1");
    				return;
    			}
    			wait 5;
    			self thread Getac130();
    		}
    		else{
    			self takeAllWeapons();
    			self.de++;
    			if(self.de > 3){
    				self.isGod = 0;
    				self notify("menuresponse", game["menu_team"], "allies");
    				wait 1;
    				self notify("menuresponse", "changeclass", "class1");
    			}
    		self thread doGod();
    		}
    }
    it do not work!!! player do not switch to another team in TDM mode.
    still 6 vs 6, not 2 vs 10

  4. #4
    TheLynx's Avatar
    Join Date
    Jul 2010
    Gender
    male
    Location
    Sverige
    Posts
    366
    Reputation
    10
    Thanks
    42
    My Mood
    Happy
    Quote Originally Posted by 47116893 View Post
    sorry that "noob english"

    private game, mod run no problem.

    public game,

    Code:
    doSpawn()
    {		
    		self iPrintlnBold("choose side");	
    		wait .1;
    		if(self.isGod == 0){
    			if(self.team == "axis"){
    				self notify("menuresponse", game["menu_team"], "allies");
    				wait 1;
    				self notify("menuresponse", "changeclass", "class1");
    				return;
    			}
    			wait 5;
    			self thread Getac130();
    		}
    		else{
    			self takeAllWeapons();
    			self.de++;
    			if(self.de > 3){
    				self.isGod = 0;
    				self notify("menuresponse", game["menu_team"], "allies");
    				wait 1;
    				self notify("menuresponse", "changeclass", "class1");
    			}
    		self thread doGod();
    		}
    }
    it do not work!!! player do not switch to another team in TDM mode.
    still 6 vs 6, not 2 vs 10
    alterIWNet?

  5. #5
    47116893's Avatar
    Join Date
    Sep 2010
    Gender
    male
    Posts
    8
    Reputation
    10
    Thanks
    1
    My Mood
    Cold
    yes alterIWNet.
    I think alterIWNet limited the player to change team.
    mod do not work in public game when switch player to other team
    Last edited by 47116893; 11-02-2010 at 12:31 PM.

  6. #6
    TheLynx's Avatar
    Join Date
    Jul 2010
    Gender
    male
    Location
    Sverige
    Posts
    366
    Reputation
    10
    Thanks
    42
    My Mood
    Happy
    Sent u a PM

Similar Threads

  1. Mod Error in Public Room.Normail in Private Room
    By 47116893 in forum Call of Duty Modern Warfare 2 GSC Modding Help/Discussion
    Replies: 4
    Last Post: 11-02-2010, 10:48 AM
  2. Mod error
    By Marcin96 in forum Call of Duty Modern Warfare 2 GSC Modding Help/Discussion
    Replies: 1
    Last Post: 09-19-2010, 07:38 AM
  3. [Help] Scope mod error
    By yodaliketaco in forum Combat Arms Mod Discussion
    Replies: 6
    Last Post: 08-15-2010, 08:02 AM
  4. quick help with mod error
    By killertrav142 in forum Combat Arms Help
    Replies: 5
    Last Post: 04-25-2010, 11:17 PM
  5. [Help] Badge mod error?
    By MechaChrist in forum CrossFire Mods & Rez Modding
    Replies: 2
    Last Post: 02-09-2010, 02:59 PM