This is my first tutorial. Let me know if there are any ways to improve it.
Enities you need:
team_control_point_master
team_control_point
prop_dynamic
logic_auto
trigger_capture_area
tf_logic_koth
I am going to assume you know the basics of building the level and how to set up a basic control point.
Here we will examine how to set up the entities to create KOTH style.
First setup the control point area. For this you need:
team_control_point_master
team_control_point
prop_dynamic
trigger_capture_area
Place the team_control_point_master anywhere you like. Give it a name and set it as follows:
Name: master_control_point (Or what ever you like)
Restrict team from winning: Neither
Switch teams on map win?: No
Scoring style: Add team score for each round
Place the prop_dynamic as follows
The important things are:
World Model: cap_point_base.mdl
Name: prop_cap_1 (You can call this what ever you want but I will refer to it by that name)
Skin: 0
Place the team_control_point above the pro_dynamic as with any control point
The important things are:
Name: control_point_1 (You can call this what ever you want. I will refer to it by this name)
Print Name: koth_example_cap (This is the name that is printed on the HUD when someone captures the point. Call it whatever you like)
Then place the trigger_capture_area around the control point.
Once again the important things here are:
Name: capture_area_1 (You can call this what you like)
Control Point: control_point_1 (This needs to be the same as the name for the team_control_point)
Can RED Cap?: Yes
Can BLUE Cap: Yes
These can be adjusted as you see fit but for official Valve koth maps they are as follows:
Number of RED players to cap: 2
Number of BLUE players to cap: 2
Red Spawn Adjust: 0
Blue SPawn Adjust: 0
Time to cap (sec): 6
Now we need to set the outputs for this entity:
First the normal outputs to set the skin of the prop_dynamic:
Format:
My Output named | Target Entity | Target Input | Parameter | Delay
OnCapTeam1 | prop_cap_1 | Skin | 1 | 0.00
OnCapTeam2 | prop_cap_1 | Skin | 2 | 0.00
Those should seem familiar now for the koth specific ones. These will show up as broken in hammer. This is because the tf_gamerules entity will not be placed. If the tf_gamerules entity is placed it causes the game to crash.
EDIT: People are reporting that they have been able to place the tf_gamerules entity without it causing a crash. You can place the tf_gamerules entity anywhere.
Set its Name to tf_gamerules and this will fix the broken input/outputs in hammer. This is not necessary as it works without the tf_gamerules enity but if you prefer to not have hammer report broken place the entity. However, TF2 crashed for me when I had the tf_gamerules entity placed in the map. So if you experience a crash like I did remove the tf_gamerules entity and just let the broken I/Os remain.
These values are how Valve maps are set. You can alter the Parameter for the RespawnWaveTime input to be what ever you like.
Format:
My Output named | Target Entity | Target Input | Parameter | Delay
OnCapTeam1 | tf_gamerules | SetBlueTeamRespawnWaveTime | 4 | 0.00
OnCapTeam1 | tf_gamerules | SetRedTeamRespawnWaveTime | 8 | 0.00
OnCapTeam1 | tf_gamerules | SetRedKothClockActive | | 0.00
OnCapTeam2 | tf_gamerules | SetRedTeamRespawnWaveTime | 4 | 0.00
OnCapTeam2 | tf_gamerules | SetBlueTeamRespawnWaveTime | 8 | 0.00
OnCapTeam2 | tf_gamerules | SetBlueKothClockActive | | 0.00
Ok. Now the point is setup. Now place a tf_logic_koth entity anywhere in the map. Currently you can not select this entiy from the drop down box with the entity tool. Instead you must copy another point entity (for example you team_control_point_master). Then edit its properties. In the class field type "tf_logic_koth" then press enter. You should have as follows:
You will need to add each key and value manually. Click the Add button:
Enter the following:
Key: targetname
Value: tf_logic_koth
And click OK.
We will do the same thing for two more keys:
Key: timer_length
Value: 180
The timer_length key is how long a team must hold the point (or "hill") until they win. This is in seconds so the value of 180 is 3 minuets which is Valves standard. You can change this value to whatever you see fit.
Key: unlock_point
Value: 30
This is the amount of time (also in seconds). Until the point is unlocked. Valve provides 30 seconds of battle before the point becomes available to be captured. You can change this to whatever you like.
You should now have as follows:
Now for the last part. Setting up the logic_auto to initialize the game. This handles setting the initial spawn times and displaying the Goal strings.
Place the logic_auto wherever you like. Leave the Class Info tab as it is and go to the Outputs tab.
Once again these will show as broken in hammer but they need to be that way:
Format:
My Output named | Target Entity | Target Input | Parameter | Delay
OnMapSpawn | tf_gamerules | SetBlueTeamGoalString | #koth_setup_goal | 0.00
OnMapSpawn | tf_gamerules | SetRedTeamGoalString | #koth_setup_goal | 0.00
OnMapSpawn | tf_gamerules | SetRedTeamRespawnWaveTime | 6 | 0.00
OnMapSpawn | tf_gamerules | SetBlueTeamRespawnWaveTime | 6 | 0.00
Thats it. You now have a working koth style map done the official way.
Attached is the .vmf and .bsp of this example level.
Enities you need:
team_control_point_master
team_control_point
prop_dynamic
logic_auto
trigger_capture_area
tf_logic_koth
I am going to assume you know the basics of building the level and how to set up a basic control point.
Here we will examine how to set up the entities to create KOTH style.
First setup the control point area. For this you need:
team_control_point_master
team_control_point
prop_dynamic
trigger_capture_area
Place the team_control_point_master anywhere you like. Give it a name and set it as follows:
Name: master_control_point (Or what ever you like)
Restrict team from winning: Neither
Switch teams on map win?: No
Scoring style: Add team score for each round
Place the prop_dynamic as follows
The important things are:
World Model: cap_point_base.mdl
Name: prop_cap_1 (You can call this what ever you want but I will refer to it by that name)
Skin: 0
Place the team_control_point above the pro_dynamic as with any control point
The important things are:
Name: control_point_1 (You can call this what ever you want. I will refer to it by this name)
Print Name: koth_example_cap (This is the name that is printed on the HUD when someone captures the point. Call it whatever you like)
Then place the trigger_capture_area around the control point.
Once again the important things here are:
Name: capture_area_1 (You can call this what you like)
Control Point: control_point_1 (This needs to be the same as the name for the team_control_point)
Can RED Cap?: Yes
Can BLUE Cap: Yes
These can be adjusted as you see fit but for official Valve koth maps they are as follows:
Number of RED players to cap: 2
Number of BLUE players to cap: 2
Red Spawn Adjust: 0
Blue SPawn Adjust: 0
Time to cap (sec): 6
Now we need to set the outputs for this entity:
First the normal outputs to set the skin of the prop_dynamic:
Format:
My Output named | Target Entity | Target Input | Parameter | Delay
OnCapTeam1 | prop_cap_1 | Skin | 1 | 0.00
OnCapTeam2 | prop_cap_1 | Skin | 2 | 0.00
Those should seem familiar now for the koth specific ones. These will show up as broken in hammer. This is because the tf_gamerules entity will not be placed. If the tf_gamerules entity is placed it causes the game to crash.
EDIT: People are reporting that they have been able to place the tf_gamerules entity without it causing a crash. You can place the tf_gamerules entity anywhere.
Set its Name to tf_gamerules and this will fix the broken input/outputs in hammer. This is not necessary as it works without the tf_gamerules enity but if you prefer to not have hammer report broken place the entity. However, TF2 crashed for me when I had the tf_gamerules entity placed in the map. So if you experience a crash like I did remove the tf_gamerules entity and just let the broken I/Os remain.
These values are how Valve maps are set. You can alter the Parameter for the RespawnWaveTime input to be what ever you like.
Format:
My Output named | Target Entity | Target Input | Parameter | Delay
OnCapTeam1 | tf_gamerules | SetBlueTeamRespawnWaveTime | 4 | 0.00
OnCapTeam1 | tf_gamerules | SetRedTeamRespawnWaveTime | 8 | 0.00
OnCapTeam1 | tf_gamerules | SetRedKothClockActive | | 0.00
OnCapTeam2 | tf_gamerules | SetRedTeamRespawnWaveTime | 4 | 0.00
OnCapTeam2 | tf_gamerules | SetBlueTeamRespawnWaveTime | 8 | 0.00
OnCapTeam2 | tf_gamerules | SetBlueKothClockActive | | 0.00
Ok. Now the point is setup. Now place a tf_logic_koth entity anywhere in the map. Currently you can not select this entiy from the drop down box with the entity tool. Instead you must copy another point entity (for example you team_control_point_master). Then edit its properties. In the class field type "tf_logic_koth" then press enter. You should have as follows:
You will need to add each key and value manually. Click the Add button:
Enter the following:
Key: targetname
Value: tf_logic_koth
And click OK.
We will do the same thing for two more keys:
Key: timer_length
Value: 180
The timer_length key is how long a team must hold the point (or "hill") until they win. This is in seconds so the value of 180 is 3 minuets which is Valves standard. You can change this value to whatever you see fit.
Key: unlock_point
Value: 30
This is the amount of time (also in seconds). Until the point is unlocked. Valve provides 30 seconds of battle before the point becomes available to be captured. You can change this to whatever you like.
You should now have as follows:
Now for the last part. Setting up the logic_auto to initialize the game. This handles setting the initial spawn times and displaying the Goal strings.
Place the logic_auto wherever you like. Leave the Class Info tab as it is and go to the Outputs tab.
Once again these will show as broken in hammer but they need to be that way:
Format:
My Output named | Target Entity | Target Input | Parameter | Delay
OnMapSpawn | tf_gamerules | SetBlueTeamGoalString | #koth_setup_goal | 0.00
OnMapSpawn | tf_gamerules | SetRedTeamGoalString | #koth_setup_goal | 0.00
OnMapSpawn | tf_gamerules | SetRedTeamRespawnWaveTime | 6 | 0.00
OnMapSpawn | tf_gamerules | SetBlueTeamRespawnWaveTime | 6 | 0.00
Thats it. You now have a working koth style map done the official way.
Attached is the .vmf and .bsp of this example level.
Last edited: