List of TF2 Script Functions

From Valve Developer Community
Jump to: navigation, search

Squirrel This list contains the engine-related Squirrel classes, functions and variables available for VScript in Team Fortress 2 Team Fortress 2.

The official documentation can be printed in the console by setting developer to non-zero, loading a map, and executing script_help. However, this documentation is very incomplete and most methods are not listed, requiring them to be found by other means instead.

Warning.png Warning: This page is still work-in-progress, many functions lack documentation and testing.
Note.png Note: Most of these functions were dumped externally as they are not exposed by normal means. For these functions, the return is unknown and the arguments may not be fully correct.
Tip.png Tip: Autocompleting of VScript functions is available for VSCode, see this tutorial.
#1 To do: Figure out inheritance - CBaseMultiplayerPlayer's inheritance is unclear.
#2 To do: Constants and variables (e.g. PI). This did not used to include the update that added the Constants table.
#3 To do: Copy over documentation from the L4D2 page, since Team Fortress 2 is derived from the VScript version as Left 4 Dead 2.
#4 To do: Split the Globals section into various sub-sections, especially the built-in Squirrel functions.
#5 To do: Names for function sigs's params, since params are mysterious magical properties otherwise.
#6 To do: Format the data types's constructors more nicely
#7 To do: Script debug functions have no info other than their names!
#8 To do: Consolidate script function subpages from Left 4 Dead 2 together into a generic page that describes both Team Fortress 2 and Left 4 Dead 2, including any differences both branches have. E.g. TraceLine, ClientPrint...
#9 To do: Organize the hierarchy/section formatting of the NextBot classes properly


Name Class Description
Entities CEntities Provides access to currently spawned entities.
EntityOutputs CScriptEntityOutputs Allows manipulation of entity output data
NavMesh CNavMesh Provides access to the maps NavMesh and NavAreas.
NetProps CNetPropManager Allows reading and updating the network properties of an entity.
PlayerVoiceListener PlayerVoiceListener Tracks if any player is using voice and for how long.


Name Type Value / Description
Constants table Enumerations for various function arguments or netprops.
Documentation table Contains the printed strings from the script_help command.
print_indent integer 0
_PublishedHelp table NONE

Script Debug

Name Type Value
ScriptDebugDefaultWatchColor array [0, 192, 0]
ScriptDebugDrawTextEnabled bool true
ScriptDebugDrawWatchesEnabled bool true
ScriptDebugInDebugDraw bool false
ScriptDebugText array NONE
ScriptDebugTextIndent integer 0
ScriptDebugTextFilters table NONE
ScriptDebugTraces table NONE
ScriptDebugTraceAllOn bool false
ScriptDebugWatches array NONE


A constant is a variable whose value cannot be altered during program runtime, usually made to rid any instances of magic numbers by giving them self-documenting names.

Name Type Value
_charsize_ integer 1
_floatsize_ integer 4
_intsize_ integer 4
_version_ string "Squirrel 3.0.4 stable"
_versionnumber_ integer 304
RAND_MAX integer 32767
PI float 3.14159


See this page for all enums under the Constants table.

There are also enums kept within the Constants table, all with their own constants. For an example of accessing an enum's constant, the HIDEHUD_CROSSHAIR constant of the enum HideHUD is accessed by doing Constants.HideHUD.HIDEHUD_CROSSHAIR.



This is a script handle class for entities. All entities have a script handle using this class, sometimes as one of its subclasses.

An entity's own handle are accessed with:


Function Signature Description
__KeyValueFromFloat __KeyValueFromFloat(string, float)
__KeyValueFromInt __KeyValueFromInt(string, int)
__KeyValueFromString __KeyValueFromString(string, string)
__KeyValueFromVector __KeyValueFromVector(string, Vector)
AddEFlags AddEFlags(int)
AddFlag AddFlag(int)
AddSolidFlags AddSolidFlags(int)
ApplyAbsVelocityImpulse void ApplyAbsVelocityImpulse(Vector) Apply a Velocity Impulse
ApplyLocalAngularVelocityImpulse void ApplyLocalAngularVelocityImpulse(Vector) Apply an Ang Velocity Impulse
BecomeRagdollOnClient bool BecomeRagdollOnClient(Vector) Becomes a ragdoll with a force
ClearFlags ClearFlags()
ClearSolidFlags ClearSolidFlags()
ConnectOutput void ConnectOutput(string, string) Adds an I/O connection that will call the named function when the specified output fires
Destroy void Destroy()
DisableDraw void DisableDraw() Enable drawing (removes EF_NODRAW)
DisconnectOutput void DisconnectOutput(string, string) Removes a connected script function from an I/O event.
DispatchSpawn void DispatchSpawn() Alternative dispatch spawn, same as the one in CEntities, for convenience.
EmitSound void EmitSound(string) Plays a sound from this entity.
EnableDraw void EnableDraw() Disable drawing (sets EF_NODRAW)
entindex int entindex()
EyeAngles QAngle EyeAngles() Returns the entity's eye angles
EyePosition Vector EyePosition() Get vector to eye position - absolute coords
FirstMoveChild handle FirstMoveChild()
GetAbsAngles QAngle GetAbsAngles() Get entity pitch, yaw, roll as QAngles
GetAbsVelocity Vector GetAbsVelocity() Returns the current absolute velocity of the entity
Obsolete GetAngles (→ GetAbsAngles) Vector GetAngles() Get entity pitch, yaw, roll as a vector
GetAngularVelocity Vector GetAngularVelocity() Get the local angular velocity - returns a vector of pitch,yaw,roll
GetBaseVelocity Vector GetBaseVelocity() Returns any constant velocity currently being imparted onto the entity. This includes being pushed by effects like trigger_push and players standing on moving geometry like elevators. Should always returns a zero vector if the entity is not affected by any movement effects.
GetBoundingMaxs Vector GetBoundingMaxs() Get a vector containing max bounds, centered on object
GetBoundingMaxsOriented Vector GetBoundingMaxsOriented() Get a vector containing max bounds, centered on object, taking the object's orientation into account
GetBoundingMins Vector GetBoundingMins() Get a vector containing min bounds, centered on object
GetBoundingMinsOriented Vector GetBoundingMinsOriented() Get a vector containing min bounds, centered on object, taking the object's orientation into account
GetCenter Vector GetCenter() Get vector to center of object - absolute coords
GetClassname string GetClassname()
GetCollisionGroup GetCollisionGroup()
GetEFlags int GetEFlags()
GetFlags int GetFlags()
GetEntityHandle <unknown> GetEntityHandle() Get the entity as an EHANDLE
GetEntityIndex int GetEntityIndex()
GetForwardVector Vector GetForwardVector() Get the forward vector of the entity
GetFriction float GetFriction() Get PLAYER friction, ignored for objects
GetGravity float GetGravity()
GetHealth int GetHealth()
Obsolete GetLeftVector (→ GetRightVector) Vector GetLeftVector() Get the right vector of the entity. This is purely for compatibility.
GetLocalAngles QAngle GetLocalAngles()
GetLocalOrigin Vector GetLocalOrigin()
GetLocalVelocity Vector GetLocalVelocity() Get Entity relative velocity
GetMaxHealth int GetMaxHealth()
GetModelKeyValues handle GetModelKeyValues() Get a KeyValue class instance on this entity's model
GetModelName string GetModelName() Returns the name of the model
GetMoveParent handle GetMoveParent() If in hierarchy, retrieves the entity's parent
GetMoveType int GetMoveType()
GetName string GetName()
GetOrigin Vector GetOrigin() This is GetAbsOrigin with a funny script name for some reason. Not changing it for legacy compat though.
GetOwner handle GetOwner() Gets this entity's owner
GetPhysAngularVelocity Vector GetPhysAngularVelocity()
GetPhysVelocity Vector GetPhysVelocity()
GetPreTemplateName string GetPreTemplateName() Get the entity name stripped of template unique decoration
GetRightVector Vector GetRightVector() Get the right vector of the entity
GetRootMoveParent handle GetRootMoveParent() If in hierarchy, walks up the hierarchy to find the root parent
GetScriptId string GetScriptId() Retrieve the unique identifier used to refer to the entity within the scripting system.
GetScriptScope handle GetScriptScope() Retrieve the script-side data associated with an entity
GetScriptThinkFunc string GetScriptThinkFunc() Retrieve the name of the current script think func
GetSolid int GetSolid()
GetSoundDuration float GetSoundDuration(string, string) Returns float duration of the sound. Takes soundname and optional actormodelname.
GetTeam int GetTeam()
GetUpVector Vector GetUpVector() Get the up vector of the entity
Obsolete GetVelocity (→ GetAbsVelocity) Vector GetVelocity()
GetWaterLevel int GetWaterLevel()
GetWaterType int GetWaterType()
IsEFlagSet bool IsEFlagSet(int)
IsPlayer bool IsPlayer()
IsSolid bool IsSolid()
IsSolidFlagSet bool IsSolidFlagSet(int)
IsValid bool IsValid()
KeyValueFromFloat bool KeyValueFromFloat(string, float) Executes KeyValue with a float
KeyValueFromInt bool KeyValueFromInt(string, int) Executes KeyValue with an int
KeyValueFromString bool KeyValueFromString(string, string) Executes KeyValue with a string
KeyValueFromVector bool KeyValueFromVector(string, Vector) Executes KeyValue with a vector
Kill void Kill()
LocalEyeAngles handle LocalEyeAngles() Returns the entity's local eye angles
NextMovePeer handle NextMovePeer()
PrecacheModel void PrecacheModel(string)
PrecacheScriptSound void PrecacheScriptSound(string)
PrecacheSoundScript void PrecacheSoundScript(string) Precache a sound for later playing.
RemoveEFlags void RemoveEFlags(int)
RemoveFlag void RemoveFlag(int)
RemoveSolidFlags void RemoveSolidFlags(int)
SetAbsAngles void SetAbsAngles(QAngle) Set entity pitch, yaw, roll as QAngles
SetAbsVelocity void SetAbsVelocity(Vector) Sets the current absolute velocity of the entity
SetAbsOrigin void SetAbsOrigin(Vector) SetAbsOrigin
Obsolete SetAngles (→ SetAbsAngles) void SetAngles(float, float, float) Set entity pitch, yaw, roll.
SetAngularVelocity void SetAngularVelocity(float, float, float) Set the local angular velocity - takes float pitch,yaw,roll velocities
SetCollisionGroup void SetCollisionGroup(int)
SetDrawEnabled void SetDrawEnabled(bool) Enables drawing if you pass true, disables drawing if you pass false.
SetEFlags void SetEFlags(int)
SetForwardVector void SetForwardVector(Vector) Set the orientation of the entity to have this forward vector
SetFriction void SetFriction(float)
SetGravity void SetGravity(float)
SetHealth void SetHealth(int)
SetLocalAngles void SetLocalAngles(QAngle)
SetLocalOrigin void SetLocalOrigin(Vector)
SetMaxHealth void SetMaxHealth(int)
SetModel void SetModel(string) Set a model for this entity
SetMoveType void SetMoveType(EMoveType movetype, EMoveCollide movecollide)
SetModelSimple void SetModelSimple(string) Set a model for this entity. Matches easier behaviour of the SetModel input, automatically precaches, maintains sequence/cycle if possible.
Obsolete SetOrigin (→ SetAbsOrigin) void SetOrigin(Vector)
SetOwner void SetOwner(handle) Sets this entity's owner
SetPhysAngularVelocity void SetPhysAngularVelocity(Vector)
SetPhysVelocity void SetPhysVelocity(Vector)
SetSize void SetSize(Vector, Vector)
SetSolid SetSolid(int)
SetSolidFlags SetSolidFlags(int)
SetTeam void SetTeam(int)
SetVelocity void SetVelocity(Vector)
SetWaterLevel SetWaterLevel(int)
SetWaterType SetWaterType(int)
StopSound void StopSound(string) Stops a sound on this entity.
TakeDamage void TakeDamage(float flDamage, int nDamageType, handle hAttacker)
Teleport void Teleport(bool, Vector, bool, QAngle, bool, Vector) Teleports this entity
TerminateScriptScope void TerminateScriptScope() Clear the current script scope for this entity
ToggleFlag ToggleFlag(int)
TakeDamageEx void TakeDamageEx(handle hInflictor, handle hAttacker, handle hWeapon, Vector vecDamageForce, Vector vecDamagePosition, float flDamage, int nDamageType)
TakeDamageCustom void TakeDamageCustom(handle hInflictor, handle hAttacker, handle hWeapon, Vector vecDamageForce, Vector vecDamagePosition, float flDamage, int nDamageType, int nCustomDamageType)
ValidateScriptScope bool ValidateScriptScope() Ensure that an entity's script scope has been created


