I've just finished the first beta of my Team Fortress 2 Beta FGD and the Game Configuration and Game Info.
Known Bugs: The Textures don't display correct in the 3D-View of Hammer atm.
The GameConfig.txt in the folder sourcesdk/bin has to be updated with this text:
Code
"Team Fortress 2"
{
"GameDir" "steampath\steamapps\Account\team fortress 2\tf"
"hammer"
{
"GameData0" "steampath\steamapps\Account\sourcesdk\bin\tf2.fgd"
"TextureFormat" "5"
"MapFormat" "4"
"DefaultTextureScale" "0.125000"
"DefaultLightmapScale" "16"
"GameExe" "steampath\steamapps\Account\team fortress 2\hl2.exe"
"DefaultSolidEntity" "func_capturezone"
"DefaultPointEntity" "item_teamflag"
"BSP" "steampath\steamapps\Account\sourcesdk\bin\vbsp.exe"
"Vis" "steampath\steamapps\Account\sourcesdk\bin\vvis.exe"
"Light" "steampath\steamapps\Account\sourcesdk\bin\vrad.exe"
"GameExeDir" "steampath\steamapps\Account\team fortress 2"
"MapDir" "steampath\steamapps\Account\sourcesdk_content\tf\mapsrc"
"BSPDir" "steampath\steamapps\Account\team fortress 2\tf\maps"
"CordonTexture" "tools\toolsskybox"
"MaterialExcludeCount" "0"
}
}
Display More
You then create a new file "tf2.fgd" in the same folder with this text:
Code
//====== Copyright © 1996-2005, Valve Corporation, All rights reserved. =======
//
// Purpose: TEAM FORTRESS 2 game definition file (.fgd) - beta release by HLPortal.de | e-freak
//
//=============================================================================
@include "base.fgd"
//-------------------------------------------------------------------------
//
// Base Classes
//
//-------------------------------------------------------------------------
@BaseClass = Target
[
target(target_destination) : "Target"
]
@BaseClass = TeamNum
[
TeamNum(choices) : "Team Number (int)" : 0 =
[
2 : "RED"
3 : "BLU"
]
input SetTeam(integer) : "Changes the entity's team"
]
@FilterClass base(BaseFilter) size(-8 -8 -8, 8 8 = filter_activator_team :
"A filter that filters by the team of the activator."
[
filterteam(choices) : "Filter Team Number" : 2 : "The team number to filter by. If the filter mode is Allow, only entities whose "+
"team number matches the given team will pass the filter. If the filter mode is Disallow, "+
"all entities EXCEPT those whose team number matches the given team will pass the filter." =
[
2 : "RED"
3 : "BLU"
]
]
//-------------------------------------------------------------------------
//
// Classes
//
//-------------------------------------------------------------------------
@SolidClass base(EnableDisable) = func_regenerate : "Regeneration Area"
[
TeamNum(choices) : "Team relation" : 0 : "Which team can benefit?" =
[
0 : "Both"
2 : "Red"
3 : "Blu"
]
associatedmodel(string) : "Model used" : "insert" : "The Model (prop_dynamic) which shall do the animation"
]
@SolidClass base(EnableDisable) = func_capturezone : "CTF Capturezone"
[
capturepoint(integer) : "Capturepoint Nr." : 1
targetname(string) : "Target Name" : "capturezone_red" : "Give the capturezone a name to relate other entities to it"
TeamNum(choices) : "Team relation" : 0 : "Which team does the capturezone belong to?" =
[
0 : "Neutral"
2 : "Red"
3 : "Blu"
]
output OnFlagCaptured(void) : "Send when Flag has been captured"
output OnEnterZone(void) : "Send when entering the capturezone"
add_timer_seconds(integer) : "Add To Timer (sec)" : 0
]
@SolidClass base(EnableDisable) = func_respawnroomvisualizer : "TF2 Respawnroomvisualization"
[
spawnflags(flags) =
[
1 : "vrad_brush_cast_shadows" : 0
2 : "StartDisabled" : 0
4 : "Solidity" : 1
8 : "Rendermode" : 0
16 : "disablereceiveshadows" : 0
32 : "disableshadows" : 0
64 : "InputFilter" : 0
]
respawnroomname(string) : "Respawnroom Name" : "respawnroom_red_round1" : "Give the Respawnroom a name to relate other entities to it"
rendercolor(color255) : "Rendered Color" : :
renderamt(integer) : "Renderamt" : 255 : "Integer-Value from 0 to 255 allowed"
rendermode(integer) : "Rendermode" : 0
renderfx(integer) : "Render-Effect" : 0
]
@SolidClass base(EnableDisable) = func_respawnroom : "Respawnroom"
[
spawnflags(flags) =
[
1 : "StartDisabled" : 0
]
targetname(string) : "Target Name" : "respawnroom_red_round1" : "Give the Respawnroom a name to relate other entities to it"
TeamNum(choices) : "Team relation" : 0 : "Which team does the capturezone belong to?" =
[
0 : "Neutral"
2 : "Red"
3 : "Blu"
]
]
@SolidClass base(EnableDisable) = trigger_capture_area : "CP Capture Area"
[
spawnflags(flags) =
[
1 : "StartDisabled" : 0
2 : "team_cancap_3" : 1
4 : "team_cancap_2" : 0
]
area_time_to_cap(integer) : "Capturetime" : 3 : "in Seconds"
area_cap_point(string) : "CP Name" : "cap_red_1" : "Relation-Name"
team_numcap_3(integer) : "Blu Players" : 1 : "Number of Blu-Players to capture or defend the Area"
team_numcap_2(integer) : "Red Players" : 1 : "Number of Red-Players to capture or defend the Area"
output OnCapTeam2(void) : "start_timer,AddTime,270,0.01,-1"
output OnCapTeam2(void) : "sign_cap_1,Skin,2,0,-1"
output OnCapTeam2(void) : "area1_camera,Disable,,0,-1"
output OnCapTeam2(void) : "cap_1,Skin,2,0,-1"
]
@PointClass base(EnableDisable,Angles) = item_teamflag: "CTF Flag"
[
spawnflags(flags) =
[
1 : "StartDisabled" : 0
2 : "GameType" : 0
]
targetname(string) : "Target Name" : "flag_red" : "Give the Flag a name to relate other entities to it"
TeamNum(choices) : "Team relation" : 0 : "Which team's Flag is it?" =
[
0 : "Neutral"
2 : "Red"
3 : "Blu"
]
model(studio) : "World Model" : "models/flag/briefcase.mdl"
skin(integer) : "Skin" : 2 : "The model has multiple versions of its texture (related to the team). Change the number to fit the skin to the team."
output OnFlagTaken(void) : "Send when Flag has been taken"
output OnFlagDropped(void) : "Send when Flag has been dropped"
output OnFlagReturned(void) : "Send when Flag has returned"
input Skin(integer) : "Changes the model skin to the specified number."
]
@PointClass base(EnableDisable,Angles) = info_observer_point : "Observer Point"
[
targetname(string) : "Target Name" : "obs_A" : "Give the Observer Point a name to relate other entities to it"
associated_team_entity(string) : "Associated Entity" : "cp_A" : "Which Entity is this parent-related to?"
]
@PointClass base(EnableDisable,Angles) = info_player_teamspawn : "Player Spawn"
[
spawnflags(flags) =
[
1 : "StartDisabled" : 0
]
targetname(string) : "Target Name" : "spawn_red_first" : "Give the Playerspawn a name to relate other entities to it"
controlpoint(string) : "Related Controlpoint" : "cp_A" : "If the Spawn is Neutral and shell belong to the Controlpoint owning team, fill the CP' name in here"
TeamNum(choices) : "Team relation" : 0 : "Which team does the Spawned player belong to?" =
[
0 : "Neutral"
2 : "Red"
3 : "Blu"
]
team_no(integer) : "Team Number" : 2
round_redspawn(string) : "Red's turn" : "round_1" : "If your map is Round-based write in which round the Red-Team owns the spawn"
round_bluespawn(string) : "Blu's turn" : "round_2" : "If your map is Round-based write in which round the Blu-Team owns the spawn"
group_no(integer) : "Group Number" : 1 : "If teams shall be splitted in different groups (e.g. coop-map target reached) write here"
goal_state(integer) : "Goal State" : 1
goal_result(integer) : "Goal Result" : 1
goal_activation(integer) : "Goal Activation" : 1
activate_goal_no(integer) : "Activate Goal" : 23 : "Activate a specific goal when spawning here"
]
@PointClass base(EnableDisable,Angles) = game_intro_viewpoint : "Intro Viewpoint"
[
TeamNum(choices) : "Team relation" : 0 : "Which team's players will see from this Viewpoint?" =
[
0 : "Neutral"
2 : "Red"
3 : "Blu"
]
time_delay(integer) : "Time Delay" : 10
step_number(integer) : "Step Number" : 2
hint_message(string) : "Hint Message" : "#Intro_capturepoints"
event_to_fire(string) : "Press Fire" : "controlpoint_pulse_element"
event_delay(integer) : "Event Delay" : 3
]
@PointClass base(EnableDisable) = team_control_point_round : "Control Point Round"
[
targetname(string) : "Target Name" : "round1" : "Give a round-name to relate other entities to it"
cpr_restrict_team_cap_win(choices) : "Team relation" : 0 : "Which team can't capture this point?" =
[
0 : "Neutral"
2 : "Red"
3 : "Blu"
]
cpr_priority(integer) : "CP Priority" : 100 "The priority determines the row in which the CPs have to be taken"
cpr_cp_names(string) : "Names" : "cap_red_1 cap_red_2"
output OnWonByTeam2(void) : "cap1,Trigger,,12,-1"
]
@PointClass base(EnableDisable) = game_round_win : "Game win"
[
spawnflags(flags) =
[
1 : "switch_teams" : 1
2 : "force_map_reset" : 1
]
targetname(string) : "Target Name" : "round1" : "Give a Target to relate to"
cpr_restrict_team_cap_win(choices) : "Team relation" : 0 : "Which team wins?" =
[
0 : "Neutral"
2 : "Red"
3 : "Blu"
]
]
@PointClass base(EnableDisable) = team_round_timer : "Team Round Timer"
[
spawnflags(flags) =
[
1 : "auto_countdown" : 1
2 : "force_map_reset" : 1
4 : "start_paused" : 0
8 : "show_in_hud" : 1
]
targetname(string) : "Target Name" : "start timer" : "Give a Target to relate to"
timer_length(integer) : "Timer length" : 100 : "in Seconds"
cpr_cp_names(string) : "Names" : "cap_red_1 cap_red_2"
setup_length(integer) : "Length of Setup" : 30 : "How long is the setupphase"
output onfinished(void) : "end_of_game,RoundWin,,0,-1"
output OnSetupFinished(void) : "relay_stage1_gates,Trigger,,0,-1"
output OnSetupFinished(void) : "relay_stage2_gates,Trigger,,0,-1"
output OnSetupFinished(void) : "relay_stage3_gates,Trigger,,0,-1"
output On5MinRemain(void) : "5minutes_warning,PlaySound,,0,-1"
]
@PointClass base(EnableDisable) = filter_activator_tfteam : "Filter Team"
[
TeamNum(choices) : "Team relation" : 0 : "Which team can't pass?" =
[
0 : "Neutral"
2 : "Red"
3 : "Blu"
]
targetname(string) : "Filter used" : "filter_blue_team" : "Related Triggerblock"
Negated(string) : "Negation" : "Allow all entites that match criteria"
]
@PointClass base(EnableDisable) = team_control_point : "Team CP"
[
spawnflags(flags) =
[
1 : "team_timedpoints_3" : 0
2 : "team_timedpoints_2" : 0
4 : "StartDisabled" : 0
]
team_previouspoint_3_0(string) : "Previous Blu CP" : "cap_red_1"
team_previouspoint_2_0(string) : "Previous Red CP" : "cap_blu_1"
team_model_3(studio) : "Blu CP Model" : "models/effects/cappoint_hologram.mdl"
team_model_2(studio) : "Red CP Model" :"models/effects/cappoint_hologram.mdl"
team_model_0(studio) : "Neutral CP Model" :"models/effects/cappoint_hologram.mdl"
team_icon_3(material) : "Blu Obj Sprite" : "sprites/obj_icons/icon_obj_blu"
team_icon_2(material) : "Red Obj Sprite" : "sprites/obj_icons/icon_obj_red"
team_icon_0(material) : "Neutral Obj Sprite" : "sprites/obj_icons/icon_obj_neutral"
team_bodygroup_3(integer) : "Bodygroup Blu" : 0
team_bodygroup_2(integer) : "Bodygroup Red" : 1
team_bodygroup_0(integer) : "Bodygroup Neutral" : 3
targetname(string) : "CP Name" : "cap_red_1" : "Related CP"
point_warn_sound(sound) : "CP Warning" : ControlPoint.CaptureWarn : "To be played sound when CP is under attack"
point_printname(string): "Printed CP Name" : "#Dustbowl_cap_1_a"
point_index(integer) : "CP Index Nr" : 1
point_group(integer) : "CP Group" : 0
point_default_owner(choices) : "Team relation" : 0 : "Which team holds the point by default?" =
[
0 : "Neutral"
2 : "Red"
3 : "Blu"
]
]
@PointClass base(EnableDisable,Angles) = item_ammopack_small : "Small Ammo"
[
TeamNum(choices) : "Team relation" : 0 : "Which team can benefit?" =
[
0 : "Both"
2 : "Red"
3 : "Blu"
]
]
@PointClass base(EnableDisable,Angles) = item_ammopack_medium : "Medium Ammo"
[
TeamNum(choices) : "Team relation" : 0 : "Which team can benefit?" =
[
0 : "Both"
2 : "Red"
3 : "Blu"
]
]
@PointClass base(EnableDisable,Angles) = item_ammopack_full : "Full Ammo"
[
TeamNum(choices) : "Team relation" : 0 : "Which team can benefit?" =
[
0 : "Both"
2 : "Red"
3 : "Blu"
]
]
@PointClass base(EnableDisable,Angles) = item_healthkit_full : "Full Health"
[
TeamNum(choices) : "Team relation" : 0 : "Which team can benefit?" =
[
0 : "Both"
2 : "Red"
3 : "Blu"
]
]
@PointClass base(EnableDisable,Angles) = item_healthkit_medium : "Medium Health"
[
TeamNum(choices) : "Team relation" : 0 : "Which team can benefit?" =
[
0 : "Both"
2 : "Red"
3 : "Blu"
]
]
@PointClass base(EnableDisable,Angles) = item_healthkit_small : "Small Health"
[
TeamNum(choices) : "Team relation" : 0 : "Which team can benefit?" =
[
0 : "Both"
2 : "Red"
3 : "Blu"
]
]
Display More
And finally, you have to change the GameInfo.txt in the folder \team fortress 2\tf from
[/code][code] Game |all_source_engine_paths|hl2to
.
No warranty yet and please change your GameInfo.txt back to the former line before playing on a VAC Server (i'm not sure what it does!)