Skip to main content

API documentation

This page is a list of all functions, interfaces, types, and enums offered by the cs_script API in Counter-Strike 2 iconCounter-Strike 2

info

Valve has released a TypeScript iconTypeScript file defining the current API along side the zoo map, it can be found at Steam\steamapps\common\Counter-Strike Global Offensive\content\csgo_addons\cs_script_demo\maps\scripts\point_script.d.ts

Functions

Domain

The top level API provided to scripts attached to a point_script entity.

Access these functions by importing Instance from "cs_script/point_script".

Functions

NameSignatureDescription
MsgMsg(text: any): voidLog a message to the console.
DebugScreenTextDebugScreenText(config: { text: any, x: number, y: number, duration?: number, color?: ColorArg }): voidPrint some text to the game window. Only works in dev environments.
DebugLineDebugLine(config: { start: Vector, end: Vector, duration?: number, color?: ColorArg }): voidDraw a line in the world. Only works in dev environments.
DebugSphereDebugSphere(config: { center: Vector, radius: number, duration?: number, color?: ColorArg }): voidDraw a wire sphere in the world. Only works in dev environments.
DebugBoxDebugBox(config: { mins: Vector, maxs: Vector, duration?: number, color?: ColorArg }): voidDraw an axis aligned box in the world. Only works in dev environments.
SetSaveDataSetSaveData(data: string): voidWrites save data associated with this workshop addon.

Will synchronously write to disk every time this is called.
GetSaveDataGetSaveData(): stringRetrieves the save data associated with this workshop addon.

Will synchronously read from disk the first time this is called.
SetNextThinkSetNextThink(time: number): voidSet when the OnThink callback should next be run. The exact time will be on the tick nearest to the specified time, which may be earlier or later.
DelayDelay(delay: number): Promise<void>Returns a promise that resolves after delay number of seconds. The exact time will be on the tick nearest to the specified delay, which may be earlier or later.
EntFireAtNameEntFireAtName(config: { name: string, input: string, value?: InputValue, caller?: Entity, activator?: Entity, delay?: number }): voidFire the input on all targets matching the specified names.
EntFireAtTargetEntFireAtTarget(config: { target: Entity, input: string, value?: InputValue, caller?: Entity, activator?: Entity, delay?: number }): voidFire the input on the specified target.
DisconnectOutputDisconnectOutput(connectionId: number): voidFind entities by name.
FindEntityByNameFindEntityByName(name: string): Entity | undefinedFind the first entity matching the specified name.
FindEntitiesByNameFindEntitiesByName(name: string): Entity[]Find entities matching the specified name.
FindEntityByClassFindEntityByClass(className: string): Entity | undefinedFind the first entity of the specified class name.
FindEntitiesByClassFindEntitiesByClass(className: string): Entity[]Find entities of the specified class name.
GetPlayerControllerGetPlayerController(playerSlot: number): CSPlayerController | undefinedGet the player controller in the given slot.
GetAllPlayerControllersGetAllPlayerControllers(): CSPlayerController[]Get all the player controllers. Includes disconnected players.
TraceLineTraceLine(trace: BaseTraceConfig): TraceResultTrace a point along a line and detect collisions
TraceSphereTraceSphere(trace: { radius: number } & BaseTraceConfig): TraceResultTrace a sphere along a line and detect collisions
TraceBoxTraceBox(trace: { mins: Vector, maxs: Vector } & BaseTraceConfig): TraceResultTrace an axis aligned bounding box along a line and detect collisions
TracePlayerTracePlayer(trace: PlayerTrace): PlayerTraceResultTrace as a player would collide
TraceBulletTraceBullet(trace: BulletTrace): BulletTraceResult[]Trace as a bullet and detect hits and damage
IsDedicatedServerIsDedicatedServer(): booleanGet if the server is a dedicated server.
GetGameTimeGetGameTime(): numberGet the game time in seconds.
IsWarmupPeriodIsWarmupPeriod(): booleanGet if the game is currently in a Warmup period.
IsFreezePeriodIsFreezePeriod(): booleanGet if the game is currently in a Freeze period.
GetGameTypeGetGameType(): numberGet the current Game Type.
GetGameModeGetGameMode(): numberGet the current Game Mode.
GetMapNameGetMapName(): stringGet the name of the current map.
GetRoundsPlayedGetRoundsPlayed(): numberGet the number of rounds played in the current game.
GetRoundRemainingTimeGetRoundRemainingTime(): numberGet the time remaining in the current round in seconds.
SetRoundRemainingTimeSetRoundRemainingTime(time: number): voidSet the time remaining in the current round in seconds.
SpawnGrenadeProjectileSpawnGrenadeProjectile(config: SpawnGrenadeProjectileConfig): CSGrenadeProjectileBaseSpawns a live grenade projectile.
ClientCommandClientCommand(playerSlot: number, command: string): voidIssue the specified command to the specified client.
ServerCommandServerCommand(command: string): voidIssue a command.
DebugScreenTextDebugScreenText(text: any, x: number, y: number, duration: number, color: ColorArg): void@deprecated This overload will be removed in a future update
DebugLineDebugLine(start: Vector, end: Vector, duration: number, color: ColorArg): void@deprecated This overload will be removed in a future update
DebugBoxDebugBox(mins: Vector, maxs: Vector, duration: number, color: ColorArg): void@deprecated This overload will be removed in a future update
DebugSphereDebugSphere(center: Vector, radius: number, duration: number, color: ColorArg): void@deprecated This overload will be removed in a future update
GetTraceHitGetTraceHit(start: Vector, end: Vector, config?: { ignoreEntity?: Entity, ignorePlayers?: boolean }): TraceResult@deprecated This method will be removed in a future update
EntFireAtNameEntFireAtName(name: string, input: string, inputData?: InputValue | { value?: InputValue, caller?: Entity, activator?: Entity }, delay?: number): void@deprecated This overload will be removed in a future update
EntFireAtTargetEntFireAtTarget(target: Entity, input: string, inputData?: InputValue | { value?: InputValue, caller?: Entity, activator?: Entity }, delay?: number): void@deprecated This overload will be removed in a future update