Hooks are functions that are called by the game code at appropriate moments. For example, when an entity takes damage, the OnTakeDamage hook would be executed.

Function Signature Description
Input[InputName] bool Input[InputName]() Called when the entity receives an input from the I/O system that matches the function's name. The name of the function needs to beInputfollowed by the name of the input with the same casing (PascalCase). E.g. for the FireUser1 input, it would beInputFireUser1.

When the function is called, Script Handles of the activator and caller entities are accessible to the function under the variablesactivatorandcaller. The function needs to return a boolean value; Returningtrueprocesses the input, whilefalsecancels it.

OnPostSpawn void OnPostSpawn() Called after the entity spawns, which is after scripts and players have loaded. This could be used to have an entity register itself with a master script, or adjusting the entity parameters in a programmatic way.
Precache void Precache() Called after the script executes. Can be used to call precache functions for models and sounds on map load.
OnTakeDamage void OnTakeDamage(handle params) Called each time an entity takes damage. The script can modify the table entries not suffixed with const, and these will be sent back to the game code.
Note.png Note: This is a special "entity hook" and works differently than the other hooks, see the example below for how to set it up.

The table contains the following keys:

Name Type Description
const_entity handle The entity which took damage
inflictor handle The entity which dealt the damage, can be null
weapon handle The weapon which dealt the damage, can be null
attacker handle The owner of the damage, can be null
damage float Damage amount
max_damage float Damage cap
damage_bonus float Additional damage (e.g. from crits)
damage_bonus_provider handle Owner of the damage bonus
base_damage_const float Base damage
damage_force Vector Damage force
damage_for_force_calc float If non-zero, this damage is used for force calculations
damage_position Vector Where the damage actually came from
reported_position Vector Where the damage supposedly came from
damage_type int Damage type. See Constants.FDmgType
damage_custom int Special damage type. See Constants.ETFDmgCustom
damage_stats int Unused
force_friendly_fire bool If true, force the damage to friendlyfire, regardless of this entity's and attacker's team
ammo_type int Unused
player_penetration_count int How many players the damage has penetrated so far
damaged_other_players int How many players other than the attacker has the damage been applied to. Used for rocket jump damage reduction
crit_type int Type of crit damage. 0 - None, 1 - Mini, 2 - Full
early_out bool If set to true by the script, the game's damage routine will not run and it will simply return the currently set damage.


function OnScriptHook_OnTakeDamage(params)

    if (params.const_entity.IsPlayer())
        params.damage = 0;


Extends CBaseEntity

Script handle class for animatable entities, such as props.


Function Signature Description
DispatchAnimEvents void DispatchAnimEvents(handle) Dispatch animation events to a CBaseAnimating
FindBodygroupByName int FindBodygroupByName(string) Find a bodygroup id by name
GetAttachmentAngles QAngle GetAttachmentAngles(int) Get the attachement id's angles as a p,y,r vector
GetAttachmentBone int GetAttachmentBone(int) Get the named attachement's parent bone index
GetAttachmentOrigin Vector GetAttachmentOrigin(int) Get the attachement id's origin vector
GetBodygroup int GetBodygroup(int) Get a bodygroup by id
GetBodygroupName string GetBodygroupName(int) Get the bodygroup id's name
GetBodygroupPartName string GetBodygroupPartName(int, int) Get name by group and part
GetBoneAngles QAngle GetBoneAngles(int) Get the bone id's angles as a p,y,r vector
GetBoneOrigin Vector GetBoneOrigin(int) Get the bone id's origin vector
GetCycle float GetCycle() Gets the models current cycle
GetModelScale float GetModelScale()
GetPlaybackRate float GetPlaybackRate() Set the current playback rate.
GetSequence int GetSequence() Get the current sequence id
GetSequenceActivityName string GetSequenceActivityName(int) Get the activity name for a sequence by id
GetSequenceDuration float GetSequenceDuration(int) Get a sequence duration by id
GetSequenceName string GetSequenceName(int) Get a sequence name by id
GetSkin int GetSkin() Gets the current skin index.
IsSequenceFinished bool IsSequenceFinished() Ask whether the main sequence is done playing
LookupActivity int LookupActivity(string) Get the named activity index
LookupAttachment int LookupAttachment(string) Get the named attachement id
LookupBone int LookupBone(string) Get the named bone index
LookupPoseParameter int LookupPoseParameter(string) Looks up a pose parameter index by name
LookupSequence int LookupSequence(string) Looks up a sequence by sequence name or activity name
ResetSequence void ResetSequence(int) Reset a sequence by id. If the id is different than the current sequence, switch to the new sequence
SetBodygroup void SetBodygroup(int, int) Sets a bodygroup
SetCycle void SetCycle(float) Sets the models current cycle
SetModelScale void SetModelScale(float, float) (scale, change_duration) Changes a model's scale over time
SetPlaybackRate void SetPlaybackRate(float) Set the current playback rate.
SetPoseParameter float SetPoseParameter(int, float) (id, value) Sets a pose parameter value
SetSequence void SetSequence(int) Set a sequence by id
SetSkin void SetSkin(int) Sets the skin.
StopAnimation void StopAnimation() Stop the current animation (same as SetPlaybackRate 0.0)
StudioFrameAdvance void StudioFrameAdvance() Advance animation frame to some time in the future with an automatically calculated interval
StudioFrameAdvanceManual void StudioFrameAdvanceManual(float) Advance animation frame to some time in the future with a manual interval


Extends CBaseAnimating

Function Signature Description
CanBeSelected bool CanBeSelected() Can this weapon be selected
Clip1 int Clip1() Current ammo in clip1
Clip2 int Clip2() Current ammo in clip2
GetDefaultClip1 int GetDefaultClip1() Default size of clip1
GetDefaultClip2 int GetDefaultClip2() Default size of clip2
GetMaxClip1 int GetMaxClip1() Max size of clip1
GetMaxClip2 int GetMaxClip2() Max size of clip2
GetName string GetName() Gets the weapon's name
GetPosition int GetPosition() Gets the weapon's current position
GetPrimaryAmmoCount int GetPrimaryAmmoCount() Current primary ammo count if no clip is used or to give a player if they pick up this weapon legacy style (not TF)
GetPrimaryAmmoType int GetPrimaryAmmoType() Returns the primary ammo type
GetPrintName string GetPrintName() Gets the weapon's print name
GetSecondaryAmmoCount int GetSecondaryAmmoCount() Current secondary ammo count if no clip is used or to give a player if they pick up this weapon legacy style (not TF)
GetSecondaryAmmoType int GetSecondaryAmmoType() Returns the secondary ammo type
GetSlot int GetSlot() Gets the weapon's current slot
GetSubType int GetSubType() Get the weapon subtype
GetWeaponFlags int GetWeaponFlags() Get the weapon flags
GetWeight int GetWeight() Get the weapon weighting/importance
HasAnyAmmo bool HasAnyAmmo() Do we have any ammo?
HasPrimaryAmmo bool HasPrimaryAmmo() Do we have any primary ammo?
HasSecondaryAmmo bool HasSecondaryAmmo() Do we have any secondary ammo?
IsAllowedToSwitch bool IsAllowedToSwitch() Are we allowed to switch to this weapon?
IsMeleeWeapon bool IsMeleeWeapon() Returns whether this is a melee weapon
PrimaryAttack void PrimaryAttack() Force a primary attack
SecondaryAttack void SecondaryAttack() Force a secondary attack
SetClip1 void SetClip1(int) Set current ammo in clip1
SetClip2 void SetClip2(int) Set current ammo in clip2
SetCustomViewModel void SetCustomViewModel(string) Sets a custom view model for this weapon by model name
SetCustomViewModelModelIndex void SetCustomViewModelModelIndex(int) Sets a custom view model for this weapon by modelindex
SetSubType void SetSubType(int) Set the weapon subtype
UsesClipsForAmmo1 bool UsesClipsForAmmo1() Do we use clips for ammo 1?
UsesClipsForAmmo2 bool UsesClipsForAmmo2() Do we use clips for ammo 2?
UsesPrimaryAmmo bool UsesPrimaryAmmo() Do we use primary ammo?
UsesSecondaryAmmo bool UsesSecondaryAmmo() Do we use secondary ammo?
VisibleInWeaponSelection bool VisibleInWeaponSelection() Is this weapon visible in weapon selection


Extends CBaseAnimating

Function Signature Description
PlayScene float PlayScene(string, float) Play the specified .vcd file.


Extends CBaseFlex

Function Signature Description
GetLastKnownArea handle GetLastKnownArea() Return the last nav area occupied - NULL if unknown


Extends CBaseCombatCharacter

Script handle class for player entities.


Function Signature Description
GetForceLocalDraw bool GetForceLocalDraw() Gets the state of whether the player is being forced by SetForceLocalDraw to be drawn
GetPlayerMaxs Vector GetPlayerMaxs()
GetPlayerMins Vector GetPlayerMins()
GetScriptOverlayMaterial string GetScriptOverlayMaterial() Gets the current view overlay material
IsNoclipping bool IsNoclipping() Returns true if the player is in noclip mode.
SetForceLocalDraw void SetForceLocalDraw(bool) Forces the player to be drawn as if they are third person
SetScriptOverlayMaterial void SetScriptOverlayMaterial(string) Sets a view overlay material
SnapEyeAngles void SnapEyeAngles(QAngle) Snap the player's eye angles to this.
ViewPunch void ViewPunch(QAngle) Ow! Punches the player's view
ViewPunchReset void ViewPunchReset(float) Reset's the player's view punch


Extends CBasePlayer

Script handle sub-class for player entities in multiplayer games. No additional methods.


Extends CBaseAnimating

Script handle class for economic leisure exquisite items, meaning hats and weapons.


Function Signature Description
AddAttribute void AddAttribute(string, float, float) Add an attribute to the entity
RemoveAttribute void RemoveAttribute(string) Remove an attribute to the entity
ReapplyProvision void ReapplyProvision() Relinks attributes to provisioners, e.g. calling this on a weapon will add it's attributes to the player


Extends CBaseMultiplayerPlayer

Script handle class for player entities of Team Fortress 2.


