Zh/Left 4 Dead 2/Scripting/Script Functions
这份清单包含了<Left 4 Dead 2> Left 4 Dead 2 中的与引擎相关的可用于VScript的Squirrel类、函数以及可用的变量。 Some can be printed in-game with the
scipt_help
command when the game is run in developer mode with the -dev
or -allowdebug
parameters. Others have been found from data mining, for example with script g_ModeScript.DeepPrintTable(getroottable())
, and from the Expanded Mutation System documentation.
变量
实例 | 类型 | 描述 |
---|---|---|
Convars
|
Convars
|
提供用于读取和更改控制台变量的接口,一般地,Convars(控制台变量)都被隐藏,控制台输入相关指令无法使用,属于隐藏指令。 |
Director
|
CDirector
|
给导演系统提供一个有限的接口。 |
DirectorScript
|
table | 导演脚本的脚本域, 包括了 DirectorOptions表。 |
Documentation
|
table | 包含script_help 指令打印的字符串。
|
Entities
|
CEntities
|
提供对目前已生成实体的接口。 |
g_ClearoutTable
|
table (null )
|
|
g_MapScript
|
table | 地图脚本的脚本域,它还包含了许多有用的函数。 |
g_ModeScript
|
table | 模式脚本的脚本域。只有在脚本模式下才可完全使用。 |
g_RoundState
|
table | |
g_rr
|
table | |
NavMesh
|
CNavMesh
|
提供一个方法来解锁救援载具。 |
NetProps
|
CNetPropManager
|
允许读取和更新实体的网络属性。 |
print_indent
|
||
_PublishedHelp
|
table | |
ScriptDebugTraceAllOn
|
bool | |
ScriptDebugTraces
|
table | |
ScriptDebugText
|
array | |
ScriptDebugTextFilters
|
table | |
ScriptDebugTextIndent
|
bool | |
ScriptDebugWatches
|
array | |
ScriptEventCallbacks
|
table |
常量
实例 | 类型 | 描述 |
---|---|---|
_charsize_
|
integer | |
_floatsize_
|
integer | |
_intsize_
|
integer | |
_version_
|
string | Squirrel的版本号。 |
_versionnumber_
|
integer | Squirrel的版本号的整数形式。 |
RAND_MAX
|
integer | |
SPAWN_FLAGS
|
table |
类
AI_Response
来自旧相应系统的不透明类的表示返回值。
Methods
函数 | 用法 | 描述 |
---|---|---|
GetMatchScore
|
这场比赛质量的分数之相关性。 (基于标准比赛的数字) |
CBaseAnimating
Extends CBaseEntity
动画实体(如props)的脚本句柄类。
CBaseEntity
这是实体的脚本句柄类。所有已生成实体都有一个使用CBaseEntity或者它的子类的脚本句柄。
所有游戏中的脚本句柄都有通过Entities来访问,实体脚本可以通过self
来访问它本身的脚本句柄。
Methods
函数 | 用法 | 描述 |
---|---|---|
__KeyValueFromInt
|
void __KeyValueFromInt(string key, int value)
|
以整数设置实体的键值(KeyValue). 这个函数只修改数值而不执行实体处理KeyValue所需要的任何代码, 所以可能会有令人意想不到的副作用。 |
__KeyValueFromFloat
|
void __KeyValueFromFloat(string key, float value)
|
以浮点数设置实体的KeyValue. 这个函数只修改数值而不执行实体处理KeyValue所需要的任何代码, 所以可能会有令人意想不到的副作用。 |
__KeyValueFromString
|
void __KeyValueFromString(string key, string value)
|
以字符串设置实体的KeyValue. 这个函数只修改数值而不执行实体处理KeyValue所需要的任何代码, 所以可能会有令人意想不到的副作用。 |
__KeyValueFromVector
|
void __KeyValueFromVector(string key, Vector value)
|
以向量(Vector)设置实体的KeyValue. 这个函数只修改数值而不执行实体处理KeyValue所需要的任何代码, 所以可能会有令人意想不到的副作用。 |
ApplyAbsVelocityImpulse
|
void ApplyAbsVelocityImpulse(Vector impulse)
|
添加一个速度冲击。 |
ApplyLocalAngularVelocityImpulse
|
void ApplyLocalAngularVelocityImpulse(Vector impulse)
|
添加一个角速度冲击。 |
ConnectOutput
|
void ConnectOutput(string output, string function)
|
添加一个I/O关联, 当指定的输出触发时将调用指定的函数。 |
DisconnectOutput
|
void DisconnectOutput(string output, string function)
|
从I/O事件中删除一个已关联的脚本函数。 |
FirstMoveChild
|
handle FirstMoveChild()
|
|
GetAngles
|
handle QAngle GetAngles()
|
以向量形式获取实体的欧拉角(pitch, yaw, roll)。 |
GetBaseVelocity
|
Vector GetBaseVelocity()
|
获取基础速度 [待完善] |
GetClassname
|
string GetClassname()
|
返回实体的种类名,包含player 和infected 。
|
GetContext
|
variable GetContext(string name)
|
GetContext( name ):检查一个对象的状态然后返回对象是否可用.可能返回string,float,或nil(如果对象没有找到)。 |
GetEntityHandle
|
unknown GetEntityHandle()
|
获取一个实体的 C++ EHANDLE参照。这是一个无法被Squirrel直接使用的不透明数据类型,不是一个普通的脚本句柄。 |
GetEntityIndex
|
int GetEntityIndex()
|
返回实体的索引,这是和用于游戏尸潮时间的索引类型相同。 |
GetForwardVector
|
Vector GetForwardVector()
|
返回实体的前向量。 |
GetHealth
|
int GetHealth()
|
返回实体当前的生命值(并不包括生还者临时血量/虚血)。 |
GetLocalAngularVelocity
|
QAngle GetLocalAngularVelocity()
|
或许是本地角速度。 |
GetLocalVelocity
|
Vector GetLocalVelocity()
|
获取实体的速度向量。 |
GetMoveParent
|
handle GetMoveParent()
|
如果实体位于层次结构(hierarchy)中, 检索实体的父级(parent)。 |
GetName
|
string GetName()
|
返回实体的targetname。 |
GetOrigin
|
Vector GetOrigin()
|
返回实体在地图内的位置。 |
GetOwnerEntity
|
handle GetOwnerEntity()
|
获取实体的所有者(owner)。(备注:似乎只有当需要在这个实体上使用SetOwner()时这个函数才有用, 可能也不尽然) |
GetPreTemplateName
|
string GetPreTemplateName()
|
Get the entity name stripped of template unique decoration. |
GetRootMoveParent
|
handle GetRootMoveParent()
|
如果实体位于层次结构中,顺着层次结构检索实体的根父级。 |
GetScriptId
|
string GetScriptId()
|
检索用于引用脚本系统中的实体的唯一标识符。 |
GetScriptScope
|
handle GetScriptScope()
|
检索存储与此实体关联的实体脚本数据的表。 |
GetVelocity
|
Vector GetVelocity()
|
返回实体的速度向量。 |
IsPlayer
|
bool IsPlayer()
|
这个实体是否为玩家类。 |
IsValid
|
bool IsValid()
|
返回句柄是否属于有效的实体。 |
Kill
|
void Kill()
|
移除实体。 |
NextMovePeer
|
handle NextMovePeer()
|
|
OverrideFriction
|
void OverrideFriction(float duration, float friction)
|
暂时重设阻力的持续时间。 |
PrecacheModel
|
void PrecacheModel(string filename)
|
|
PrecacheScriptSound
|
void PrecacheScriptSound(string)
|
预载声音文件 待完善: 这个是原文件还是soundscripts?
|
SetAngles
|
void SetAngles(QAngle direction)
|
设置实体的方位。 |
SetContext
|
void SetContext(string name, string value, float duration)
|
SetContext( 名字 , 值, 持续时间 ):存储任何在实体对话内容里的配对值.值是一个字符串.持续一段时间。(0代表永久) |
SetContextNum
|
void SetContextNum(string name, float value, float duration)
|
SetContext( 名字 , 值, 持续时间 ):存储任何在实体对话内容里的配对值.值是一个数字(int或者float).持续一段时间。(0代表永久) |
SetForwardVector
|
void SetForwardVector(Vector direction)
|
设置实体方向具有前进矢量。 |
SetFriction
|
void SetFriction(float friction)
|
Set PLAYER friction, ignored for objects. |
SetGravity
|
void SetGravity(float gravity)
|
设置玩家阻力,无视物体。 |
SetHealth
|
void SetHealth(int health)
|
改变实体的生命值。不会检查是否会杀死玩家。 |
SetOrigin
|
void SetOrigin(Vector position)
|
设置世界模型的指定方位。 |
SetVelocity
|
void SetVelocity(Vector velocity)
|
设置实体向量速度。 |
TakeDamage
|
void TakeDamage(float damage, int damageType, CBaseEntity attacker)
|
对实体造成伤害。 |
ValidateScriptScope
|
bool ValidateScriptScope()
|
返回实体的脚本域是否已被创建。 |
钩子/Hooks
如果其中一个函数在实体脚本中被声明, 实体将在适当的情况下自动运行此函数。
函数 | 签名 | 描述 |
---|---|---|
InputInputName
|
bool InputInputName()
|
当实体从I/O系统中接收到输入时调用. 此函数的名称必须是实体input列表中的Input, 例如表示FireUser1的InputFireUser1. 当这个函数被调用时, 激活和调用的实体的脚本句柄会被写入接收输入的实体的脚本数据的activator和caller变量中. 这个函数必须返回一个布尔值. 将布尔值设定为true允许实体来处理输入, 否则用false阻止之。 |
OnEntText
|
string OnEntText()
|
如果ent_text用于一个实体并且这个函数存在的话,每tick它都将被激活。返回一个会显示在ent_text叠加层的字符串。对你用ent_text使用的对象来说,这是一个非常方便的功能来获取显示对象的脚本数据,或者在使用ent_text中随意运行一些代码(例如打开其他调试可视化)。提示:必须设置ent_text_allow_script 1 才能使这个功能激活。
![]() |
OnPostSpawn
|
void OnPostSpawn()
|
在实体生成时立即被调用. 这个函数可以用于让实体向主脚本注册自身,或以编程方式调整实体参数。 |
Precache
|
void Precache()
|
在脚本执行后调用. 可用于在地图加载时调用模型和声音的预缓存函数。 |
CTerrorPlayer
CBaseEntity的延生扩展。
玩家实体的脚本句柄类。所有生还者和特殊感染者都属于这里。
Methods
函数 | 用法 | 描述 |
---|---|---|
Extinguish
|
void Extinguish()
|
熄灭一个正在燃烧的玩家。 |
EyeAngles
|
QAngle EyeAngles()
|
返回玩家视角的角度。 |
EyePosition
|
Vector EyePosition()
|
返回玩家视角的位置。 |
GetActiveWeapon
|
handle GetActiveWeapon()
|
获取玩家当前武器的实体。 |
GetButtonMask
|
int GetButtonMask()
|
Returns a bitfield of currently pressed buttons. Recognized buttons are: IN_ATTACK, IN_ATTACK2, IN_JUMP, IN_DUCK, IN_FORWARD, IN_BACK, IN_USE, IN_MOVELEFT, IN_MOVERIGHT, IN_RELOAD
返回当前按下按钮的位域。识别按钮是
|
GetHealthBuffer
|
int GetHealthBuffer()
|
返回当前生还者的临时血量(虚血)。 待完善: 特感的临时血量(Temp Health)是否有效?
|
GetNetworkIDString
|
string GetNetworkIDString()
|
获取玩家的网络ID(即SteamID)。 |
GetPlayerName
|
string GetPlayerName()
|
获取玩家昵称。 |
GetPlayerUserId
|
int GetPlayerUserId()
|
获取玩家userID。 |
GetSenseFlags
|
int GetSenseFlags()
|
获取当前BOT(电脑玩家)的感知标志:BOT_CANT_SEE, BOT_CANT_HEAR, BOT_CANT_FEEL ,中文应该是BOT不能看见,BOT不能听到,BOT不能感受到。嗯?不明所以?请实测,估计有一些变化。
|
GetSurvivorSlot
|
int GetSurvivorSlot()
|
获取玩家的槽编号(也许就是血量显示的编号顺序)。 |
GetZombieType
|
int GetZombieType()
|
如果是感染者,找出其类型。可知的僵尸类型(ZombieType)分别是:Smoker = 1,Boomer = 2,Hunter = 3,Spitter = 4,Jockey = 5,Charger = 6,Witch = 7,Tank = 8,Survivor (生还者) = 9。 |
GiveAmmo
|
void GiveAmmo(int amount)
|
为玩家主要武器弹药池添加弹药。 |
GiveItem
|
void GiveItem(string itemname)
|
以物品/武器的名城给予玩家这件物品/武器。效果等同于控制台输入give health(生命值),katana(武士刀),rifle_ak47(AK47突击步枪) 等。
|
GiveUpgrade
|
void GiveUpgrade(string upgrade)
|
给予主武器一种升级:UPGRADE_INCENDIARY_AMMO, UPGRADE_EXPLOSIVE_AMMO, UPGRADE_LASER_SIGHT ,中文对应的升级分别是燃烧弹,高爆弹,激光瞄准器。
|
HitWithVomit
|
void HitWithVomit()
|
一名目标玩家将会被Boomer的胆汁喷吐。 |
IsDead
|
bool IsDead()
|
返回一个表示是否处于死亡状态的布尔值。 |
IsDying
|
bool IsDying()
|
返回一个表示是否处于濒死状态(应该是黑白状态)的布尔值。 |
IsIncapacitated
|
bool IsIncapacitated()
|
返回一个表示是否处于无能为力状态(应该是处于被控或者倒地,我没去研究,目前仅翻译)的布尔值。 |
IsHangingFromLedge
|
bool IsHangingFromLedge()
|
返回一个表示是否处于挂边状态的布尔值。 |
IsGhost
|
bool IsGhost()
|
返回一个表示感染者是否处于幽灵状态的布尔值。 |
IsOnFire
|
bool IsOnFire()
|
返回一个表示某位玩家是否处于燃烧状态的布尔值。 |
IsSurvivor
|
bool IsSurvivor()
|
是否是生还者团队(否则即感染者团队)。 |
RemoveUpgrade
|
void RemoveUpgrade(string upgrade)
|
移除一种主武器的升级:UPGRADE_INCENDIARY_AMMO, UPGRADE_EXPLOSIVE_AMMO, UPGRADE_LASER_SIGHT ,中文对应的升级分别是燃烧弹,高爆弹,激光瞄准器。
|
ReviveByDefib
|
void ReviveByDefib()
|
通过电击器来复活死去的玩家。 |
ReviveFromIncap
|
void ReviveFromIncap()
|
救起一个被控/倒地的玩家。 |
SetFriction
|
void SetFriction(int friction)
|
设置玩家的阻力。 |
SetGravity
|
void SetGravity(int gravity)
|
设置玩家的重力。 |
SetHealthBuffer
|
void SetHealthBuffer(float health)
|
给生还者设置临时血量(虚血),当设置为0的时候并不会使玩家倒地/被控或者杀死。 |
SetReviveCount
|
void SetReviveCount(int count)
|
设置生还者的复活次数,并且更新第三打击(?)状态和效果。 |
SetSenseFlags
|
void SetSenseFlags(int flags)
|
设置当前Bot(电脑玩家)的感知标志:BOT_CANT_SEE, BOT_CANT_HEAR, BOT_CANT_FEEL ,中文应该是BOT不能看见,BOT不能听到,BOT不能感受到。嗯?不明所以?请实测,估计有一些变化。
|
Stagger
|
void Stagger(Vector position)
|
Stagger a player away from a position. Use Vector(0,0,0) to just stagger forward. |
TryGetPathableLocationWithin
|
Vector TryGetPathableLocationWithin(int radius)
|
Get a location on the nav the player can path to within the desired radius. |
UseAdrenaline
|
void UseAdrenaline(int duration)
|
Causes Adrenaline's speed and visual effect, no change to health. |
CCallChainer
[待完善]
Methods
Function | Signature | Description |
---|---|---|
constructor
|
[待完善] constructor()
|
|
PostScriptExecute
|
[待完善] PostScriptExecute()
|
|
Call
|
[待完善] Call()
|
Members
Instance | Type | Description |
---|---|---|
chains
|
null
|
|
prefix
|
null
|
|
scope
|
null
|
CDirector
Game Instance: Director
Provides methods for reading information and forcing events in the AI Director. To influence the Director behavior, the DirectorOptions
table is used instead.
Methods
Function | Signature | Description |
---|---|---|
ClearCachedBotQueries
|
void ClearCachedBotQueries()
|
Mark all cached bot query results as invalid. |
ForceNextStage
|
void ForceNextStage()
|
Push the ScriptedMode to next stage - i.e. request GNSS be called. |
GetAveragedSurvivorSpan
|
float GetAveragedSurvivorSpan()
|
Get the distance between the lead and trailing survivors, smoothed over time. |
GetAveragedSurvivorSpeed
|
float GetAveragedSurvivorSpeed()
|
Get the rate at which the lead survivor is moving along the flow, smoothed over time. |
GetCommonInfectedCount
|
int GetCommonInfectedCount()
|
Returns number for infected currently spawned. |
GetFurthestSurvivorFlow
|
float GetFurthestSurvivorFlow()
|
Get the maximum distance along the flow that the survivors have reached. |
GetGameMode
|
string GetGameMode()
|
Get the current game mode. If called in a mutation, it returns the current mutation, not the base mode. |
GetHoldoutCooldownEndTime
|
[待完善] float? GetHoldoutCooldownEndTime()
|
Get the end time of the cooldown timer. |
GetPendingMobCount
|
int GetPendingMobCount()
|
Returns the number of infected waiting to spawn. |
HasAnySurvivorLeftSafeArea
|
bool HasAnySurvivorLeftSafeArea()
|
True when one or more survivors have left the starting safe area. |
IsAnySurvivorInCombat
|
bool IsAnySurvivorInCombat()
|
Returns true if any survivor recently dealt or took damage. |
IsPlayingOnConsole
|
bool IsPlayingOnConsole()
|
Return true if game is running on a console (such as Xbox 360). |
IsSinglePlayerGame
|
bool IsSinglePlayerGame()
|
Return true if game is in single player. |
IsValid
|
bool IsValid()
|
Whether the handle belongs to a valid entity. |
IsTankInPlay
|
bool IsTankInPlay()
|
Returns true if any tanks are aggro on survivors. |
L4D1SurvivorGiveItem
|
void L4D1SurvivorGiveItem()
|
Let the L4D1 survivors know that now is a good time to give the players an item. |
PlayMegaMobWarningSounds
|
void PlayMegaMobWarningSounds()
|
Plays a horde scream sound and asks survivors to speak incoming horde lines. |
ResetMobTimer
|
void ResetMobTimer()
|
Trigger a mob as soon as possible when in BUILD_UP .
|
ResetSpecialTimers
|
void ResetSpecialTimers()
|
Reset all special timers (by type and by slot) so that hopefully mobs will spawn asap. |
SetHoldoutCooldownEndTime
|
void SetHoldoutCooldownEndTime(float time? [待完善])
|
|
UserDefinedEvent1
|
void UserDefinedEvent1()
|
These trigger the appropriate output from the info_director entity when called. |
UserDefinedEvent2
|
void UserDefinedEvent2()
|
|
UserDefinedEvent3
|
void UserDefinedEvent3()
|
|
UserDefinedEvent4
|
void UserDefinedEvent4()
|
CEntities
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 argument in the appropriate method to start an iteration, or reference to a previously found entity to continue a search.
Methods
Function | Signature | Description |
---|---|---|
FindByClassname
|
handle FindByClassname(handle previous, string class)
|
Find entities by class name. |
FindByClassnameNearest
|
handle FindByClassnameNearest(string class, Vector origin, float radius)
|
Find the entity with the given class name nearest to the specified point. |
FindByClassnameWithin
|
handle FindByClassnameWithin(handle previous, string class, Vector origin, float radius)
|
Find entities by class name within a radius. |
FindByModel
|
handle FindByModel(handle previous, string filename)
|
Find entities by model name. |
FindByName
|
handle FindByName(handle previous, string name)
|
Find entities by name. |
FindByNameNearest
|
handle FindByNameNearest(string name, Vector origin, float radius)
|
Find entities by name nearest to a point. |
FindByNameWithin
|
handle FindByNameWithin(handle previous, string name, Vector origin, float radius)
|
Find entities by name within a radius. |
FindByTarget
|
handle FindByTarget(handle previous, string targetname)
|
Find entities by its target. |
FindInSphere
|
handle FindInSphere(handle previous, Vector origin, float radius)
|
Find entities within a radius. |
First
|
handle First()
|
Begin an iteration over the list of entities. |
Next
|
handle Next(handle previous)
|
Continue an iteration over the list of entities, providing reference to a previously found entity. |
IsValid
|
bool IsValid()
|
Whether the handle belongs to a valid entity. |
CEnvEntityMaker
Extends CBaseEntity
Script handle class for env_entity_maker.
Methods
Function | Signature | Description |
---|---|---|
SpawnEntity
|
void SpawnEntity()
|
Create an entity at the location of the maker. |
SpawnEntityAtEntityOrigin
|
void SpawnEntityAtEntityOrigin(CBaseEntity entity)
|
Create an entity at the location of a specified entity instance. |
SpawnEntityAtLocation
|
void SpawnEntityAtLocation(Vector origin, QAngle orientation)
|
Create an entity at a specified location and orientation. |
SpawnEntityAtNamedEntityOrigin
|
void SpawnEntityAtNamedEntityOrigin(string name)
|
Create an entity at the location of a named entity. |
CInfoItemPosition
Extends CBaseEntity
Script handle class for info_item_position.
Methods
Function | Signature | Description |
---|---|---|
GetGroup
|
Get the group number for this item position | |
GetRarity
|
Get the rarity for this item position. | |
GetReplaceParm
|
Get a replacement parameter by index. | |
SetGroup
|
Set the group number for this item position. | |
SetRarity
|
Set the rarity for this item position. |
Game Instance: NavMesh
Methods
Function | Signature | Description |
---|---|---|
IsValid
|
bool IsValid()
|
Whether the handle belongs to a valid entity. 待完善: Does the nav mesh have an entity?
|
UnblockRescueVehicleNav
|
void UnblockRescueVehicleNav()
|
Unblock the rescue vehicle nav areas so bots can path through them. |
CNetPropManager
Game Instance: NetProps
Allows reading and updating the network properties 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").

