tf_logic_training_mode

From Valve Developer Community
Jump to navigation Jump to search
English (en)Translate (Translate)
Class hierarchy
CTrainingModeLogic
CPointEntity
CBaseEntity
tf_gamerules.cpp

tf_logic_training_mode is a logical entity available in Team Fortress 2 Team Fortress 2. Handles outputs and and messages for training, mainly for the player.

Tip.pngTip: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 m_bIsInTraining NetProp on tf_gamerules to true with VScript, however there are multiple caveats:
  1. Players loadout will be replaced with stock items on resupply/respawn while training mode is enabled
  2. The server will be hidden from the server browser, this will persist for the entire duration of the map
  3. Achievement tracking is disabled
  4. Doesn't print player join or team switch chat messages (they can still be seen when opening chat)
  5. Team and class switching menus will be disabled, however join_class and autoteam will still work
  6. Autobalance is disabled
  7. Domination/Revenge logic is disabled
PlacementTip.pngWorkaround:Many of these issues have workarounds:

  1. 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. This will not restore items correctly if the player changes their loadout and resupplies while the annotation is active
  2. For custom servers, the hide_server cvar must be added to the vscript cvar allowlist, or sv_allow_point_servercommand must be set to always for SendToServerConsole
  3. Set m_bAllowTrainingAchievements to true on tf_gamerules
  4. 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>
The name that other entities refer to this entity by, via Inputs/Outputs or other keyvalues (e.g. parentname or target).
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 and tr_target, although any map is accepted.

Inputs

Warning.pngWarning:EndTraining, PlaySoundOnPlayer, and ForcePlayerSwapToWeapon will not work on dedicated servers.
Tip.pngTip:official training maps use a special character to show yellow text, look for TR_Generic_WeaponFire in tf/resource/tf_english.txt to find this special character
ShowTrainingMsg <stringRedirectInput/string>
Show a training message, for training mode. The parameter can be any raw string or a localized string entry from tf_english.txt
Tip.pngTip:similar to env_hudhint, training messages can read keybinds, for example Press %reload%
ShowTrainingObjective <stringRedirectInput/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 <stringRedirectInput/string>
Ends training mode. The parameter is for displaying ending text from tf_english.txt
PlaySoundOnPlayer <stringRedirectInput/string>
Play a sound on the player.
WaitForTimerOrKeypress <stringRedirectInput/string>
Wait for the specified logic_timer entity to fire on its interval or for a keypress from the player.
SetNextMap <stringRedirectInput/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.