Function Signature Description
AddCond void AddCond(ETFCond cond)
AddCondEx void AddCondEx(ETFCond cond, float duration, handle provider)
AddCustomAttribute void AddCustomAttribute(string, float, float) Add a custom attribute to the player
ApplyPunchImpulseX bool ApplyPunchImpulseX(float)
BleedPlayer void BleedPlayer(float)
BleedPlayerEx void BleedPlayerEx(float, int, bool, int)
CanAirDash bool CanAirDash()
CanBeDebuffed bool CanBeDebuffed()
CanBreatheUnderwater bool CanBreatheUnderwater()
CanDuck bool CanDuck() Can the player duck?
CanGetWet bool CanGetWet()
CanJump bool CanJump() Can the player jump?
ClearCustomModelRotation void ClearCustomModelRotation()
ClearSpells void ClearSpells()
CanPlayerMove bool CanPlayerMove() Can the player move?
DropFlag void DropFlag(bool) Force player to drop the flag.
DropRune void DropRune(bool, int) Force player to drop the rune.
EquipWearableViewModel void EquipWearableViewModel(handle ent) Equips a wearble on the viewmodel. Intended to be used with tf_wearable_vm entities.
ExtinguishPlayerBurning void ExtinguishPlayerBurning()
FiringTalk void FiringTalk() Makes eg. a heavy go AAAAAAAAAAaAaa like they are firing their minigun.
FirstMoveChild FirstMoveChild()
ForceChangeTeam void ForceChangeTeam(int, bool) Force player to change their team.
ForceRegenerateAndRespawn void ForceRegenerateAndRespawn(int, bool) Force regenerates and respawns the player
ForceRespawn void ForceRespawn(int) Force respawns the player
GetActiveWeapon handle GetActiveWeapon() Get the player's current weapon
GetBackstabs int GetBackstabs()
GetBonusPoints int GetBonusPoints()
GetBuildingsDestroyed int GetBuildingsDestroyed()
GetCaptures int GetCaptures()
GetClassEyeHeight Vector GetClassEyeHeight() Gets the eye height of the player
GetCondDuration float GetCondDuration(ETFCond cond)
GetCurrency int GetCurrency() Get player's cash for game modes with upgrades, ie. MvM
GetCurrentTauntMoveSpeed float GetCurrentTauntMoveSpeed()
GetDefenses int GetDefenses()
GetDisguiseAmmoCount int GetDisguiseAmmoCount()
GetDisguiseTarget handle GetDisguiseTarget()
GetDisguiseTeam int GetDisguiseTeam()
GetDominations int GetDominations()
GetGrapplingHookTarget handle GetGrapplingHookTarget() What entity is the player grappling?
GetHeadshots int GetHeadshots()
GetHealPoints int GetHealPoints()
GetHealTarget handle GetHealTarget() Who is the medic healing?
GetInvulns int GetInvulns()
GetKillAssists int GetKillAssists()
GetLastWeapon GetLastWeapon()
GetNextChangeClassTime float GetNextChangeClassTime() Get next change class time.
GetNextChangeTeamTime float GetNextChangeTeamTime() Get next change team time.
GetNextRegenTime float GetNextRegenTime() Get next health regen time.
GetPlayerClass int GetPlayerClass()
GetRageMeter float GetRageMeter()
GetResupplyPoints int GetResupplyPoints()
GetRevenge int GetRevenge()
GetScoutHypeMeter float GetScoutHypeMeter()
GetSpyCloakMeter float GetSpyCloakMeter()
GetTeleports int GetTeleports()
GetTimeSinceCalledForMedic float GetTimeSinceCalledForMedic() When did the player last call medic
HasItem bool HasItem() Currently holding an item? Eg. capture flag
IgnitePlayer void IgnitePlayer()
InAirDueToExplosion bool InAirDueToExplosion()
InAirDueToKnockback bool InAirDueToKnockback()
InCond bool InCond(ETFCond cond)
IsAirDashing bool IsAirDashing()
IsAllowedToTaunt bool IsAllowedToTaunt()
IsCallingForMedic bool IsCallingForMedic() Is this player calling for medic?
IsCarryingRune bool IsCarryingRune()
IsControlStunned bool IsControlStunned()
IsCritBoosted bool IsCritBoosted()
IsFireproof bool IsFireproof()
IsFullyInvisible bool IsFullyInvisible()
IsHypeBuffed bool IsHypeBuffed()
IsImmuneToPushback bool IsImmuneToPushback()
IsInspecting bool IsInspecting()
IsInvulnerable bool IsInvulnerable()
IsJumping bool IsJumping()
IsMiniBoss bool IsMiniBoss() Is this player an MvM mini-boss?
IsParachuteEquipped bool IsParachuteEquipped()
IsPlacingSapper bool IsPlacingSapper() Returns true if we placed a sapper in the last few moments
IsPlayer IsPlayer()
IsRageDraining bool IsRageDraining()
IsRegenerating bool IsRegenerating()
IsSapping bool IsSapping() Returns true if we are currently sapping
IsSnared bool IsSnared()
IsStealthed bool IsStealthed()
IsUsingActionSlot bool IsUsingActionSlot()
IsViewingCYOAPDA bool IsViewingCYOAPDA()
IsViewingCYOAPDA bool IsViewingCYOAPDA()
Regenerate void Regenerate(bool) Resupplies a player. If regen health/ammo is set, clears negative conds, gives back player health/ammo
RemoveAllItems void RemoveAllItems(bool)
RemoveAllObjects void RemoveAllObjects(bool) Remove all player objects. Eg. dispensers/sentries.
RemoveCond void RemoveCond(ETFCond cond)
RemoveCondEx void RemoveCondEx(ETFCond cond, bool ignoreDuration)
RemoveCurrency void RemoveCurrency(int) Take away money from a player for reasons such as ie. spending.
RemoveCustomAttribute void RemoveCustomAttribute(string) Remove a custom attribute to the player
RemoveDisguise void RemoveDisguise() Undisguise a spy.
RemoveInvisibility void RemoveInvisibility() Un-invisible a spy.
RemoveTeleportEffect void RemoveTeleportEffect()
ResetScores void ResetScores()
RollRareSpell void RollRareSpell()
SetCondDuration void SetCondDuration(ETFCond cond, float duration)
SetCurrency void SetCurrency(int) Set player's cash for game modes with upgrades, ie. MvM
SetCurrentTauntMoveSpeed void SetCurrentTauntMoveSpeed(float)
SetCustomModel void SetCustomModel(string)
SetCustomModelOffset void SetCustomModelOffset(Vector)
SetCustomModelRotates void SetCustomModelRotates(bool)
SetCustomModelRotation void SetCustomModelRotation(QAngle)
SetCustomModelVisibleToSelf void SetCustomModelVisibleToSelf(bool)
SetCustomModelWithClassAnimations void SetCustomModelWithClassAnimations(string)
SetDisguiseAmmoCount void SetDisguiseAmmoCount(int)
SetForcedTauntCam void SetForcedTauntCam(int)
SetGrapplingHookTarget void SetGrapplingHookTarget(handle, bool) Set the player's target grapple entity
SetIsMiniBoss void SetIsMiniBoss(bool) Make this player an MvM mini-boss.
SetNextChangeClassTime void SetNextChangeClassTime(float) Set next change class time.
SetNextChangeTeamTime void SetNextChangeTeamTime(float) Set next change team time.
SetNextRegenTime void SetNextRegenTime(float) Set next health regen time.
SetPlayerClass void SetPlayerClass(int)
SetRageMeter void SetRageMeter(float)
SetScoutHypeMeter void SetScoutHypeMeter(float)
SetSpyCloakMeter void SetSpyCloakMeter(float)
SetUseBossHealthBar void SetUseBossHealthBar(bool)
TryToPickupBuilding bool TryToPickupBuilding() Make the player attempt to pick up a building in front of them
UpdateSkin UpdateSkin(num)
WasInCond bool WasInCond(ETFCond cond)
Weapon_CanUse bool Weapon_CanUse(handle weapon)
Weapon_Drop void Weapon_Drop(handle weapon)
Weapon_DropEx void Weapon_DropEx(handle weapon, Vector target, Vector velocity)
Weapon_Equip void Weapon_Equip(handle weapon)
Weapon_SetLast void Weapon_SetLast(handle weapon)
Weapon_ShootPosition Vector Weapon_ShootPosition()
Weapon_Switch void Weapon_Switch(handle weapon)


Extends CTFPlayer and NextBotCombatCharacter

Function Signature Description
AddBotAttribute void AddBotAttribute(int) Sets attribute flags on this TFBot
AddBotTag void AddBotTag(string) Adds a bot tag
AddWeaponRestriction void AddWeaponRestriction(int) Adds weapon restriction flags
ClearAllBotAttributes void ClearAllBotAttributes() Clears all attribute flags on this TFBot
ClearAllBotTags void ClearAllBotTags() Clears bot tags
ClearAllWeaponRestrictions void ClearAllWeaponRestrictions() Removes all weapon restriction flags
ClearAttentionFocus void ClearAttentionFocus() Clear current focus
DelayedThreatNotice void DelayedThreatNotice(handle, float)
DisbandCurrentSquad void DisbandCurrentSquad() Forces the current squad to be entirely disbanded by everyone
FindVantagePoint handle FindVantagePoint(float) Get the nav area of the closest vantage point (within distance)
GenerateAndWearItem void GenerateAndWearItem(string) Give me an item!
GetHomeArea handle GetHomeArea() Sets the home nav area of the bot
GetDifficulty int GetDifficulty() Returns the bot's difficulty level
GetMaxVisionRangeOverride float GetMaxVisionRangeOverride() Gets the max vision range override for the bot
GetNearestKnownSappableTarget handle GetNearestKnownSappableTarget() Gets the nearest known sappable target
GetSpawnArea handle GetSpawnArea() Return the nav area of where we spawned
GetSquadFormationError float GetSquadFormationError() Gets our formation error coefficient.
HasBotAttribute bool HasBotAttribute(int) Checks if this TFBot has the given attributes
HasBotTag bool HasBotTag(string) Checks if this TFBot has the given bot tag
HasWeaponRestriction bool HasWeaponRestriction(int) Checks if this TFBot has the given weapon restriction flags
IsAmmoFull bool IsAmmoFull()
IsAmmoLow bool IsAmmoLow()
IsAttentionFocused bool IsAttentionFocused() Is our attention focused right now?
IsAttentionFocusedOn bool IsAttentionFocusedOn(handle) Is our attention focused on this entity
IsDifficulty bool IsDifficulty(int) Returns true/false if the bot's difficulty level matches.
IsInASquad bool IsInASquad() Checks if we are in a squad
IsWeaponRestricted bool IsWeaponRestricted(handle) Checks if the given weapon is restricted for use on the bot
LeaveSquad void LeaveSquad() Makes us leave the current squad (if any)
PressAltFireButton void PressAltFireButton(float)
PressFireButton void PressFireButton(float)
PressSpecialFireButton void PressSpecialFireButton(float)
RemoveBotAttribute void RemoveBotAttribute(int) Removes attribute flags on this TFBot
RemoveBotTag void RemoveBotTag(string) Removes a bot tag
RemoveWeaponRestriction void RemoveWeaponRestriction(int) Removes weapon restriction flags
SetAttentionFocus void SetAttentionFocus(handle) Sets our current attention focus to this entity
SetAutoJump void SetAutoJump(float, float) Sets if the bot should automatically jump
SetDifficulty void SetDifficulty(int) Sets the bots difficulty level
SetHomeArea void SetHomeArea(handle) Returns the home nav area of the bot -- may be nil.
SetMaxVisionRangeOverride void SetMaxVisionRangeOverride(float) Sets max vision range override for the bot
SetScaleOverride void SetScaleOverride(float) Sets the scale override for the bot
SetShouldQuickBuild void SetShouldQuickBuild(bool) Sets if the bot should build instantly
SetSquadFormationError void SetSquadFormationError(float) Sets our formation error coefficient.
ShouldAutoJump bool ShouldAutoJump() Returns if the bot should automatically jump
ShouldQuickBuild bool ShouldQuickBuild() Returns if the bot should build instantly
UpdateDelayedThreatNotices void UpdateDelayedThreatNotices()