Methods
Function | Signature | Description |
---|---|---|
GetPropArraySize
|
int GetPropArraySize(CBaseEntity entity, string propertyName)
|
Returns the size of an netprop array, or -1. |
GetPropEntity
|
CBaseEntity GetPropEntity(CBaseEntity entity, string propertyName)
|
Reads an EHANDLE valued netprop (21 bit integer). Returns the script handle of the entity. |
GetPropEntityArray
|
CBaseEntity GetPropEntityArray(CBaseEntity entity, string propertyName, int arrayElement)
|
Reads an EHANDLE valued netprop (21 bit integer) from an array. Returns the script handle of the entity. |
GetPropFloat
|
float GetPropFloat(CBaseEntity entity, string propertyName)
|
Reads a float valued netprop. |
GetPropFloatArray
|
float GetPropFloatArray(CBaseEntity entity, string propertyName, int arrayElement)
|
Reads a float valued netprop from an array. |
GetPropInt
|
int GetPropInt(CBaseEntity entity, string propertyName)
|
Reads an integer valued netprop. |
GetPropIntArray
|
int GetPropIntArray(CBaseEntity entity, string propertyName, int arrayElement)
|
Reads an integer valued netprop from an array. |
GetPropString
|
string GetPropString(CBaseEntity entity, string propertyName)
|
Reads an string valued netprop. |
GetPropStringArray
|
string GetPropStringArray(CBaseEntity entity, string propertyName, int arrayElement)
|
Reads an string valued netprop from an array. |
GetPropType
|
string GetPropType(CBaseEntity entity, string propertyName)
|
Returns the name of the netprop type as a string. |
GetPropVector
|
Vector GetPropVector(CBaseEntity entity, string propertyName)
|
Reads a 3D vector valued netprop. 待完善: Does it work for other dimensions too?
|
GetPropVectorArray
|
Vector GetPropVectorArray(CBaseEntity entity, string propertyName, int arrayElement)
|
Reads a 3D vector valued netprop from an array. |
HasProp
|
bool HasProp(CBaseEntity entity, string propertyName)
|
Checks if a netprop exists. |
SetPropEntity
|
void SetPropEntity(CBaseEntity entity, string propertyName, CBaseEntity value)
|
Sets an EHANDLE valued netprop (21 bit integer) to reference the specified entity. |
SetPropEntityArray
|
void SetPropEntityArray(CBaseEntity entity, string propertyName, CBaseEntity value, int arrayElement)
|
Sets an EHANDLE valued netprop (21 bit integer) from an array to reference the specified entity. |
SetPropFloat
|
void SetPropFloat(CBaseEntity entity, string propertyName, float value)
|
Sets a netprop to the specified float. |
SetPropFloatArray
|
void SetPropFloatArray(CBaseEntity entity, string propertyName, float value, int arrayElement)
|
Sets a netprop from an array to the specified float. |
SetPropInt
|
void SetPropInt(CBaseEntity entity, string propertyName, int value)
|
Sets a netprop to the specified integer. |
SetPropIntArray
|
void SetPropInt(CBaseEntity entity, string propertyName, int value, int arrayElement)
|
Sets a netprop from an array to the specified integer. |
SetPropString
|
void SetPropString(CBaseEntity entity, string propertyName, string value)
|
Sets a netprop to the specified string. |
SetPropStringArray
|
void SetPropStringArray(CBaseEntity entity, string propertyName, string value, int arrayElement)
|
Sets a netprop from an array to the specified string. |
SetPropVector
|
void SetPropVector(CBaseEntity entity, string propertyName, Vector value)
|
Sets a netprop to the specified vector. |
SetPropVectorArray
|
void SetPropVectorArray(CBaseEntity entity, string propertyName, Vector value, int arrayElement)
|
Sets a netprop from an array to the specified vector. |
Convars
Game Instance: Convars
Provides an interface for getting and setting convars on the server.
Methods
Function | Signature | Description |
---|---|---|
GetClientConvarValue
|
string GetClientConvarValue(string name, int entindex)
|
Returns the convar value for the entindex as a string. Only works with client convars with the FCVAR_USERINFO flag. |
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. |
SetValue
|
void SetValue(string name, value)
|
Sets the value of the convar. Supported types are bool, int, float, string. |
CPointTemplate
Extends CBaseEntity
Script handle class for point_template.
Hooks
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.
- This could be used to dynamically assign target names, colors, even models. Unfortunately, models don't work like one would think. Yes, it is possible to change that gas tank into a football model, will even keep the weapon_gascan class, but it won't behave like one.
function PreSpawnInstance( entityClass, entityName )
{
return
{
rendercolor = "0 255 0"
targetname = "mySpawnedEntity"
};
}
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.
function PostSpawn( entities )
{
foreach( name, handle in entities )
{
printl( name + ": " + handle );
}
}
CPointScriptTemplate
Extends CBaseEntity
Script handle class for point_script_template.
Methods
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. |
CSimpleCallChainer
Seems to have the same members as CCallChainer. [待完善]
CPointScriptUseTarget
Extends CBaseEntity
Script handle class for the point_script_use_target entity.
Methods
Function | Signature | Description |
---|---|---|
CanShowBuildPanel
|
void CanShowBuildPanel(bool showPanel)
|
Sets if the UI panel for the button is shown. |
GetUseModelName
|
string GetUseModelName()
|
Get the entity name of the prop bound to this button. |
SetProgressBarText
|
void SetProgressBarText(string text)
|
Sets the use text for the button UI. |
SetProgressBarSubText
|
void SetProgressBarText(string text)
|
Sets the subtext below the progress bar for the button UI. |
SetProgressBarFinishTime
|
void SetProgressBarFinishTime(float time)
|
Sets the total time the button takes to use. If '0', no progress bar will be displayed. |
SetProgressBarCurrentProgress
|
void SetProgressBarCurrentProgress(float time)
|
Sets the current use progress. It can be used to save the use progress when the user releases the use key. |
StopUse
|
void StopUse()
|
Stop the current use action. |
Members
These variables are only available in the Entity Script after the entity has spawned. They contain entity handles, which differ from normal script handles, and can be compared with the output of the CBaseEntity::GetEntityHandle()
method.
Instance | Type | Description |
---|---|---|
UseModelEntity
|
entity handle
|
The Use Model prop associated with this entity. |
PlayerUsingMe
|
entity handle
|
The current using player. Set to 0 if not being used. |
Hooks
These VScript methods are called on the script set in the Entity Scripts keyvalue for the point_script_use_target.
Function | Signature | Description |
---|---|---|
OnUseFinished
|
void OnUseFinished()
|
Called when the player has used this button for at least 'FinishTime' seconds. |
OnUseStart
|
bool OnUseStart()
|
Called when the player begins to use this button. Return false to disable the third-person use animation. |
OnUseStop
|
void OnUseStop(float timeUsed)
|
Called when the player stops using this button. Passes the time this button has been used (time between StartUse and now). |
Precache
|
void Precache()
|
Called by the game engine when the entity first spawns, immediately after this script is run. |
Decider
An isolated instance of a rulescript database.
Methods
Function | Signature | Description |
---|---|---|
constructor
|
||
AddRule
|
bool AddRule(handle CRule)
|
Add a CRule object (defined in rulescript_base.nut) |
FindAllMatches
|
handle FindAllMatches(handle query, float leeway)
|
Returns an array of all matching responses. If leeway is nonzero, all results scoring within 'leeway' of the best score return. |
FindBestMatch
|
handle FindBestMatch(handle query)
|
Query the database and return the best result found. If multiple of equal score found, an arbitrary one returns. |
IsValid
|
bool IsValid()
|
Whether the object belongs to a valid entity(?). |
regexp
The built-in Squirrel class for regular expressions.
Methods
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
|
LateBinder
Methods
Function | Signature | Description |
---|---|---|
Begin
|
||
End
|
||
EstablishDelegation
|
||
HookRootMetamethod
|
||
UnhookRootMetamethod
|
||
RemoveDelegation
|
||
Resolve
|
Members
Instance | Type | Description |
---|---|---|
m_bindNamesStack
|
array
|
|
m_fixupSet
|
array
|
|
m_log
|
bool
|
|
m_logIndent
|
int
|
|
m_targetTable
|
table?(null)
|
QAngle
Squirrel equivalent of the C++ QAngle class.
Represents a three-dimensional orientation.
Methods
Function | Signature | Description |
---|---|---|
constructor
|
QAngle(float pitch, float yaw, float roll)
|
Creates a new QAngle. |
Forward
|
Vector Forward()
|
Returns the Forward Vector of the angles. |
Left
|
Vector Left()
|
Returns the left Vector of the angles. |
Pitch
|
float Pitch()
|
Returns the pitch angle in degrees. |
Roll
|
float Roll()
|
Returns the roll angle in degrees. |
ToKVString
|
string ToKVString()
|
Returns a string with the values separated by one space. This method is bugged and will append '))' to the end. |
Up
|
Vector Up()
|
Returns the Up Vector of the angles. |
Yaw
|
float Yaw()
|
Returns the yaw angle in degrees. |
Members
Instance | Type | Description |
---|---|---|
x
|
float
|
Pitch in degrees. |
y
|
float
|
Yaw in degrees. |
z
|
float
|
Roll in degrees. |
Quaternion
Quarternions[1] are used for rotations.
Methods
Function | Signature | Description |
---|---|---|
constructor
|
Quarternion([待完善])
|
Creates a new Quarternion. |
Dot
|
float? Dot(Quarternion factor)
|
The scalar product of two quaternions(?). |
Invert
|
Quarternion? Invert()
|
|
Norm
|
Quarternion? Norm()
|
|
SetPitchYawRoll
|
void SetPitchYawRoll(?)
|
|
ToKVString
|
string ToKVString()
|
|
ToQAngle
|
QAngle ToQAngle()
|
Vector
Squirrel equivalent of the C++ Vector class.
Three-dimensional vector.
Has overloaded arithmetic operations with both Vectors and scalar values.

