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,451
    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 07: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,451
    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,451
    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 09:32 AM.

  7. #6
    Critted's Avatar
    Join Date
    Aug 2010
    Gender
    male
    Location
    Denmark
    Posts
    407
    Reputation
    21
    Thanks
    28
    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 05:51 AM.

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

    ducanhtran41 (03-22-2015),ronidagamer (03-07-2015),shryder (03-11-2016),Xephyrex (10-27-2014)

  9. #7
    Insane's Avatar
    Join Date
    Jun 2010
    Gender
    male
    Posts
    9,055
    Reputation
    1007
    Thanks
    1,997
    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)
    Insane
    Ex Middleman
    [
    PM|VM]
    |x|x|x|x|x|x|x|



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

  10. #8
    hackzerz's Avatar
    Join Date
    Apr 2010
    Gender
    male
    Location
    $T4Lk much?
    Posts
    1,451
    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,868
    Reputation
    1021
    Thanks
    8,868
    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 09:46 AM.

  12. #10
    hackzerz's Avatar
    Join Date
    Apr 2010
    Gender
    male
    Location
    $T4Lk much?
    Posts
    1,451
    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,520
    Reputation
    13
    Thanks
    1,494
    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,451
    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,939
    Reputation
    478
    Thanks
    1,746
    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.


    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, 07: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-25-2010, 12:56 AM
  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, 01: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, 06: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, 09:40 PM