Game Instance: Convars

Provides an interface for getting and setting convars on the server.

Note.png Note: Protected convars (e.g. rcon_password) cannot be accessed.


Function Signature Description
GetBool bool GetClientConvarValue(string name) Returns the convar as a bool. May return null if no such convar.
GetClientConvarValue string GetClientConvarValue(string name, int entindex) Returns the convar value for the entindex as a string. Only works on client convars with the FCVAR_USERINFO flag.
GetInt int GetInt(string name) Returns the convar as an int. May return null if no such convar.
GetStr string GetStr(string name) Returns the convar as a string. May return null if no such convar.
GetFloat float GetFloat(string name) Returns the convar as a float. May return null if no such convar.
IsConVarOnAllowList bool IsConVarOnAllowList(string name) Checks if the convar is allowed to be used and is in cfg/vscript_convar_allowlist.txt. Please be nice with this and use it for *compatibility* if you need check support and NOT to force server owners to allow hostname to be set... or else this will simply lie and return true in future. ;-) You have been warned!
SetValue void SetValue(string name, value) Sets the value of the convar. The convar must be in cfg/vscript_convar_allowlist.txt to be set. Convars marked as cheat-only can be set even if sv_cheats is off. Supported types are bool, int, float, string.


Game Instance: Entities

An interface to find and iterate over the script handles for the entities in play. To iterate over a set of entities, pass null to the previous parameter in the appropriate method to start an iteration. A reference to a previously-found entity can be used instead to continue a search.

The following are two equivalent examples and iterate over all weapons on the map:

local ent = null;
while ( ent = Entities.FindByClassname(ent, "tf_weapon_*") )
  // ...
for (local ent; ent = Entities.FindByName(ent, "tf_weapon_*"); )
  // ...
Note.png Note: 
  • The variable name ent is arbitrary.
  • Indeed, we mean "=" and not "==" in the loop conditions! The loops end if ent becomes null, which happens when no matching entities have an entity index higher to the one in previous parameter.
  • Semicolons are optional, except in the header of the for statement.
  • The string parameters of the FindBy... functions support the wildcard star *. In the above example, FindByClassname only returns either a handle of an entity whose classname begins with "tf_weapon_" or it returns null.


Function Signature Description
CreateByClassname handle CreateByClassname(string classname) Creates an entity by classname
DispatchSpawn void DispatchSpawn(handle entity) Dispatches spawn of an entity!
FindByClassname handle FindByClassname(handle previous, string classname) Find entities by the value of their classname keyvalue. Pass 'null' to start an iteration, or reference to a previously found entity to continue a search
Note.png Note: The classname keyvalue of an entity can be manipulated and does not necessarily reflect its code class. There might be entities that have a different classname than the one they are created with.
FindByClassnameNearest handle FindByClassnameNearest(string classname, Vector center, float radius) Find entities by classname nearest to a point.
FindByClassnameWithin handle FindByClassnameWithin(handle previous, string classname, Vector center, float radius) Find entities by classname within a radius. Pass 'null' to start an iteration, or reference to a previously found entity to continue a search
FindByModel handle FindByModel(handle previous, string modelname) Find entities by the value of their model keyvalue. Pass 'null' to start an iteration, or reference to a previously found entity to continue a search
FindByName handle FindByName(handle previous, string targetname) Find entities by the value of their targetname keyvalue. Pass 'null' to start an iteration, or reference to a previously found entity to continue a search
FindByNameNearest handle FindByNameNearest(string targetname, Vector center, float radius) Find entities by targetname nearest to a point.
FindByNameWithin handle FindByNameWithin(handle previous, string targetname, Vector center, float radius) Find entities by targetname within a radius. Pass 'null' to start an iteration, or reference to a previously found entity to continue a search
FindByTarget handle FindByTarget(handle previous, string target) Find entities by the value of their target keyvalue.[confirm] Pass 'null' to start an iteration, or reference to a previously found entity to continue a search
FindInSphere handle FindInSphere(handle previous, Vector center, float radius) Find entities within a radius. Pass 'null' to start an iteration, or reference to a previously found entity to continue a search
First handle First() Begin an iteration over the list of entities
Next handle Next(handle previous) At the given reference of a previously-found entity, returns the next one after it in the list.



Function Signature Description
AddIncomingConnection void AddIncomingConnection(handle area, int dir) Add areas that connect TO this area by a ONE-WAY link
ClearAttributeTF void ClearAttributeTF(int) Clear TF-specific area attribute bits
ComputeClosestPointInPortal Vector ComputeClosestPointInPortal(handle, int, Vector) Compute closest point within the portal between to adjacent areas.
ComputeDirection int ComputeDirection(Vector point) Return direction from this area to the given point
ConnectTo void ConnectTo(handle area, int dir) Connect this area to given area in given direction
Contains bool Contains(handle area) Return true if other area is on or above this area, but no others
ContainsOrigin bool ContainsOrigin(Vector point) Return true if given point is on or above this area, but no others
DebugDrawFilled void DebugDrawFilled(int, int, int, int, float, bool, float) Draw area as a filled rect of the given color
Disconnect void Disconnect(handle area) Disconnect this area from given area
FindRandomSpot Vector FindRandomSpot() Get random origin within extent of area
GetAdjacentArea handle GetAdjacentArea(int dir, int n) Return the n'th adjacent area in the given direction
GetAdjacentAreas void GetAdjacentAreas(int dir, handle table) Fills a passed in table with all adjacent areas in the given direction
GetAdjacentCount int GetAdjacentCount(int dir) Get the number of adjacent areas in the given direction
GetAttributes int GetAttributes() Get area attribute bits
GetAvoidanceObstacleHeight float GetAvoidanceObstacleHeight() Returns the maximum height of the obstruction above the ground
GetCenter Vector GetCenter() Get center origin of area
GetCorner Vector GetCorner(int dir) Get corner origin of area
GetDistanceSquaredToPoint float GetDistanceSquaredToPoint(Vector pos) Return shortest distance between point and this area
GetDoor handle GetDoor() Returns the door entity above the area
GetElevator handle GetElevator() Returns the elevator if in an elevator's path
GetElevatorAreas void GetElevatorAreas(handle table) Fills table with a collection of areas reachable via elevator from this area
GetID int GetID() Get area ID.
GetIncomingConnections void GetIncomingConnections(int dir, handle table) Fills a passed in table with areas connected TO this area by a ONE-WAY link (ie: we have no connection back to them)
GetParent handle GetParent() Returns the area just prior to this one in the search path
GetParentHow int GetParentHow() Returns how we get from parent to us
GetPlaceName string GetPlaceName() Get place name
GetPlayerCount int GetPlayerCount(int team) Return number of players of given team currently within this area (team of zero means any/all)
GetRandomAdjacentArea handle GetRandomAdjacentArea(int dir) Return a random adjacent area in the given direction
GetSizeX float GetSizeX() Return the area size along the X axis
GetSizeY float GetSizeY() Return the area size along the Y axis
GetTravelDistanceToBombTarget float GetTravelDistanceToBombTarget() Gets the travel distance to the MvM bomb target
GetZ float GetZ(Vector pos) Return Z of area at (x,y) of 'pos'
HasAttributeTF bool HasAttributeTF(int) Has TF-specific area attribute bits
HasAttributes bool HasAttributes(int) Has area attribute bits
HasAvoidanceObstacle bool HasAvoidanceObstacle(float maxheight) Returns true if there's a large, immobile object obstructing this area
IsBlocked bool IsBlocked(int team, bool) Return true if team is blocked in this area
IsBottleneck bool IsBottleneck() Returns true if area is a bottleneck
IsCompletelyVisibleToTeam bool IsCompletelyVisibleToTeam(int team) Return true if given area is completely visible from somewhere in this area by someone on the team
IsConnected bool IsConnected(handle area, int dir) Return true if given area is connected in given direction
IsCoplanar bool IsCoplanar(handle area) Return true if this area and given area are approximately co-planar
IsDamaging bool IsDamaging() Return true if continuous damage (ie: fire) is in this area
IsDegenerate bool IsDegenerate() Return true if this area is badly formed
IsEdge bool IsEdge(int dir) Return true if there are no bi-directional links on the given side
IsFlat bool IsFlat() Return true if this area is approximately flat
IsOverlapping bool IsOverlapping(handle area) Return true if 'area' overlaps our 2D extents
IsOverlappingOrigin bool IsOverlappingOrigin(Vector pos, float tolerance) Return true if 'pos' is within 2D extents of area
IsPotentiallyVisibleToTeam bool IsPotentiallyVisibleToTeam(int team) Return true if any portion of this area is visible to anyone on the given team
IsReachableByTeam bool IsReachableByTeam(int) Is this area reachable by the given team?
IsRoughlySquare bool IsRoughlySquare() Return true if this area is approximately square
IsTFMarked bool IsTFMarked() Is this nav area marked with the current marking scope?
IsUnderwater bool IsUnderwater() Return true if area is underwater
IsValidForWanderingPopulation bool IsValidForWanderingPopulation() Returns true if area is valid for wandering population
IsVisible bool IsVisible(Vector point) Return true if area is visible from the given eyepoint
MarkAsBlocked void MarkAsBlocked(int team) Mark this area as blocked for team
MarkAsDamaging void MarkAsDamaging(float duration) Mark this area is damaging for the next 'duration' seconds
MarkObstacleToAvoid void MarkObstacleToAvoid(float height) Marks the obstructed status of the nav area
RemoveAttributes void RemoveAttributes(int) Removes area attribute bits
RemoveOrthogonalConnections void RemoveOrthogonalConnections(int dir) Removes all connections in directions to left and right of specified direction
SetAttributeTF void SetAttributeTF(int) Set TF-specific area attributes
SetAttributes void SetAttributes(int) Set area attribute bits
SetPlaceName void SetPlaceName(string name) Set place name
TFMark void TFMark() Mark this nav area with the current marking scope.
UnblockArea void UnblockArea() Unblocks this area


Game Instance: NavMesh


Function Signature Description
FindNavAreaAlongRay handle FindNavAreaAlongRay(Vector startpos, Vector endpos, handle ignoreAreaID) get nav area from ray
GetAllAreas void GetAllAreas(handle table) fills a passed in table of all nav areas
GetAreasWithAttributes void GetAreasWithAttributes(int bits, handle table) fills a passed in table of all nav areas that have the specified attributes
GetNavArea handle GetNavArea(Vector origin, float flBeneath) given a position in the world, return the nav area that is closest to or below that height.
GetNavAreaByID handle GetNavAreaByID(int areaID) get nav area by ID
GetNavAreaCount int GetNavAreaCount() return total number of nav areas
GetNavAreasFromBuildPath bool GetNavAreasFromBuildPath(CTFNavArea startArea, CTFNavArea endArea, Vector goalPos, float flMaxPathLength, int teamID, bool ignoreNavBlockers, handle table) Fills the table with areas from a path. Returns whether a path was found. If 'endArea' is NULL, will compute a path as close as possible to 'goalPos'.
GetNavAreasInRadius void GetNavAreasInRadius(Vector origin, float radius, handle table) fills a passed in table of nav areas within radius
GetNavAreasOverlappingEntityExtent void GetNavAreasOverlappingEntityExtent(handle entity, handle table) fills passed in table with areas overlapping entity's extent
GetNearestNavArea handle GetNearestNavArea(Vector origin, float maxDist, bool checkLOS, bool checkGround) given a position in the world, return the nav area that is closest to or below that height.
GetObstructingEntities void GetObstructingEntities(handle table) fills a passed in table of all obstructing entities
NavAreaBuildPath bool NavAreaBuildPath(CTFNavArea startArea, CTFNavArea endArea, Vector goalPos, float flMaxPathLength, int teamID, bool ignoreNavBlockers) returns true if a path exists
NavAreaTravelDistance float NavAreaTravelDistance(TFNavArea startArea, CTFNavArea endArea, float flMaxPathLength) compute distance between two areas. Return -1 if can't reach 'endArea' from 'startArea'
RegisterAvoidanceObstacle void RegisterAvoidanceObstacle(handle entity) registers avoidance obstacle
UnregisterAvoidanceObstacle void UnregisterAvoidanceObstacle(handle entity) unregisters avoidance obstacle


