Post: [Release] King of The Hill [FUN] [NEW]
11-20-2012, 04:29 AM #1
(adsbygoogle = window.adsbygoogle || []).push({}); A few of you have got the opportunity to play this gamemode. This was in development for about a week or so. I have had this forever and I finally feel like it should be released and free to use!Smile

Special Thanks to Mark, Taylor, and Jeff. They helped me with ideas for making this and are my bros <3

I can guarantee this will be one of the funnest gamemodes you will ever play!

Download: You must login or register to view this content.

Map Supported:
All except the bonus maps

How to use:
Place those rawfiles in the root of your patch. Then thread it via init in missions like so...
    
level thread _koth::init();



Source Code:

    
/*////////////////////////////////////////////
// King of The Hill //
// Version: 1.2 //
// Made By: Premier-Gamer //
// Idea By: forflah123 //
// Help From: jeffadkins51, Brandon Unknown //
// Last Thnx: kbrizzle, XGRapidz //
////////////////////////////////////////////*/

/*
Info:
Suggested Gametype: Team Deathmatch
Max Players: 18

Objective:
Obtain the flag, and hold on to it for as long as possible.
The flag WILL reset after 30 seconds.

Scoring:
You will recieve 10 points for obtaining the flag, and a
point per second for holding the flag.
*/

#include maps\mp\gametypes\_hud_util;
#include maps\mp\_utility;
#include common_scripts\utility;
#include _build;

init()
{
level deletePlacedEntity( "misc_turret" );
level.flagFXBase = loadfx( maps\mp\gametypes\_teams::getTeamFlagFX( "axis" ) );
level.flagFX = maps\mp\gametypes\_teams::getTeamFlagModel( "allies" );
level.captureFlag = "waypoint_capture_flag";
level.onPlayerKilled = :GaspnPlayerKilled;
precacheModel( level.flagFX );
precacheShader( level.captureFlag );

level.game_started = false;
level.match_has_started = false;
level.flag_picked_up = false;
level.flag_owner = undefined;
setDvar("scr_war_timelimit", "0");
setDvar("scr_war_scorelimit", "201");
setDvar("scr_tdm_timelimit", "0");
setDvar("scr_tdm_scorelimit", "201");
maps\mp\gametypes\_rank::registerScoreInfo( "kill", 0 );
maps\mp\gametypes\_rank::registerScoreInfo( "death", 0 ); //reset the score info
maps\mp\gametypes\_rank::registerScoreInfo( "assist", 0 );

level thread map_edits();

level thread Connected();
level thread Disconnected();
}