Events

NameSignatureDescription
OnScriptReloadOnScriptReload<T>(config: { before?: () => T, after?: (memory: T) => void }): voidCalled in Tools mode when the script is reloaded due to changes.

The before callback will be invoked before pre-load teardown.

The after callback will be invoked after the new script is evaluated and will be passed the return value of the before callback.
SetThinkSetThink(callback: () => void): voidCalled at a specified time. Control when this is run using SetNextThink.
QueueAfterThinksQueueAfterThinks( callback: () => void ): voidQueue up a callback to be invoked once, after all entities have executed their think functions this tick (eg. player input has been handled, projectiles have moved).

This can be useful for delaying until a clean moment when an entity isn't mid-computation and might ignore or misinterpret.

This can be useful for delaying until the world is in a consistent state.

Callbacks queued up during a post entity think callback will be invoked in the same tick.

@experimental This method is experimental and may experience breaking changes.

Please send feedback to CSGOTeamFeedback@valvesoftware.com with "cs_script Feedback" in the subject line.
OnActivateOnActivate(callback: () => void): voidCalled when the point_script entity is activated
OnScriptInputOnScriptInput(name: string, callback: (inputData: { caller?: Entity, activator?: Entity }) => void): voidCalled when input RunScriptInput is triggered on the point_script entity with a parameter value that matches name.
OnPlayerConnectOnPlayerConnect(callback: (event: { player: CSPlayerController }) => void): voidCalled when a client finishes the initial connection handshake with the server.
OnPlayerActivateOnPlayerActivate(callback: (event: { player: CSPlayerController }) => void): voidCalled when a client finishes loading and is ready to spawn.
OnPlayerDisconnectOnPlayerDisconnect(callback: (event: { playerSlot: number }) => void): voidCalled when a client disconnects from the server.
OnPlayerResetOnPlayerReset(callback: (event: { player: CSPlayerPawn }) => void): voidCalled when a player respawns, changes team, or is placed back at spawn due to a round restart
OnRoundStartOnRoundStart(callback: () => void): voidCalled when a new round begins
OnRoundEndOnRoundEnd(callback: (event: { winningTeam: number, reason: CSRoundEndReason }) => void): voidCalled when a team wins a round
OnBeginRoundRestartOnBeginRoundRestart(callback: () => void): voidCalled at the start of cleanup for a round restart

@experimental This method is experimental and may experience breaking changes.

Please send feedback to CSGOTeamFeedback@valvesoftware.com with "cs_script Feedback" in the subject line.
OnBombPlantStartOnBombPlantStart(callback: (event: { planter: CSPlayerPawn }) => void): voidCalled when a player starts planting their c4
OnBombPlantAbortOnBombPlantAbort(callback: (event: { planter: CSPlayerPawn }) => void): voidCalled when a player aborts planting their c4
OnBombPlantOnBombPlant(callback: (event: BombPlantEvent) => void): voidCalled when a player plants their c4
OnBombDefuseStartOnBombDefuseStart(callback: (event: { plantedC4: CSPlantedC4 }) => void): voidCalled when a player starts defusing a c4
OnBombDefuseAbortOnBombDefuseAbort(callback: (event: { plantedC4: CSPlantedC4 }) => void): voidCalled when a player aborts defusing a c4
OnBombDefuseOnBombDefuse(callback: (event: BombDefuseEvent) => void): voidCalled when a player defuses a c4
OnBombExplodeOnBombExplode(callback: (event: { plantedC4: CSPlantedC4 }) => void): voidCalled when a c4 explodes
OnModifyPlayerDamageOnModifyPlayerDamage(callback: (event: ModifyPlayerDamageEvent) => ModfiyPlayerDamageResult | void): voidCalled immediately before a CSPlayerPawn takes damage to armor and health.