Game Instance: NetProps

Allows reading and updating the network properties and datamaps of an entity.

If the entity has multiple netprops with the same name, the data table name can be prepended with a dot to specify which one to use (e.g. "m_itTimer.m_timestamp").

Tip.png Tip: Nicely formatted list of netprops and datamaps can be found here:
Tip.png Tip: Raw list of netprops and datamaps can be found here:
Warning.png Warning: Each netprop has a set size in bits, exceeding the size may desync the clients from the server causing unpredictable behavior.


Function Signature Description
GetPropArraySize int GetPropArraySize(handle entity, string propertyName) Returns the size of an netprop array, or -1.
GetPropEntity handle GetPropEntity(handle entity, string propertyName) Reads an EHANDLE-valued netprop (21 bit integer). Returns the script handle of the entity.
GetPropEntityArray handle GetPropEntityArray(handle entity, string propertyName, int arrayElement) Reads an EHANDLE-valued netprop (21 bit integer) from an array. Returns the script handle of the entity.
GetPropBool bool GetPropBool(handle entity, string propertyName) Reads a boolean-valued netprop.
GetPropBoolArray bool GetPropBoolArray(handle entity, string propertyName, int arrayElement) Reads a boolean-valued netprop from an array.
GetPropFloat float GetPropFloat(handle entity, string propertyName) Reads a float-valued netprop.
GetPropFloatArray float GetPropFloatArray(handle entity, string propertyName, int arrayElement) Reads a float-valued netprop from an array.
GetPropInfo bool GetPropInfo(handle entity, string propertyName, int arrayElement, handle table) Fills in a passed table with property info for the provided entity.
GetPropInt int GetPropInt(handle entity, string propertyName) Reads an integer-valued netprop.
GetPropIntArray int GetPropIntArray(handle entity, string propertyName, int arrayElement) Reads an integer-valued netprop from an array.
GetPropString string GetPropString(handle entity, string propertyName) Reads an string-valued netprop.
GetPropStringArray string GetPropStringArray(handle entity, string propertyName, int arrayElement) Reads an string-valued netprop from an array.
GetPropType string GetPropType(handle entity, string propertyName) Returns the name of the netprop type as a string.
GetPropVector Vector GetPropVector(handle entity, string propertyName) Reads a 3D vector-valued netprop. To do:  Does it work for other dimensions too?
GetPropVectorArray Vector GetPropVectorArray(handle entity, string propertyName, int arrayElement) Reads a 3D vector-valued netprop from an array.
GetTable void GetTable(handle entity, int iPropType, handle table) Fills in a passed table with all props of a specified type for the provided entity (set iPropType to 0 for SendTable or 1 for DataMap)
HasProp bool HasProp(handle entity, string propertyName) Checks if a netprop exists.
SetPropBool void SetPropBool(handle entity, string propertyName, bool value) Sets a netprop to the specified boolean.
SetPropBoolArray void SetPropBoolArray(handle entity, string propertyName, bool value, int arrayElement) Sets a netprop from an array to the specified boolean.
SetPropEntity void SetPropEntity(handle entity, string propertyName, handle value) Sets an EHANDLE-valued netprop (21 bit integer) to reference the specified entity.
SetPropEntityArray void SetPropEntityArray(handle entity, string propertyName, handle value, int arrayElement) Sets an EHANDLE-valued netprop (21 bit integer) from an array to reference the specified entity.
SetPropFloat void SetPropFloat(handle entity, string propertyName, float value) Sets a netprop to the specified float.
SetPropFloatArray void SetPropFloatArray(handle entity, string propertyName, float value, int arrayElement) Sets a netprop from an array to the specified float.
SetPropInt void SetPropInt(handle entity, string propertyName, int value) Sets a netprop to the specified integer.
SetPropIntArray void SetPropInt(handle entity, string propertyName, int value, int arrayElement) Sets a netprop from an array to the specified integer.
SetPropString void SetPropString(handle entity, string propertyName, string value) Sets a netprop to the specified string.
SetPropStringArray void SetPropStringArray(handle entity, string propertyName, string value, int arrayElement) Sets a netprop from an array to the specified string.
SetPropVector void SetPropVector(handle entity, string propertyName, Vector value) Sets a netprop to the specified vector.
SetPropVectorArray void SetPropVectorArray(handle entity, string propertyName, Vector value, int arrayElement) Sets a netprop from an array to the specified vector.


Game Instance: EntityOutputs

Allows reading and manipulation of entity output data.


Function Signature Description
AddOutput void AddOutput(handle entity, string outputName, string targetName, string inputName, string parameter, float delay, int timesToFire) Adds a new output to the entity.
GetNumElements int GetNumElements(handle ntity entity, string outputName) Returns the number of array elements.
GetOutputTable void GetOutputTable(handle entity, string outputName, table, int arrayElement) Fills the passed table with output information.
HasAction bool HasAction(handle entity, string outputName) Returns true if an action exists for the output.
HasOutput bool HasOutput(handle entity, string outputName) Returns true if the output exists.
RemoveOutput void RemoveOutput(handle entity, string outputName, string targetName, string inputName, string parameter) Removes an output from the entity.


Script handle representation of a model's $keyvalues block. All sub-keys are instances of the same class.


Function Signature Description
FindKey CScriptKeyValues FindKey(string key) Find a sub key by the key name.
GetFirstSubKey CScriptKeyValues GetFirstSubKey() Return the first sub key object.
GetKeyBool bool GetKeyBool(string key) Return the key value as a bool.
GetKeyFloat float GetKeyFloat(string key) Return the key value as a float.
GetKeyInt int GetKeyInt(string key) Return the key value as an integer.
GetKeyString string GetKeyString(string key) Return the key value as a string.
GetNextKey CScriptKeyValues GetNextKey() Return the next neighbor key object to the one the method is called on.
IsKeyEmpty bool IsKeyEmpty(string key) Returns true if the named key has no value.
IsValid bool IsValid() Whether the handle belongs to a valid key.
ReleaseKeyValues void ReleaseKeyValues() Releases the contents of the instance.


Game Instance: PlayerVoiceListener

Tracks if any player is using voice and for how long.


Function Signature Description
GetPlayerSpeechDuration float GetPlayerSpeechDuration(int) Returns the number of seconds the player has been continuously speaking.
IsPlayerSpeaking bool IsPlayerSpeaking(int) Returns whether the player specified is speaking.


Extends CBaseEntity

Script handle class for env_entity_maker.


Function Signature Description
SpawnEntity void SpawnEntity() Create an entity at the location of the maker
SpawnEntityAtEntityOrigin void SpawnEntityAtEntityOrigin(handle) Create an entity at the location of a specified entity instance
SpawnEntityAtLocation void SpawnEntityAtLocation(Vector, Vector) Create an entity at a specified location and orientaton, orientation is Euler angle in degrees (pitch, yaw, roll)
SpawnEntityAtNamedEntityOrigin void SpawnEntityAtNamedEntityOrigin(string) Create an entity at the location of a named entity


Extends CBaseEntity

Script handle class for point_template.


table PreSpawnInstance(string entityClass, string entityName)
If this is defined, it will be called right before the entity is created, and any keyvalues returned will be assigned to the entity.
function PreSpawnInstance( entityClass, entityName )
	local keyvalues =
   		rendercolor = "0 255 0",
   		targetname = "mySpawnedEntity"

	return keyvalues
void PostSpawn(table entities)
Called after the entities are spawned. A table with the handles of the spawned entities indexed by name is passed to the function. Could use this to connect outputs or do whatever needs to be done after the entity was created.
Note.png Note: PostSpawn() will not be called unless the PreSpawnInstance() function is also defined in the script.
function PostSpawn( entities )
	foreach( targetname, handle in entities )
		printl( targetname + ": " + handle )

Spawned entities can be accessed synchronously in script by using an entity maker. The following generalised example creates a global SpawnMyEntity() function which spawns and returns the templated entity. It can be modified to support multiple templated entities.

m_hSpawnedEntity <- null;
m_KeyValues <- null;

m_hSpawner <- Entities.CreateByClassname( "env_entity_maker" );
m_hSpawner.__KeyValueFromString( "EntityTemplate", self.GetName() );

function PreSpawnInstance( classname, targetname )
	return m_KeyValues;

function PostSpawn( entities )
	foreach ( targetname, entity in entities )
		m_hSpawnedEntity = entity;

::SpawnMyEntity <- function( keyvalues = null )
	m_KeyValues = keyvalues;
	return m_hSpawnedEntity;

Spawn templated entities from any script.

local ent = SpawnMyEntity( {
	rendercolor = Vector( RandomInt(0, 255), RandomInt(0, 255), RandomInt(0, 255) )
} )

printl( ent )


Extends CBaseEntity

Script handle class for func_tracktrain.


Function Signature Description
GetFuturePosition Vector GetFuturePosition(float, float) Get a position on the track x seconds in the future


Extends CBaseEntity

Script handle class for point_script_template.


Function Signature Description
AddTemplate void AddTemplate(string, handle) Add an entity to the template spawner
SetGroupSpawnTables void SetGroupSpawnTables(handle, handle) Cache the group spawn tables


Extends CBaseEntity

Script handle class for scripted_scene, which make use of VCD data.


Function Signature Description
AddBroadcastTeamTarget void AddBroadcastTeamTarget(int) Adds a team (by index) to the broadcast list
EstimateLength float EstimateLength() Returns length of this scene in seconds.
FindNamedEntity handle FindNamedEntity(string) given an entity reference, such as !target, get actual entity from scene object
IsPaused bool IsPaused() If this scene is currently paused.
IsPlayingBack bool IsPlayingBack() If this scene is currently playing.
LoadSceneFromString bool LoadSceneFromString(string, string) given a dummy scene name and a vcd string, load the scene
RemoveBroadcastTeamTarget void RemoveBroadcastTeamTarget(int) Removes a team (by index) from the broadcast list


Has the same members as CCallChainer. To do


Function Signature Description
Call Call()
chain chain()
constructor constructor()
PostScriptExecute PostScriptExecute()
prefix prefix()
scope scope()



Function Signature Description
Call Call()
chains chains()
constructor constructor()
PostScriptExecute PostScriptExecute()
prefix prefix()
scope scope()


