Tf logic training mode: Difference between revisions
Jump to navigation
Jump to search

Tip:This entity, as well as most of its Inputs, can be used on any multiplayer map by spawning this entity after map load and setting the
Workaround:Many of these issues have workarounds:
Warning:
(Big info dump, works in multiplayer.) |
(link, activator/caller info) |
||
Line 1: | Line 1: | ||
{{LanguageBar}} | {{LanguageBar}} | ||
{{CD|CTrainingModeLogic | {{CD|CTrainingModeLogic|file1=tf_gamerules.cpp}} | ||
{{This is a| | {{This is a|logical entity|name=tf_logic_training_mode|game=Team Fortress 2}} | ||
Handles outputs and and messages for training, mainly for the [[player]]. | Handles outputs and and messages for training, mainly for the [[player]]. | ||
{{tip|This entity, as well as most of its Inputs, can be used on any multiplayer map by spawning this entity after map load and setting the <code>m_bIsInTraining</code> NetProp on [[tf_gamerules]] to true with [[VScript]], however there are multiple caveats: | {{tip|This entity, as well as most of its Inputs, can be used on any multiplayer map by spawning this entity after map load and setting the <code>m_bIsInTraining</code> NetProp on [[tf_gamerules]] to true with [[VScript]], however there are multiple caveats: | ||
Line 45: | Line 45: | ||
== Outputs == | == Outputs == | ||
{{todo|See which outputs work in multiplayer}} | {{todo|See which outputs work in multiplayer}} | ||
{{O|OnPlayerSpawnAsScout|Fired when the player spawns as a Scout.}} | {{O|OnPlayerSpawnAsScout|ac-is-this=1|param=void|Fired when the player spawns as a Scout.}} | ||
{{O|OnPlayerSpawnAsSniper|Fired when the player spawns as a Sniper.}} | {{O|OnPlayerSpawnAsSniper|ac-is-this=1|param=void|Fired when the player spawns as a Sniper.}} | ||
{{O|OnPlayerSpawnAsSoldier|Fired when the player spawns as a Soldier.}} | {{O|OnPlayerSpawnAsSoldier|ac-is-this=1|param=void|Fired when the player spawns as a Soldier.}} | ||
{{O|OnPlayerSpawnAsDemoman|Fired when the player spawns as a Demoman.}} | {{O|OnPlayerSpawnAsDemoman|ac-is-this=1|param=void|Fired when the player spawns as a Demoman.}} | ||
{{O|OnPlayerSpawnAsMedic|Fired when the player spawns as a Medic.}} | {{O|OnPlayerSpawnAsMedic|ac-is-this=1|param=void|Fired when the player spawns as a Medic.}} | ||
{{O|OnPlayerSpawnAsHeavy|Fired when the player spawns as a Heavy.}} | {{O|OnPlayerSpawnAsHeavy|ac-is-this=1|param=void|Fired when the player spawns as a Heavy.}} | ||
{{O|OnPlayerSpawnAsPyro|Fired when the player spawns as a Pyro.}} | {{O|OnPlayerSpawnAsPyro|ac-is-this=1|param=void|Fired when the player spawns as a Pyro.}} | ||
{{O|OnPlayerSpawnAsSpy|Fired when the player spawns as a Spy.}} | {{O|OnPlayerSpawnAsSpy|ac-is-this=1|param=void|Fired when the player spawns as a Spy.}} | ||
{{O|OnPlayerSpawnAsEngineer|Fired when the player spawns as an Engineer.}} | {{O|OnPlayerSpawnAsEngineer|ac-is-this=1|param=void|Fired when the player spawns as an Engineer.}} | ||
{{O|OnPlayerDied|Fired when the player dies.}} | {{O|OnPlayerDied|activator=the killer|param=void|Fired when the player dies.}} | ||
{{O|OnBotDied|Fired when a bot dies.}} | {{O|OnBotDied|activator=the killer|param=void|Fired when a bot dies.}} | ||
{{O|OnPlayerSwappedToPrimary|Fired when the player swaps to the item in their primary weapon slot.}} | {{O|OnPlayerSwappedToPrimary|ac-is-this=1|param=void|Fired when the player swaps to the item in their primary weapon slot.}} | ||
{{O|OnPlayerSwappedToSecondary|Fired when the player swaps to the item in their secondary weapon slot.}} | {{O|OnPlayerSwappedToSecondary|ac-is-this=1|param=void|Fired when the player swaps to the item in their secondary weapon slot.}} | ||
{{O|OnPlayerSwappedToMelee|Fired when the player swaps to the item in their melee weapon slot.}} | {{O|OnPlayerSwappedToMelee|ac-is-this=1|param=void|Fired when the player swaps to the item in their melee weapon slot.}} | ||
{{O|OnPlayerSwappedToBuilding|Fired when the player swaps to the item in their building weapon slot.}} | {{O|OnPlayerSwappedToBuilding|ac-is-this=1|param=void|Fired when the player swaps to the item in their building weapon slot.}} | ||
{{O|OnPlayerSwappedToPDA|Fired when the player swaps to the item in their PDA weapon slot.}} | {{O|OnPlayerSwappedToPDA|ac-is-this=1|param=void|Fired when the player swaps to the item in their PDA weapon slot.}} | ||
{{O|OnBuildOutsideArea|Fired when the player builds an object outside a suggested area.}} | {{O|OnBuildOutsideArea|activator=the building|param=void|Fired when the player builds an object outside a suggested area.}} | ||
{{O|OnPlayerDetonateBuilding|Sent when the player manually detonates one of their buildings.}} | {{O|OnPlayerDetonateBuilding|activator=the player|caller=the building|param=void|Sent when the player manually detonates one of their buildings.}} |
Revision as of 13:58, 7 May 2025


![]() |
---|
CTrainingModeLogic |
![]() |
tf_logic_training_mode
is a logical entity available in Team Fortress 2.
Handles outputs and and messages for training, mainly for the player.

m_bIsInTraining
NetProp on tf_gamerules to true with VScript, however there are multiple caveats:
- Players loadout will be replaced with stock items
- The server will be hidden from the server browser, this will persist for the entire duration of the map
- Achievement tracking is disabled
- Doesn't print player join or team switch chat messages (they can still be seen when opening chat)
- Team and class switching menus will be disabled, however
join_class
andautoteam
will still work - Autobalance is disabled
- Domination/Revenge logic is disabled

- Iterate player items and store them in an array/table in player scope first, then re-equip them using this method after they are stripped.
- For custom servers, the
hide_server
cvar must be added to the vscript cvar allowlist, orsv_allow_point_servercommand
must be set toalways
forSendToServerConsole
- Set
m_bAllowTrainingAchievements
to true on tf_gamerules - Set
m_bIsInTraining
to false on player_connect or player_team and set back to true shortly after. However this will disable any active training HUD elements
Todo: No known workaround, need to enable/disable the NetProp or use the console commands for class/team switching
Todo: No known workaround
Todo: Potentially send the
player_death
event manually with domination/revenge death flags, or player_domination
, untested.
Keyvalues
- Name (targetname) <string>[ Edit ]
- The name that other entities refer to this entity by, via Inputs/Outputs or other keyvalues (e.g.
parentname
ortarget
).
Also displayed in Hammer's 2D views and Entity Report.See also: Generic Keyvalues, Inputs and Outputs available to all entities
- Next Map (nextMap) <string>
- Next map to load when the current one is finished. Default choices are
tr_dustbowl
andtr_target
, although any map is accepted.
Inputs

EndTraining
, PlaySoundOnPlayer
, and ForcePlayerSwapToWeapon
will not work on dedicated servers.- ShowTrainingMsg <string >
- Show a training message, for training mode. The parameter should be the string entry in tf_english.txt
- ShowTrainingObjective <string >
- Sets a training objective to show to the player.
- KickBots
- Kicks all bots from the server.
- ShowTrainingHUD
- Makes the training objective HUD visible.
- HideTrainingHUD
- Makes the training objective HUD hidden.
- EndTraining <string >
- Ends training mode. The parameter is for displaying ending text from tf_english.txt
- PlaySoundOnPlayer <string >
- Play a sound on the player.
- WaitForTimerOrKeypress <string >
- Wait for the specified logic_timer entity to fire on its interval or for a keypress from the player.
- SetNextMap <string >
- Set the next map for training.
- ForcePlayerSpawnAsClassOutput
- Force the appropriate output to fire for the player spawning as a class. You can use this to essentially ask what class the player is.
Outputs
Todo: See which outputs work in multiplayer
- OnPlayerSpawnAsScout <void>
- !activator = !caller = this entity
Fired when the player spawns as a Scout.
- OnPlayerSpawnAsSniper <void>
- !activator = !caller = this entity
Fired when the player spawns as a Sniper.
- OnPlayerSpawnAsSoldier <void>
- !activator = !caller = this entity
Fired when the player spawns as a Soldier.
- OnPlayerSpawnAsDemoman <void>
- !activator = !caller = this entity
Fired when the player spawns as a Demoman.
- OnPlayerSpawnAsMedic <void>
- !activator = !caller = this entity
Fired when the player spawns as a Medic.
- OnPlayerSpawnAsHeavy <void>
- !activator = !caller = this entity
Fired when the player spawns as a Heavy.
- OnPlayerSpawnAsPyro <void>
- !activator = !caller = this entity
Fired when the player spawns as a Pyro.
- OnPlayerSpawnAsSpy <void>
- !activator = !caller = this entity
Fired when the player spawns as a Spy.
- OnPlayerSpawnAsEngineer <void>
- !activator = !caller = this entity
Fired when the player spawns as an Engineer.
- OnPlayerDied <void>
- !activator = the killer
!caller = this entity
Fired when the player dies.
- OnBotDied <void>
- !activator = the killer
!caller = this entity
Fired when a bot dies.
- OnPlayerSwappedToPrimary <void>
- !activator = !caller = this entity
Fired when the player swaps to the item in their primary weapon slot.
- OnPlayerSwappedToSecondary <void>
- !activator = !caller = this entity
Fired when the player swaps to the item in their secondary weapon slot.
- OnPlayerSwappedToMelee <void>
- !activator = !caller = this entity
Fired when the player swaps to the item in their melee weapon slot.
- OnPlayerSwappedToBuilding <void>
- !activator = !caller = this entity
Fired when the player swaps to the item in their building weapon slot.
- OnPlayerSwappedToPDA <void>
- !activator = !caller = this entity
Fired when the player swaps to the item in their PDA weapon slot.
- OnBuildOutsideArea <void>
- !activator = the building
!caller = this entity
Fired when the player builds an object outside a suggested area.
- OnPlayerDetonateBuilding <void>
- !activator = the player
!caller = the building
Sent when the player manually detonates one of their buildings.