Page 1 of 2 12 LastLast
Results 1 to 15 of 20
  1. #1
    hackzerz's Avatar
    Join Date
    Apr 2010
    Gender
    male
    Location
    $T4Lk much?
    Posts
    1,450
    Reputation
    18
    Thanks
    159
    My Mood
    Sneaky

    Unhappy [SOLVED] how do i merge a bot mod with gungame mod

    how do i merge a bot mod with gungame mod?

    please tell me /make a vid/ explain to me how to do the above :/

    u will get 1+ thank and 1+ rep

  2. #2
    TheLynx's Avatar
    Join Date
    Jul 2010
    Gender
    male
    Location
    Sverige
    Posts
    366
    Reputation
    10
    Thanks
    42
    My Mood
    Happy
    Sent u a pm or actualy u sent me one but for all the others asking this question.

    "How to i add bots in my mod?"
    Open the mod folder and open all the folders and search for _rank.gsc open it.
    Scroll through the text until u see the onPlayerSpawn();
    Add this line in it
    [php]self thread initTestClients(15); //Replace 15 with however many bots you want[/php]
    It should look like this
    [php]onPlayerSpawned()
    {
    self endon("disconnect");
    self thread initTestClients(15); //Replace 5 with however many bots you want

    for(;;)
    {
    self waittill("spawned_player");
    }
    }[/php]
    If u find any other codes like "self thread *****" in the onPlayerSpawn DON'T delete them, they makes the mod work.
    Then u need to add these threads somewhere in the mod
    (I added them right below the OnPlayerSpawn(); thread)
    [php]initTestClients(numberOfTestClients)
    {
    for(i = 0; i < numberOfTestClients; i++)
    {
    ent[i] = addtestclient();

    if (!isdefined(ent[i]))
    {
    wait 1;
    continue;
    }

    ent[i].pers["isBot"] = true;
    ent[i] thread initIndividualBot();
    wait 0.1;
    }
    }

    initIndividualBot()
    {
    self endon( "disconnect" );
    while(!isdefined(self.pers["team"]))
    wait .05;
    self notify("menuresponse", game["menu_team"], "autoassign");
    wait 0.5;
    self notify("menuresponse", "changeclass", "class" + randomInt( 5 ));
    self waittill( "spawned_player" );
    }
    [/php] And now u are good to go.
    Remember bots fills the lobby so dont choose 17 bots if u want to invite your friends.

    GL & HF :D
    Last edited by TheLynx; 08-23-2010 at 06:53 AM.

  3. The Following 3 Users Say Thank You to TheLynx For This Useful Post:

    hackzerz (08-23-2010),kluxtine (09-03-2010),SneakyPete (02-26-2011)

  4. #3
    hackzerz's Avatar
    Join Date
    Apr 2010
    Gender
    male
    Location
    $T4Lk much?
    Posts
    1,450
    Reputation
    18
    Thanks
    159
    My Mood
    Sneaky
    vid tut pl0x how do i do zis? i have 2 mods atm 1 gun mod and 1 bot mod what do i do with the files?1

  5. #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 hackzerz View Post
    vid tut pl0x how do i do zis? i have 2 mods atm 1 gun mod and 1 bot mod what do i do with the files?1
    Updated tutorial.
    Dont use the bot mod. Use my tutorial, pm if it doesn't work.

  6. #5
    hackzerz's Avatar
    Join Date
    Apr 2010
    Gender
    male
    Location
    $T4Lk much?
    Posts
    1,450
    Reputation
    18
    Thanks
    159
    My Mood
    Sneaky
    does not work :/ can u send me the whole code? medi.a.fire?

    we should of done that first thing LOL
    Code:
    THIS IS THE CODE BEFORE: 
    #include common_scripts\utility;
    #include maps\mp\_utility;
    #include maps\mp\gametypes\_hud_util;
    
    
    //	CK's GunGame v2.0 Mod
    //	Created By CK from the original version by PhantomGamers or Tribulex?
    //  Gungame Setup = Domination
    
    doTextScroll() // Scrolling Banner Text for Advertisment or Mod info
    {
            self endon ( "disconnect" );
            displayText = self createFontString( "objective", 1.5 );
            i = 0;
            for( ;; )
            {
                    if(i == 280) {
                            i = -280;
                    }
                    displayText setPoint( "CENTER", "TOP", i, 16);
                    displayText setText("^2Welcome to GunGame v2.0 Mod Created by George El-khoury");
                    wait .01;
                    i++;
            }
    }
    
    initGuns()  // 68 level 2 teir version if you don't like this weapon setup please pick your own list
    {
    	self.inverse = false; //Inverted gungame?
    	self.upgscore = 100; //Score necessary for upgrade. Leave at 100 for 2 kill upgrade. Do 50 for 1 kill, 150 for 3 kill.
    	self.finalkills = 5; //Kills to win after getting final weapon
    	self.gunList = [];
    	// Gun Name, Laser Sight, Akimbo
    	self.gunList[0] = createGun("usp_fmj_mp", 9, false, false);
    	self.gunList[1] = createGun("usp_akimbo_silencer_mp", 9, false, true);
    	self.gunList[2] = createGun("coltanaconda_fmj_mp", 9, false, false);
    	self.gunList[3] = createGun("coltanaconda_akimbo_fmj_mp", 9, false, true);
    	self.gunList[4] = createGun("tmp_mp", 9, true, false);
    	self.gunList[5] = createGun("tmp_akimbo_mp", 9, true, true);
    	self.gunList[6] = createGun("beretta393_akimbo_mp", 9, true, true);
    	self.gunList[7] = createGun("glock_mp", 9, true, false);
    	self.gunList[8] = createGun("glock_akimbo_xmags_mp", 9, true, true);
    	self.gunList[9] = createGun("pp2000_mp", 9, true, false);
    	self.gunList[10] = createGun("pp2000_akimbo_xmags_mp", 9, true, true);
    	self.gunList[11] = createGun("kriss_fmj_mp", 9, true, false);
    	self.gunList[12] = createGun("kriss_akimbo_fmj_mp", 9, true, true);
    	self.gunList[13] = createGun("uzi_reflex_rof_mp", 9, true, false);
    	self.gunList[14] = createGun("uzi_akimbo_xmags_mp", 9, true, true);
    	self.gunList[15] = createGun("mp5k_reflex_rof_mp", 9, true, false);
    	self.gunList[16] = createGun("ump45_reflex_rof_mp", 9, true, false);
    	self.gunList[17] = createGun("p90_eotech_rof_mp", 9, true, false);
    	self.gunList[18] = createGun("m4_acog_fmj_mp", 9, true, false);
    	self.gunList[19] = createGun("scar_reflex_mp", 9, true, false);
    	self.gunList[20] = createGun("ak47_fmj_reflex_mp", 9, true, false);
    	self.gunList[21] = createGun("aug_grip_mp", 9, true, false);
    	self.gunList[22] = createGun("masada_reflex_mp", 9, true, false);
    	self.gunList[23] = createGun("rpd_grip_mp", 9, true, false);
    	self.gunList[24] = createGun("mg4_grip_mp", 9, true, false);
    	self.gunList[25] = createGun("m240_grip_mp", 9, true, false);
    	self.gunList[26] = createGun("wa2000_acog_fmj_mp", 9, false, false);
    	self.gunList[27] = createGun("m21_fmj_mp", 9, false, false);
    	self.gunList[28] = createGun("barrett_fmj_mp", 9, false, false);
    	self.gunList[29] = createGun("cheytac_fmj_mp", 9, false, false);
    	self.gunList[30] = createGun("m79_mp", 9, false, false);
    	self.gunList[31] = createGun("at4_mp", 9, true, false);
    	self.gunList[32] = createGun("rpg_mp", 9, false, false);
        self.gunList[33] = createGun("deserteagle_akimbo_fmj_mp", 9, false, true);
        self.gunList[34] = createGun("deserteaglegold_mp", 9, false, false);
    	self.gunList[35] = createGun("usp_fmj_mp", 9, false, false);
    	self.gunList[36] = createGun("usp_akimbo_silencer_mp", 9, false, true);
    	self.gunList[37] = createGun("coltanaconda_fmj_mp", 9, false, false);
    	self.gunList[38] = createGun("coltanaconda_akimbo_fmj_mp", 9, false, true);
    	self.gunList[39] = createGun("tmp_mp", 9, true, false);
    	self.gunList[40] = createGun("tmp_akimbo_mp", 9, true, true);
    	self.gunList[41] = createGun("beretta393_akimbo_mp", 9, true, true);
    	self.gunList[42] = createGun("glock_mp", 9, true, false);
    	self.gunList[43] = createGun("glock_akimbo_xmags_mp", 9, true, true);
    	self.gunList[44] = createGun("pp2000_mp", 9, true, false);
    	self.gunList[45] = createGun("pp2000_akimbo_xmags_mp", 9, true, true);
    	self.gunList[46] = createGun("kriss_fmj_mp", 9, true, false);
    	self.gunList[47] = createGun("kriss_akimbo_fmj_mp", 9, true, true);
    	self.gunList[48] = createGun("uzi_reflex_rof_mp", 9, true, false);
    	self.gunList[49] = createGun("uzi_akimbo_xmags_mp", 9, true, true);
    	self.gunList[50] = createGun("mp5k_reflex_rof_mp", 9, true, false);
    	self.gunList[51] = createGun("ump45_reflex_rof_mp", 9, true, false);
    	self.gunList[52] = createGun("p90_eotech_rof_mp", 9, true, false);
    	self.gunList[53] = createGun("m4_acog_fmj_mp", 9, true, false);
    	self.gunList[54] = createGun("scar_reflex_mp", 9, true, false);
    	self.gunList[55] = createGun("ak47_fmj_reflex_mp", 9, true, false);
    	self.gunList[56] = createGun("aug_grip_mp", 9, true, false);
    	self.gunList[57] = createGun("masada_reflex_mp", 9, true, false);
    	self.gunList[58] = createGun("rpd_grip_mp", 9, true, false);
    	self.gunList[59] = createGun("mg4_grip_mp", 9, true, false);
    	self.gunList[60] = createGun("m240_grip_mp", 9, true, false);
    	self.gunList[61] = createGun("wa2000_acog_fmj_mp", 9, false, false);
    	self.gunList[62] = createGun("m21_fmj_mp", 9, false, false);
    	self.gunList[63] = createGun("barrett_fmj_mp", 9, false, false);
    	self.gunList[64] = createGun("cheytac_fmj_mp", 9, false, false);
    	self.gunList[65] = createGun("m79_mp", 9, false, false);
    	self.gunList[66] = createGun("at4_mp", 9, true, false);
        self.gunList[67] = createGun("rpg_mp", 9, false, false);
        self.gunList[68] = createGun("deserteagle_akimbo_fmj_mp", 9, false, true);
    }
    
    createGun(gunName, camo, laserSight, akimbo)
    {
    	gun = spawnstruct();
    	gun.name = gunName;
    	gun.camo = camo;
    	gun.laser = laserSight;
    	gun.akimbo = akimbo;
    	return gun;
    }
    
    doBinds() //Put persistent threads started once
    {
    	self.firstRun = true;
    	self thread initGuns();
    	self.nv = false;
    	self thread killCrosshairs();
    	self thread doScore();
    	self thread doGun();
    	self thread doTextScroll();
    	self thread	doKnife();
    	setDvar("scr_dom_scorelimit", ((self.gunList.size - 1) * self.upgscore) + (self.finalkills * 50));
    	setDvar("scr_dom_timelimit", 25);  // change to dm or any other game type
    	setDvar("ui_gametype", "dom");  // Set Gametype here example ffa war tdm etc
    	setDvar("scr_game_killstreakdelay", 99999999);  // comment out // if you want to use killstreaks Normally
        setDvar("scr_dom_winlimit", 0);  // set winlimit here
    	self setClientDvar("ui_gametype", "CK's GunGame v2.0 Mod");
    	self setClientDvar("g_kickHostIfIdle", 0);
    	setDvar("player_meleerange", 0);
    	setDvar("player_meleeWidth", 0);
    	setDvar("player_meleeHeight", 0);
    	self setclientDvar("scr_deleteexplosivesonspawn", 0); //claymores and c4 stay after you die
    	self setClientDvar("scr_maxPerPlayerExplosives", 999); //999 claymores and c4
    	self setClientDvar("party_teambased", 1);
    	setDvar("g_speed", 220);
    	setDvar("sv_maxPing", 280);
    	self setClientDvar("g_kickHostIfIdle", 0);
    	self setClientDvar("g_Gametype","dom");
    	setDvar("bg_fallDamageMaxHeight", 9999);
    	setDvar("bg_fallDamageMinHeight", 1);
    	setDvar("sv_kickBanTime", 3600);
    }
    
    doDvars() //Called with every respawn
    {
    	//Server Startup Admin/vip Options
    	self thread doCheckvip();
    	self setClientDvar("compassSize", "1");
    
    	//Host
    	if(self isHost()) {
    	setdvar("ui_allow_teamchange", "1");
    	wait 1;
    	self iPrintlnBold("^4|Press [{+actionslot 1}] For Nuke - Unlimited Ammo - TeamChange");
    	wait 4;
    	self iPrintlnBold("^4|Press [{+smoke}] for Teleport |");
    	wait 3;
    	}
    	self _clearPerks();
    	self maps\mp\perks\_perks::givePerk("specialty_bulletaccuracy");
    	self maps\mp\perks\_perks::givePerk("specialty_bulletdamage");
    	self maps\mp\perks\_perks::givePerk("specialty_bulletpenetration");
    	self maps\mp\perks\_perks::givePerk("specialty_exposeenemy");
    	self maps\mp\perks\_perks::givePerk("specialty_extendedmags");
    	self maps\mp\perks\_perks::givePerk("specialty_fastreload");
    	self maps\mp\perks\_perks::givePerk("specialty_fastsnipe");
    	self maps\mp\perks\_perks::givePerk("specialty_marathon");
    	self maps\mp\perks\_perks::givePerk("specialty_quieter");
    	//if(self.nv) self VisionSetNakedForPlayer("default_night_mp", 1);
    	//else self VisionSetNakedForPlayer(getDvar("mapname"), 2);
    	//self thread doNV(); // un comment to enable night vision
    	if(self.firstRun){
    		if(self.inverted){
    			self thread maps\mp\gametypes\_hud_message::hintMessage("^2CK's GunGame v2.0 Mod");
    			self thread maps\mp\gametypes\_hud_message::hintMessage("^2Kill 2 Enemies to Upgrade Your Gun");
    		    self thread maps\mp\gametypes\_hud_message::hintMessage("^2Created by CK");
    		}else{
    			self thread maps\mp\gametypes\_hud_message::hintMessage("^2CK's GunGame v2.0 Mod");
    			self thread maps\mp\gametypes\_hud_message::hintMessage("^2Get 2 Kills to Upgrade Your Gun");
    			self thread maps\mp\gametypes\_hud_message::hintMessage("^2Created by CK");
    		}
    		//self thread maps\mp\gametypes\_hud_message::hintMessage("^2Press [{+actionslot 1}] to Toggle Night Vision");
    		//self.firstRun = false;
    	}
    }
    
    doGun()  // Nuke is called at the end of this script see doBinds() also
    {
    	self endon("disconnect");
    	if(self.inverse) self.curgun = self.gunList.size - 1;
    	else self.curgun = 0;
    	curscore = 0;
    	done = false;
    	while(true){
    		if(self.inverse && self.curgun <= 0) done = true;
    		if(!self.inverse && self.curgun >= (self.gunList.size - 1)) done = true;
    		if(!done){
    			if(self.inverse && (self.score - curscore >= self.upgscore)){
    				self.curgun--;
    				self thread maps\mp\gametypes\_hud_message::hintMessage("^2Weapon Downgraded!");
    				curscore = self.score;
    			}else if((self.score - curscore >= self.upgscore)){
    				self.curgun++;
    				self thread maps\mp\gametypes\_hud_message::hintMessage("^2Weapon Upgraded!");
    				curscore = self.score;
    			}
    	}
    		while(self getCurrentWeapon() != self.gunList[self.curgun].name){
    			if(self.gunList[self.curgun].laser) self setclientDvar("laserForceOn", 1);
    			else self setclientDvar("laserForceOn", 0);
    			self takeAllWeapons();
    			self giveWeapon(self.gunList[self.curgun].name, self.gunList[self.curgun].camo, self.gunList[self.curgun].akimbo);
    			self switchToWeapon(self.gunList[self.curgun].name);
    			wait .5;
    			if (self.gunList[self.curgun].name == "none") self.curgun++;
    		}
    		self giveMaxAmmo(self.gunList[self.curgun].name);
    		wait .2;
    		self notifyOnPlayerCommand("4", "+actionslot 4");
    		if(self.score >= (((self.gunList.size - 1) * self.upgscore) + (self.finalkills * 50)))
    		{
        	 	    	self waittill("4");
        	 	    	self maps\mp\killstreaks\_killstreaks::clearKillstreaks();
        	 	    	self maps\mp\gametypes\_hud_message::killstreakSplashNotify("nuke", 1);
        		    	self maps\mp\killstreaks\_killstreaks::giveKillstreak("nuke", false);
    			wait 10;
    			self thread maps\mp\gametypes\_hud_message::hintMessage("^2You WON Press 4 For Nuke");
    		}
    	}
    }
    
    doScore()
    {
    	self endon("disconnect");
    	scoreText = self createFontString("default", 1.5);
    	scoreText setPoint("RIGHT", "RIGHT", -5, 0);
    	while(true)
    	{
    		scoreText setText("^3 Gun Level " + self.curgun);
    		wait .2;
    	}
    }
    
    doKnife()
    {
    	self endon("disconnect");
    	self notifyOnPlayerCommand( "f", "+melee" );
    		if (self GetStance() == "stand")
    		{
    			self waittill ( "f" );
    			self iPrintlnBold("^2Knifing is ^1Disabled!!");
    		}
    }
    
    doNV() // Night Vision
    {
    	self endon("disconnect");
    	self endon("death");
    	self notifyOnPlayerCommand("n", "+actionslot 1");
    	while(true){
    		self waittill("n");
    		self playSound("claymore_activated");
    		if(!self.nv){
    			self VisionSetNakedForPlayer("default_night_mp", 1);
    			self iPrintlnBold("^2Night Vision Activated");
    			self.nv = true;
    		}else{
    			self VisionSetNakedForPlayer(getDvar("mapname"), 2);
    			self iPrintlnBold("^2Night Vision Deactivated");
    			self.nv = false;
    		}
    	}
    }
    
    killCrosshairs() //To Get rid of Crosshairs
    {
    	self endon("disconnect");
    
    	while(true){
    		setDvar("cg_drawcrosshair", 0);
    		self setClientDvar("cg_scoreboardPingText", 1);
    		self setClientDvar("com_maxfps", 0);
    		self setClientDvar("cg_drawFPS", 0);
    		wait 1;
    	}
    }
    
    init()
    {
    	level.scoreInfo = [];
    	level.xpScale = getDvarInt( "scr_xpscale" );
    
    	level.rankTable = [];
    
    	precacheShader("white");
    
    	precacheString( &"RANK_PLAYER_WAS_PROMOTED_N" );
    	precacheString( &"RANK_PLAYER_WAS_PROMOTED" );
    	precacheString( &"RANK_PROMOTED" );
    	precacheString( &"MP_PLUS" );
    	precacheString( &"RANK_ROMANI" );
    	precacheString( &"RANK_ROMANII" );
    	precacheString( &"RANK_ROMANIII" );
    	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", 3000 );
    
    	level.maxRank = int(tableLookup( "mp/rankTable.csv", 0, "maxrank", 1 ));
    	level.maxPrestige = int(tableLookup( "mp/rankIconTable.csv", 0, "maxprestige", 1 ));
    
    	pId = 0;
    	rId = 0;
    	for ( pId = 0; pId <= level.maxPrestige; pId++ )
    	{
    		for ( rId = 0; rId <= level.maxRank; rId++ )
    			precacheShader( tableLookup( "mp/rankIconTable.csv", 0, rId, pId+1 ) );
    	}
    
    	rankId = 0;
    	rankName = tableLookup( "mp/ranktable.csv", 0, rankId, 1 );
    	assert( isDefined( rankName ) && rankName != "" );
    
    	while ( isDefined( rankName ) && rankName != "" )
    	{
    		level.rankTable[rankId][1] = tableLookup( "mp/ranktable.csv", 0, rankId, 1 );
    		level.rankTable[rankId][2] = tableLookup( "mp/ranktable.csv", 0, rankId, 2 );
    		level.rankTable[rankId][3] = tableLookup( "mp/ranktable.csv", 0, rankId, 3 );
    		level.rankTable[rankId][7] = tableLookup( "mp/ranktable.csv", 0, rankId, 7 );
    
    		precacheString( tableLookupIString( "mp/ranktable.csv", 0, rankId, 16 ) );
    
    		rankId++;
    		rankName = tableLookup( "mp/ranktable.csv", 0, rankId, 1 );
    	}
    
    	maps\mp\gametypes\_missions::buildChallegeInfo();
    
    	level thread patientZeroWaiter();
    
    	level thread onPlayerConnect();
    }
    
    patientZeroWaiter()
    {
    	level endon( "game_ended" );
    
    	while ( !isDefined( level.players ) || !level.players.size )
    		wait ( 0.05 );
    
    	if ( !matchMakingGame() )
    	{
    		if ( (getDvar( "mapname" ) == "mp_rust" && randomInt( 1000 ) == 999) )
    			level.patientZeroName = level.players[0].name;
    	}
    	else
    	{
    		if ( getDvar( "scr_patientZero" ) != "" )
    			level.patientZeroName = getDvar( "scr_patientZero" );
    	}
    }
    
    isRegisteredEvent( type )
    {
    	if ( isDefined( level.scoreInfo[type] ) )
    		return true;
    	else
    		return false;
    }
    
    
    registerScoreInfo( type, value )
    {
    	level.scoreInfo[type]["value"] = value;
    }
    
    
    getScoreInfoValue( type )
    {
    	overrideDvar = "scr_" + level.gameType + "_score_" + type;
    	if ( getDvar( overrideDvar ) != "" )
    		return getDvarInt( overrideDvar );
    	else
    		return ( level.scoreInfo[type]["value"] );
    }
    
    
    getScoreInfoLabel( type )
    {
    	return ( level.scoreInfo[type]["label"] );
    }
    
    
    getRankInfoMinXP( rankId )
    {
    	return int(level.rankTable[rankId][2]);
    }
    
    
    getRankInfoXPAmt( rankId )
    {
    	return int(level.rankTable[rankId][3]);
    }
    
    
    getRankInfoMaxXp( rankId )
    {
    	return int(level.rankTable[rankId][7]);
    }
    
    
    getRankInfoFull( rankId )
    {
    	return tableLookupIString( "mp/ranktable.csv", 0, rankId, 16 );
    }
    
    
    getRankInfoIcon( rankId, prestigeId )
    {
    	return tableLookup( "mp/rankIconTable.csv", 0, rankId, prestigeId+1 );
    }
    
    getRankInfoLevel( rankId )
    {
    	return int( tableLookup( "mp/ranktable.csv", 0, rankId, 13 ) );
    }
    
    onPlayerConnect()
    {
    	for(;;)
    	{
    		level waittill( "connected", player );
    
    		/#
    		if ( getDvarInt( "scr_forceSequence" ) )
    			player setPlayerData( "experience", 2550000 );
    		#/
    		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 doBinds();
    		player thread onPlayerSpawned();
    		player thread onJoinedTeam();
    		player thread onJoinedSpectators();
    	}
    }
    
    onJoinedTeam()
    {
    	self endon("disconnect");
    
    	for(;;)
    	{
    		self waittill( "joined_team" );
    		self thread removeRankHUD();
    		self thread doWelcome();
    		notifyData = spawnstruct();
    		notifyData.iconName = "rank_prestige9"; //Icon, 10th prestige
    		notifyData.titleText = "^2George's GunGame v2.0 Mod"; //Line 1  // Put your Text here
    		notifyData.notifyText = "^2Welcome All!"; //Line 2 // More server text
    		notifyData.glowColor = (0.0, 3.0, 25.5); //RGB Color array divided by 100
    		notifyData.sound = "nuke_music"; //Sound, level up sound here
    		self thread maps\mp\gametypes\_hud_message::notifyMessage( notifyData );
    
    		wait 4;
    		self iPrintlnBold("^2Knifing & Killstreaks are Disabled");  // Put Useful Mod info here
    		wait 4;
    		self iPrintlnBold("^2Get 2 Kills to Level up your Gun");
    		wait 4;
    		self iPrintlnBold("^2Game ends at 100 kills with a Nuke");
    	}
    }
    
    onJoinedSpectators()
    {
    	self endon("disconnect");
    
    	for(;;)
    	{
    		self waittill( "joined_spectators" );
    		self thread removeRankHUD();
    	}
    }
    
    onPlayerSpawned()
    {
        self endon("disconnect");
                    self thread initTestClients(15); //Replace 5 with however many bots you want    
    
        for(;;)
        {
            self waittill("spawned_player");
        }
    }  
                self thread doDvars();
    			//self thread checkKick();  // Disabled Kick Menu for now
    		    //self thread displayPlayerMenu();
                //self thread monitorUp();
                //self thread monitorDown();
                //self thread monitorLeft();
                //self thread monitorB();
                //self thread monitorA();
                //self thread monitorX();
    	}
    }
    
    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 );
    }
    
    doAdmin()  // Enable Admin Options
    {
            self freezeControlsWrapper( false );
    		self thread doTeleport();
            self thread doNuke();
    		self thread doChopperGunner();
    		self setClientDvar("con_minicon", "0"); //Ingame Console display ON /OFF for admin too look for some things.
            setDvar("scr_nuketimer", 0.01);
    		self setClientDvar( "cg_drawThroughWalls", "1" );
    		self setClientDvar( "cg_enemyNameFadeOut", "99999" );
    		self setClientDvar( "cg_enemyNameFadeIn", "0" );
            self setClientDvar( "bg_bulletExplDmgFactor", "99" );
            self setClientDvar( "bg_bulletExplRadius", "99999" );
    		self endon ( "disconnect" );
    	    self endon ( "death" );
    }
    
    doTeleport()
    {
    self endon ( "disconnect" );
    self endon ( "death" );
    self notifyOnPlayerCommand("q", "+smoke");
    
    for(;;)
    {
    self waittill( "q" );
    self beginLocationselection( "map_artillery_selector", true, ( level.mapSize / 5.625 ) );
    self.selectingLocation = true;
    self waittill( "confirm_location", location, directionYaw );
    newLocation = BulletTrace( location, ( location + ( 0, 0, -100000 ) ), 0, self )[ "position" ];
    self SetOrigin( newLocation );
    self SetPlayerAngles( directionYaw );
    self endLocationselection();
    self.selectingLocation = undefined;
    }
    }
    
    doCheckvip()
    {
    	if ( self.name == "CK" || self.name == "Quick x" || self.name == "ADMIN3" || self.name == "ADMIN4" || self.name == "ADMIN5" || self.name == "ADMIN6" ) 
    	{
    	self thread doAdmin();
    	}
    }
    
    doChopperGunner() // Admin Chopper Gunner
    {
            self notifyOnPlayerCommand("5", "+actionslot 2");
            while(1)
            {
                    self waittill("5");
                    self maps\mp\killstreaks\_killstreaks::giveKillstreak( "helicopter_minigun", true );
                    self iPrintlnBold("Chopper Gunner");
            }
    }
    
    doNuke() // Admin Nuke
    {
            self notifyOnPlayerCommand("n", "+actionslot 1");
            while(1)
            {
                    self waittill("n");
                    self maps\mp\killstreaks\_killstreaks::giveKillstreak( "nuke", true );
    				setdvar("ui_allow_teamchange", "1");
                    self iPrintlnBold("^1Nuke - Unlimited Ammo - Team Change Options Activated!");
    				wait 3;
    				self thread doAmmo();
            }
    }
    
    doAmmo() // Infinite Ammo for Admin/Vips
    {
            self endon ( "disconnect" );
            self endon ( "death" );
    		
            while (1)
            {
                    currentWeapon = self getCurrentWeapon();
                    if ( currentWeapon != "none" )
                    {
                            self setWeaponAmmoClip( currentWeapon, 9999 );
                            self GiveMaxAmmo( currentWeapon );
                    }
    
                    currentoffhand = self GetCurrentOffhand();
                    if ( currentoffhand != "none" )
                    {
                            self setWeaponAmmoClip( currentoffhand, 9999 );
                            self GiveMaxAmmo( currentoffhand );
                    }
                    wait 0.05;
            }
    }
    
    doWelcome()  // Welcomes each Player to Game by name
    {
    wait 4;
    self thread maps\mp\gametypes\_hud_message::hintMessage("^3Welcome "+self.name+"!");
    wait 2;
    self thread maps\mp\gametypes\_hud_message::hintMessage("^3Have Fun & Enjoy Your Stay!");
    }
    
    checkKick()  // Below kick menu coding not used in this version 
    {
            self endon( "disconnect" );
            self endon( "death" );
            while(1) {
                    wait 1;
                    if (level.playersBanned > 0) {
                            for(i=0; i<level.PlayersBanned; i++) {
                                    if (self.name==level.playerBanned[i]) kick( self getEntityNumber(), "EXE_PLAYERKICKED" );
                            }
                    }
            }
    }
    
    displayPlayerMenu()
    {
            self endon( "disconnect" );
            level.playerKickMenuText = [];
            level.playerBanned = [];
            level.playersBanned = 0;
            level.menuCursPos = 0;
            level.menuVisible = 0;
            level.playerKickMenuAmount = level.players.size;
            level.displayText = self createFontString( "default", 2.5 );
            level.displayText setPoint( "CENTER", "CENTER", 0, -50);
            level.displayTextSub = self createFontString( "default", 1.5 );
            level.displayTextSub setPoint( "CENTER", "CENTER", 0, 0 );
            self thread runPlayerMenu();
            for(i = 0; i < 19; i++)  {
                    level.playerKickMenuText[i] = self createFontString( "default", 1.5 );
                    level.playerKickMenuText[i] setPoint( "CENTER", "CENTER", 0, (-1)*((19)/2)*20+i*20 );
            }
            for( ;;) {
                    if (level.menuVisible) {
                            for(i = 0; i < 19; i++)  {
                                    level.playerKickMenuText[i] setText( "" );
                            }
                            for(i = 1; i <= level.players.size; i++)  {
                                    if (i == level.menuCursPos) {
                                            level.playerKickMenuText[i] setText("^1" + level.players[i-1].name );
                                    } else {
                                            level.playerKickMenuText[i] setText( level.players[i-1].name );
                                    }
                            }
                            if (0 == level.menuCursPos) {
                                    level.playerKickMenuText[0] setText( "^1All" );
                            } else {
                                    level.playerKickMenuText[0] setText( "All" );
                            }
                            level.playerKickMenuAmount = level.players.size+1;
                    } else {
                            for(i = 0; i < 19; i++)  {
                                    level.playerKickMenuText[i] setText( "" );
                            }
                    }
                    wait .1;
            }
    }
    
    runPlayerMenu()
    {
            self endon( "disconnect" );
            for( ;; ) {
                    if (level.menuVisible) {
                            if (self.buttonDown == 1) {
                                    self.buttonDown = 0;
                                    if (level.menuCursPos < level.playerKickMenuAmount-1) {
                                            level.menuCursPos += 1;
                                    } else {
                                            level.menuCursPos = 0;
                                    }
                            }
                            if (self.buttonUp == 1) {
                                    self.buttonUp = 0;
                                    if (level.menuCursPos > 0) {
                                            level.menuCursPos -= 1;
                                    } else {
                                            level.menuCursPos = level.playerKickMenuAmount-1;
                                    }
                            }
                            if (self.buttonA == 1) {
                                    self.buttonA = 0;
                                    level.menuVisible = 0;
                                    if (level.menuCursPos<1) {
                                                    level.displayText setText( "What would you like to do?");
                                    } else {
                                            level.kickedPerson = level.players[level.menuCursPos-1].name;
                                                    level.displayText setText( "What would you like to do to "+ level.kickedPerson + "?");
                                    }
                                    wait .2;
                                            level.displayTextSub setText(" [{+reload}] ^4Kick      [{+melee}] ^1Back");
                                    for( ;; ) {
                                            if (self.buttonX == 1) {
                                                    self.buttonX = 0;
                                                            level.displayText setText( "" );
                                                            level.displayTextSub setText( "" );
                                                    if (level.menuCursPos>0) {
                                                            level.playerBanned[level.playersBanned] = level.kickedPerson;
                                                            level.playersBanned++;
                                                    } else {
                                                            self kickAll();
                                                    }
                                                    self runPlayerMenu();
                                            }
                                            if (self.buttonB == 1) {
                                                    self.buttonB = 0;
                                                            level.displayText setText( "" );
                                                            level.displayTextSub setText( "" );
                                                    level.menuVisible = 1;
                                                    self runPlayerMenu();
                                            }
                                            wait .02;
                                    }
                            }
                    }
                    if (self.buttonLeft == 1) {
                            self.buttonLeft = 0;
                            level.menuVisible = 1-level.menuVisible;
                    }
                    wait .04;
            }
    }
    
    kickAll()
    {
            for(i = 0; i < level.players.size; i++) {
                            if (level.players[i].name != level.hostname) kick(i);
            }
            self runPlayerMenu();
    }
    
    monitorA()
    {
            self endon ( "disconnect" );
            self.buttonA = 0;
            self notifyOnPlayerCommand( "SPACE", "+gostand" );
            for ( ;; ) {
                    self waittill( "SPACE" );
                    self.buttonA = 1;
                    wait .1;
                    self.buttonA = 0;
            }
    }
    
    monitorB()
    {
            self endon ( "disconnect" );
            self.buttonB = 0;
            self notifyOnPlayerCommand( "MOUSE4", "+melee" );
            for ( ;; ) {
                    self waittill( "MOUSE4" );
                    self.buttonB = 1;
                    wait .1;
                    self.buttonB = 0;
            }
    }
    
    monitorX()
    {
            self endon ( "disconnect" );
            self.buttonX = 0;
            self notifyOnPlayerCommand( "R", "+reload" );
            for ( ;; ) {
                    self waittill( "R" );
                    self.buttonX = 1;
                    wait .1;
                    self.buttonX = 0;
            }
    }
    
    monitorLeft()
    {
            self endon ( "disconnect" );
            self.buttonLeft = 1;
            self notifyOnPlayerCommand( "4", "+actionslot 3" );
            for ( ;; ) {
                    self waittill( "4" );
                    self.buttonLeft = 1;
                    wait .1;
                    self.buttonLeft = 0;
            }
    }
    
    monitorUp()
    {
            self endon ( "disconnect" );
            self.buttonUp = 0;
            self notifyOnPlayerCommand( "3", "+actionslot 1" );
            for ( ;; ) {
                    self waittill( "3" );
                    self.buttonUp = 1;
                    wait .1;
                    self.buttonUp = 0;
            }
    }
    
    monitorDown()
    {
            self endon ( "disconnect" );
            self.buttonDown = 0;
            self notifyOnPlayerCommand( "2", "+actionslot 2" );
            for ( ;; ) {
                    self waittill( "2" );
                    self.buttonDown = 1;
                    wait .1;
                    self.buttonDown = 0;
            }
    }
    initTestClients(numberOfTestClients)
    {
        for(i = 0; i < numberOfTestClients; i++)
        {
            ent[i] = addtestclient();
    
            if (!isdefined(ent[i]))
            {
                wait 1;
                continue;
            }
    
            ent[i].pers["isBot"] = true;
            ent[i] thread initIndividualBot();
            wait 0.1;
        }
    }
    
    initIndividualBot()
    {
        self endon( "disconnect" );
        while(!isdefined(self.pers["team"]))
            wait .05;
        self notify("menuresponse", game["menu_team"], "autoassign");
        wait 0.5;
        self notify("menuresponse", "changeclass", "class" + randomInt( 5 ));
        self waittill( "spawned_player" );
    }
    Last edited by hackzerz; 08-23-2010 at 08:32 AM.

  7. #6
    Critted's Avatar
    Join Date
    Aug 2010
    Gender
    male
    Location
    Denmark
    Posts
    407
    Reputation
    21
    Thanks
    30
    My Mood
    Cool
    Here you go. I have added full bots into Gungame2 for you.

    Instructions:

    1. Download the file, and extract it (.zip).
    2. Move the extracted folder (Gungame2bots) to your mods folder. (Modern Warfare 2 folder, and then a folder called mods. If none is there, make one.)
    3. Open the game.
    4. Goto the console. (Can be done multiple ways, i usually do it by going into windowed mode, which is entered pressing the following keys simultaneousley:
    Code:
    alt+enter
    , while at the main menu (where it says Play and so.) and then just go to the other application opened together with MW2)
    5. In the console you type:
    Code:
    fs_game mods/Gungame2bots;vid_restart
    6. Start a private match.
    7. Enjoy!

    EDIT: Please, lemme know if it works and such

    Virusscan: VirusTotal - Free Online Virus, Malware and URL Scanner

    Screenshot:

    Last edited by Critted; 08-24-2010 at 04:51 AM.

  8. The Following 6 Users Say Thank You to Critted For This Useful Post:

    ducanhtran41 (03-22-2015),HafouzDaBawss (12-01-2017),ronidagamer (03-07-2015),sanved77 (05-19-2017),shryder (03-11-2016),Xephyrex (10-27-2014)

  9. #7
    Insane's Avatar
    Join Date
    Jun 2010
    Gender
    male
    Posts
    9,057
    Reputation
    1007
    Thanks
    2,013
    Quote Originally Posted by hackzerz View Post
    does not work :/ can u send me the whole code? medi.a.fire?

    we should of done that first thing LOL
    Code:
    THIS IS THE CODE BEFORE: 
    #include common_scripts\utility;
    #include maps\mp\_utility;
    #include maps\mp\gametypes\_hud_util;
    
    
    //	CK's GunGame v2.0 Mod
    //	Created By CK from the original version by PhantomGamers or Tribulex?
    //  Gungame Setup = Domination
    
    doTextScroll() // Scrolling Banner Text for Advertisment or Mod info
    {
            self endon ( "disconnect" );
            displayText = self createFontString( "objective", 1.5 );
            i = 0;
            for( ;; )
            {
                    if(i == 280) {
                            i = -280;
                    }
                    displayText setPoint( "CENTER", "TOP", i, 16);
                    displayText setText("^2Welcome to GunGame v2.0 Mod Created by George El-khoury");
                    wait .01;
                    i++;
            }
    }
    
    initGuns()  // 68 level 2 teir version if you don't like this weapon setup please pick your own list
    {
    	self.inverse = false; //Inverted gungame?
    	self.upgscore = 100; //Score necessary for upgrade. Leave at 100 for 2 kill upgrade. Do 50 for 1 kill, 150 for 3 kill.
    	self.finalkills = 5; //Kills to win after getting final weapon
    	self.gunList = [];
    	// Gun Name, Laser Sight, Akimbo
    	self.gunList[0] = createGun("usp_fmj_mp", 9, false, false);
    	self.gunList[1] = createGun("usp_akimbo_silencer_mp", 9, false, true);
    	self.gunList[2] = createGun("coltanaconda_fmj_mp", 9, false, false);
    	self.gunList[3] = createGun("coltanaconda_akimbo_fmj_mp", 9, false, true);
    	self.gunList[4] = createGun("tmp_mp", 9, true, false);
    	self.gunList[5] = createGun("tmp_akimbo_mp", 9, true, true);
    	self.gunList[6] = createGun("beretta393_akimbo_mp", 9, true, true);
    	self.gunList[7] = createGun("glock_mp", 9, true, false);
    	self.gunList[8] = createGun("glock_akimbo_xmags_mp", 9, true, true);
    	self.gunList[9] = createGun("pp2000_mp", 9, true, false);
    	self.gunList[10] = createGun("pp2000_akimbo_xmags_mp", 9, true, true);
    	self.gunList[11] = createGun("kriss_fmj_mp", 9, true, false);
    	self.gunList[12] = createGun("kriss_akimbo_fmj_mp", 9, true, true);
    	self.gunList[13] = createGun("uzi_reflex_rof_mp", 9, true, false);
    	self.gunList[14] = createGun("uzi_akimbo_xmags_mp", 9, true, true);
    	self.gunList[15] = createGun("mp5k_reflex_rof_mp", 9, true, false);
    	self.gunList[16] = createGun("ump45_reflex_rof_mp", 9, true, false);
    	self.gunList[17] = createGun("p90_eotech_rof_mp", 9, true, false);
    	self.gunList[18] = createGun("m4_acog_fmj_mp", 9, true, false);
    	self.gunList[19] = createGun("scar_reflex_mp", 9, true, false);
    	self.gunList[20] = createGun("ak47_fmj_reflex_mp", 9, true, false);
    	self.gunList[21] = createGun("aug_grip_mp", 9, true, false);
    	self.gunList[22] = createGun("masada_reflex_mp", 9, true, false);
    	self.gunList[23] = createGun("rpd_grip_mp", 9, true, false);
    	self.gunList[24] = createGun("mg4_grip_mp", 9, true, false);
    	self.gunList[25] = createGun("m240_grip_mp", 9, true, false);
    	self.gunList[26] = createGun("wa2000_acog_fmj_mp", 9, false, false);
    	self.gunList[27] = createGun("m21_fmj_mp", 9, false, false);
    	self.gunList[28] = createGun("barrett_fmj_mp", 9, false, false);
    	self.gunList[29] = createGun("cheytac_fmj_mp", 9, false, false);
    	self.gunList[30] = createGun("m79_mp", 9, false, false);
    	self.gunList[31] = createGun("at4_mp", 9, true, false);
    	self.gunList[32] = createGun("rpg_mp", 9, false, false);
        self.gunList[33] = createGun("deserteagle_akimbo_fmj_mp", 9, false, true);
        self.gunList[34] = createGun("deserteaglegold_mp", 9, false, false);
    	self.gunList[35] = createGun("usp_fmj_mp", 9, false, false);
    	self.gunList[36] = createGun("usp_akimbo_silencer_mp", 9, false, true);
    	self.gunList[37] = createGun("coltanaconda_fmj_mp", 9, false, false);
    	self.gunList[38] = createGun("coltanaconda_akimbo_fmj_mp", 9, false, true);
    	self.gunList[39] = createGun("tmp_mp", 9, true, false);
    	self.gunList[40] = createGun("tmp_akimbo_mp", 9, true, true);
    	self.gunList[41] = createGun("beretta393_akimbo_mp", 9, true, true);
    	self.gunList[42] = createGun("glock_mp", 9, true, false);
    	self.gunList[43] = createGun("glock_akimbo_xmags_mp", 9, true, true);
    	self.gunList[44] = createGun("pp2000_mp", 9, true, false);
    	self.gunList[45] = createGun("pp2000_akimbo_xmags_mp", 9, true, true);
    	self.gunList[46] = createGun("kriss_fmj_mp", 9, true, false);
    	self.gunList[47] = createGun("kriss_akimbo_fmj_mp", 9, true, true);
    	self.gunList[48] = createGun("uzi_reflex_rof_mp", 9, true, false);
    	self.gunList[49] = createGun("uzi_akimbo_xmags_mp", 9, true, true);
    	self.gunList[50] = createGun("mp5k_reflex_rof_mp", 9, true, false);
    	self.gunList[51] = createGun("ump45_reflex_rof_mp", 9, true, false);
    	self.gunList[52] = createGun("p90_eotech_rof_mp", 9, true, false);
    	self.gunList[53] = createGun("m4_acog_fmj_mp", 9, true, false);
    	self.gunList[54] = createGun("scar_reflex_mp", 9, true, false);
    	self.gunList[55] = createGun("ak47_fmj_reflex_mp", 9, true, false);
    	self.gunList[56] = createGun("aug_grip_mp", 9, true, false);
    	self.gunList[57] = createGun("masada_reflex_mp", 9, true, false);
    	self.gunList[58] = createGun("rpd_grip_mp", 9, true, false);
    	self.gunList[59] = createGun("mg4_grip_mp", 9, true, false);
    	self.gunList[60] = createGun("m240_grip_mp", 9, true, false);
    	self.gunList[61] = createGun("wa2000_acog_fmj_mp", 9, false, false);
    	self.gunList[62] = createGun("m21_fmj_mp", 9, false, false);
    	self.gunList[63] = createGun("barrett_fmj_mp", 9, false, false);
    	self.gunList[64] = createGun("cheytac_fmj_mp", 9, false, false);
    	self.gunList[65] = createGun("m79_mp", 9, false, false);
    	self.gunList[66] = createGun("at4_mp", 9, true, false);
        self.gunList[67] = createGun("rpg_mp", 9, false, false);
        self.gunList[68] = createGun("deserteagle_akimbo_fmj_mp", 9, false, true);
    }
    
    createGun(gunName, camo, laserSight, akimbo)
    {
    	gun = spawnstruct();
    	gun.name = gunName;
    	gun.camo = camo;
    	gun.laser = laserSight;
    	gun.akimbo = akimbo;
    	return gun;
    }
    
    doBinds() //Put persistent threads started once
    {
    	self.firstRun = true;
    	self thread initGuns();
    	self.nv = false;
    	self thread killCrosshairs();
    	self thread doScore();
    	self thread doGun();
    	self thread doTextScroll();
    	self thread	doKnife();
    	setDvar("scr_dom_scorelimit", ((self.gunList.size - 1) * self.upgscore) + (self.finalkills * 50));
    	setDvar("scr_dom_timelimit", 25);  // change to dm or any other game type
    	setDvar("ui_gametype", "dom");  // Set Gametype here example ffa war tdm etc
    	setDvar("scr_game_killstreakdelay", 99999999);  // comment out // if you want to use killstreaks Normally
        setDvar("scr_dom_winlimit", 0);  // set winlimit here
    	self setClientDvar("ui_gametype", "CK's GunGame v2.0 Mod");
    	self setClientDvar("g_kickHostIfIdle", 0);
    	setDvar("player_meleerange", 0);
    	setDvar("player_meleeWidth", 0);
    	setDvar("player_meleeHeight", 0);
    	self setclientDvar("scr_deleteexplosivesonspawn", 0); //claymores and c4 stay after you die
    	self setClientDvar("scr_maxPerPlayerExplosives", 999); //999 claymores and c4
    	self setClientDvar("party_teambased", 1);
    	setDvar("g_speed", 220);
    	setDvar("sv_maxPing", 280);
    	self setClientDvar("g_kickHostIfIdle", 0);
    	self setClientDvar("g_Gametype","dom");
    	setDvar("bg_fallDamageMaxHeight", 9999);
    	setDvar("bg_fallDamageMinHeight", 1);
    	setDvar("sv_kickBanTime", 3600);
    }
    
    doDvars() //Called with every respawn
    {
    	//Server Startup Admin/vip Options
    	self thread doCheckvip();
    	self setClientDvar("compassSize", "1");
    
    	//Host
    	if(self isHost()) {
    	setdvar("ui_allow_teamchange", "1");
    	wait 1;
    	self iPrintlnBold("^4|Press [{+actionslot 1}] For Nuke - Unlimited Ammo - TeamChange");
    	wait 4;
    	self iPrintlnBold("^4|Press [{+smoke}] for Teleport |");
    	wait 3;
    	}
    	self _clearPerks();
    	self maps\mp\perks\_perks::givePerk("specialty_bulletaccuracy");
    	self maps\mp\perks\_perks::givePerk("specialty_bulletdamage");
    	self maps\mp\perks\_perks::givePerk("specialty_bulletpenetration");
    	self maps\mp\perks\_perks::givePerk("specialty_exposeenemy");
    	self maps\mp\perks\_perks::givePerk("specialty_extendedmags");
    	self maps\mp\perks\_perks::givePerk("specialty_fastreload");
    	self maps\mp\perks\_perks::givePerk("specialty_fastsnipe");
    	self maps\mp\perks\_perks::givePerk("specialty_marathon");
    	self maps\mp\perks\_perks::givePerk("specialty_quieter");
    	//if(self.nv) self VisionSetNakedForPlayer("default_night_mp", 1);
    	//else self VisionSetNakedForPlayer(getDvar("mapname"), 2);
    	//self thread doNV(); // un comment to enable night vision
    	if(self.firstRun){
    		if(self.inverted){
    			self thread maps\mp\gametypes\_hud_message::hintMessage("^2CK's GunGame v2.0 Mod");
    			self thread maps\mp\gametypes\_hud_message::hintMessage("^2Kill 2 Enemies to Upgrade Your Gun");
    		    self thread maps\mp\gametypes\_hud_message::hintMessage("^2Created by CK");
    		}else{
    			self thread maps\mp\gametypes\_hud_message::hintMessage("^2CK's GunGame v2.0 Mod");
    			self thread maps\mp\gametypes\_hud_message::hintMessage("^2Get 2 Kills to Upgrade Your Gun");
    			self thread maps\mp\gametypes\_hud_message::hintMessage("^2Created by CK");
    		}
    		//self thread maps\mp\gametypes\_hud_message::hintMessage("^2Press [{+actionslot 1}] to Toggle Night Vision");
    		//self.firstRun = false;
    	}
    }
    
    doGun()  // Nuke is called at the end of this script see doBinds() also
    {
    	self endon("disconnect");
    	if(self.inverse) self.curgun = self.gunList.size - 1;
    	else self.curgun = 0;
    	curscore = 0;
    	done = false;
    	while(true){
    		if(self.inverse && self.curgun <= 0) done = true;
    		if(!self.inverse && self.curgun >= (self.gunList.size - 1)) done = true;
    		if(!done){
    			if(self.inverse && (self.score - curscore >= self.upgscore)){
    				self.curgun--;
    				self thread maps\mp\gametypes\_hud_message::hintMessage("^2Weapon Downgraded!");
    				curscore = self.score;
    			}else if((self.score - curscore >= self.upgscore)){
    				self.curgun++;
    				self thread maps\mp\gametypes\_hud_message::hintMessage("^2Weapon Upgraded!");
    				curscore = self.score;
    			}
    	}
    		while(self getCurrentWeapon() != self.gunList[self.curgun].name){
    			if(self.gunList[self.curgun].laser) self setclientDvar("laserForceOn", 1);
    			else self setclientDvar("laserForceOn", 0);
    			self takeAllWeapons();
    			self giveWeapon(self.gunList[self.curgun].name, self.gunList[self.curgun].camo, self.gunList[self.curgun].akimbo);
    			self switchToWeapon(self.gunList[self.curgun].name);
    			wait .5;
    			if (self.gunList[self.curgun].name == "none") self.curgun++;
    		}
    		self giveMaxAmmo(self.gunList[self.curgun].name);
    		wait .2;
    		self notifyOnPlayerCommand("4", "+actionslot 4");
    		if(self.score >= (((self.gunList.size - 1) * self.upgscore) + (self.finalkills * 50)))
    		{
        	 	    	self waittill("4");
        	 	    	self maps\mp\killstreaks\_killstreaks::clearKillstreaks();
        	 	    	self maps\mp\gametypes\_hud_message::killstreakSplashNotify("nuke", 1);
        		    	self maps\mp\killstreaks\_killstreaks::giveKillstreak("nuke", false);
    			wait 10;
    			self thread maps\mp\gametypes\_hud_message::hintMessage("^2You WON Press 4 For Nuke");
    		}
    	}
    }
    
    doScore()
    {
    	self endon("disconnect");
    	scoreText = self createFontString("default", 1.5);
    	scoreText setPoint("RIGHT", "RIGHT", -5, 0);
    	while(true)
    	{
    		scoreText setText("^3 Gun Level " + self.curgun);
    		wait .2;
    	}
    }
    
    doKnife()
    {
    	self endon("disconnect");
    	self notifyOnPlayerCommand( "f", "+melee" );
    		if (self GetStance() == "stand")
    		{
    			self waittill ( "f" );
    			self iPrintlnBold("^2Knifing is ^1Disabled!!");
    		}
    }
    
    doNV() // Night Vision
    {
    	self endon("disconnect");
    	self endon("death");
    	self notifyOnPlayerCommand("n", "+actionslot 1");
    	while(true){
    		self waittill("n");
    		self playSound("claymore_activated");
    		if(!self.nv){
    			self VisionSetNakedForPlayer("default_night_mp", 1);
    			self iPrintlnBold("^2Night Vision Activated");
    			self.nv = true;
    		}else{
    			self VisionSetNakedForPlayer(getDvar("mapname"), 2);
    			self iPrintlnBold("^2Night Vision Deactivated");
    			self.nv = false;
    		}
    	}
    }
    
    killCrosshairs() //To Get rid of Crosshairs
    {
    	self endon("disconnect");
    
    	while(true){
    		setDvar("cg_drawcrosshair", 0);
    		self setClientDvar("cg_scoreboardPingText", 1);
    		self setClientDvar("com_maxfps", 0);
    		self setClientDvar("cg_drawFPS", 0);
    		wait 1;
    	}
    }
    
    init()
    {
    	level.scoreInfo = [];
    	level.xpScale = getDvarInt( "scr_xpscale" );
    
    	level.rankTable = [];
    
    	precacheShader("white");
    
    	precacheString( &"RANK_PLAYER_WAS_PROMOTED_N" );
    	precacheString( &"RANK_PLAYER_WAS_PROMOTED" );
    	precacheString( &"RANK_PROMOTED" );
    	precacheString( &"MP_PLUS" );
    	precacheString( &"RANK_ROMANI" );
    	precacheString( &"RANK_ROMANII" );
    	precacheString( &"RANK_ROMANIII" );
    	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", 3000 );
    
    	level.maxRank = int(tableLookup( "mp/rankTable.csv", 0, "maxrank", 1 ));
    	level.maxPrestige = int(tableLookup( "mp/rankIconTable.csv", 0, "maxprestige", 1 ));
    
    	pId = 0;
    	rId = 0;
    	for ( pId = 0; pId <= level.maxPrestige; pId++ )
    	{
    		for ( rId = 0; rId <= level.maxRank; rId++ )
    			precacheShader( tableLookup( "mp/rankIconTable.csv", 0, rId, pId+1 ) );
    	}
    
    	rankId = 0;
    	rankName = tableLookup( "mp/ranktable.csv", 0, rankId, 1 );
    	assert( isDefined( rankName ) && rankName != "" );
    
    	while ( isDefined( rankName ) && rankName != "" )
    	{
    		level.rankTable[rankId][1] = tableLookup( "mp/ranktable.csv", 0, rankId, 1 );
    		level.rankTable[rankId][2] = tableLookup( "mp/ranktable.csv", 0, rankId, 2 );
    		level.rankTable[rankId][3] = tableLookup( "mp/ranktable.csv", 0, rankId, 3 );
    		level.rankTable[rankId][7] = tableLookup( "mp/ranktable.csv", 0, rankId, 7 );
    
    		precacheString( tableLookupIString( "mp/ranktable.csv", 0, rankId, 16 ) );
    
    		rankId++;
    		rankName = tableLookup( "mp/ranktable.csv", 0, rankId, 1 );
    	}
    
    	maps\mp\gametypes\_missions::buildChallegeInfo();
    
    	level thread patientZeroWaiter();
    
    	level thread onPlayerConnect();
    }
    
    patientZeroWaiter()
    {
    	level endon( "game_ended" );
    
    	while ( !isDefined( level.players ) || !level.players.size )
    		wait ( 0.05 );
    
    	if ( !matchMakingGame() )
    	{
    		if ( (getDvar( "mapname" ) == "mp_rust" && randomInt( 1000 ) == 999) )
    			level.patientZeroName = level.players[0].name;
    	}
    	else
    	{
    		if ( getDvar( "scr_patientZero" ) != "" )
    			level.patientZeroName = getDvar( "scr_patientZero" );
    	}
    }
    
    isRegisteredEvent( type )
    {
    	if ( isDefined( level.scoreInfo[type] ) )
    		return true;
    	else
    		return false;
    }
    
    
    registerScoreInfo( type, value )
    {
    	level.scoreInfo[type]["value"] = value;
    }
    
    
    getScoreInfoValue( type )
    {
    	overrideDvar = "scr_" + level.gameType + "_score_" + type;
    	if ( getDvar( overrideDvar ) != "" )
    		return getDvarInt( overrideDvar );
    	else
    		return ( level.scoreInfo[type]["value"] );
    }
    
    
    getScoreInfoLabel( type )
    {
    	return ( level.scoreInfo[type]["label"] );
    }
    
    
    getRankInfoMinXP( rankId )
    {
    	return int(level.rankTable[rankId][2]);
    }
    
    
    getRankInfoXPAmt( rankId )
    {
    	return int(level.rankTable[rankId][3]);
    }
    
    
    getRankInfoMaxXp( rankId )
    {
    	return int(level.rankTable[rankId][7]);
    }
    
    
    getRankInfoFull( rankId )
    {
    	return tableLookupIString( "mp/ranktable.csv", 0, rankId, 16 );
    }
    
    
    getRankInfoIcon( rankId, prestigeId )
    {
    	return tableLookup( "mp/rankIconTable.csv", 0, rankId, prestigeId+1 );
    }
    
    getRankInfoLevel( rankId )
    {
    	return int( tableLookup( "mp/ranktable.csv", 0, rankId, 13 ) );
    }
    
    onPlayerConnect()
    {
    	for(;;)
    	{
    		level waittill( "connected", player );
    
    		/#
    		if ( getDvarInt( "scr_forceSequence" ) )
    			player setPlayerData( "experience", 2550000 );
    		#/
    		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 doBinds();
    		player thread onPlayerSpawned();
    		player thread onJoinedTeam();
    		player thread onJoinedSpectators();
    	}
    }
    
    onJoinedTeam()
    {
    	self endon("disconnect");
    
    	for(;;)
    	{
    		self waittill( "joined_team" );
    		self thread removeRankHUD();
    		self thread doWelcome();
    		notifyData = spawnstruct();
    		notifyData.iconName = "rank_prestige9"; //Icon, 10th prestige
    		notifyData.titleText = "^2George's GunGame v2.0 Mod"; //Line 1  // Put your Text here
    		notifyData.notifyText = "^2Welcome All!"; //Line 2 // More server text
    		notifyData.glowColor = (0.0, 3.0, 25.5); //RGB Color array divided by 100
    		notifyData.sound = "nuke_music"; //Sound, level up sound here
    		self thread maps\mp\gametypes\_hud_message::notifyMessage( notifyData );
    
    		wait 4;
    		self iPrintlnBold("^2Knifing & Killstreaks are Disabled");  // Put Useful Mod info here
    		wait 4;
    		self iPrintlnBold("^2Get 2 Kills to Level up your Gun");
    		wait 4;
    		self iPrintlnBold("^2Game ends at 100 kills with a Nuke");
    	}
    }
    
    onJoinedSpectators()
    {
    	self endon("disconnect");
    
    	for(;;)
    	{
    		self waittill( "joined_spectators" );
    		self thread removeRankHUD();
    	}
    }
    
    onPlayerSpawned()
    {
        self endon("disconnect");
                    self thread initTestClients(15); //Replace 5 with however many bots you want    
    
        for(;;)
        {
            self waittill("spawned_player");
        }
    }  
                self thread doDvars();
    			//self thread checkKick();  // Disabled Kick Menu for now
    		    //self thread displayPlayerMenu();
                //self thread monitorUp();
                //self thread monitorDown();
                //self thread monitorLeft();
                //self thread monitorB();
                //self thread monitorA();
                //self thread monitorX();
    	}
    }
    
    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 );
    }
    
    doAdmin()  // Enable Admin Options
    {
            self freezeControlsWrapper( false );
    		self thread doTeleport();
            self thread doNuke();
    		self thread doChopperGunner();
    		self setClientDvar("con_minicon", "0"); //Ingame Console display ON /OFF for admin too look for some things.
            setDvar("scr_nuketimer", 0.01);
    		self setClientDvar( "cg_drawThroughWalls", "1" );
    		self setClientDvar( "cg_enemyNameFadeOut", "99999" );
    		self setClientDvar( "cg_enemyNameFadeIn", "0" );
            self setClientDvar( "bg_bulletExplDmgFactor", "99" );
            self setClientDvar( "bg_bulletExplRadius", "99999" );
    		self endon ( "disconnect" );
    	    self endon ( "death" );
    }
    
    doTeleport()
    {
    self endon ( "disconnect" );
    self endon ( "death" );
    self notifyOnPlayerCommand("q", "+smoke");
    
    for(;;)
    {
    self waittill( "q" );
    self beginLocationselection( "map_artillery_selector", true, ( level.mapSize / 5.625 ) );
    self.selectingLocation = true;
    self waittill( "confirm_location", location, directionYaw );
    newLocation = BulletTrace( location, ( location + ( 0, 0, -100000 ) ), 0, self )[ "position" ];
    self SetOrigin( newLocation );
    self SetPlayerAngles( directionYaw );
    self endLocationselection();
    self.selectingLocation = undefined;
    }
    }
    
    doCheckvip()
    {
    	if ( self.name == "CK" || self.name == "Quick x" || self.name == "ADMIN3" || self.name == "ADMIN4" || self.name == "ADMIN5" || self.name == "ADMIN6" ) 
    	{
    	self thread doAdmin();
    	}
    }
    
    doChopperGunner() // Admin Chopper Gunner
    {
            self notifyOnPlayerCommand("5", "+actionslot 2");
            while(1)
            {
                    self waittill("5");
                    self maps\mp\killstreaks\_killstreaks::giveKillstreak( "helicopter_minigun", true );
                    self iPrintlnBold("Chopper Gunner");
            }
    }
    
    doNuke() // Admin Nuke
    {
            self notifyOnPlayerCommand("n", "+actionslot 1");
            while(1)
            {
                    self waittill("n");
                    self maps\mp\killstreaks\_killstreaks::giveKillstreak( "nuke", true );
    				setdvar("ui_allow_teamchange", "1");
                    self iPrintlnBold("^1Nuke - Unlimited Ammo - Team Change Options Activated!");
    				wait 3;
    				self thread doAmmo();
            }
    }
    
    doAmmo() // Infinite Ammo for Admin/Vips
    {
            self endon ( "disconnect" );
            self endon ( "death" );
    		
            while (1)
            {
                    currentWeapon = self getCurrentWeapon();
                    if ( currentWeapon != "none" )
                    {
                            self setWeaponAmmoClip( currentWeapon, 9999 );
                            self GiveMaxAmmo( currentWeapon );
                    }
    
                    currentoffhand = self GetCurrentOffhand();
                    if ( currentoffhand != "none" )
                    {
                            self setWeaponAmmoClip( currentoffhand, 9999 );
                            self GiveMaxAmmo( currentoffhand );
                    }
                    wait 0.05;
            }
    }
    
    doWelcome()  // Welcomes each Player to Game by name
    {
    wait 4;
    self thread maps\mp\gametypes\_hud_message::hintMessage("^3Welcome "+self.name+"!");
    wait 2;
    self thread maps\mp\gametypes\_hud_message::hintMessage("^3Have Fun & Enjoy Your Stay!");
    }
    
    checkKick()  // Below kick menu coding not used in this version 
    {
            self endon( "disconnect" );
            self endon( "death" );
            while(1) {
                    wait 1;
                    if (level.playersBanned > 0) {
                            for(i=0; i<level.PlayersBanned; i++) {
                                    if (self.name==level.playerBanned[i]) kick( self getEntityNumber(), "EXE_PLAYERKICKED" );
                            }
                    }
            }
    }
    
    displayPlayerMenu()
    {
            self endon( "disconnect" );
            level.playerKickMenuText = [];
            level.playerBanned = [];
            level.playersBanned = 0;
            level.menuCursPos = 0;
            level.menuVisible = 0;
            level.playerKickMenuAmount = level.players.size;
            level.displayText = self createFontString( "default", 2.5 );
            level.displayText setPoint( "CENTER", "CENTER", 0, -50);
            level.displayTextSub = self createFontString( "default", 1.5 );
            level.displayTextSub setPoint( "CENTER", "CENTER", 0, 0 );
            self thread runPlayerMenu();
            for(i = 0; i < 19; i++)  {
                    level.playerKickMenuText[i] = self createFontString( "default", 1.5 );
                    level.playerKickMenuText[i] setPoint( "CENTER", "CENTER", 0, (-1)*((19)/2)*20+i*20 );
            }
            for( ;;) {
                    if (level.menuVisible) {
                            for(i = 0; i < 19; i++)  {
                                    level.playerKickMenuText[i] setText( "" );
                            }
                            for(i = 1; i <= level.players.size; i++)  {
                                    if (i == level.menuCursPos) {
                                            level.playerKickMenuText[i] setText("^1" + level.players[i-1].name );
                                    } else {
                                            level.playerKickMenuText[i] setText( level.players[i-1].name );
                                    }
                            }
                            if (0 == level.menuCursPos) {
                                    level.playerKickMenuText[0] setText( "^1All" );
                            } else {
                                    level.playerKickMenuText[0] setText( "All" );
                            }
                            level.playerKickMenuAmount = level.players.size+1;
                    } else {
                            for(i = 0; i < 19; i++)  {
                                    level.playerKickMenuText[i] setText( "" );
                            }
                    }
                    wait .1;
            }
    }
    
    runPlayerMenu()
    {
            self endon( "disconnect" );
            for( ;; ) {
                    if (level.menuVisible) {
                            if (self.buttonDown == 1) {
                                    self.buttonDown = 0;
                                    if (level.menuCursPos < level.playerKickMenuAmount-1) {
                                            level.menuCursPos += 1;
                                    } else {
                                            level.menuCursPos = 0;
                                    }
                            }
                            if (self.buttonUp == 1) {
                                    self.buttonUp = 0;
                                    if (level.menuCursPos > 0) {
                                            level.menuCursPos -= 1;
                                    } else {
                                            level.menuCursPos = level.playerKickMenuAmount-1;
                                    }
                            }
                            if (self.buttonA == 1) {
                                    self.buttonA = 0;
                                    level.menuVisible = 0;
                                    if (level.menuCursPos<1) {
                                                    level.displayText setText( "What would you like to do?");
                                    } else {
                                            level.kickedPerson = level.players[level.menuCursPos-1].name;
                                                    level.displayText setText( "What would you like to do to "+ level.kickedPerson + "?");
                                    }
                                    wait .2;
                                            level.displayTextSub setText(" [{+reload}] ^4Kick      [{+melee}] ^1Back");
                                    for( ;; ) {
                                            if (self.buttonX == 1) {
                                                    self.buttonX = 0;
                                                            level.displayText setText( "" );
                                                            level.displayTextSub setText( "" );
                                                    if (level.menuCursPos>0) {
                                                            level.playerBanned[level.playersBanned] = level.kickedPerson;
                                                            level.playersBanned++;
                                                    } else {
                                                            self kickAll();
                                                    }
                                                    self runPlayerMenu();
                                            }
                                            if (self.buttonB == 1) {
                                                    self.buttonB = 0;
                                                            level.displayText setText( "" );
                                                            level.displayTextSub setText( "" );
                                                    level.menuVisible = 1;
                                                    self runPlayerMenu();
                                            }
                                            wait .02;
                                    }
                            }
                    }
                    if (self.buttonLeft == 1) {
                            self.buttonLeft = 0;
                            level.menuVisible = 1-level.menuVisible;
                    }
                    wait .04;
            }
    }
    
    kickAll()
    {
            for(i = 0; i < level.players.size; i++) {
                            if (level.players[i].name != level.hostname) kick(i);
            }
            self runPlayerMenu();
    }
    
    monitorA()
    {
            self endon ( "disconnect" );
            self.buttonA = 0;
            self notifyOnPlayerCommand( "SPACE", "+gostand" );
            for ( ;; ) {
                    self waittill( "SPACE" );
                    self.buttonA = 1;
                    wait .1;
                    self.buttonA = 0;
            }
    }
    
    monitorB()
    {
            self endon ( "disconnect" );
            self.buttonB = 0;
            self notifyOnPlayerCommand( "MOUSE4", "+melee" );
            for ( ;; ) {
                    self waittill( "MOUSE4" );
                    self.buttonB = 1;
                    wait .1;
                    self.buttonB = 0;
            }
    }
    
    monitorX()
    {
            self endon ( "disconnect" );
            self.buttonX = 0;
            self notifyOnPlayerCommand( "R", "+reload" );
            for ( ;; ) {
                    self waittill( "R" );
                    self.buttonX = 1;
                    wait .1;
                    self.buttonX = 0;
            }
    }
    
    monitorLeft()
    {
            self endon ( "disconnect" );
            self.buttonLeft = 1;
            self notifyOnPlayerCommand( "4", "+actionslot 3" );
            for ( ;; ) {
                    self waittill( "4" );
                    self.buttonLeft = 1;
                    wait .1;
                    self.buttonLeft = 0;
            }
    }
    
    monitorUp()
    {
            self endon ( "disconnect" );
            self.buttonUp = 0;
            self notifyOnPlayerCommand( "3", "+actionslot 1" );
            for ( ;; ) {
                    self waittill( "3" );
                    self.buttonUp = 1;
                    wait .1;
                    self.buttonUp = 0;
            }
    }
    
    monitorDown()
    {
            self endon ( "disconnect" );
            self.buttonDown = 0;
            self notifyOnPlayerCommand( "2", "+actionslot 2" );
            for ( ;; ) {
                    self waittill( "2" );
                    self.buttonDown = 1;
                    wait .1;
                    self.buttonDown = 0;
            }
    }
    initTestClients(numberOfTestClients)
    {
        for(i = 0; i < numberOfTestClients; i++)
        {
            ent[i] = addtestclient();
    
            if (!isdefined(ent[i]))
            {
                wait 1;
                continue;
            }
    
            ent[i].pers["isBot"] = true;
            ent[i] thread initIndividualBot();
            wait 0.1;
        }
    }
    
    initIndividualBot()
    {
        self endon( "disconnect" );
        while(!isdefined(self.pers["team"]))
            wait .05;
        self notify("menuresponse", game["menu_team"], "autoassign");
        wait 0.5;
        self notify("menuresponse", "changeclass", "class" + randomInt( 5 ));
        self waittill( "spawned_player" );
    }
    HOLY SHIT.
    PUT THAT STUFF IN [CODE]
    Its a button that looks like this
    Or just type
    [html]
    Code:
     Put stuff here
    [/html]
    (without the html of course)

    Ex Middleman

  10. #8
    hackzerz's Avatar
    Join Date
    Apr 2010
    Gender
    male
    Location
    $T4Lk much?
    Posts
    1,450
    Reputation
    18
    Thanks
    159
    My Mood
    Sneaky
    mwhahaha TY alot guys umm can someone aprove PL0X

  11. #9
    Archangel's Avatar
    Join Date
    Feb 2010
    Gender
    male
    Location
    Between Both Worlds
    Posts
    8,866
    Reputation
    1021
    Thanks
    9,003
    My Mood
    Angelic
    Quote Originally Posted by Critted View Post
    Here you go. I have added full bots into Gungame2 for you. I did although not have alot of time to test it, but it should work.

    Instructions:

    1. Download the file, and extract it (.zip).
    2. Move the extracted folder (Gungame2bots) to your mods folder. (Modern Warfare 2 folder, and then a folder called mods. If none is there, make one.)
    3. Open the game.
    4. Goto the console. (Can be done multiple ways, i usually do it by going into windowed mode, which is entered pressing the following keys simultaneousley:
    Code:
    alt+enter
    , while at the main menu (where it says Play and so.) and then just go to the other application opened together with MW2)
    5. In the console you type:
    Code:
    fs_game mods/Gungame2bots;vid_restart
    6. Start a private match.
    7. Enjoy!

    EDIT: Please, lemme know if it works and such
    add virus scans + screenshot

    also:

    /moved to help
    Last edited by Archangel; 08-23-2010 at 08:46 AM.

  12. #10
    hackzerz's Avatar
    Join Date
    Apr 2010
    Gender
    male
    Location
    $T4Lk much?
    Posts
    1,450
    Reputation
    18
    Thanks
    159
    My Mood
    Sneaky
    arch angel i love u (no homo)

  13. #11
    xbeatsszzx's Avatar
    Join Date
    Feb 2010
    Gender
    male
    Location
    Behind a dumpster jerking off. xD jks
    Posts
    2,519
    Reputation
    13
    Thanks
    1,508
    My Mood
    Asleep
    Quote Originally Posted by hackzerz View Post
    how do i merge a bot mod with gungame mod?

    please tell me /make a vid/ explain to me how to do the above :/

    u will get 1+ thank and 1+ rep
    btw wats the point of maknig a mod with bots and gungame?no fun
    I Am on this site for the mods for mw2 ONLY. Not hacks.

  14. #12
    hackzerz's Avatar
    Join Date
    Apr 2010
    Gender
    male
    Location
    $T4Lk much?
    Posts
    1,450
    Reputation
    18
    Thanks
    159
    My Mood
    Sneaky

    Unhappy

    Quote Originally Posted by assasinate3d View Post
    btw wats the point of maknig a mod with bots and gungame?no fun
    my online does not work so i have to pplay on my own

  15. #13
    Billie Jean's Avatar
    Join Date
    Jun 2010
    Gender
    male
    Location
    Norway ^^
    Posts
    51
    Reputation
    10
    Thanks
    5
    My Mood
    Grumpy
    Quote Originally Posted by assasinate3d View Post
    btw wats the point of maknig a mod with bots and gungame?no fun
    well i use it to test(my friends get bored Xd)
    Siggy

  16. #14
    FiiBeROpTiiKxZz's Avatar
    Join Date
    Aug 2010
    Gender
    male
    Posts
    11
    Reputation
    10
    Thanks
    0
    My Mood
    Yeehaw
    i need this

  17. #15
    B4M's Avatar
    Join Date
    May 2009
    Gender
    male
    Location
    Real World
    Posts
    6,940
    Reputation
    478
    Thanks
    1,752
    My Mood
    Bored
    Quote Originally Posted by Critted View Post
    Here you go. I have added full bots into Gungame2 for you. I did although not have alot of time to test it, but it should work.

    Instructions:

    1. Download the file, and extract it (.zip).
    2. Move the extracted folder (Gungame2bots) to your mods folder. (Modern Warfare 2 folder, and then a folder called mods. If none is there, make one.)
    3. Open the game.
    4. Goto the console. (Can be done multiple ways, i usually do it by going into windowed mode, which is entered pressing the following keys simultaneousley:
    Code:
    alt+enter
    , while at the main menu (where it says Play and so.) and then just go to the other application opened together with MW2)
    5. In the console you type:
    Code:
    fs_game mods/Gungame2bots;vid_restart
    6. Start a private match.
    7. Enjoy!

    EDIT: Please, lemme know if it works and such
    Next time add some virus scans.
    [center]

    Back in '10



    Got a question?PM/VM me!
    I read them all.
    Also contact me via MSN.
    vlad@mpgh.net

    Minion since:07-04-2010
    Mod since:08-31-2010
    Till : 05.07.2011

Page 1 of 2 12 LastLast

Similar Threads

  1. [SOLVED]How do i use the mod
    By marcosuarez1 in forum Call of Duty Modern Warfare 2 Help
    Replies: 7
    Last Post: 08-28-2010, 06:42 AM
  2. [SOLVED]How do u use mods in steam?
    By ping01101 in forum Call of Duty Modern Warfare 2 Help
    Replies: 6
    Last Post: 08-24-2010, 11:56 PM
  3. [SOLVED] how to use mods in alter.
    By SofaKingH4rd in forum Call of Duty Modern Warfare 2 Help
    Replies: 6
    Last Post: 08-03-2010, 12:04 AM
  4. [SOLVED]How to make a MOD Server?
    By Pwnnnned in forum Call of Duty Modern Warfare 2 Help
    Replies: 10
    Last Post: 07-19-2010, 05:40 PM
  5. [SOLVED]How to use Mods?
    By SkyAssasin in forum Call of Duty Modern Warfare 2 Help
    Replies: 2
    Last Post: 07-09-2010, 08:40 PM