Function Signature Description
ClearImmobileStatus void ClearImmobileStatus() Clear immobile status
FlagForUpdate void FlagForUpdate(bool) Flag this bot for update
GetBodyInterface handle GetBodyInterface() Get this bot's body interface
GetBotId int GetBotId() Get this bot's id
GetImmobileDuration float GetImmobileDuration() How long have we been immobile
GetImmobileSpeedThreshold float GetImmobileSpeedThreshold() Return units/second below which this actor is considered immobile
GetIntentionInterface handle GetIntentionInterface() Get this bot's intention interface
GetLocomotionInterface handle GetLocomotionInterface() Get this bot's locomotion interface
GetTickLastUpdate int GetTickLastUpdate() Get last update tick
GetVisionInterface handle GetVisionInterface() Get this bot's vision interface
IsEnemy bool IsEnemy(handle) Return true if given entity is our enemy
IsFlaggedForUpdate bool IsFlaggedForUpdate() Is this bot flagged for update
IsFriend bool IsFriend(handle) Return true if given entity is our friend
IsImmobile bool IsImmobile() Return true if we haven't moved in awhile


Function Signature Description
Approach void Approach(Vector, float) The primary locomotive method. Sets the goal destination for the bot
ClearStuckStatus void ClearStuckStatus(string) Reset stuck status to un-stuck
ClimbUpToLedge bool ClimbUpToLedge(Vector, Vector, handle) Initiate a jump to an adjacent high ledge, return false if climb can't start
ComputeUpdateInterval ComputeUpdateInterval()
DriveTo void DriveTo(Vector) Move the bot to the precise given position immediately, updating internal state
FaceTowards void FaceTowards(Vector) Rotate body to face towards target
FractionPotentialGap float FractionPotentialGap(Vector, Vector) If the locomotor cannot jump over the gap, returns the fraction of the jumpable ray
FractionPotentiallyTraversable float FractionPotentiallyTraversable(Vector, Vector, bool) If the locomotor could not move along the line given, returns the fraction of the walkable ray.
GetDeathDropHeight float GetDeathDropHeight() Distance at which we will die if we fall
GetDesiredSpeed float GetDesiredSpeed() Get desired speed for locomotor movement
GetFeet Vector GetFeet() Return position of feet - the driving point where the bot contacts the ground
GetGround handle GetGround() Return the current ground entity or NULL if not on the ground
GetGroundMotionVector Vector GetGroundMotionVector() Return unit vector in XY plane describing our direction of motion - even if we are currently not moving
GetGroundNormal Vector GetGroundNormal() Surface normal of the ground we are in contact with
GetGroundSpeed float GetGroundSpeed() Return current world space speed in XY plane
GetMaxAcceleration float GetMaxAcceleration() Return maximum acceleration of locomotor
GetMaxDeceleration float GetMaxDeceleration() Return maximum deceleration of locomotor
GetMaxJumpHeight float GetMaxJumpHeight() Return maximum height of a jump
GetMotionVector Vector GetMotionVector() Return unit vector describing our direction of motion - even if we are currently not moving
GetRunSpeed float GetRunSpeed() Get maximum running speed
GetSpeed float GetSpeed() Return current world space speed (magnitude of velocity)
GetSpeedLimit float GetSpeedLimit() Get maximum speed bot can reach, regardless of desired speed
GetStepHeight float GetStepHeight() If delta Z is greater than this, we have to jump to get up
GetStuckDuration float GetStuckDuration() Return how long we've been stuck
GetTraversableSlopeLimit float GetTraversableSlopeLimit() Return Z component of unit normal of steepest traversable slope
GetUpdateInterval GetUpdateInterval()
GetVelocity Vector GetVelocity() Return current world space velocity
GetWalkSpeed float GetWalkSpeed() Get maximum walking speed
HasPotentialGap float HasPotentialGap(Vector, Vector) Return true if there is a possible gap that will need to be jumped over
IsAbleToClimb bool IsAbleToClimb() Return true if this bot can climb arbitrary geometry it encounters
IsAbleToJumpAcrossGaps bool IsAbleToJumpAcrossGaps() Return true if this bot can jump across gaps in its path
IsAreaTraversable bool IsAreaTraversable(handle) Return true if given area can be used for navigation
IsAttemptingToMove bool IsAttemptingToMove() Return true if we have tried to Approach() or DriveTo() very recently
IsClimbingOrJumping bool IsClimbingOrJumping() Is jumping in any form
IsClimbingUpToLedge bool IsClimbingUpToLedge() Is climbing up to a high ledge
IsEntityTraversable bool IsEntityTraversable(handle, bool) Return true if the entity handle is traversable
IsGap bool IsGap(Vector, Vector) Return true if there is a gap here when moving in the given direction
IsJumpingAcrossGap bool IsJumpingAcrossGap() Is jumping across a gap to the far side
IsOnGround bool IsOnGround() Return true if standing on something
IsPotentiallyTraversable float IsPotentiallyTraversable(Vector, Vector, bool) Return true if this locomotor could potentially move along the line given.
IsRunning bool IsRunning() Is running?
IsScrambling bool IsScrambling() Is in the middle of a complex action (climbing a ladder, climbing a ledge, jumping, etc) that shouldn't be interrupted
IsStuck bool IsStuck() Return true if bot is stuck. If the locomotor cannot make progress, it becomes stuck and can only leave this stuck state by successfully movingand becoming un-stuck.
IsValid IsValid()
Jump void Jump() Initiate a simple undirected jump in the air
JumpAcrossGap void JumpAcrossGap(Vector, Vector) Initiate a jump across an empty volume of space to far side
OnLandOnGround void OnLandOnGround(handle) Manually run the OnLandOnGround callback. Typically invoked when bot lands on the ground after being in the air
OnLeaveGround void OnLeaveGround(handle) Manually run the OnLeaveGround callback. Typically invoked when bot leaves ground for any reason
Reset Reset()
Run void Run() Set desired movement speed to running
SetDesiredSpeed void SetDesiredSpeed(float) Set desired speed for locomotor movement
SetSpeedLimit void SetSpeedLimit(float) Set maximum speed bot can reach, regardless of desired speed
Stop void Stop() Set desired movement speed to stopped
Walk void Walk() Set desired movement speed to walking


Function Signature Description
ComputeUpdateInterval bool ComputeUpdateInterval() Recomputes the component update interval
GetUpdateInterval float GetUpdateInterval() Returns the component update interval
IsValid IsValid()
Reset void Reset() Resets the internal update state


To do


Function Signature Description
Begin Begin()
End End()
EstablishDelegation EstablishDelegation()
HookRootMetamethod HookRootMetamethod()
Log Log()
m_bindNamesStack m_bindNamesStack()
m_fixupSet m_fixupSet()
m_targetTable m_targetTable()
RemoveDelegation RemoveDelegation()
Resolve Resolve()
UnhookRootMetamethod UnhookRootMetamethod()


The built-in Squirrel class for regular expressions.


Function Signature Description
constructor regexp()
capture table capture(str, [start]) Returns an array of tables containing two indexes ("begin" and "end") of the first match of the regular expression in the string str. An array entry is created for each captured sub expressions. If no match occurs returns null. The search starts from the index start of the string, if start is omitted the search starts from the beginning of the string.
match bool match(str) Returns a true if the regular expression matches the string str, otherwise returns false.
search table search(str, [start]) Returns a table containing two indexes ("begin" and "end") of the first match of the regular expression in the string str, otherwise if no match occurs returns null. The search starts from the index start of the string, if start is omitted the search starts from the beginning of the string.
subexpcount subexpcount()

Data Types


Squirrel equivalent of the C++ Vector class. A three-dimensional vector with overloaded arithmetic operations for both Vectors and scalar values.


Function Signature Description
constructor Vector() Creates a new null vector.
constructor Vector(float x, float y, float z) Creates a new vector with the specified Cartesian coordiantes.
Cross float Cross(Vector factor) The vector product of two vectors. Returns a vector orthogonal to the input vectors.
Dot float Dot(Vector factor) The scalar product of two vectors.
Length float Length() Magnitude of the vector.
LengthSqr float LengthSqr() The magnitude of the vector squared. Faster than the above method.
Length2D float Length2D() Returns the magnitude of the vector on the x-y plane. Meant to be used when working with the client's HUD.
Length2DSqr float Length2DSqr() Returns the square of the magnitude of the vector on the x-y plane. Faster than the above method.
Norm float Norm() Seems to also return the vector length.
Scale Vector Scale(float factor) Scales the vector magnitude.
ToKVString string ToKVString() Returns a string without separations commas.
tostring string tostring() Returns a human-readable string.


Instance Type Description
x float Cartesian X axis.
y float Cartesian Y axis.
z float Cartesian Z axis.


Operation Return Type Description
Vector + Vector Vector Returns the sum of both classes's members (XYZ).
QAngle + Vector
Vector - Vector Vector Returns the subtraction of both classes's members (XYZ).
QAngle + Vector
Vector * integer Vector Returns the multiplication of a Vector against a scalar.
Vector * float


Squirrel equivalent of the C++ QAngle class. Represents a three-dimensional orientation as Euler angles.

Has overloaded arithmetic operations with both QAngles and scalar values. To do


Function Signature Description
constructor constructor()
Forward Forward()
Left Left()
Pitch Pitch()
Roll Roll()
ToKVString ToKVString()
ToQuat ToQuat()
Up Up()
Yaw Yaw()


Instance Type Description
x float Pitch in degrees.
y float Yaw in degrees.
z float Roll in degrees.


Operation Return Type Description
QAngle + QAngle QAngle Sum of both classes's members (XYZ).
Vector + QAngle
QAngle - QAngle QAngle Subtraction of both classes's members (XYZ).
Vector - QAngle
QAngle * int QAngle QAngle multiplied by a number.
QAngle * float

Vector2D, Vector4D

Two and four-dimensional equivalents to Vector.


Function Signature Description
constructor VectorXD(float x, float y, ...) Creates a new vector with the specified Cartesian coordiantes.
Dot float Dot(VectorXD factor) The scalar product of two vectors.
Length float Length() Magnitude of the vector.
LengthSqr float LengthSqr() The magnitude of the vector squared. Faster than the above method.
Norm float Norm() Seems to also return the vector length.
ToKVString string ToKVString() Returns a string without separations commas.


Quaternion represents rotations in three-dimensional space.


Function Signature Description
constructor Quaternion() Creates a new identity quaternion.
constructor Quaternion(float x,float y,float z,float w) Creates a new quaternion of the form w + xi + yj + zk.
Dot float Dot(Quaternion factor) The 4D scalar product of two quaternions. represents the angle between the quaternions in the range [1, 0].
Invert Quaternion Invert() Returns a quaternion with the complimentary rotation.
Norm Quaternion Norm() Normalizes the 4D vector length. To do: What effect does this have in quaternions?
SetPitchYawRoll void SetPitchYawRoll(float pitch, float yaw, float roll) Recomputes the quaternion from the supplied Euler angles.
ToKVString string ToKVString() Returns a string with the values separated by one space.
ToQAngle QAngle ToQAngle() Returns the angles resulting from the rotation.


Instance Type Description
x float Vector component along the i axis.
y float Vector component along the j axis.
z float Vector component along the k axis.
w float Scalar part.


To do: Descriptions of the operations are lacking details.

Operation Return Type Description
Quaternion + Quaternion Quaternion Sum of the two Quaternions.
Quaternion - Quaternion Quaternion Subtraction of the two Quaternions.
Quaternion * integer Quaternion Quaternion multiplied by a number.
Quaternion * float