Called after hitgroup modifications are applied such as headshot multiplier.

This won't be called if the player would take no damage. Such as if they're frozen or invulnerable or if friendly fire would disable the damage.

Return { damage: N } to modify the amount of damage.

Return { damageFlags: event.damageFlags | [CSDamageFlags](#csdamageflags).IGNORE_ARMOR } to have the damage pierce armor.

Return { abort: true } to cancel the damage event.
OnPlayerDamageOnPlayerDamage(callback: (event: PlayerDamageEvent) => void): voidCalled when a player has taken damage.
OnPlayerKillOnPlayerKill(callback: (event: { player: CSPlayerPawn, inflictor?: Entity, attacker?: Entity, weapon?: CSWeaponBase }) => void): voidCalled when a player dies. inflictor, attacker and weapon will match the damage event that caused the kill.
OnPlayerJumpOnPlayerJump(callback: (event: { player: CSPlayerPawn }) => void): voidCalled when a player jumps off the ground.
OnPlayerLandOnPlayerLand(callback: (event: { player: CSPlayerPawn }) => void): voidCalled when a player hits the ground while falling.
OnPlayerChatOnPlayerChat(callback: (event: { player?: CSPlayerController, text: string, team: number }) => void): voidCalled when a player sends a chat message. team will match they player's team if the message was sent to team chat.
OnPlayerPingOnPlayerPing(callback: (event: { player: CSPlayerController, position: Vector }) => void): voidCalled when a player pings a location.
OnGunReloadOnGunReload(callback: (event: { weapon: CSWeaponBase }) => void): voidCalled when a gun is reloaded.
OnGunFireOnGunFire(callback: (event: { weapon: CSWeaponBase }) => void): voidCalled when a gun emits bullets. A shotgun will only trigger this once when emitting multiple bullets at once.
OnBulletImpactOnBulletImpact(callback: (event: { weapon: CSWeaponBase, position: Vector, hitEntity?: Entity }) => void): voidCalled when a bullet hits a surface.

Penetrations can cause a single bullet to trigger multiple impacts.

This will be called for all impacts of a bullet before any player damage events are called.
OnWeaponDropOnWeaponDrop(callback: (event: { weapon: CSWeaponBase, dropper: CSPlayerPawn }) => void): voidCalled when a weapon is dropped.
OnWeaponPickupOnWeaponPickup(callback: (event: { weapon: CSWeaponBase }) => void): voidCalled when a weapon is picked up.
OnGrenadeThrowOnGrenadeThrow(callback: (event: { weapon: CSWeaponBase, projectile: CSGrenadeProjectileBase }) => void): voidCalled when a grenade is thrown. projectile is the newly created grenade projectile.
OnGrenadeBounceOnGrenadeBounce(callback: (event: GrenadeBounceEvent) => void): voidCalled when a grenade bounces.
OnKnifeAttackOnKnifeAttack(callback: (event: { weapon: CSWeaponBase, attackType: CSWeaponAttackType }) => void): voidCalled when a knife attacks, even if it misses.
OnCustomHudClickedOnCustomHudClicked( callback: (event: {player: CSPlayerController, layout: CustomHudLayout, buttonId: string}) => void ): voidCalled when a button in a CustomHudLayout is clicked.
ConnectOutputConnectOutput(target: Entity, output: string, callback: (inputData: { value?: InputValue, caller?: Entity, activator?: Entity }) => any): number | undefinedConnect the output of an entity to a callback. The return value is a connection id that can be used in DisconnectOutput
RegisterCheatCommandRegisterCheatCommand(name: string, callback: (args: string) => void): voidCreates a console command that will run the specified callback. The command will only work when sv_cheats is true.
OnBeforePlayerDamageOnBeforePlayerDamage(callback: () => any): void@deprecated This method will be removed in a future update
OnBeforeReloadOnBeforeReload(callback: () => any): void@deprecated This method will be removed in a future update
OnReloadOnReload(callback: (memory: any) => void): void@deprecated This method will be removed in a future update

Entity

The base class for all entities

Functions

NameSignatureDescription
IsValidIsValid(): booleanReturns false if the entity has been deleted.
GetAbsOriginGetAbsOrigin(): VectorThe position of the origin of this entity relative to the world.
GetLocalOriginGetLocalOrigin(): VectorThe position of the origin of this entity relative to its parent. Will be relative to the world if no parent.
GetAbsAnglesGetAbsAngles(): QAngleThe angles (pitch, yaw, and roll) of this entity relative to the world.
GetLocalAnglesGetLocalAngles(): QAngleThe angles (pitch, yaw, and roll) of this entity relative to its parent. Will be relative to the world if no parent.
GetAbsVelocityGetAbsVelocity(): VectorThe velocity of this entity relative to the world.
GetLocalVelocityGetLocalVelocity(): VectorThe velocity of this entity relative to its parent. Will be relative to the world if no parent.
GetAbsAngularVelocityGetAbsAngularVelocity(): RotationVectorThe angular velocity of this entity relative to the world.
GetLocalAngularVelocityGetLocalAngularVelocity(): RotationVectorThe angular velocity of this entity relative to its parent. Will be relative to the world if no parent.
GetEyeAnglesGetEyeAngles(): QAngleThe angles of the eyes of this entity relative to the world.
GetEyePositionGetEyePosition(): VectorThe position of the eyes of this entity relative to the world
TeleportTeleport(newValues: { position?: Vector, angles?: QAngle, velocity?: Vector, angularVelocity?: RotationVector }): voidUpdate the physics state of this entity.
MoveMove(newValues: { position?: Vector, angles?: QAngle, velocity?: Vector, angularVelocity?: RotationVector }): voidMove this entity without resetting the client's interpolation history.
GetMoveTypeGetMoveType(): CSMoveType
SetMoveTypeSetMoveType(moveType: CSMoveType): void
GetClassNameGetClassName(): string
GetEntityNameGetEntityName(): string
SetEntityNameSetEntityName(name: string): void
GetOwnerGetOwner(): Entity | undefined
SetOwnerSetOwner(owner: Entity | undefined): void
GetParentGetParent(): Entity | undefined
SetParentSetParent(parent: Entity | undefined): void
GetTeamNumberGetTeamNumber(): number
GetHealthGetHealth(): number
SetHealthSetHealth(health: number): void
GetMaxHealthGetMaxHealth(): number
SetMaxHealthSetMaxHealth(health: number): void
IsAliveIsAlive(): boolean
IsWorldIsWorld(): booleanGet if this is the world entity
GetGroundEntityGetGroundEntity(): Entity | undefinedGet the entity that this entity is resting on. Will be undefined if in the air.
TakeDamageTakeDamage(takeDamage: EntityDamage): numberApply damage to this entity. Damage value will be modified by armor and hitgroup.
KillKill(): void
RemoveRemove(): void
TeleportTeleport(newPosition: Vector | null, newAngles: QAngle | null, newVelocity: Vector | null): void@deprecated This overload will be removed in a future update
GetLocalVelcoityGetLocalVelcoity(): Vector@deprecated This method will be removed in a future update

BaseModelEntity

Functions

NameSignatureDescription
SetModelSetModel(modelName: string): void
GetModelNameGetModelName(): string
SetModelScaleSetModelScale(scale: number): void
GetModelScaleGetModelScale(): number
SetColorSetColor(color: ColorArg): void
GetColorGetColor(): Color
GlowGlow(color?: ColorArg): void
UnglowUnglow(): void
IsGlowingIsGlowing(): boolean

CSWeaponBase

Functions

NameSignatureDescription
GetDataGetData(): CSWeaponData
GetOwnerGetOwner(): CSPlayerPawn | undefined
GetOriginalOwnerGetOriginalOwner(): CSPlayerPawn | undefined
GetClipAmmoGetClipAmmo(): number
SetClipAmmoSetClipAmmo(ammo: number): void
GetReserveAmmoGetReserveAmmo(): number
SetReserveAmmoSetReserveAmmo(ammo: number): void
IsSilencerOnIsSilencerOn(): boolean

C4

Functions

NameSignatureDescription
GetPlantStartTimeGetPlantStartTime(): number | undefined
GetPlantFinishTimeGetPlantFinishTime(): number | undefined
AbortPlantAbortPlant(): void

CSWeaponData

Functions

NameSignatureDescription
GetNameGetName(): string
GetTypeGetType(): CSWeaponType
GetGearSlotGetGearSlot(): CSGearSlot
GetPriceGetPrice(): number
GetDamageGetDamage(): number
GetMaxClipAmmoGetMaxClipAmmo(): number
GetMaxReserveAmmoGetMaxReserveAmmo(): number
GetRangeGetRange(): numberMaximum distance bullets will travel.
GetRangeModifierGetRangeModifier(): numberExponential damage drop off from traveling through air. nextDamage = currentDamage * rangeModifier ^ (distance / 500).
GetPenetrationGetPenetration(): numberPower to maintain damage during penetration

CSGrenadeProjectileBase

Functions

NameSignatureDescription
GetThrowerGetThrower(): CSPlayerPawn
GetGrenadeTypeGetGrenadeType(): CSGrenadeType
DetonateDetonate(): void

CSPlantedC4

Functions

NameSignatureDescription
IsBombsiteAIsBombsiteA(): boolean
IsBombsiteBIsBombsiteB(): boolean
GetPlanterGetPlanter(): CSPlayerPawn | undefined
GetDefuserGetDefuser(): CSPlayerPawn | undefined
IsActiveIsActive(): boolean
IsExplodedIsExploded(): boolean
IsDefusedIsDefused(): boolean
GetPlantTimeGetPlantTime(): number
GetExplodeTimeGetExplodeTime(): number | undefined
GetDefuseStartTimeGetDefuseStartTime(): number | undefined
GetDefuseFinishTimeGetDefuseFinishTime(): number | undefined

CSPlayerController

Functions

NameSignatureDescription
GetPlayerSlotGetPlayerSlot(): number
GetPlayerNameGetPlayerName(): string
GetPlayerPawnGetPlayerPawn(): CSPlayerPawn | undefined
GetObserverPawnGetObserverPawn(): CSObserverPawn | undefined
GetScoreGetScore(): number
AddScoreAddScore(points: number): voidAdd to the player's score. Negative values are allowed but the score will not go below zero.
GetWeaponDataForLoadoutSlotGetWeaponDataForLoadoutSlot(slot: CSLoadoutSlot, team?: number): CSWeaponData | undefinedLeave team as the default to use the player's current team.
IsObservingIsObserving(): boolean
IsBotIsBot(): boolean
IsConnectedIsConnected(): boolean
JoinTeamJoinTeam(team: number): void
AddMoneySpendableNowAddMoneySpendableNow(amount: number): void
GetMoneySpendableNowGetMoneySpendableNow(): number
AddMoneyEarnedForNextRoundAddMoneyEarnedForNextRound(amount: number): void
GetMoneyEarnedForNextRoundGetMoneyEarnedForNextRound(): number

CSObserverPawn

Functions

NameSignatureDescription
GetPlayerControllerGetPlayerController(): CSPlayerController | undefinedGets the controller currently controlling this player pawn.
GetOriginalPlayerControllerGetOriginalPlayerController(): CSPlayerControllerGets the controller that this player pawn was originally spawned for.
GetObserverModeGetObserverMode(): number
SetObserverModeSetObserverMode(nMode: number): void

CSPlayerPawn

Functions

NameSignatureDescription
GetPlayerControllerGetPlayerController(): CSPlayerController | undefinedGets the controller currently controlling this player pawn.
GetOriginalPlayerControllerGetOriginalPlayerController(): CSPlayerControllerGets the controller that this player pawn was originally spawned for.
IsInputPressedIsInputPressed(inputs: CSInputs): boolean@returns true if specified inputs are pressed at the end of the current tick.
WasInputJustPressedWasInputJustPressed(inputs: CSInputs): boolean@returns true if specified inputs went from released to pressed at some point during the current tick.
WasInputJustReleasedWasInputJustReleased(inputs: CSInputs): boolean@returns true if specified inputs went from pressed to released at some point during the current tick.
FindWeaponFindWeapon(name: string): CSWeaponBase | undefined
FindWeaponBySlotFindWeaponBySlot(slot: CSGearSlot): CSWeaponBase | undefined
GetActiveWeaponGetActiveWeapon(): CSWeaponBase | undefined
GetC4GetC4(): C4 | undefined
DestroyWeaponDestroyWeapon(target: CSWeaponBase): void
DestroyWeaponsDestroyWeapons(): void
DropWeaponDropWeapon(target: CSWeaponBase): void
SwitchToWeaponSwitchToWeapon(target: CSWeaponBase): void
GiveNamedItemGiveNamedItem(name: string, autoDeploy?: boolean): void
GetArmorGetArmor(): number
SetArmorSetArmor(value: number): void
HasHelmetHasHelmet(): boolean
SetHasHelmetSetHasHelmet(hasHelmet: boolean): void
HasDefuserHasDefuser(): boolean
SetHasDefuserSetHasDefuser(hasDefuser: boolean): void
GetDefuseTargetGetDefuseTarget(): CSPlantedC4 | undefined
IsDuckingIsDucking(): boolean
IsDuckedIsDucked(): boolean
IsScopedIsScoped(): boolean
IsNoclippingIsNoclipping(): boolean
IsBuyMenuOpenIsBuyMenuOpen(): boolean
GetCustomCameraGetCustomCamera(): CustomPlayerCamera
GetCameraGetCamera(): CSPlayerCamera@deprecated This method will be removed in a future update
IsCrouchingIsCrouching(): boolean@deprecated This method will be removed in a future update
IsCrouchedIsCrouched(): boolean@deprecated This method will be removed in a future update

CustomHudLayout

CustomHudLayouts (custom_hud_layout) are the entry point for scripted maps to provide custom UI.

  • Supported panel types and attributes are:

  • <Panel> with attributes id, class and hittest

  • <Label> with attributes id, class, hittest, and text

  • <Image> with attributes id, class, hittest, and src

  • <Button> with attributes id and class

  • Styling with css is supported.

  • The following css classes will be set on an ancestor panel when appropriate:

  • HUD_BUYMENU_VISIBLE

  • HUD_SCOREBOARD_VISIBLE

  • Events and client side scripting are not supported.

To use

  • Add a panorama layout .xml file under "panorama/layout/custom_game" in your addon

  • Add a custom_hud_layout point entity to your map and point its layout property at your .vxml asset.

  • See example addon cs_script_demo

  • There is a custom_hud_layout entity in the cs_script_demo.vmap named "welcome_layout" that displays "panorama/layouts/custom_game/welcome.vxml".

  • It also references css file panorama/styles/custom_game/welcome.css. (vcss is the asset extension)

  • The layout begins with a "Dismissed" class on the Panel with id "dialog" which is then removed in cs_script file "maps/scripts/setup.js".

@experimental This feature is experimental and may experience breaking changes.

Please send feedback to CSGOTeamFeedback@valvesoftware.com with "cs_script Feedback" in the subject line.

Functions

NameSignatureDescription
SetHasClassSetHasClass(panelId: string, className: string, hasClass?: boolean): voidSet if a panel has a class. Applies to all players.

Omit hasClass to revert to the original value.
SetHasClassForPlayerSetHasClassForPlayer(playerSlot: number, panelId: string, className: string, hasClass?: boolean): voidSet if a panel has a class for a single player. Will override the all player value.

Omit hasClass to defer to the all player value.
SetDialogVariableStringSetDialogVariableString(panelId: string, variableName: string, value: string): voidSet the value of a dialog variable. Applies to all players.
SetDialogVariableStringForPlayerSetDialogVariableStringForPlayer(playerSlot: number, panelId: string, variableName: string, value?: string): voidSet the value of a dialog variable for a single player. Will override the all player value.

Omit value to defer to the all player value. If no all player value has been set, the value will be an empty string.
SetInputCaptureEnabledSetInputCaptureEnabled(playerSlot: number, enabled: boolean): voidSet to true to force a player into cursor mode and enable click detection on the panels of this layout.

Set a callback with Instance.OnCustomHudClicked to listen for clicks.

Multiple CustomHudLayouts can have input captured at a time.

Players will get movement control back once all CustomHudLayouts have disabled input capture.
IsInputCaptureEnabledIsInputCaptureEnabled(playerSlot: number): booleanGet if this CustomHudLayout is capturing input for a player

PointTemplate

Functions

NameSignatureDescription
ForceSpawnForceSpawn(origin?: Vector, angle?: QAngle): Entity[] | undefined

CustomPlayerCamera

Configuration of a player's view position and angles.

There is at most one of these per CSPlayerPawn, created on demand when CSPlayerPawn.GetCustomCamera is called.

@experimental This feature is experimental and may experience breaking changes.

Please send feedback to CSGOTeamFeedback@valvesoftware.com with "cs_script Feedback" in the subject line.

Functions

NameSignatureDescription
GetPlayerGetPlayer(): CSPlayerPawn
GetModeGetMode(): CustomCameraMode
SetModeSetMode(mode: CustomCameraMode): void
SetFollowConfigSetFollowConfig(followConfig: CameraFollowConfig): void

CSPlayerCamera

@deprecated This class will be removed soon

Functions

NameSignatureDescription
IsEnabledIsEnabled(): boolean@deprecated This method will be removed soon
SetEnabledSetEnabled(enabled: boolean): void@deprecated This method will be removed soon
SetIsControllingAnglesSetIsControllingAngles(controlling: boolean): void@deprecated This method will be removed soon

Types

Vector

type Vector = { x: number, y: number, z: number };

RotationVector

type RotationVector = { x: number, y: number, z: number };

QAngle

type QAngle = { pitch: number, yaw: number, roll: number };

ColorArg

type ColorArg = { r: number, g: number, b: number, a?: number };

Color

type Color = { r: number, g: number, b: number, a: number };

InputValue

type InputValue = boolean | number | string | Vector | Color | undefined;

SpawnGrenadeProjectileConfig

type SpawnGrenadeProjectileConfig = SpawnGrenadeProjectileConfigWithOwner | SpawnGrenadeProjectileConfigWithoutOwner;

Interfaces

BaseTraceConfig

interface BaseTraceConfig {
start: Vector;
end: Vector;
/** Specify entities to not trace against. 0, 1 or 2 entities is equally fast. 3 or more is equally slower */
ignoreEntity?: Entity | Entity[];
ignorePlayers?: boolean;
/** Trace against hitboxes instead of the larger collision shape for entities with hitboxes (eg. players) */
traceHitboxes?: boolean;
}

TraceResult

interface TraceResult {
fraction: number;
end: Vector;
didHit: boolean;
startedInSolid: boolean;
normal: Vector;
hitEntity?: Entity;
hitGroup?: CSHitGroup;
}

BulletTrace

Configuration object for Instance.TraceBullet

interface BulletTrace {
start: Vector,
end: Vector,
/** The player shooting the bullet. Acts as `ignoreEnt` for traces. */
shooter: CSPlayerPawn,
/** The starting damage value of the bullet. This will reduce as it travels through the air and penetrates solids. @default 100 */
damage?: number,
/** The exponential damage drop off constant from traveling through air. @default .85 */
rangeModifier?: number,
/** The power to maintain damage during penetration. Will default to 1 if left unspecified. @default 1 */
penetration?: number,
}

BulletTraceResult

Result entry for Instance.TraceBullet

interface BulletTraceResult {
/** The entity hit by the bullet. This is not limited to players. */
hitEntity: Entity;
/** Damage value reduced by travel, before damage modification (body armor, headhshots, etc) */
damage: number;
position: Vector;
hitGroup: CSHitGroup;
}

PlayerTrace

Configuration object for Instance.TracePlayer

interface PlayerTrace {
start: Vector;
/** Leave undefined to just test if `start` is a valid position for the player. */
end?: Vector;
/** The player moving. Effects hull size and player collision. */
player: CSPlayerPawn;
/** Configure tracing as a ducked player, effecting the size of the traced Box. Defaults to the player's IsDucked() value. */
isDucked?: boolean;
}

PlayerTraceResult

Result entry for Instance.TracePlayer

interface PlayerTraceResult {
fraction: number;
end: Vector;
didHit: boolean;
startedInSolid: boolean;
normal: Vector;
hitEntity?: Entity;
}

BombPlantEvent

interface BombPlantEvent {
plantedC4: CSPlantedC4;
/** @deprecated this field will be removed in a future update */
planter?: CSPlayerPawn
}

BombDefuseEvent

interface BombDefuseEvent {
plantedC4: CSPlantedC4;
/** @deprecated this field will be removed in a future update */
defuser: CSPlayerPawn
}

ModifyPlayerDamageEvent

interface ModifyPlayerDamageEvent {
/** The victim that is taking damage */
player: CSPlayerPawn;
/** The amount of damage being applied, after hitgroup modifications and before armor modifications */
damage: number;
/** The types of damage. */
damageTypes: CSDamageTypes;
/** The flags configuring how to interpret the damage. */
damageFlags: CSDamageFlags;
/** The hit group where the damage occured. */
hitGroup: CSHitGroup;
/** The entity applying the damage. For bullets this is the owner of the gun. For grenades this is the exploding projectile. */
inflictor?: Entity;
/** The entity credited with causing the damage. For bullets this is the shooter. For grenades this is the thrower. */
attacker?: Entity;
/** The weapon used. For grenades this will not be present because the weapon is often removed before the projectile explodes. */
weapon?: CSWeaponBase;
}

ModfiyPlayerDamageResult

interface ModfiyPlayerDamageResult {
/** If true, stop processing this damage */
abort?: boolean;
/** The amount of damage being applied, before armor and hitgroup modifications */
damage?: number;
/** The type or types of damage. */
damageTypes?: CSDamageTypes;
/** The flags configuring how to interpret the damage. */
damageFlags?: CSDamageFlags;
}

PlayerDamageEvent

interface PlayerDamageEvent {
/** The victim that has taken damage */
player: CSPlayerPawn;
/** The actual health lost after hitgroup and armor modifications */
damage: number;
/** The type or types of damage. */
damageTypes: CSDamageTypes;
/** The flags configuring how to interpret the damage. */
damageFlags: CSDamageFlags;
/** The hit group where the damage occured. */
hitGroup: CSHitGroup;
/** The entity applying the damage. For bullets this is the owner of the gun. For grenades this is the exploding projectile. */
inflictor?: Entity;
/** The entity credited with causing the damage. For bullets this is the shooter. For grenades this is the thrower. */
attacker?: Entity;
/** The weapon used. For grenades this will not be present because the weapon is often removed before the projectile explodes. */
weapon?: CSWeaponBase;
}

GrenadeBounceEvent

interface GrenadeBounceEvent {
projectile: CSGrenadeProjectileBase;
hitEntity: Entity;
normal: Vector;
/** @deprecated this field will be removed in a future update */
bounces: number
}

SpawnGrenadeProjectileConfigWithOwner

interface SpawnGrenadeProjectileConfigWithOwner {
type: CSGrenadeType;
thrower: CSPlayerPawn;
/* defaults to 1, full strength. */
throwStrength?: number;
/* defaults to thrower's throw position */
position?: Vector;
/* defaults to {0,0,0} */
angles?: QAngle;
/* defaults to thrower's throw velocity */
velocity?: Vector;
/* defaults to a {600,rand(-1200,1200),0} */
angularVelocity?: RotationVector;
}

SpawnGrenadeProjectileConfigWithoutOwner

interface SpawnGrenadeProjectileConfigWithoutOwner {
type: CSGrenadeType;
/* position is required if no thrower is specified */
position: Vector;
/* defaults to {0,0,0} */
angles?: QAngle;
/* defaults to {0,0,0} */
velocity?: Vector;
/* defaults to {0,0,0} */
angularVelocity?: RotationVector;
}

EntityDamage

interface EntityDamage {
/** The amount of damage being applied, before armor and hitgroup modifications */
damage: number;
/** The type or types of damage. */
damageTypes?: CSDamageTypes;
/** The flags configuring how to interpret the damage. */
damageFlags?: CSDamageFlags;
/** The entity applying the damage. For bullets this is the owner of the gun. For grenades this is the exploding projectile. */
inflictor?: Entity;
/** The entity credited with causing the damage. For bullets this is the shooter. For grenades this is the thrower. */
attacker?: Entity;
/** The weapon used. For grenades this will not be present because the weapon is often removed before the projectile explodes. */
weapon?: CSWeaponBase;
}

CameraFollowConfig

interface CameraFollowConfig {
/** The entity to follow */
followEntity: Entity;
/** Should followOffset be an offset from the eyes instead of the origin */
followEyes?: boolean;
/** An offset from the origin (or eyes) of followEntity to follow */
followOffset?: Vector;
/** An offset from the followed position rotated by player's eye angles. x is forward, y is left, z is up. */
cameraOffset?: Vector;
/** Should cameraOffset be pulled in to not clip into solids. */
clipCameraOffset?: boolean;
/** Strength of returning the camera to cameraOffset after being pushed in by clipping. Defaults to 1; instant. */
cameraOffsetReturnStrength?: number;
}

Enums

CSMoveType

  • INVALID = -1
  • NONE
  • WALK
  • FLYGRAVITY
  • VPHYSICS
  • NOCLIP
  • OBSERVER
  • LADDER
  • CUSTOM

CSRoundEndReason

  • UNKNOWN = -1
  • IN_PROGRESS
  • GAME_COMMENCING
  • DRAW
  • TARGET_BOMBED
  • TARGET_SAVED
  • BOMB_DEFUSED
  • HOSTAGES_RESCUED
  • HOSTAGES_NOT_RESCUED
  • CTS_WIN
  • TERRORISTS_WIN
  • CTS_SURRENDER
  • TERRORISTS_SURRENDER

CSWeaponType

  • KNIFE
  • PISTOL
  • SUBMACHINEGUN
  • RIFLE
  • SHOTGUN
  • SNIPER_RIFLE
  • MACHINEGUN
  • C4
  • TASER
  • GRENADE
  • EQUIPMENT
  • STACKABLEITEM — Healthshot
  • UNKNOWN

CSGrenadeType

  • HE
  • FLASHBANG
  • MOLOTOV
  • INCENDIARY
  • DECOY
  • SMOKE

CSWeaponAttackType

  • INVALID = -1
  • PRIMARY
  • SECONDARY

CSGearSlot

  • INVALID = -1
  • RIFLE
  • PISTOL
  • KNIFE
  • GRENADES
  • C4
  • BOOSTS

CSLoadoutSlot

  • INVALID
  • MELEE
  • SECONDARY0
  • SECONDARY1
  • SECONDARY2
  • SECONDARY3
  • SECONDARY4
  • SMG0
  • SMG1
  • SMG2
  • SMG3
  • SMG4
  • RIFLE0
  • RIFLE1
  • RIFLE2
  • RIFLE3
  • RIFLE4
  • EQUIPMENT2

CSDamageTypes

  • GENERIC = 0
  • CRUSH = 1 << 0
  • BULLET = 1 << 1
  • SLASH = 1 << 2
  • BURN = 1 << 3
  • VEHICLE = 1 << 4
  • FALL = 1 << 5
  • BLAST = 1 << 6
  • CLUB = 1 << 7
  • SHOCK = 1 << 8
  • SONIC = 1 << 9
  • BUCKSHOT = 1 << 10
  • DROWN = 1 << 11
  • POISON = 1 << 12
  • HEADSHOT = 1 << 13

CSDamageFlags

  • NONE = 0
  • SUPPRESS_HEALTH_CHANGES = 1 << 0
  • SUPPRESS_PHYSICS_FORCE = 1 << 1
  • SUPPRESS_EFFECTS = 1 << 2
  • PREVENT_DEATH = 1 << 3
  • FORCE_DEATH = 1 << 4
  • SUPPRESS_DAMAGE_MODIFICATION = 1 << 5
  • IGNORE_ARMOR = 1 << 6

CSHitGroup

  • INVALID = -1
  • GENERIC
  • HEAD
  • CHEST
  • STOMACH
  • LEFTARM
  • RIGHTARM
  • LEFTLEG
  • RIGHTLEG
  • NECK

CSInputs

  • NONE = 0
  • FORWARD = 1 << 0
  • BACK = 1 << 1
  • LEFT = 1 << 2
  • RIGHT = 1 << 3
  • WALK = 1 << 4
  • DUCK = 1 << 5
  • JUMP = 1 << 6
  • USE = 1 << 7
  • ATTACK = 1 << 8
  • ATTACK2 = 1 << 9
  • RELOAD = 1 << 10
  • SHOW_SCORES = 1 << 11
  • LOOK_AT_WEAPON = 1 << 12

CustomCameraMode

  • DISABLED = 0 — Position and angles come from the eye position and angles of the player.
  • CONTROLLED = 1 — Position and angles come from the origin and angles of the camera entity.
  • CONTROLLED_POSITION = 2 — Position comes from the origin of camera entity. Angles are player controlled.
  • FOLLOW_POSITION = 3 — Position comes from an offset around a followed position. Angles are player controlled.

CSDamageType

@deprecated This enum will be removed in a future update