Methods
Function | Signature | Description |
---|---|---|
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. |
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. |
Members
Instance | Type | Description |
---|---|---|
x
|
float
|
Cartesian X axis. |
y
|
float
|
Cartesian Y axis. |
z
|
float
|
Cartesian Z axis. |
Vector2D, Vector4D
Two and four-dimensional equivalents to Vector.
Methods
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. |
Scripted Mode
Enabling Scripted Mode makes a lot of features available in the g_ModeScript
scope.
sm_utilities.nut
Available in the g_ModeScript
scope, always loaded in.
sm_utilities contains many wrapper functions for manipulating different features. Only a few of them are listed here, see the EMS tutorial for more examples.
Function | Signature | Description |
---|---|---|
DeepPrintTable
|
void DeepPrintTable(handle table, string prefix = "")
|
Print out a table (and subtables) to the console. This works with classes as well (not instances). |
DuplicateTable
|
table DuplicateTable(table source)
|
This returns a deep copy of the passed in table. |
InjectTable
|
void InjectTable(table override, table base)
|
Inject the override data into the base table - i.e. add any new ones, overwrite dupes. |
Hooks
These hook functions are only available in the g_ModeScript
scope, in Scripted Mode, which is enabled for a game mode by adding a mode specific VScript (<mode_name>.nut). They are used by simply adding a function with the same name and arguments to the script, and are called back by the C++ code at the appropriate moments.
AllowBash
int AllowBash(handle basher, handle bashee)
: called whenever melee bash is used. Returns these values:
- ALLOW_BASH_ALL - normal melee behavior
- ALLOW_BASH_NONE - do nothing at all
- ALLOW_BASH_PUSHONLY - applies physics push but deals no damage (including prevention of insta-kill ambush behavior)
AllowTakeDamage
bool AllowTakeDamage(table damageTable)
: Adding a function with this name in the script causes C++ to call it on all damage events. The damageTable is actually defined in scriptedmode.nut and filled in as appropriate before each call.
ScriptedDamageInfo <-
{
Attacker = null // handle of the entity that attacked
Victim = null // handle of the entity that was hit
DamageDone = 0 // how much damage done
DamageType = -1 // of what type
Location = Vector(0,0,0) // where
Weapon = null // by what - often Null (say if attacker was a common)
}
Returning "false" causes the damage will be stopped and nothing will be done to the target (though animation/bloodstains/decals will probably still happen, sorry about that). The only field read back by the C++ is DamageDone, so it can be used to change the damage value before it is applied. The Type field is a bitfield, of which several key #def's are exported to script (DMG_HEADSHOT, DMG_BULLET, DMG_BUCKSHOT, DMG_MELEE, DMG_STUMBLE, DMG_BLAST, DMG_BLAST_SURFACE, DMG_BURN ).
BotQuery
bool BotQuery(int queryflag, handle entity, bool defaultvalue)
: Hook to control survivor bot behavior. Only one known flag is supported.
BOT_QUERY_NOTARGET
- Fired when a bot wants to bash a prop. Returningfalse
disallows the bashing.
CanPickupObject
bool CanPickupObject(handle object)
: Hook function for deciding whether a given prop should be pickupable (HL2 style). Returning true
makes the players able to pick up the object. Only functional for server side props. If this is defined it must return true in order the PickupObject() function to work.
InterceptChat
void InterceptChat(sting message, CTerrorPlayer speaker)
: If you put a function with this name in your script, C++ will call it on all chat messages. Passing in the (annotated) chat string and the handle of the speaker.
UserConsoleCommand
void UserConsoleCommand(handle playerScript, arg)
: when a user does a <scripted_user_func argument> at console (or bound to a key) this function is called (if it exists). The playerscript is which players console it came from. You can pass strings or whatever, of course. So could do a switch statement off <arg> to give players special controls, etc.
OnGameEvent_x
void OnGameEvent_x(table params)
: A callback that is called when the game event x is fired. See scripts\gameevents.res
and scripts\modeevents.res
for valid events. The callback functions can be registered independently from Scripted Mode, using: __CollectEventCallbacks(this, "OnGameEvent_", "GameEventCallbacks", RegisterScriptGameEventListener)
See L4D2_EMS/Appendix:_Game_Events for more information.
Global Functions
Printing and Drawing
Function | Signature | Description |
---|---|---|
DebugDrawBox
|
void DebugDrawBox( vector origin, vector min, vector max, int r, int g, int b, int alpha, float duration)
|
Draw a debug overlay box. |
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. |
HUDManageTimers
|
void HUDManageTimers(int timerID, int command, float value)
|
Manages the HUD timers. Valid command enumerations are: TIMER_DISABLE, TIMER_COUNTUP, TIMER_COUNTDOWN, TIMER_STOP, TIMER_SET |
HUDPlace
|
void HUDPlace(int slot, float x, float y, float width, float height)
|
Sets the position of a HUD element. See L4D2_EMS/Appendix:_HUD |
HUDReadTimer
|
float HUDReadTimer(int timerID)
|
Returns the value of a HUD timer. See L4D2_EMS/Appendix:_HUD |
HUDSetLayout
|
void HUDSetLayout(table HUDTable)
|
Applies a HUD to the screen. See L4D2_EMS/Appendix:_HUD |
Msg
|
void Msg(string message)
|
Prints message to console without any line feed after. |
print
|
void print(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
|
||
ShowMessage
|
void ShowMessage(string message)
|
Print a HUD message on all clients. ![]() |
Say
|
void Say(CTerrorPlayer player, string message,bool teamOnly)
|
Calling this will have the specified player send the message to chat, either to teamOnly (true) or to everyone. |
SendToConsole
|
void SendToConsole(string command)
|
Send a string to the console as a command. |
SendToServerConsole
|
void SendToServerConsole(string command)
|
Send a string to the server console as a command. |
Ticker_AddToHud
|
void Ticker_AddToHud(table hudTable,string strInit,bool blink)
|
Adds ticker data to a passed in HUDTable. |
Ticker_NewStr
|
void Ticker_NewStr(string newStr,float newTimeout)
|
Sets the current Ticker string, w/an optional timeout value. |
Entity Manipulation
Function | Signature | Description |
---|---|---|
AddThinkToEnt
|
void AddThinkToEnt(handle entity, string FuncName)
|
This will put a think function onto an entity, or pass null to remove it. This is NOT chained, so be careful. |
ConnectOutputs
|
void ConnectOutputs(table)
|
sets output functions for entity by table [待完善] |
DoEntFire
|
void DoEntFire(string target, string action, string value, float delay, handle activator, handle caller)
|
Generate an entity I/O event. The caller argument takes a script handle, so it can be used with target set to !self to fire inputs to entities without usable targetnames. |
EntFire
|
void EntFire(string target, string action, string value = null, float delay = 0, handle activator = null)
|
Wrapper for DoEntFire() that sets activator and caller to null. |
DropFire
|
void DropFire(Vector location)
|
Drop a fire pool from the specified Vector location. |
DropSpit
|
void DropSpit(Vector location)
|
Drop a spit pool from the specified Vector location. |
EmitSoundOnClient
|
void EmitSoundOnClient(string soundScript, handle player)
|
Play named sound only on the client for the specified player. |
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. |
EntIndexToHScript
|
CBaseEntity EntIndexToHScript(int entIndex)
|
Returns the script handle for the given entity index. |
GetFriction
|
float GetFriction(CTerrorPlayer player)
|
Returns the Friction on a player entity, meaningless if not a player. |
GetPhysVelocity
|
Vector GetPhysVelocity(handle entity)
|
Returns the velocity of the entity. |
GetPhysAngularVelocity
|
Vector GetPhysAngularVelocity(handle entity)
|
Returns the Angular velocity of the entity. |
GetPlayerFromCharacter
|
handle GetPlayerFromCharacter(int ?)
|
Given a character type, return the entity, or null. |
GetPlayerFromUserID
|
handle GetPlayerFromUserID(int ID)
|
Given a user id, return the entity, or null. |
IsPlayerABot
|
void IsPlayerABot(handle player)
|
Is this player/entity a bot. |
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. |
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
|
CTerrorPlayer PlayerInstanceFromIndex(int index)
|
Get a script handle of a player using the player index. |
PrecacheEntityFromTable
|
bool PrecacheEntityFromTable(table keyvalues)
|
Precache an entity from KeyValues in a table. |
SpawnEntityFromTable
|
handle SpawnEntityFromTable(string name, handle keyvalues)
|
Native function for entity spawning. See L4D2_EMS/Appendix:_Spawning. |
SpawnEntityGroupFromTable
|
bool SpawnEntityGroupFromTable(handle entityGroup)
|
Native function for entity group spawning. See L4D2_EMS/Appendix:_Spawning. |
SpawnStartBox
|
handle SpawnStartBox(centerobjname, useFloating, width, depth, barriermodel, min_gap)
|
Auto-create a startbox that will give you a callback when the first player exits it. |
TeleportPlayersToStartPoints
|
void TeleportPlayersToStartPoints(string spawnpointName)
|
Teleport players to start entities named by the argument - must have 4 spawnpoints. |
Other
Function | Signature | Description |
---|---|---|
AddToScriptHelp
|
||
Assert
|
void Assert(bool value, string optional message)
|
Test value and if not true, throws exception, optionally with message. |
CheckForSpecialStage
|
void CheckForSpecialStage(level, stage_list, stage_info)
|
Helper for picking a random special stage based on stage_info table. |
CheckOrSetMapCallback
|
void CheckOrSetMapCallback(cb_name, cb_default)
|
Pass a callback and default @ for it, if it doesnt exist in current table, place it there. |
ClearGameEventCallbacks
|
void ClearGameEventCallbacks()
|
Empties the tables of game event callback functions. |
ClearSavedTables
|
void ClearSavedTables()
|
Removes any tables saved with SaveTable() .
|
developer
|
bool developer()
|
If developer mode is on. |
Document
|
||
DoIncludeScript
|
void DoIncludeScript(string file, handle scope)
|
Execute a script (internal) |
DoUniqueString
|
string DoUniqueString(string input)
|
Called by UniqueString, prob want to call that instead. |
FileToString
|
string FileToString(string file)
|
Reads a string from file. Returns the string from the file, null if no file or file is too big. |
FireGameEvent
|
string FireGameEvent(string event, table params)
|
Fire a game event to a listening callback function in script. Parameters are passed in a squirrel table. |
FireScriptEvent
|
void FireScriptEvent(event, params)
|
Wrapper for __RunEventCallbacks()
|
GetCharacterDisplayName
|
string GetCharacterDisplayName(CTerrorPlayer player)
|
Return null if not a survivor, else the survivor characters name.
|
GetCurrentFlowDistanceForPlayer
|
float GetCurrentFlowDistanceForPlayer(CTerrorPlayer player)
|
Returns the navigation flow distance from the start to the specified player. |
GetCurrentFlowPercentForPlayer
|
float GetCurrentFlowPercentForPlayer(CTerrorPlayer player)
|
Returns how far in the navigation flow from the start to the end the player is. |
GetFlowDistanceForPosition
|
float GetFlowDistanceForPosition(Vector position)
|
Returns the navigation flow distance from the start to the specified point. |
GetFlowPercentForPosition
|
float GetCurrentFlowPercentForPosition(Vector position, bool unknown)
|
Returns how far in the navigation flow from the start to the end the position is. |
GetMaxFlowDistance
|
float GetMaxFlowDistance()
|
Returns the navigation flow distance from the start to the end of the level. |
GetAverageSurvivorFlowDistance
|
float GetAverageSurvivorFlowDistance()
|
Returns the navigation flow distance from the start to the survivors position averaged. |
GetFrameCount
|
void GetFrameCount()
|
Returns the engine's current frame count. |
GetFunctionSignature
|
||
GetInfectedStats
|
void GetInfectedStats(table statTable)
|
Fills statTable with some infected counts/etc... Right now the list is Witches, Tanks, Specials, Commons, though we may add more as requested going forward. |
IncludeScript
|
void IncludeScript(string file, handle scope = null)
|
Wrapper for DoIncludeScript |
IsWeakref
|
||
MakeNamespace
|
||
RandomFloat
|
float RandomFloat()
|
Generate a random floating point number. |
RandomFloat
|
float RandomFloat(float min, float max)
|
Generate a random floating point number within a range, inclusive. |
RandomInt
|
int RandomInt()
|
Generate a random integer. |
RandomInt
|
int RandomInt(int min, int max)
|
Generate a random integer within a range, inclusive. |
ReapplyInfectedFlags
|
ReapplyInfectedFlags(int flags, handle infected)
|
Apply Infected Flags from DirectorOptions. Applies to all common (spawned and unspawned) unless a handle to a specific infected is specified. |
RegisterFunctionDocumentation
|
||
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.
|
ReloadMOTD
|
void ReloadMOTD()
|
Reloads the MotD file. |
RestoreTable
|
void RestoreTable(string identifier, table)
|
See L4D2_EMS/Appendix:_Table_Save_Restore. |
RetrieveNativeSignature
|
||
rr_AddDecisionRule
|
bool rr_AddDecisionRule(RRule rule)
|
Add a rule to the decision database. Takes a RRule object from rulescript_base.nut. |
rr_CommitAIResponse
|
bool rr_CommitAIResponse(handle entity, table airesponse)
|
Supposed to commit the result of QueryBestResponse back to the given entity to play. Takes a table needing the keys response with a ResponseSingle object (defined in response_testbed.nut) and orig_query with an unknown content. |
rr_GetResponseTargets
|
table rr_GetResponseTargets()
|
Retrieve a table of all available expresser targets, in the form { name : handle, name: handle }. |
rr_QueryBestResponse
|
unknown rr_QueryBestResponse(handle entity, table query)
|
Tests query against entity's response system and returns the best response found (or null if none found). Returns a pointer with a null type, that is apparently not usable anywhere. Possibly supposed to return a AI_Response object. |
SaveTable
|
void SaveTable(string identifier, table)
|
See L4D2_EMS/Appendix:_Table_Save_Restore. |
StageInfo_Execute
|
void StageInfo_Execute(stageInfo, stageDefaults)
|
Execute a stage table, i.e. move parameters to DirectorOptions, do callbacks and so on. |
StartAssault
|
void StartAssault()
|
Tells all existing nextbots to swap into assault mode and not hide/dither/loiter. |
StringToFile
|
void StringToFile(string file, string string)
|
Stores the string into the file. |
Time
|
float Time()
|
Get the current server time. |
TimeToDisplayString
|
string TimeToDisplayString(disp_time)
|
Convert a # of seconds to a displayable time string form m:ss |
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. |
VSquirrel_OnCreateScope
|
||
VSquirrel_OnReleaseScope
|
||
__CollectEventCallbacks
|
void __CollectEventCallbacks(scope)
|
Registers callbacks for OnGameEvent_x functions. |
__CollectEventCallbacks
|
void __CollectEventCallbacks( scope, prefix, globalTableName, regFunc )
|
Overloaded function, used by the above one like this: __CollectEventCallbacks( scope, "OnGameEvent_", "GameEventCallbacks",
|
__ExecutePreSpawn
|
||
__FinishSpawn
|
||
__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()
|
Functions with detailed documentation
CommandABot
bool CommandABot(table commandTable)
: Issues commands to bots based on a table configuration.
Inputs:
.cmd - required field, must specify one of these commands: BOT_CMD_ATTACK, BOT_CMD_MOVE, BOT_CMD_RETREAT, BOT_CMD_RESET
NOTE: in order to use the BOT_CMD enums you must be operating in the mode script scope. If you aren't you can pass an integer instead of the enum (e.g., set cmd to 1 instead of BOT_CMD_MOVE)
.pos - a position, used only in BOT_CMD_MOVE
.bot - which bot you are commanding (or NULL for all bots)
.target - for attack and retreat - what entity is the target of the attack or retreat.
Here is an example of how to create a table that commands all bots to run to position 0,0,0:
commands <-
{
cmd = 1 // BOT_CMD_MOVE
pos = Vector( 0,0,0 )
}
----
CommandABot( commands )
// Alternatively, you could send the data inline, like so:
CommandABot( { cmd = 1, pos = Vector( 0,0,0 ) } )
GetInvTable
void GetInvTable(handle player,table invTable)
: Fills invTable with the player's inventory.
The table is structured like this. Only the slots with items currently in them are added.
{
slot0 = handle // Primary
slot1 = handle // Secondary
slot2 = handle // Throwable
slot3 = handle // Medkit/Defib
slot4 = handle // Pills/Adrenaline
slot5 = handle // Carried physics object (L4D style)
Held = handle // Carried physics object (legacy style, from CanPickupObject() or PickupObject() )
}
TraceLine
bool TraceLine(table traceTable)
: uses a configuration table to do a raytrace, puts return information into the table for return usage. Returns a bool indicating that the trace was successful.
Inputs:
key: start value: start vector for the trace
key: end value: end vector for the trace
key: ignore value: script handle to ignore as part of the trace
key: mask value: optional masks: TRACE_MASK_VISIBLE_AND_NPCS (default), TRACE_MASK_ALL, TRACE_MASK_VISION, TRACE_MASK_SHOT, TRACE_MASK_PLAYER_SOLID, TRACE_MASK_NPC_SOLID
Outputs:
key: hit value: did we hit something
key: pos value: where the traceline ended
key: fraction value: where the hit occurred
key: enthit value: handle for entity hit if there is one
key: startsolid value: did we start in solid
The only required information to make the trace is providing the start and end point.
Example:
traceTable <-
{
start = Vector( 0,0,0 )
end = Vector( 0,0,256 )
}
ZSpawn
bool ZSpawn(table spawnTable)
: This is essentially the z_spawn console command, except (a) you pass a table and (b) no raycast, you give it the position vector. The table entries used are:
key: type value: ZOMBIE_WITCH, etc - or the special ZSPAWN_MOB, or WITCHBRIDE, etc
key: pos value: Vector position at which to spawn, optional (defaults to automatically spawn somewhere in the world)
key: ang value: QAngle for spawn, optional (defaults to 0,0,0)
Debugging functions
Functions for interacting with the debugger. Some of them are documented here.
- BeginScriptDebug
- EndScriptDebug
- ScriptDebugAddTextFilter
- ScriptDebugAddTrace
- ScriptDebugAddWatch
- ScriptDebugAddWatches
- ScriptDebugAddWatchPattern
- ScriptDebugClearTraces
- ScriptDebugClearWatches
- ScriptDebugDraw
- ScriptDebugDrawWatches
- ScriptDebugDumpKeys
- ScriptDebugHook
- ScriptDebugIterateKeys
- ScriptDebugIterateKeysRecursive
- ScriptDebugRemoveTextFilter
- ScriptDebugRemoveTrace
- ScriptDebugRemoveWatch
- ScriptDebugRemoveWatches
- ScriptDebugRemoveWatchPattern
- ScriptDebugTextDraw
- ScriptDebugTextPrint
- ScriptDebugTextTrace
- ScriptDebugTraceAll
- __VScriptServerDebugHook
Standard Squirrel library
Standard Squirrel library functions (consult official Squirrel language league for more details):
Function |
---|
abs |
acos |
array |
asin |
assert |
atan |
atan2 |
ceil |
collectgarbage |
compilestring |
cos |
exp |
fabs |
floor |
format |
getconsttable |
getroottable |
getstackinfos |
log |
log10 |
lstrip |
pow |
rand |
rstrip |
setconsttable |
seterrorhandler |
setroottable |
type |
sin |
split |
sqrt |
srand |
strip |
suspend |
tan |