Function Signature Description
AddThinkToEnt void AddThinkToEnt(handle entity, string FuncName) Sets a function in the entity's script to rerun by itself constantly. Pass null as the function name to remove a think function.
AddToScriptHelp AddToScriptHelp()
AllowThirdPersonCamera bool AllowThirdPersonCamera()
ArePlayersInHell bool ArePlayersInHell()
Assert void Assert(bool value, string optional message) Test value and if not true, throws exception, optionally with message.
BeginScriptDebug BeginScriptDebug()
ClearGameEventCallbacks void ClearGameEventCallbacks() Empties the tables of game event callback functions.
CreateProp handle CreateProp(string, Vector, string, int) Create a physics prop
CreateSceneEntity handle CreateSceneEntity(string) Create a scene entity to play the specified scene.
developer int developer() The current level of the developer console variable.
DispatchParticleEffect void DispatchParticleEffect(string handle, Vector, QAngle) Dispatches a one-off particle system
Document void Document(unknown symbolOrTable, unknown itemIfSymbol = null, string descriptionIfSymbol = null)
DoEntFire void DoEntFire(string target, string action, string value, float delay, handle activator, handle caller) Generate an entity I/O event. The caller and activator argument takes a CBaseEntity script handle, and entities assigned can receive inputs with target set to !self, or !activator / !caller.
DoIncludeScript bool DoIncludeScript(string file, handle/table scope) Execute a script. and put all its content for the argument passed to thescopeparameter. (internal)
IncludeScript bool IncludeScript(string file, handle scope = null) Wrapper for DoIncludeScript
EmitAmbientSoundOn void EmitAmbientSoundOn(string soundName, float volume, int soundlevel, int pitch, handle entity) Play named sound on an entity using configurations similar to ambient_generic.
StopAmbientSoundOn void StopAmbientSoundOn(string soundName, handle entity) Stop named sound on an entity using configurations similar to ambient_generic.
EmitSoundOn void EmitSoundOn(string soundScript, handle entity) Play named sound on an entity.
StopSoundOn void StopSoundOn(string soundScript, handle entity) Stop named sound on an entity.
EmitSoundOnClient void EmitSoundOnClient(string soundScript, handle player) Play named sound only on the client for the specified player.
EndScriptDebug EndScriptDebug()
EntFire void EntFire(string target, string action, string value = null, float delay = 0, handle activator = null) Wrapper for DoEntFire() that setsactivator to null, but has nocallerparam.
EntFireByHandle void EntFireByHandle(handle, string, string, float, handle, handle) Generate and entity i/o event. First parameter is an entity instance.
EntIndexToHScript handle EntIndexToHScript(int entIndex) Turn an entity index integer to an HScript representing that entity's script instance.
FileToString string FileToString(string file) Reads a string from file. Returns the string from the file, null if no file or file is greater than 16384 bytes. The game will crash to desktop if the file is exactly 16384 bytes.
FindCircularReference FindCircularReference()
FindCircularReferences FindCircularReferences()
FireGameEvent bool FireGameEvent(string, handle) Fire a game event to a listening callback function in script. Parameters are passed in a squirrel table.
FireScriptHook bool FireScriptHook(string, handle) Fire a script hoook to a listening callback function in script. Parameters are passed in a squirrel table.
FireScriptEvent void FireScriptEvent(string event, table params) Wrapper for __RunEventCallbacks()
ForceEnableUpgrades void ForceEnableUpgrades(int) Whether to force on MvM-styled upgrades on/off. 0 -> default, 1 -> force off, 2 -> force on
ForceEscortPushLogic void ForceEscortPushLogic(int) Forces payload pushing logic. 0 -> default, 1 -> force off, 2 -> force on
FlagsMayBeCapped bool FlagsMayBeCapped() May a flag be captured?
FrameTime float FrameTime() Get the time spent on the server in the last frame
GameModeUsesCurrency bool GameModeUsesCurrency() Does the current gamemode have currency?
GameModeUsesMiniBosses bool GameModeUsesMiniBosses() Does the current gamemode have minibosses?
GameModeUsesUpgrades bool GameModeUsesUpgrades() Does the current gamemode have upgrades?
GetClassLimit int GetClassLimit(int) Get class limit for class. See Constants.ETFClass
GetDeveloperLevel int GetDeveloperLevel() Gets the level of 'developer'
GetFrameCount int GetFrameCount() Returns the engines current frame count
GetFriction float GetFriction(handle player) Returns the Friction on a player entity, meaningless if not a player
GetFunctionSignature GetFunctionSignature()
GetGravityMultiplier float GetGravityMultiplier()
GetListenServerHost handle GetListenServerHost() Get the local player on a listen server.
GetMannVsMachineAlarmStatus bool GetMannVsMachineAlarmStatus()
GetMapName string GetMapName() Get the name of the map.
GetModelIndex int GetModelIndex(string filename) Returns the index of the named model.
GetOvertimeAllowedForCTF bool GetOvertimeAllowedForCTF()
GetPhysAngularVelocity Vector GetPhysAngularVelocity(handle entity) Returns the Angular velocity of the entity.
GetPhysVelocity Vector GetPhysVelocity(handle entity) Returns the velocity of the entity.
GetPlayerFromUserID handle GetPlayerFromUserID(int ID) Given a user id, return the entity, or null.
GetRoundState int GetRoundState() Get current round state. See Constants.ERoundState
GetSoundDuration float GetSoundDuration(string soundname, string actormodel) Returns float dur
GetStopWatchState int GetStopWatchState() Get the current stopwatch state. See Constants.EStopwatchState
GetWinningTeam int GetWinningTeam() Who won!
HaveStopWatchWinner bool HaveStopWatchWinner()
InMatchStartCountdown bool InMatchStartCountdown() Are we in the pre-match state?
InOvertime bool InOvertime() Currently in overtime?
IsAttackDefenseMode bool IsAttackDefenseMode()
IsBirthday bool IsBirthday() Are we in birthday mode?
IsCompetitiveMode bool IsCompetitiveMode() Playing competitive?
IsDedicatedServer bool IsDedicatedServer() Returns true if this server is a dedicated server.
IsDefaultGameMode bool IsDefaultGameMode() The absence of arena, mvm, tournament mode, etc
IsHolidayActive bool IsHolidayActive(int holiday) Is the given holiday active? See Constants.EHoliday
IsHolidayMap bool IsHolidayMap(int holiday) Playing a holiday map? See Constants.EHoliday
IsInArenaMode bool IsInArenaMode() Playing arena mode?
IsInKothMode bool IsInKothMode() Playing king of the hill mode?
IsInMedievalMode bool IsInMedievalMode() Playing medieval mode?
IsInWaitingForPlayers bool IsInWaitingForPlayers() Are we waiting for some stragglers?
IsMannVsMachineMode bool IsMannVsMachineMode() Playing MvM? Beep boop
IsMannVsMachineRespecEnabled bool IsMannVsMachineRespecEnabled() Are players allowed to refund their upgrades?
IsMatchTypeCasual bool IsMatchTypeCasual() Playing casual?
IsMatchTypeCompetitive bool IsMatchTypeCompetitive() Playing competitive?
IsModelPrecached bool IsModelPrecached(string modelname) Checks if the modelname is precached.
IsSoundPrecached bool IsSoundPrecached(string soundname) Checks if the soundname is precached.
IsPasstimeMode bool IsPasstimeMode() No ball games.
IsPlayerABot bool IsPlayerABot(handle player) Is this player/entity a bot.
IsPowerupMode bool IsPowerupMode() Playing powerup mode? Not compatible with MvM
IsPVEModeActive bool IsPVEModeActive()
IsQuickBuildTime bool IsQuickBuildTime() If an engie places a building, will it immediately upgrade? Eg. MvM pre-round etc.
IsTruceActive bool IsTruceActive()
IsUsingGrapplingHook bool IsUsingGrapplingHook()
IsUsingSpells bool IsUsingSpells()
IsWeakref bool IsWeakref()
LocalTime void LocalTime(table) Fills out a table with the local time (second, minute, hour, day, month, year, dayofweek, dayofyear, daylightsavings)
MakeNamespace MakeNamespace()
MapHasMatchSummaryStage bool MapHasMatchSummaryStage()
MatchmakingShouldUseStopwatchMode bool MatchmakingShouldUseStopwatchMode()
PickupObject void PickupObject(handle player, handle entity) Object from world is put into the "Held" slot of the player. Warning: it will smoothly interpolate from where it is to the players hand - which is a bit goofy if it is on other side of level.
PlayerInstanceFromIndex CBasePlayer PlayerInstanceFromIndex(int index) Get a script handle of a player using the player index.
PlayerReadyStatus_ArePlayersOnTeamReady bool PlayerReadyStatus_ArePlayersOnTeamReady(int)
PlayerReadyStatus_HaveMinPlayersToEnable bool PlayerReadyStatus_HaveMinPlayersToEnable()
PlayerReadyStatus_ResetState void PlayerReadyStatus_ResetState()
PlayersAreOnMatchSummaryStage bool PlayersAreOnMatchSummaryStage()
PointsMayBeCaptured bool PointsMayBeCaptured() Are points able to be captured?
PrecacheEntityFromTable bool PrecacheEntityFromTable(table keyvalues) Precache an entity from KeyValues in a table; useful for env_shake.
PrecacheModel int PrecacheModel(string filename) Precache a model and return index of the model.
PrecacheSound void PrecacheSound(string soundName) Precache a sound.
PrintHelp PrintHelp()
RandomFloat float RandomFloat(float min, float max) Generate a random floating-point number within a range, inclusive.
RandomInt int RandomInt(int min, int max) Generate a random integer within a range, inclusive.
RegisterFunctionDocumentation void RegisterFunctionDocumentation(unknown func, string name, string signature, string description)
RegisterScriptGameEventListener void RegisterScriptGameEventListener(string eventName) Register as a listener for a game event from script. It's what __CollectGameEventCallbacks() uses to register event callbacks to the C++ code.
RegisterScriptHookListener void RegisterScriptHookListener(string) Register as a listener for a script hook from script.
RetrieveNativeSignature RetrieveNativeSignature()
RotateOrientation QAngle RotateOrientation(QAngle, QAngle) Rotate a QAngle by another QAngle.
RotatePosition Vector RotatePosition(Vector origin, QAngle rotation, Vector input) Rotate the input Vector around an origin.
ScreenFade void ScreenFade(handle player, int red, int green, int blue, int alpha, float fadeTime, float fadeHold, int flags) Start a customisable screenfade.
ScreenShake void ScreenShake(Vector vecCenter, float flAmplitude, float flFrequency, float flDuration, float flRadius, int eCommand, bool bAirShake) Start a customisable screenshake; eCommand( SHAKE_START = 0, SHAKE_STOP = 1 ).
ScriptHooksEnabled bool ScriptHooksEnabled() Returns whether script hooks are currently enabled.
SendGlobalGameEvent bool SendGlobalGameEvent(string, handle) Sends a real game event to everything. Parameters are passed in a squirrel table.
SendToConsole void SendToConsole(string command) Send a string to the console as a command.
Note.png Note: This obeys the behavior of the sv_allow_point_servercommand convar. By default, this command will do nothing unless the server has this command to set to "always"
SendToServerConsole void SendToServerConsole(string command) Send a string that gets executed on the server as a ServerCommand.
SendToConsoleServer void SendToConsoleServer(string command) Copy of SendToServerConsole with another name for compat.
SetFakeClientConVarValue void SetFakeClientConVarValue(handle bot, string cvar, string value) Sets a USERINFO client ConVar for a fakeclient.
SetGravityMultiplier void SetGravityMultiplier(float multiplier)
SetMannVsMachineAlarmStatus void SetMannVsMachineAlarmStatus(bool status)
SetOvertimeAllowedForCTF void SetOvertimeAllowedForCTF(bool state)
SetPlayersInHell void SetPlayersInHell(bool state)
SetSkyboxTexture void SetSkyboxTexture(string) Sets the current skybox texture
SetUsingSpells void SetUsingSpells(bool state)
SpawnEntityFromTable handle SpawnEntityFromTable(string name, handle keyvalues) Spawn entity from KeyValues in table - 'name' is entity name, rest are KeyValues for spawn.
SpawnEntityGroupFromTable bool SpawnEntityGroupFromTable(handle entityGroup) Hierarchically spawn an entity group from a set of spawn tables. See L4D2_EMS/Appendix:_Spawning.
StringToFile void StringToFile(string file, string string) Stores a string as a file.
Time float Time() Get the current server time
TraceLine float TraceLine(Vector, Vector, handle) given 2 points & ent to ignore, return fraction along line that hits world or models
TraceLineEx bool TraceLineEx(table traceTable) Input Table: start, end, mask, ignore
Output Table: pos, fraction, hit, enthit, allsolid, startpos, endpos, startsolid, plane_normal, plane_dist, surface_name, surface_flags, surface_props
TraceLinePlayersIncluded float TraceLinePlayersIncluded(Vector, Vector, handle) given 2 points & ent to ignore, return fraction along line that hits world, models, players or npcs
TraceHull bool TraceHull(table traceTable) Input Table: start, end, hullmin, hullmax, mask, ignore
Output Table: pos, fraction, hit, enthit, allsolid, startpos, endpos, startsolid, plane_normal, plane_dist, surface_name, surface_flags, surface_props
UniqueString string UniqueString(string input) Generate a string guaranteed to be unique across the life of the script VM, with an optional root string. Useful for adding data to tables when not sure what keys are already in use in that table.
DoUniqueString string DoUniqueString(string input) Unknown; presumably an internal function called by UniqueString, so call that instead.
UsePlayerReadyStatusMode bool UsePlayerReadyStatusMode()
VSquirrel_OnCreateScope table VSquirrel_OnCreateScope(any value, table scope) Creates a new scope with the name of value in the submitted table (includes unique params).
VSquirrel_OnReleaseScope void VSquirrel_OnReleaseScope(table createdScope) Removes a scope created via VSquirrel_OnCreateScope.
__CollectEventCallbacks void __CollectEventCallbacks(scope, prefix, globalTableName, regFunc) Overloaded function. Its only used for this: __CollectEventCallbacks(scope, "OnGameEvent_", "GameEventCallbacks", ::RegisterScriptGameEventListener)
__CollectGameEventCallbacks void __CollectGameEventCallbacks(scope) Wrapper that registers callbacks for both OnGameEvent_x and OnScriptEvent_ functions. Done using the __CollectEventCallbacks function.
__ReplaceClosures void __ReplaceClosures(script, scope)
__RunEventCallbacks void __RunEventCallbacks(event, params, prefix, globalTableName, bWarnIfMissing) Call all functions in the callback array for the given game event
__RunGameEventCallbacks void __RunGameEventCallbacks(event, params) Wrapper for __RunEventCallbacks()
__RunScriptHookCallbacks void __RunScriptHookCallbacks()