Connected()
{
for(;Winky Winky
{
level waittill( "connected", player );
player.id = player getName();
player thread Spawned();
}
}

Disconnected()
{
for(;Winky Winky
{
level waittill( "disconnected", player );
if(isDefined(level.flag_owner) && level.flag_owner == player && level.flag_picked_up)
{
player detach( level.flagFX, "tag_origin");
player.score_text.glowColor = (1,0,0);
level.flagorigin = player.origin;
level.FXBase = spawnFx(level.flagFXBase, level.flagorigin);
level.FXFlag = spawn( "script_model", level.flagorigin);
level.FXFlag setModel( level.flagFX );
triggerFX(level.FXBase);
level.flag_picked_up = false;
level.flag_owner = undefined;

updatePoints();
}
}
}

Spawned()
{
self endon( "disconnect" );
self pointSystem();
self thread doNewsBar("King of The Hill - Version 1.3. Created By: PREMIER-GAMER. Idea By: forflah123. Help From: jeffadkins51 and BrandonUnknown.", 30);
for(;Winky Winky
{
self waittill( "spawned_player" );
self thread setClass();
if(!level.match_has_started)
{
level.match_has_started = true;
level thread configureDefaults();
}
}
}

getPosition()
{
self notifyOnPlayerCommand("up", "+actionslot 1");
for(;Winky Winky
{
self waittill("up");
self sayall(self.origin);
}
}

pointSystem()
{
self.flag_points = 0;
self.point_text = self createFontString("default", 1.6);
self.point_text.horzAlign = "left_adjustable";
self.point_text.vertAlign = "top_adjustable";
self.point_text.alignX = "left";
self.point_text.alignY = "middle";
self.point_text.x = 160;
self.point_text.y = 20;
self.point_text.hideWhenInMenu = true;
self.point_text.archived = false;

self.score_text = self createFontString("default", 1.6);
self.score_text.horzAlign = "left_adjustable";
self.score_text.vertAlign = "top_adjustable";
self.score_text.alignX = "left";
self.score_text.alignY = "middle";
self.score_text.x = 210;
self.score_text.y = 20;
self.score_text.hideWhenInMenu = true;
self.score_text.archived = false;
self.score_text.glowAlpha = 0.5;
self.score_text.glowColor = (1,0,0);

self.score_text setValue( self.flag_points );

if(!isDefined(level.flag_owner))
self.point_text setText( "Points: \nFlag Owner: N/A" );
else
self.point_text setText( "Points: \nFlag Owner: " + level.flag_owner.id );
}

setClass()
{
self takeAllWeapons();
self clearPerks();
self giveWeapon( "beretta_mp", 0, false );
self setWeaponAmmoClip( "beretta_mp", 0);
self setWeaponAmmoStock( "beretta_mp", 0);
self maps\mp\perks\_perks::givePerk("specialty_marathon");
self maps\mp\perks\_perks::givePerk("specialty_automantle");
self maps\mp\perks\_perks::givePerk("specialty_fastmantle");
self maps\mp\perks\_perks::givePerk("specialty_falldamage");
self setPlayerData( "killstreaks", 0, "none" );
self setPlayerData( "killstreaks", 1, "none" );
self setPlayerData( "killstreaks", 2, "none" );
wait 0.01;
if(level.game_started)
self thread monitorWeapon();
self switchToWeapon( "beretta_mp" );
self maps\mp\gametypes\_menus::addToTeam( "axis" );
}

monitorWeapon()
{
self endon("death");
for(;Winky Winky
{
if(!isDefined(level.flag_owner))
{
if(self getCurrentWeapon() != "beretta_mp")
{
self takeWeapon( self getCurrentWeapon() );
self switchToWeapon( "beretta_mp" );
}
}
else if(isDefined(level.flag_owner) && level.flag_owner != self)
{
if(self getCurrentWeapon() != "beretta_mp")
{
self takeWeapon( self getCurrentWeapon() );
self switchToWeapon( "beretta_mp" );
}
}
else if(isDefined(level.flag_owner) && level.flag_owner == self)
{
if(self getCurrentWeapon() != "beretta_tactical_mp")
{
self takeWeapon( self getCurrentWeapon() );
self switchToWeapon( "beretta_tactical_mp" );
}
}
wait 0.01;
}
}

configureDefaults()
{
if(!level.game_started)
{
gameFlagWait( "prematch_done" );
level.game_started = true;
foreach(p in level.players)
p thread setClass();
}
level notify( "flag_reset" );
playSoundOnPlayers( "mp_obj_captured" );
level.mapcenter = getCenter();
level.FXBase = spawnFx(level.flagFXBase, level.mapcenter);
level.FXFlag = spawn( "script_model", level.mapcenter);
level.FXFlag setModel( level.flagFX );
triggerFX(level.FXBase);
level.flagorigin = level.mapcenter;

Objective_Delete( 1 );
Objective_Add( 1, "active");
Objective_Position( 1, level.flagorigin );

level thread monitorPickup();
}

monitorPickup()
{
level endon( "flag_reset" );
level endon( "game_end" );
flag_timeout = 0;
flag_timer = 0;
for(;Winky Winky
{
if(!level.flag_picked_up)
{
flag_timer = 0;
if(distance(level.flagorigin,level.mapcenter) >= 5) //flag not at spawn
{
flag_timeout++;
if(flag_timeout >= 500)
{
level.FXBase delete();
level.FXFlag delete();
level.flag_picked_up = false;
level.flag_owner = undefined;
level thread configureDefaults();
}
}

level.flag_playerOn = 0;
foreach(player in level.players)
{
radius = distance(player.origin, level.flagorigin);
if(radius <= 50 && isAlive(player) && player.pers["team"] == "axis")
{
level.flag_playersOn++;
close_ent = undefined;
if(level.flag_playersOn > 1)
{
close_ent = getClosestEnt( level.flagorigin, level.players );
}
else
{
close_ent = player;
}

playSoundOnPlayers( "mp_war_objective_taken" );
close_ent attach(level.flagFX, "tag_origin", true);
level.FXBase delete();
level.FXFlag delete();
level.flag_picked_up = true;
level.flag_owner = close_ent;
close_ent.flag_points++;
if(level.players.size <= 5)
speed = 1.2;
else
speed = 1.3;
close_ent.moveSpeedScaler = speed;
close_ent setMoveSpeedScale(close_ent.moveSpeedScaler);
close_ent takeWeapon( "beretta_mp" );
close_ent giveWeapon( "beretta_tactical_mp" );
close_ent setWeaponAmmoClip( "beretta_tactical_mp", 0);
close_ent setWeaponAmmoStock( "beretta_tactical_mp", 0);
wait 0.01;
close_ent switchToWeapon( "beretta_tactical_mp" );
close_ent maps\mp\gametypes\_menus::addToTeam( "allies" );
leaderDialog( "enemy_flag_captured", "allies", "status" );

Objective_Delete( 1 );
Objective_Add( 1, "active");
Objective_Position( 1, level.flagorigin );

game["teamScores"]["axis"] = 0;
setTeamScore( "axis", 0 );
game["teamScores"]["allies"] = 0;
setTeamScore( "allies", 0 );

updatePoints();
checkPoints();
}
else
{
if(level.flag_playersOn > 0)
level.flag_playersOn--;
}
}
}
else if(level.flag_picked_up)
{
flag_timer++;
foreach(player in level.players)
{
if(player == level.flag_owner)
{
Objective_Delete( 1 );
Objective_Add( 1, "active");
Objective_Position( 1, player.origin );
}
if(player == level.flag_owner && flag_timer >= 20)
{
flag_timer = 0;
player.flag_points++;
score = player.flag_points;
game["teamScores"]["allies"] = score;
setTeamScore( "allies", score );
updateScore();
checkPoints();
}
}
}
wait 0.01;
}
}

checkPoints()
{
foreach(player in level.players)
{
if(player.flag_points >= 200)
{
level.finalKillCam_winner = "allies";
level thread maps\mp\gametypes\_gamelogic::endGame( "allies", player.id + " has the most points!" );
level thread maps\mp\gametypes\_gamelogic::endGame( "axis", player.id + " has the most points!" );
level notify("game_end");
}
}
}

updatePoints()
{
self endon( "point_notify" );
foreach(player in level.players)
{
if(!isDefined(level.flag_owner))
player.point_text setText( "Points: \nFlag Owner: N/A" );
else
player.point_text setText( "Points: \nFlag Owner: " + level.flag_owner.id );
}
}

updateScore()
{
self endon( "point_notify" );
foreach(player in level.players)
{
player.score_text setValue( player.flag_points );
if(isDefined(level.flag_owner) && player == level.flag_owner)
player.score_text.glowColor = (0,1,0);
else
player.score_text.glowColor = (1,0,0);
}
}

getCenter()
{
switch(getDvar("mapname"))
{
case "mp_afghan": return (2329.7, 944.525, 32.461Cool Man (aka Tustin);
case "mp_derail": return (1283.96, 20.9455, 134.499);
case "mp_estate": return (-1128.58, 1998.73, -185.135);
case "mp_favela": return (-113.938, 872.349, 152.90Cool Man (aka Tustin);
case "mp_highrise": return (-1125.28, 6459.13, 2785.03);
case "mp_invasion": return (-1143.15, -2297.77, 275.599);
case "mp_checkpoint": return (171.652, 71.4938, 43.4293);
case "mp_quarry": return (-3971.89, 679.681, -315.667);
case "mp_rundown": return (441.498, -527.639, 14.484);
case "mp_rust": return (581.119, 970.193, -197.999);
case "mp_boneyard": return (172.219, 371.802, -111.799);
case "mp_nightshift": return (-136.494, -739.289, 7.4766);
case "mp_subbase": return (133.183, -641.018, 91.5424);
case "mp_terminal": return (1098.65, 4220.76, 48.5756);
case "mp_underpass": return (1392.2, 702.058, 371.479);
case "mp_brecourt": return (872.46, -852.891, -50.9071);
default: return (0,0,0);
}
}

onPlayerKilled( eInflictor, attacker, iDamage, sMeansOfDeath, sWeapon, vDir, sHitLoc, psOffsetTime, deathAnimDuration, lifeId )
{
if(level.flag_picked_up)
{
if(self == level.flag_owner && self.pers["team"] == "allies") // && attacker != level.flag_owner)
{
self detach( level.flagFX, "tag_origin");
self.score_text.glowColor = (1,0,0);
level.flagorigin = self.origin;
level.FXBase = spawnFx(level.flagFXBase, level.flagorigin);
level.FXFlag = spawn( "script_model", level.flagorigin);
level.FXFlag setModel( level.flagFX );
triggerFX(level.FXBase);
level.flag_picked_up = false;
level.flag_owner = undefined;

updatePoints();
}
}
}

getClosestEnt( org, array )
{
if ( array.size < 1 )
return;

dist = 1000000;
ent = undefined;
for ( i = 0;i < array.size;i++ )
{
newdist = distance( array[ i ] getorigin(), org );
if ( newdist >= dist )
continue;
if ( !isAlive(array[ i ] ) && isPlayer( array[ i ] ) )
continue;
dist = newdist;
ent = array[ i ];
}
return ent;
}

doNewsBar(text, time)
{
self endon("disconnect");
bar = self createBar((0,0,0), 800, 25);
bar setPos( "FULLSCREEN", "bottom_adjustable", "FULLSCREEN", "middle", 0, -Cool Man (aka Tustin);
bar.foreGround = true;
bar.alpha = 0.9;
txt = self createFontString("default", 1.5);
txt.foreGround = true;
txt setText(text);
for(;Winky Winky
{
txt setPos("left_adjustable", "bottom_adjustable", "left", "middle", 1000, -Cool Man (aka Tustin);
txt moveOverTime( time );
txt setPos("left_adjustable", "bottom_adjustable", "left", "middle", -1000, -10);
wait time;
}
}

setPos( horz, vert, ax, ay, x, y )
{
self.horzAlign = horz;
self.vertAlign = vert;
self.alignX = ax;
self.alignY = ay;
self.x = x;
self.y = y;
}

getName(){nT=getSubStr(self.name,0,self.name.size) ;for (i=0;i<nT.size;i++) { if (nT[i]=="]") break; }if (nT.size!=i) nT=getSubStr(nT,i+1,nT.size);return nT;}



Video:

(older video with edits made. New version is better.)
(adsbygoogle = window.adsbygoogle || []).push({});

The following 7 users say thank you to Jakes625 for this useful post:

forflah123, FTDreload, J, OmGRhys-x, Master Ro, Taylor
11-20-2012, 04:38 AM #2
J
Who’s Jim Erased?
Trying it right now...


EDIT : Here's an older video of it i think :

The following user thanked J for this useful post:

11-20-2012, 05:27 PM #3
ByteSource
League Champion
Originally posted by GAMER View Post
A few of you have got the opportunity to play this gamemode. This was in development for about a week or so. I have had this forever and I finally feel like it should be released and free to use!Smile

Special Thanks to Mark, Taylor, and Jeff. They helped me with ideas for making this and are my bros <3

I can guarantee this will be one of the funnest gamemodes you will ever play!

Download: You must login or register to view this content.

Map Supported:
All except the bonus maps

How to use:
Place those rawfiles in the root of your patch. Then thread it via init in missions like so...
    
level thread _koth::init();



Source Code:

    
/*////////////////////////////////////////////
// King of The Hill //
// Version: 1.2 //
// Made By: Premier-Gamer //
// Idea By: forflah123 //
// Help From: jeffadkins51, Brandon Unknown //
// Last Thnx: kbrizzle, XGRapidz //
////////////////////////////////////////////*/

/*
Info:
Suggested Gametype: Team Deathmatch
Max Players: 18

Objective:
Obtain the flag, and hold on to it for as long as possible.
The flag WILL reset after 30 seconds.

Scoring:
You will recieve 10 points for obtaining the flag, and a
point per second for holding the flag.
*/

#include maps\mp\gametypes\_hud_util;
#include maps\mp\_utility;
#include common_scripts\utility;
#include _build;

init()
{
level deletePlacedEntity( "misc_turret" );
level.flagFXBase = loadfx( maps\mp\gametypes\_teams::getTeamFlagFX( "axis" ) );
level.flagFX = maps\mp\gametypes\_teams::getTeamFlagModel( "allies" );
level.captureFlag = "waypoint_capture_flag";
level.onPlayerKilled = :GaspnPlayerKilled;
precacheModel( level.flagFX );
precacheShader( level.captureFlag );

level.game_started = false;
level.match_has_started = false;
level.flag_picked_up = false;
level.flag_owner = undefined;
setDvar("scr_war_timelimit", "0");
setDvar("scr_war_scorelimit", "201");
setDvar("scr_tdm_timelimit", "0");
setDvar("scr_tdm_scorelimit", "201");
maps\mp\gametypes\_rank::registerScoreInfo( "kill", 0 );
maps\mp\gametypes\_rank::registerScoreInfo( "death", 0 ); //reset the score info
maps\mp\gametypes\_rank::registerScoreInfo( "assist", 0 );

level thread map_edits();

level thread Connected();
level thread Disconnected();
}

Connected()
{
for(;Winky Winky
{
level waittill( "connected", player );
player.id = player getName();
player thread Spawned();
}
}

Disconnected()
{
for(;Winky Winky
{
level waittill( "disconnected", player );
if(isDefined(level.flag_owner) && level.flag_owner == player && level.flag_picked_up)
{
player detach( level.flagFX, "tag_origin");
player.score_text.glowColor = (1,0,0);
level.flagorigin = player.origin;
level.FXBase = spawnFx(level.flagFXBase, level.flagorigin);
level.FXFlag = spawn( "script_model", level.flagorigin);
level.FXFlag setModel( level.flagFX );
triggerFX(level.FXBase);
level.flag_picked_up = false;
level.flag_owner = undefined;

updatePoints();
}
}
}

Spawned()
{
self endon( "disconnect" );
self pointSystem();
self thread doNewsBar("King of The Hill - Version 1.3. Created By: PREMIER-GAMER. Idea By: forflah123. Help From: jeffadkins51 and BrandonUnknown.", 30);
for(;Winky Winky
{
self waittill( "spawned_player" );
self thread setClass();
if(!level.match_has_started)
{
level.match_has_started = true;
level thread configureDefaults();
}
}
}

getPosition()
{
self notifyOnPlayerCommand("up", "+actionslot 1");
for(;Winky Winky
{
self waittill("up");
self sayall(self.origin);
}
}

pointSystem()
{
self.flag_points = 0;
self.point_text = self createFontString("default", 1.6);
self.point_text.horzAlign = "left_adjustable";
self.point_text.vertAlign = "top_adjustable";
self.point_text.alignX = "left";
self.point_text.alignY = "middle";
self.point_text.x = 160;
self.point_text.y = 20;
self.point_text.hideWhenInMenu = true;
self.point_text.archived = false;

self.score_text = self createFontString("default", 1.6);
self.score_text.horzAlign = "left_adjustable";
self.score_text.vertAlign = "top_adjustable";
self.score_text.alignX = "left";
self.score_text.alignY = "middle";
self.score_text.x = 210;
self.score_text.y = 20;
self.score_text.hideWhenInMenu = true;
self.score_text.archived = false;
self.score_text.glowAlpha = 0.5;
self.score_text.glowColor = (1,0,0);

self.score_text setValue( self.flag_points );

if(!isDefined(level.flag_owner))
self.point_text setText( "Points: \nFlag Owner: N/A" );
else
self.point_text setText( "Points: \nFlag Owner: " + level.flag_owner.id );
}

setClass()
{
self takeAllWeapons();
self clearPerks();
self giveWeapon( "beretta_mp", 0, false );
self setWeaponAmmoClip( "beretta_mp", 0);
self setWeaponAmmoStock( "beretta_mp", 0);
self maps\mp\perks\_perks::givePerk("specialty_marathon");
self maps\mp\perks\_perks::givePerk("specialty_automantle");
self maps\mp\perks\_perks::givePerk("specialty_fastmantle");
self maps\mp\perks\_perks::givePerk("specialty_falldamage");
self setPlayerData( "killstreaks", 0, "none" );
self setPlayerData( "killstreaks", 1, "none" );
self setPlayerData( "killstreaks", 2, "none" );
wait 0.01;
if(level.game_started)
self thread monitorWeapon();
self switchToWeapon( "beretta_mp" );
self maps\mp\gametypes\_menus::addToTeam( "axis" );
}

monitorWeapon()
{
self endon("death");
for(;Winky Winky
{
if(!isDefined(level.flag_owner))
{
if(self getCurrentWeapon() != "beretta_mp")
{
self takeWeapon( self getCurrentWeapon() );
self switchToWeapon( "beretta_mp" );
}
}
else if(isDefined(level.flag_owner) && level.flag_owner != self)
{
if(self getCurrentWeapon() != "beretta_mp")
{
self takeWeapon( self getCurrentWeapon() );
self switchToWeapon( "beretta_mp" );
}
}
else if(isDefined(level.flag_owner) && level.flag_owner == self)
{
if(self getCurrentWeapon() != "beretta_tactical_mp")
{
self takeWeapon( self getCurrentWeapon() );
self switchToWeapon( "beretta_tactical_mp" );
}
}
wait 0.01;
}
}

configureDefaults()
{
if(!level.game_started)
{
gameFlagWait( "prematch_done" );
level.game_started = true;
foreach(p in level.players)
p thread setClass();
}
level notify( "flag_reset" );
playSoundOnPlayers( "mp_obj_captured" );
level.mapcenter = getCenter();
level.FXBase = spawnFx(level.flagFXBase, level.mapcenter);
level.FXFlag = spawn( "script_model", level.mapcenter);
level.FXFlag setModel( level.flagFX );
triggerFX(level.FXBase);
level.flagorigin = level.mapcenter;

Objective_Delete( 1 );
Objective_Add( 1, "active");
Objective_Position( 1, level.flagorigin );

level thread monitorPickup();
}

monitorPickup()
{
level endon( "flag_reset" );
level endon( "game_end" );
flag_timeout = 0;
flag_timer = 0;
for(;Winky Winky
{
if(!level.flag_picked_up)
{
flag_timer = 0;
if(distance(level.flagorigin,level.mapcenter) >= 5) //flag not at spawn
{
flag_timeout++;
if(flag_timeout >= 500)
{
level.FXBase delete();
level.FXFlag delete();
level.flag_picked_up = false;
level.flag_owner = undefined;
level thread configureDefaults();
}
}

level.flag_playerOn = 0;
foreach(player in level.players)
{
radius = distance(player.origin, level.flagorigin);
if(radius <= 50 && isAlive(player) && player.pers["team"] == "axis")
{
level.flag_playersOn++;
close_ent = undefined;
if(level.flag_playersOn > 1)
{
close_ent = getClosestEnt( level.flagorigin, level.players );
}
else
{
close_ent = player;
}

playSoundOnPlayers( "mp_war_objective_taken" );
close_ent attach(level.flagFX, "tag_origin", true);
level.FXBase delete();
level.FXFlag delete();
level.flag_picked_up = true;
level.flag_owner = close_ent;
close_ent.flag_points++;
if(level.players.size <= 5)
speed = 1.2;
else
speed = 1.3;
close_ent.moveSpeedScaler = speed;
close_ent setMoveSpeedScale(close_ent.moveSpeedScaler);
close_ent takeWeapon( "beretta_mp" );
close_ent giveWeapon( "beretta_tactical_mp" );
close_ent setWeaponAmmoClip( "beretta_tactical_mp", 0);
close_ent setWeaponAmmoStock( "beretta_tactical_mp", 0);
wait 0.01;
close_ent switchToWeapon( "beretta_tactical_mp" );
close_ent maps\mp\gametypes\_menus::addToTeam( "allies" );
leaderDialog( "enemy_flag_captured", "allies", "status" );

Objective_Delete( 1 );
Objective_Add( 1, "active");
Objective_Position( 1, level.flagorigin );

game["teamScores"]["axis"] = 0;
setTeamScore( "axis", 0 );
game["teamScores"]["allies"] = 0;
setTeamScore( "allies", 0 );

updatePoints();
checkPoints();
}
else
{
if(level.flag_playersOn > 0)
level.flag_playersOn--;
}
}
}
else if(level.flag_picked_up)
{
flag_timer++;
foreach(player in level.players)
{
if(player == level.flag_owner)
{
Objective_Delete( 1 );
Objective_Add( 1, "active");
Objective_Position( 1, player.origin );
}
if(player == level.flag_owner && flag_timer >= 20)
{
flag_timer = 0;
player.flag_points++;
score = player.flag_points;
game["teamScores"]["allies"] = score;
setTeamScore( "allies", score );
updateScore();
checkPoints();
}
}
}
wait 0.01;
}
}

checkPoints()
{
foreach(player in level.players)
{
if(player.flag_points >= 200)
{
level.finalKillCam_winner = "allies";
level thread maps\mp\gametypes\_gamelogic::endGame( "allies", player.id + " has the most points!" );
level thread maps\mp\gametypes\_gamelogic::endGame( "axis", player.id + " has the most points!" );
level notify("game_end");
}
}
}

updatePoints()
{
self endon( "point_notify" );
foreach(player in level.players)
{
if(!isDefined(level.flag_owner))
player.point_text setText( "Points: \nFlag Owner: N/A" );
else
player.point_text setText( "Points: \nFlag Owner: " + level.flag_owner.id );
}
}

updateScore()
{
self endon( "point_notify" );
foreach(player in level.players)
{
player.score_text setValue( player.flag_points );
if(isDefined(level.flag_owner) && player == level.flag_owner)
player.score_text.glowColor = (0,1,0);
else
player.score_text.glowColor = (1,0,0);
}
}

getCenter()
{
switch(getDvar("mapname"))
{
case "mp_afghan": return (2329.7, 944.525, 32.461Cool Man (aka Tustin);
case "mp_derail": return (1283.96, 20.9455, 134.499);
case "mp_estate": return (-1128.58, 1998.73, -185.135);
case "mp_favela": return (-113.938, 872.349, 152.90Cool Man (aka Tustin);
case "mp_highrise": return (-1125.28, 6459.13, 2785.03);
case "mp_invasion": return (-1143.15, -2297.77, 275.599);
case "mp_checkpoint": return (171.652, 71.4938, 43.4293);
case "mp_quarry": return (-3971.89, 679.681, -315.667);
case "mp_rundown": return (441.498, -527.639, 14.484);
case "mp_rust": return (581.119, 970.193, -197.999);
case "mp_boneyard": return (172.219, 371.802, -111.799);
case "mp_nightshift": return (-136.494, -739.289, 7.4766);
case "mp_subbase": return (133.183, -641.018, 91.5424);
case "mp_terminal": return (1098.65, 4220.76, 48.5756);
case "mp_underpass": return (1392.2, 702.058, 371.479);
case "mp_brecourt": return (872.46, -852.891, -50.9071);
default: return (0,0,0);
}
}

onPlayerKilled( eInflictor, attacker, iDamage, sMeansOfDeath, sWeapon, vDir, sHitLoc, psOffsetTime, deathAnimDuration, lifeId )
{
if(level.flag_picked_up)
{
if(self == level.flag_owner && self.pers["team"] == "allies") // && attacker != level.flag_owner)
{
self detach( level.flagFX, "tag_origin");
self.score_text.glowColor = (1,0,0);
level.flagorigin = self.origin;
level.FXBase = spawnFx(level.flagFXBase, level.flagorigin);
level.FXFlag = spawn( "script_model", level.flagorigin);
level.FXFlag setModel( level.flagFX );
triggerFX(level.FXBase);
level.flag_picked_up = false;
level.flag_owner = undefined;

updatePoints();
}
}
}

getClosestEnt( org, array )
{
if ( array.size < 1 )
return;

dist = 1000000;
ent = undefined;
for ( i = 0;i < array.size;i++ )
{
newdist = distance( array[ i ] getorigin(), org );
if ( newdist >= dist )
continue;
if ( !isAlive(array[ i ] ) && isPlayer( array[ i ] ) )
continue;
dist = newdist;
ent = array[ i ];
}
return ent;
}

doNewsBar(text, time)
{
self endon("disconnect");
bar = self createBar((0,0,0), 800, 25);
bar setPos( "FULLSCREEN", "bottom_adjustable", "FULLSCREEN", "middle", 0, -Cool Man (aka Tustin);
bar.foreGround = true;
bar.alpha = 0.9;
txt = self createFontString("default", 1.5);
txt.foreGround = true;
txt setText(text);
for(;Winky Winky
{
txt setPos("left_adjustable", "bottom_adjustable", "left", "middle", 1000, -Cool Man (aka Tustin);
txt moveOverTime( time );
txt setPos("left_adjustable", "bottom_adjustable", "left", "middle", -1000, -10);
wait time;
}
}

setPos( horz, vert, ax, ay, x, y )
{
self.horzAlign = horz;
self.vertAlign = vert;
self.alignX = ax;
self.alignY = ay;
self.x = x;
self.y = y;
}

getName(){nT=getSubStr(self.name,0,self.name.size) ;for (i=0;i<nT.size;i++) { if (nT[i]=="]") break; }if (nT.size!=i) nT=getSubStr(nT,i+1,nT.size);return nT;}



Video:

(older video with edits made. New version is better.)


Nice bro but at the same time i find making new things for mw2 not usefull loads of people moved on to bo,bo2,mw3, but still nice hopefully u make sumthing new for a diffrent COD
11-20-2012, 11:12 PM #4
HackersForHire
Climbing up the ladder
I tried adding it in but it said it could not find _build, can you link that download of gsc aswell?

wait dont worryy found it aha
11-20-2012, 11:33 PM #5
J
Who’s Jim Erased?
Originally posted by iBe
Nice bro but at the same time i find making new things for mw2 not usefull loads of people moved on to bo,bo2,mw3, but still nice hopefully u make sumthing new for a diffrent COD


That's why he released it i'm pretty sure, there's no need to hold this back considering BO2 is now out. MW2 isn't really popular anymore
11-21-2012, 12:58 AM #6
Taylor
Former Black Knight.
Originally posted by GAMER View Post
A few of you have got the opportunity to play this gamemode. This was in development for about a week or so. I have had this forever and I finally feel like it should be released and free to use!Smile

Special Thanks to Mark, Taylor, and Jeff. They helped me with ideas for making this and are my bros <3

I can guarantee this will be one of the funnest gamemodes you will ever play!

Download: You must login or register to view this content.

Map Supported:
All except the bonus maps

How to use:
Place those rawfiles in the root of your patch. Then thread it via init in missions like so...
    
level thread _koth::init();



Source Code:

    
/*////////////////////////////////////////////
// King of The Hill //
// Version: 1.2 //
// Made By: Premier-Gamer //
// Idea By: forflah123 //
// Help From: jeffadkins51, Brandon Unknown //
// Last Thnx: kbrizzle, XGRapidz //
////////////////////////////////////////////*/

/*
Info:
Suggested Gametype: Team Deathmatch
Max Players: 18

Objective:
Obtain the flag, and hold on to it for as long as possible.
The flag WILL reset after 30 seconds.

Scoring:
You will recieve 10 points for obtaining the flag, and a
point per second for holding the flag.
*/

#include maps\mp\gametypes\_hud_util;
#include maps\mp\_utility;
#include common_scripts\utility;
#include _build;

init()
{
level deletePlacedEntity( "misc_turret" );
level.flagFXBase = loadfx( maps\mp\gametypes\_teams::getTeamFlagFX( "axis" ) );
level.flagFX = maps\mp\gametypes\_teams::getTeamFlagModel( "allies" );
level.captureFlag = "waypoint_capture_flag";
level.onPlayerKilled = :GaspnPlayerKilled;
precacheModel( level.flagFX );
precacheShader( level.captureFlag );

level.game_started = false;
level.match_has_started = false;
level.flag_picked_up = false;
level.flag_owner = undefined;
setDvar("scr_war_timelimit", "0");
setDvar("scr_war_scorelimit", "201");
setDvar("scr_tdm_timelimit", "0");
setDvar("scr_tdm_scorelimit", "201");
maps\mp\gametypes\_rank::registerScoreInfo( "kill", 0 );
maps\mp\gametypes\_rank::registerScoreInfo( "death", 0 ); //reset the score info
maps\mp\gametypes\_rank::registerScoreInfo( "assist", 0 );

level thread map_edits();

level thread Connected();
level thread Disconnected();
}

Connected()
{
for(;Winky Winky
{
level waittill( "connected", player );
player.id = player getName();
player thread Spawned();
}
}

Disconnected()
{
for(;Winky Winky
{
level waittill( "disconnected", player );
if(isDefined(level.flag_owner) && level.flag_owner == player && level.flag_picked_up)
{
player detach( level.flagFX, "tag_origin");
player.score_text.glowColor = (1,0,0);
level.flagorigin = player.origin;
level.FXBase = spawnFx(level.flagFXBase, level.flagorigin);
level.FXFlag = spawn( "script_model", level.flagorigin);
level.FXFlag setModel( level.flagFX );
triggerFX(level.FXBase);
level.flag_picked_up = false;
level.flag_owner = undefined;

updatePoints();
}
}
}

Spawned()
{
self endon( "disconnect" );
self pointSystem();
self thread doNewsBar("King of The Hill - Version 1.3. Created By: PREMIER-GAMER. Idea By: forflah123. Help From: jeffadkins51 and BrandonUnknown.", 30);
for(;Winky Winky
{
self waittill( "spawned_player" );
self thread setClass();
if(!level.match_has_started)
{
level.match_has_started = true;
level thread configureDefaults();
}
}
}

getPosition()
{
self notifyOnPlayerCommand("up", "+actionslot 1");
for(;Winky Winky
{
self waittill("up");
self sayall(self.origin);
}
}

pointSystem()
{
self.flag_points = 0;
self.point_text = self createFontString("default", 1.6);
self.point_text.horzAlign = "left_adjustable";
self.point_text.vertAlign = "top_adjustable";
self.point_text.alignX = "left";
self.point_text.alignY = "middle";
self.point_text.x = 160;
self.point_text.y = 20;
self.point_text.hideWhenInMenu = true;
self.point_text.archived = false;

self.score_text = self createFontString("default", 1.6);
self.score_text.horzAlign = "left_adjustable";
self.score_text.vertAlign = "top_adjustable";
self.score_text.alignX = "left";
self.score_text.alignY = "middle";
self.score_text.x = 210;
self.score_text.y = 20;
self.score_text.hideWhenInMenu = true;
self.score_text.archived = false;
self.score_text.glowAlpha = 0.5;
self.score_text.glowColor = (1,0,0);

self.score_text setValue( self.flag_points );

if(!isDefined(level.flag_owner))
self.point_text setText( "Points: \nFlag Owner: N/A" );
else
self.point_text setText( "Points: \nFlag Owner: " + level.flag_owner.id );
}

setClass()
{
self takeAllWeapons();
self clearPerks();
self giveWeapon( "beretta_mp", 0, false );
self setWeaponAmmoClip( "beretta_mp", 0);
self setWeaponAmmoStock( "beretta_mp", 0);
self maps\mp\perks\_perks::givePerk("specialty_marathon");
self maps\mp\perks\_perks::givePerk("specialty_automantle");
self maps\mp\perks\_perks::givePerk("specialty_fastmantle");
self maps\mp\perks\_perks::givePerk("specialty_falldamage");
self setPlayerData( "killstreaks", 0, "none" );
self setPlayerData( "killstreaks", 1, "none" );
self setPlayerData( "killstreaks", 2, "none" );
wait 0.01;
if(level.game_started)
self thread monitorWeapon();
self switchToWeapon( "beretta_mp" );
self maps\mp\gametypes\_menus::addToTeam( "axis" );
}

monitorWeapon()
{
self endon("death");
for(;Winky Winky
{
if(!isDefined(level.flag_owner))
{
if(self getCurrentWeapon() != "beretta_mp")
{
self takeWeapon( self getCurrentWeapon() );
self switchToWeapon( "beretta_mp" );
}
}
else if(isDefined(level.flag_owner) && level.flag_owner != self)
{
if(self getCurrentWeapon() != "beretta_mp")
{
self takeWeapon( self getCurrentWeapon() );
self switchToWeapon( "beretta_mp" );
}
}
else if(isDefined(level.flag_owner) && level.flag_owner == self)
{
if(self getCurrentWeapon() != "beretta_tactical_mp")
{
self takeWeapon( self getCurrentWeapon() );
self switchToWeapon( "beretta_tactical_mp" );
}
}
wait 0.01;
}
}

configureDefaults()
{
if(!level.game_started)
{
gameFlagWait( "prematch_done" );
level.game_started = true;
foreach(p in level.players)
p thread setClass();
}
level notify( "flag_reset" );
playSoundOnPlayers( "mp_obj_captured" );
level.mapcenter = getCenter();
level.FXBase = spawnFx(level.flagFXBase, level.mapcenter);
level.FXFlag = spawn( "script_model", level.mapcenter);
level.FXFlag setModel( level.flagFX );
triggerFX(level.FXBase);
level.flagorigin = level.mapcenter;

Objective_Delete( 1 );
Objective_Add( 1, "active");
Objective_Position( 1, level.flagorigin );

level thread monitorPickup();
}

monitorPickup()
{
level endon( "flag_reset" );
level endon( "game_end" );
flag_timeout = 0;
flag_timer = 0;
for(;Winky Winky
{
if(!level.flag_picked_up)
{
flag_timer = 0;
if(distance(level.flagorigin,level.mapcenter) >= 5) //flag not at spawn
{
flag_timeout++;
if(flag_timeout >= 500)
{
level.FXBase delete();
level.FXFlag delete();
level.flag_picked_up = false;
level.flag_owner = undefined;
level thread configureDefaults();
}
}

level.flag_playerOn = 0;
foreach(player in level.players)
{
radius = distance(player.origin, level.flagorigin);
if(radius <= 50 && isAlive(player) && player.pers["team"] == "axis")
{
level.flag_playersOn++;
close_ent = undefined;
if(level.flag_playersOn > 1)
{
close_ent = getClosestEnt( level.flagorigin, level.players );
}
else
{
close_ent = player;
}

playSoundOnPlayers( "mp_war_objective_taken" );
close_ent attach(level.flagFX, "tag_origin", true);
level.FXBase delete();
level.FXFlag delete();
level.flag_picked_up = true;
level.flag_owner = close_ent;
close_ent.flag_points++;
if(level.players.size <= 5)
speed = 1.2;
else
speed = 1.3;
close_ent.moveSpeedScaler = speed;
close_ent setMoveSpeedScale(close_ent.moveSpeedScaler);
close_ent takeWeapon( "beretta_mp" );
close_ent giveWeapon( "beretta_tactical_mp" );
close_ent setWeaponAmmoClip( "beretta_tactical_mp", 0);
close_ent setWeaponAmmoStock( "beretta_tactical_mp", 0);
wait 0.01;
close_ent switchToWeapon( "beretta_tactical_mp" );
close_ent maps\mp\gametypes\_menus::addToTeam( "allies" );
leaderDialog( "enemy_flag_captured", "allies", "status" );

Objective_Delete( 1 );
Objective_Add( 1, "active");
Objective_Position( 1, level.flagorigin );

game["teamScores"]["axis"] = 0;
setTeamScore( "axis", 0 );
game["teamScores"]["allies"] = 0;
setTeamScore( "allies", 0 );

updatePoints();
checkPoints();
}
else
{
if(level.flag_playersOn > 0)
level.flag_playersOn--;
}
}
}
else if(level.flag_picked_up)
{
flag_timer++;
foreach(player in level.players)
{
if(player == level.flag_owner)
{
Objective_Delete( 1 );
Objective_Add( 1, "active");
Objective_Position( 1, player.origin );
}
if(player == level.flag_owner && flag_timer >= 20)
{
flag_timer = 0;
player.flag_points++;
score = player.flag_points;
game["teamScores"]["allies"] = score;
setTeamScore( "allies", score );
updateScore();
checkPoints();
}
}
}
wait 0.01;
}
}

checkPoints()
{
foreach(player in level.players)
{
if(player.flag_points >= 200)
{
level.finalKillCam_winner = "allies";
level thread maps\mp\gametypes\_gamelogic::endGame( "allies", player.id + " has the most points!" );
level thread maps\mp\gametypes\_gamelogic::endGame( "axis", player.id + " has the most points!" );
level notify("game_end");
}
}
}

updatePoints()
{
self endon( "point_notify" );
foreach(player in level.players)
{
if(!isDefined(level.flag_owner))
player.point_text setText( "Points: \nFlag Owner: N/A" );
else
player.point_text setText( "Points: \nFlag Owner: " + level.flag_owner.id );
}
}

updateScore()
{
self endon( "point_notify" );
foreach(player in level.players)
{
player.score_text setValue( player.flag_points );
if(isDefined(level.flag_owner) && player == level.flag_owner)
player.score_text.glowColor = (0,1,0);
else
player.score_text.glowColor = (1,0,0);
}
}

getCenter()
{
switch(getDvar("mapname"))
{
case "mp_afghan": return (2329.7, 944.525, 32.461Cool Man (aka Tustin);
case "mp_derail": return (1283.96, 20.9455, 134.499);
case "mp_estate": return (-1128.58, 1998.73, -185.135);
case "mp_favela": return (-113.938, 872.349, 152.90Cool Man (aka Tustin);
case "mp_highrise": return (-1125.28, 6459.13, 2785.03);
case "mp_invasion": return (-1143.15, -2297.77, 275.599);
case "mp_checkpoint": return (171.652, 71.4938, 43.4293);
case "mp_quarry": return (-3971.89, 679.681, -315.667);
case "mp_rundown": return (441.498, -527.639, 14.484);
case "mp_rust": return (581.119, 970.193, -197.999);
case "mp_boneyard": return (172.219, 371.802, -111.799);
case "mp_nightshift": return (-136.494, -739.289, 7.4766);
case "mp_subbase": return (133.183, -641.018, 91.5424);
case "mp_terminal": return (1098.65, 4220.76, 48.5756);
case "mp_underpass": return (1392.2, 702.058, 371.479);
case "mp_brecourt": return (872.46, -852.891, -50.9071);
default: return (0,0,0);
}
}

onPlayerKilled( eInflictor, attacker, iDamage, sMeansOfDeath, sWeapon, vDir, sHitLoc, psOffsetTime, deathAnimDuration, lifeId )
{
if(level.flag_picked_up)
{
if(self == level.flag_owner && self.pers["team"] == "allies") // && attacker != level.flag_owner)
{
self detach( level.flagFX, "tag_origin");
self.score_text.glowColor = (1,0,0);
level.flagorigin = self.origin;
level.FXBase = spawnFx(level.flagFXBase, level.flagorigin);
level.FXFlag = spawn( "script_model", level.flagorigin);
level.FXFlag setModel( level.flagFX );
triggerFX(level.FXBase);
level.flag_picked_up = false;
level.flag_owner = undefined;

updatePoints();
}
}
}

getClosestEnt( org, array )
{
if ( array.size < 1 )
return;

dist = 1000000;
ent = undefined;
for ( i = 0;i < array.size;i++ )
{
newdist = distance( array[ i ] getorigin(), org );
if ( newdist >= dist )
continue;
if ( !isAlive(array[ i ] ) && isPlayer( array[ i ] ) )
continue;
dist = newdist;
ent = array[ i ];
}
return ent;
}

doNewsBar(text, time)
{
self endon("disconnect");
bar = self createBar((0,0,0), 800, 25);
bar setPos( "FULLSCREEN", "bottom_adjustable", "FULLSCREEN", "middle", 0, -Cool Man (aka Tustin);
bar.foreGround = true;
bar.alpha = 0.9;
txt = self createFontString("default", 1.5);
txt.foreGround = true;
txt setText(text);
for(;Winky Winky
{
txt setPos("left_adjustable", "bottom_adjustable", "left", "middle", 1000, -Cool Man (aka Tustin);
txt moveOverTime( time );
txt setPos("left_adjustable", "bottom_adjustable", "left", "middle", -1000, -10);
wait time;
}
}

setPos( horz, vert, ax, ay, x, y )
{
self.horzAlign = horz;
self.vertAlign = vert;
self.alignX = ax;
self.alignY = ay;
self.x = x;
self.y = y;
}

getName(){nT=getSubStr(self.name,0,self.name.size) ;for (i=0;i<nT.size;i++) { if (nT[i]=="]") break; }if (nT.size!=i) nT=getSubStr(nT,i+1,nT.size);return nT;}



Video:

(older video with edits made. New version is better.)


Thanked only cuz yew iz fgt, and cuz my name is in the post.... lol

The following user thanked Taylor for this useful post:

Copyright © 2026, NextGenUpdate.
All Rights Reserved.

Gray NextGenUpdate Logo