Printing and Drawing

Function Signature Description
ClientPrint void ClientPrint(CBasePlayer player, int destination, string message) Print a client message. If you pass null instead of a valid player, the message will be sent to all clients.
DebugDrawBox void DebugDrawBox(Vector origin, vector min, vector max, int r, int g, int b, int alpha, float duration) Draw a debug overlay box.
DebugDrawBoxAngles void DebugDrawBoxAngles(Vector origin, Vector min, Vector max, QAngle direction, Vector rgb, int alpha, float duration) Draw a debug oriented box (cent, min, max, angles(p,y,r), vRgb, a, duration).
DebugDrawBoxDirection void DebugDrawBoxDirection(Vector center, Vector min, Vector max, Vector forward, Vector rgb, float alpha, float duration) Draw a debug forward box.
DebugDrawCircle void DebugDrawCircle(Vector center, Vector rgb, float alpha, float radius, bool ztest, float duration) Draw a debug circle.
DebugDrawClear void DebugDrawClear() Try to clear all the debug overlay info.
DebugDrawLine void DebugDrawLine(Vector start, Vector end, int red, int green, int blue', bool zTest, float time) Draw a debug overlay line.
DebugDrawLine_vCol void DebugDrawLine_vCol(Vector start, vector end, vector rgb, bool ztest, float duration) Draw a debug line using color vec.
DebugDrawScreenTextLine void DebugDrawScreenTextLine(float x, float y, int lineOffset, string text, int r, int g, int b, int a, float duration) Draw text with a line offset.
DebugDrawText void DebugDrawText(Vector origin, string text, bool useViewCheck, float duration) Draw text on the screen, starting on the position of origin.
__DumpScope void __DumpScope(int indentation, handle scope) Dumps contents of everything in the scope.
DumpObject void DumpObject(handle object) Dumps information about a class or instance.
Msg void Msg(string message) Prints message to console without any line feed after.
printl void printl(string message) Prints message to console with a line feed after.
realPrint void realPrint(string message) Identical to print. print seems to be a wrapper for this.
Say void Say(CBasePlayer player, string message, bool teamOnly) Calling this will have the specified player send the message to chat, either to teamOnly (true) or to everyone.
ShowMessage void ShowMessage(string message) Print a hud message on all clients

Squirrel Standard Library

Squirrel Functions of both Squirrel's built-in functions and standard library.

Function Signature Description
array array(int length, any fill = null) Returns a new array of the given length where each element is set to fill (null by default).
assert assert(bool exp) Throws an assertion error if the given expression evaluates to false (i.e. the values 0, 0.0, null and false)
callee function callee() Returns the currently running closure.
castf2i int castf2i(float value) Interprets the float's bytes as if it were a 32-bit integer representation
casti2f float casti2f(int value) Interprets the integer's bytes as if it were a floating-point encoding
collectgarbage int collectgarbage() Runs the garbage collector and returns the number of reference cycles found(and deleted) This function only works on garbage collector builds.
compilestring any compilestring(string string, string buffername = null) Compiles a string containing a squirrel script into a function and returns it.
dummy dummy()
enabledebuginfo void enabledebuginfo(any enable) Enable/disable the debug line information generation at compile time. enable != null enables . enable == null disables.
error void error(string x) Prints x in the standard error output .
getconsttable table getconsttable() Returns the const table of the VM.
getroottable table getroottable() Returns the root table of the VM.
getstackinfos table getstackinfos(int stacklevel) Returns the stack frame informations at the given stack level (0 is the current function 1 is the caller and so on). If the stack level doesn't exist the function returns null.
	func = "DoStuff",		// function name
	src = "test.nut",		// source file
	line = 10,			// line number
	locals =			// a table containing the local variables
		a = 10,
		testy = "I'm a string"
newthread coroutine newthread(function threadfunc) Creates a new cooperative thread object(coroutine) and returns it .
print print(string message) Prints the given parameter but with no newline unlike printl()
resurrectunreachable array resurrectunreachable() Runs the garbage collector and returns an array containing all unreachable object found. If no unreachable object is found, null is returned instead. This function is meant to help debugging reference cycles. This function only works on garbage collector builds.
setconsttable table setconsttable(table consttable) Sets the const table of the VM which also returns the previous const table.
setdebughook void setdebughook(function hook_func) Sets the debug hook.
seterrorhandler void seterrorhandler(function func) Sets the runtime error handler .
setroottable table setroottable(table roottable) Sets the root table of the VM which also returns the previous root table.
suspend void suspend(any ret) Suspends the coroutine that called this function.
swap2 int swap2(int value) Swaps bytes 1 and 2 of the integer
swap4 int swap4(int value) Reverse byte order of the four bytes
swapfloat float swapfloat(float value) Reverse byte order of the four bytes
type type(var) Returns var._typeof(), i.e. the type of the given parameter as a string


A blob stores a block of binary data. See official documentation for more information.

Note.png Note: Each blob is restricted to a maximum size of 16 megabytes. Blobs are also limited to 32 megabytes total at any given time.
Function Signature Description
blob blob(int initSize = 0)
eos int eos()
flush flush()
len int len()
readblob blob readblob(int numberOfBytes)
readn any readn(char dataType)
resize void resize(int newSize)
seek int seek(int offset, int offsetBasis)
swap2 void swap2()
swap4 void swap4()
tell int tell()
writeblob void writeblob(blob blob)
writen void writen(num value, char dataType)


Function Signature Description
abs abs(num x) Returns |x| as integer unlike fabs()
acos acos(num x) Returns cos-1(x), -1 ≤ x ≤ 1
asin asin(num x) Returns sin-1(x), -1 ≤ x ≤ 1
atan atan(num x) Returns tan-1(x)
atan2 atan2(num y, num x) (!) Returns the angle between the ray from the point (0, 0) through (x, y) and the positive x-axis, confined to (−PI, PI], see also atan2. Note the order of the parameters x and y!]
ceil ceil(num x) Returns the smallest integer that is ≥ x
cos cos(num x) Returns cos(x)
exp exp(num x) Returns exp(x) = ex
fabs fabs(num x) Returns |x| as float unlike abs()
floor floor(num x) Returns the largest integer that is ≤ x
log log(num x) Returns loge(x) = ln(x)
log10 log10(num x) Returns log10(x)
pow pow(num x, num y) Returns xy
rand rand() Returns a random integer with 0 ≤ rand() ≤ RAND_MAX
sin sin(num x) Returns sin(x)
sqrt sqrt(num x) Returns the square root of x
srand srand(num seed) Sets the starting point for generating a series of pseudorandom integers
tan tan(num x) Returns tan(x)


Function Signature Description
format format(string, args...) Returns a formatted string
lstrip lstrip(string) Removes whitespace at the beginning of the given string
rstrip rstrip(string) Removes whitespace at the end of the given string
split string split(string str, string separator') Returns an array of strings split at each point where a separator character occurs in str. The separator is not returned as part of any array element. the parameter separators is a string that specifies the characters as to be used for the splitting.
strip strip(string) Removes whitespace at the beginning and end of the given string

Script Debug

To do

Function Signature Description
ScriptDebugAddTextFilter void ScriptDebugAddTextFilter()
ScriptDebugAddTrace void ScriptDebugAddTrace()
ScriptDebugAddWatch void ScriptDebugAddWatch()
ScriptDebugAddWatches void ScriptDebugAddWatches()
ScriptDebugAddWatchPattern void ScriptDebugAddWatchPattern()
ScriptDebugClearTraces void ScriptDebugClearTraces()
ScriptDebugClearWatches void ScriptDebugClearWatches()
ScriptDebugDefaultWatchColor void ScriptDebugDefaultWatchColor()
ScriptDebugDraw void ScriptDebugDraw()
ScriptDebugDrawWatches void ScriptDebugDrawWatches()
ScriptDebugDumpKeys void ScriptDebugDumpKeys()
ScriptDebugHook void ScriptDebugHook()
ScriptDebugIterateKeys void ScriptDebugIterateKeys()
ScriptDebugIterateKeysRecursive void ScriptDebugIterateKeysRecursive()
ScriptDebugRemoveTextFilter void ScriptDebugRemoveTextFilter()
ScriptDebugRemoveTrace void ScriptDebugRemoveTrace()
ScriptDebugRemoveWatch void ScriptDebugRemoveWatch()
ScriptDebugRemoveWatches void ScriptDebugRemoveWatches()
ScriptDebugRemoveWatchPattern void ScriptDebugRemoveWatchPattern()
ScriptDebugText void ScriptDebugText()
ScriptDebugTextDraw void ScriptDebugTextDraw()
ScriptDebugTextPrint void ScriptDebugTextPrint()
ScriptDebugTextTrace void ScriptDebugTextTrace()
ScriptDebugTraceAll void ScriptDebugTraceAll()
ScriptDebugWatches void ScriptDebugWatches()
__VScriptServerDebugHook __VScriptServerDebugHook()

See also