Lua API

Overview

We list here all globals available among all different lua environments within Recoil. Some types listed here exist only as helpers for aliasing parameters and returns.

The documentation pages are still a work in progress.

Spring (table)

Members

Spring.CallAsTeam (function)

Calls a function from given team’s PoV. In particular this makes callouts obey that team’s visibility rules.

[source]

Spring.CallAsTeam(integer, fun(...), [any, ]*) -> any ...
Parameters
integerteamID
Team ID.
fun(...)func
The function to call.
any...
Arguments to pass to the function.
Returns
any ...The
return values of the function.

Spring.CallAsTeam (function overload 1)

[source]
Spring.CallAsTeam(CallAsTeamOptions, fun(...), [any, ]*) -> any ...
Parameters
CallAsTeamOptionsoptions
Options.
fun(...)func
The function to call.
any...
Arguments to pass to the function.
Returns
any ...The
return values of the function.

Spring.Echo (function)

Prints values in the spring chat console. Useful for debugging.

Hint: the default print() writes to STDOUT.

[source]

Spring.Echo(any, [any, ]*) -> nil
Parameters
anyarg
any...
Returns
nil

Spring.Log (function)

Logs a message to the logfile/console.

[source]

Spring.Log(string, (LogLevel|LOG)?, [string, ]*) -> nil
Parameters
stringsection
Sets an arbitrary section. Level filtering can be applied per-section
(LogLevel|LOG)?logLevel
(Default: “notice”)
string...
messages

Spring.Ping (function)

Send a ping request to the server

[source]

Spring.Ping(number) -> nil
Parameters
numberpingTag
Returns
nil

Spring.SendCommands (function)

[source]
Spring.SendCommands(string[]) -> nil
Parameters
string[]commands

Spring.SendCommands (function overload 1)

[source]
Spring.SendCommands(string, [string, ]*) -> nil
Parameters
stringcommand
string...
additional commands
Returns
nil

Spring.SendPublicChat (function)

Sends a chat message to everyone (players and spectators).

[source]

Spring.SendPublicChat(string) -> nil
Parameters
stringmessage
Returns
nil

Spring.SendAllyChat (function)

Sends a chat message to the sender’s ally team (if a spectator, to other spectators).

[source]

Spring.SendAllyChat(string) -> nil
Parameters
stringmessage
Returns
nil

Spring.SendSpectatorChat (function)

Sends a chat message to spectators. Works even if you’re a player.

[source]

Spring.SendSpectatorChat(string) -> nil
Parameters
stringmessage
Returns
nil

Spring.SendPrivateChat (function)

Sends a private chat message to a specific player ID.

[source]

Spring.SendPrivateChat(string, integer) -> nil
Parameters
stringmessage
integerplayerID
Returns
nil

Spring.SendMessage (function)

[source]
Spring.SendMessage(string) -> nil
Parameters
stringmessage
Returns
nil

Spring.SendMessageToSpectators (function)

[source]
Spring.SendMessageToSpectators(string) -> nil
Parameters
stringmessage

"<PLAYER#>" where # is a player ID.

This will be replaced with the player’s name. e.g. lua Spring.SendMessage(" did something") – “ProRusher did something”

Returns
nil

Spring.SendMessageToPlayer (function)

[source]
Spring.SendMessageToPlayer(integer, string) -> nil
Parameters
integerplayerID
stringmessage
Returns
nil

Spring.SendMessageToTeam (function)

[source]
Spring.SendMessageToTeam(integer, string) -> nil
Parameters
integerteamID
stringmessage
Returns
nil

Spring.SendMessageToAllyTeam (function)

[source]
Spring.SendMessageToAllyTeam(integer, string) -> nil
Parameters
integerallyID
stringmessage
Returns
nil

Spring.LoadSoundDef (function)

Loads a SoundDefs file, the format is the same as in gamedata/sounds.lua.

[source]

Spring.LoadSoundDef(string) -> boolean
Parameters
stringsoundfile
Returns
booleansuccess

Spring.PlaySoundFile (function)

[source]
Spring.PlaySoundFile(string, number?, number?, number?, number?, number?, number?, number?, SoundChannel?) -> boolean
Parameters
stringsoundfile
number?volume
(Default: 1.0)
number?posx
number?posy
number?posz
number?speedx
number?speedy
number?speedz
SoundChannel?channel
(Default: 0|“general”)
Returns
booleanplaySound

Spring.PlaySoundStream (function)

Allows to play an Ogg Vorbis (.OGG) and mp3 compressed sound file.

[source]

Multiple sound streams may be played at once.

Spring.PlaySoundStream(string, number?, boolean?) -> boolean
Parameters
stringoggfile
number?volume
(Default: 1.0)
boolean?enqueue
Returns
booleansuccess

Spring.StopSoundStream (function)

Terminates any SoundStream currently running.

[source]

Spring.StopSoundStream() -> nil
Returns
nil

Spring.PauseSoundStream (function)

Pause any SoundStream currently running.

[source]

Spring.PauseSoundStream() -> nil
Returns
nil

Spring.SetSoundStreamVolume (function)

Set volume for SoundStream

[source]

Spring.SetSoundStreamVolume(number) -> nil
Parameters
numbervolume
Returns
nil

Spring.SetSoundEffectParams (function)

[source]
Spring.SetSoundEffectParams() -> nil

Spring.AddWorldIcon (function)

[source]
Spring.AddWorldIcon(integer, number, number, number) -> nil
Parameters
integercmdID
numberposX
numberposY
numberposZ
Returns
nil

Spring.AddWorldText (function)

[source]
Spring.AddWorldText(string, number, number, number) -> nil
Parameters
stringtext
numberposX
numberposY
numberposZ
Returns
nil

Spring.AddWorldUnit (function)

[source]
Spring.AddWorldUnit(integer, number, number, number, integer, FacingInteger) -> nil
Parameters
integerunitDefID
numberposX
numberposY
numberposZ
integerteamID
FacingIntegerfacing
Returns
nil

Spring.DrawUnitCommands (function)

[source]
Spring.DrawUnitCommands(integer) -> nil
Parameters
integerunitID

Spring.DrawUnitCommands (function overload 1)

[source]
Spring.DrawUnitCommands(integer[], false?) -> nil
Parameters
integer[]unitIDs
Unit ids.
false?tableOrArray
Set to true if the unit IDs should be read from the keys of unitIDs.

Spring.DrawUnitCommands (function overload 2)

[source]
Spring.DrawUnitCommands(table<integer,any>, true) -> nil
Parameters
table<integer,any>unitIDs
Table with unit IDs as keys.
truetableOrArray
Set to false if the unit IDs should be read from the values of unitIDs.
Returns
nil

Spring.SetCameraTarget (function)

For Spring Engine XZ represents horizontal, from north west corner of map and Y vertical, from water level and rising.

[source]

Spring.SetCameraTarget(number, number, number, number?) -> nil
Parameters
numberx
numbery
numberz
number?transTime
Returns
nil

Spring.SetCameraOffset (function)

[source]
Spring.SetCameraOffset(number?, number?, number?, number?, number?, number?) -> nil
Parameters
number?posX
(Default: 0)
number?posY
(Default: 0)
number?posZ
(Default: 0)
number?tiltX
(Default: 0)
number?tiltY
(Default: 0)
number?tiltZ
(Default: 0)
Returns
nil

Spring.SetCameraState (function)

Set camera state.

[source]

Spring.SetCameraState(CameraState, number?, number?, number?) -> boolean
Parameters
CameraStatecameraState
The fields must be consistent with the name/mode and current/new camera mode.
number?transitionTime
(Default: 0) in nanoseconds
number?transitionTimeFactor
number?transitionTimeExponent
Returns
booleanset
true when applied without errors, otherwise false.

Spring.RunDollyCamera (function)

Runs Dolly Camera

[source]

Spring.RunDollyCamera(number) -> nil
Parameters
numberruntime
Runtime in milliseconds.
Returns
nil

Spring.PauseDollyCamera (function)

Pause Dolly Camera

[source]

Spring.PauseDollyCamera(number) -> nil
Parameters
numberfraction
Fraction of the total runtime to pause at, 0 to 1 inclusive. A null value pauses at current percent
Returns
nil

Spring.ResumeDollyCamera (function)

Resume Dolly Camera

[source]

Spring.ResumeDollyCamera() -> nil
Returns
nil

Spring.SetDollyCameraPosition (function)

Sets Dolly Camera Position

[source]

Spring.SetDollyCameraPosition(number, number, number) -> nil
Parameters
numberx
numbery
numberz
Returns
nil

Spring.SetDollyCameraCurve (function)

Sets Dolly Camera movement Curve

[source]

Spring.SetDollyCameraCurve(number, ControlPoint[], table) -> nil
Parameters
numberdegree
ControlPoint[]cpoints
NURBS control point positions.
tableknots
Returns
nil

Spring.SetDollyCameraMode (function)

Sets Dolly Camera movement mode

[source]

Spring.SetDollyCameraMode((1|2)) -> nil
Parameters
(1|2)mode
1 static position, 2 nurbs curve
Returns
nil

Spring.SetDollyCameraRelativeMode (function)

Sets Dolly Camera movement curve to world relative or look target relative

[source]

Spring.SetDollyCameraRelativeMode(number) -> nil
Parameters
numberrelativeMode
1 world, 2 look target
Returns
nil

Spring.SetDollyCameraLookCurve (function)

Sets Dolly Camera Look Curve

[source]

Spring.SetDollyCameraLookCurve(number, ControlPoint[], table) -> nil
Parameters
numberdegree
ControlPoint[]cpoints
NURBS control point positions.
tableknots
Returns
nil

Spring.SetDollyCameraLookPosition (function)

Sets Dolly Camera Look Position

[source]

Spring.SetDollyCameraLookPosition(number, number, number) -> nil
Parameters
numberx
numbery
numberz
Returns
nil

Spring.SetDollyCameraLookUnit (function)

Sets target unit for Dolly Camera to look towards

[source]

Spring.SetDollyCameraLookUnit(integer) -> nil
Parameters
integerunitID
The unit to look at.
Returns
nil

Spring.SelectUnit (function)

Selects a single unit

[source]

Spring.SelectUnit(integer?, boolean?) -> nil
Parameters
integer?unitID
boolean?append
(Default: false) Append to current selection.
Returns
nil

Spring.DeselectUnit (function)

[source]
Spring.DeselectUnit(integer) -> nil
Parameters
integerunitID
Returns
nil

Spring.DeselectUnitArray (function)

Deselects multiple units.

[source]

Spring.DeselectUnitArray(integer[]) -> nil
Parameters
integer[]unitIDs
Table with unit IDs as values.
Returns
nil

Spring.DeselectUnitMap (function)

Deselects multiple units.

[source]

Spring.DeselectUnitMap(table<integer,any>) -> nil
Parameters
table<integer,any>unitMap
Table with unit IDs as keys.
Returns
nil

Spring.SelectUnitArray (function)

Selects multiple units, or appends to selection. Accepts a table with unitIDs as values

[source]

Spring.SelectUnitArray(integer[], boolean?) -> nil
Parameters
integer[]unitIDs
Table with unit IDs as values.
boolean?append
(Default: false) append to current selection
Returns
nil

Spring.SelectUnitMap (function)

Selects multiple units, or appends to selection. Accepts a table with unitIDs as keys

[source]

Spring.SelectUnitMap(table<integer,any>, boolean?) -> nil
Parameters
table<integer,any>unitMap
Table with unit IDs as keys.
boolean?append
(Default: false) append to current selection
Returns
nil

Spring.AddMapLight (function)

[source]

requires MaxDynamicMapLights > 0

Spring.AddMapLight(LightParams) -> integer
Parameters
LightParamslightParams
Returns
integerlightHandle

Spring.AddModelLight (function)

[source]

requires MaxDynamicMapLights > 0

Spring.AddModelLight(LightParams) -> number
Parameters
LightParamslightParams
Returns
numberlightHandle

Spring.UpdateMapLight (function)

[source]
Spring.UpdateMapLight(number, LightParams) -> boolean
Parameters
numberlightHandle
LightParamslightParams
Returns
booleansuccess

Spring.UpdateModelLight (function)

[source]
Spring.UpdateModelLight(number, LightParams) -> boolean
Parameters
numberlightHandle
LightParamslightParams
Returns
booleansuccess

Spring.AddLightTrackingTarget (function)

[source]
Spring.AddLightTrackingTarget() -> nil

Spring.SetMapLightTrackingState (function)

Set a map-illuminating light to start/stop tracking the position of a moving object (unit or projectile)

[source]

Spring.SetMapLightTrackingState(number, integer, boolean, boolean) -> boolean
Parameters
numberlightHandle
integerunitOrProjectileID
booleanenableTracking
booleanunitOrProjectile
Returns
booleansuccess

Spring.SetModelLightTrackingState (function)

Set a model-illuminating light to start/stop tracking the position of a moving object (unit or projectile)

[source]

Spring.SetModelLightTrackingState(number, integer, boolean, boolean) -> boolean
Parameters
numberlightHandle
integerunitOrProjectileID
booleanenableTracking
booleanunitOrProjectile
Returns
booleansuccess

Spring.SetMapShader (function)

[source]

The ID’s must refer to valid programs returned by gl.CreateShader. Passing in a value of 0 will cause the respective shader to revert back to its engine default. Custom map shaders that declare a uniform ivec2 named “texSquare” can sample from the default diffuse texture(s), which are always bound to TU 0.

Spring.SetMapShader(integer, integer) -> nil
Parameters
integerstandardShaderID
integerdeferredShaderID
Returns
nil

Spring.SetMapSquareTexture (function)

[source]
Spring.SetMapSquareTexture(number, number, string) -> boolean
Parameters
numbertexSqrX
numbertexSqrY
stringluaTexName
Returns
booleansuccess

Spring.SetMapShadingTexture (function)

[source]
Spring.SetMapShadingTexture(string, string) -> boolean
Parameters
stringtexType
stringtexName
Returns
booleansuccess

Spring.SetSkyBoxTexture (function)

[source]
Spring.SetSkyBoxTexture(string) -> nil
Parameters
stringtexName
Returns
nil

Spring.SetUnitNoDraw (function)

[source]
Spring.SetUnitNoDraw(integer, boolean) -> nil
Parameters
integerunitID
booleannoDraw
Returns
nil

Spring.SetUnitEngineDrawMask (function)

[source]
Spring.SetUnitEngineDrawMask(integer, number) -> nil
Parameters
integerunitID
numberdrawMask
Returns
nil

Spring.SetUnitAlwaysUpdateMatrix (function)

[source]
Spring.SetUnitAlwaysUpdateMatrix(integer, boolean) -> nil
Parameters
integerunitID
booleanalwaysUpdateMatrix
Returns
nil

Spring.SetUnitNoMinimap (function)

[source]
Spring.SetUnitNoMinimap(integer, boolean) -> nil
Parameters
integerunitID
booleanunitNoMinimap
Returns
nil

Spring.SetMiniMapRotation (function)

[source]
Spring.SetMiniMapRotation(number) -> nil
Parameters
numberrotation
amount in radians
Returns
nil

Spring.SetUnitNoGroup (function)

[source]
Spring.SetUnitNoGroup(integer, boolean) -> nil
Parameters
integerunitID
booleanunitNoGroup
Whether unit can be added to selection groups

Spring.SetUnitNoSelect (function)

[source]
Spring.SetUnitNoSelect(integer, boolean) -> nil
Parameters
integerunitID
booleanunitNoSelect
whether unit can be selected or not
Returns
nil

Spring.SetUnitLeaveTracks (function)

[source]
Spring.SetUnitLeaveTracks(integer, boolean) -> nil
Parameters
integerunitID
booleanunitLeaveTracks
whether unit leaves tracks on movement
Returns
nil

Spring.SetUnitSelectionVolumeData (function)

[source]
Spring.SetUnitSelectionVolumeData(integer, integer, number, number, number, number, number, number, number, number, number) -> nil
Parameters
integerunitID
integerfeatureID
numberscaleX
numberscaleY
numberscaleZ
numberoffsetX
numberoffsetY
numberoffsetZ
numbervType
numbertType
numberAxis
Returns
nil

Spring.SetFeatureNoDraw (function)

[source]
Spring.SetFeatureNoDraw(integer, boolean) -> nil
Parameters
integerfeatureID
booleannoDraw
Returns
nil

Spring.SetFeatureEngineDrawMask (function)

[source]
Spring.SetFeatureEngineDrawMask(integer, number) -> nil
Parameters
integerfeatureID
numberengineDrawMask
Returns
nil

Spring.SetFeatureAlwaysUpdateMatrix (function)

[source]
Spring.SetFeatureAlwaysUpdateMatrix(integer, number) -> nil
Parameters
integerfeatureID
numberalwaysUpdateMat
Returns
nil

Spring.SetFeatureFade (function)

Control whether a feature will fade or not when zoomed out.

[source]

Spring.SetFeatureFade(integer, boolean) -> nil
Parameters
integerfeatureID
booleanallow
Returns
nil

Spring.SetFeatureSelectionVolumeData (function)

[source]
Spring.SetFeatureSelectionVolumeData(integer, number, number, number, number, number, number, number, number, number) -> nil
Parameters
integerfeatureID
numberscaleX
numberscaleY
numberscaleZ
numberoffsetX
numberoffsetY
numberoffsetZ
numbervType
numbertType
numberAxis
Returns
nil

Spring.AddUnitIcon (function)

[source]
Spring.AddUnitIcon(string, string, number?, number?, number?) -> boolean
Parameters
stringiconName
stringtexFile
number?size
number?dist
number?radAdjust
Returns
booleanadded

Spring.FreeUnitIcon (function)

[source]
Spring.FreeUnitIcon(string) -> boolean?
Parameters
stringiconName
Returns
boolean?freed

Spring.UnitIconSetDraw (function)

[source]

Use Spring.SetUnitIconDraw instead.

Deprecated

Spring.UnitIconSetDraw(integer, boolean) -> nil
Parameters
integerunitID
booleandrawIcon
Returns
nil

Spring.SetUnitIconDraw (function)

[source]
Spring.SetUnitIconDraw(integer, boolean) -> nil
Parameters
integerunitID
booleandrawIcon
Returns
nil

Spring.SetUnitDefIcon (function)

[source]
Spring.SetUnitDefIcon(integer, string) -> nil
Parameters
integerunitDefID
stringiconName
Returns
nil

Spring.SetUnitDefImage (function)

[source]
Spring.SetUnitDefImage(integer, string) -> nil
Parameters
integerunitDefID
stringimage
luaTexture|texFile
Returns
nil

Spring.ExtractModArchiveFile (function)

[source]
Spring.ExtractModArchiveFile(string) -> boolean
Parameters
stringmodfile
Returns
booleanextracted

Spring.CreateDir (function)

[source]
Spring.CreateDir(string) -> boolean?
Parameters
stringpath
Returns
boolean?dirCreated

Spring.SetActiveCommand (function)

[source]
Spring.SetActiveCommand(string, string?) -> boolean?
Parameters
stringaction
string?actionExtra
Returns
boolean?commandSet

Spring.SetActiveCommand (function overload 1)

[source]
Spring.SetActiveCommand(number, number?, boolean?, boolean?, boolean?, boolean?, boolean?, boolean?) -> boolean?
Parameters
numbercmdIndex
number?button
(Default: 1)
boolean?leftClick
boolean?rightClick
boolean?alt
boolean?ctrl
boolean?meta
boolean?shift
Returns
boolean?commandSet

Spring.LoadCmdColorsConfig (function)

[source]
Spring.LoadCmdColorsConfig(string) -> nil
Parameters
stringconfig
Returns
nil

Spring.LoadCtrlPanelConfig (function)

[source]
Spring.LoadCtrlPanelConfig(string) -> nil
Parameters
stringconfig
Returns
nil

Spring.ForceLayoutUpdate (function)

[source]
Spring.ForceLayoutUpdate() -> nil
Returns
nil

Spring.SetDrawSelectionInfo (function)

Disables the “Selected Units x” box in the GUI.

[source]

Spring.SetDrawSelectionInfo(boolean) -> nil
Parameters
booleanenable
Returns
nil

Spring.SetBoxSelectionByEngine (function)

[source]
Spring.SetBoxSelectionByEngine(boolean) -> nil
Parameters
booleanstate
Returns
nil

Spring.SetTeamColor (function)

[source]
Spring.SetTeamColor(integer, number, number, number) -> nil
Parameters
integerteamID
numberr
numberg
numberb
Returns
nil

Spring.AssignMouseCursor (function)

Changes/creates the cursor of a single CursorCmd.

[source]

Spring.AssignMouseCursor(string, string, boolean?, boolean?) -> boolean?
Parameters
stringcmdName
stringiconFileName
not the full filename, instead it is like this: Wanted filename: Anims/cursorattack_0.bmp => iconFileName: cursorattack
boolean?overwrite
(Default: true)
boolean?hotSpotTopLeft
(Default: false)
Returns
boolean?assigned

Spring.ReplaceMouseCursor (function)

Mass replace all occurrences of the cursor in all CursorCmds.

[source]

Spring.ReplaceMouseCursor(string, string, boolean?) -> boolean?
Parameters
stringoldFileName
stringnewFileName
boolean?hotSpotTopLeft
(Default: false)
Returns
boolean?assigned

Spring.SetCustomCommandDrawData (function)

Register your custom cmd so it gets visible in the unit’s cmd queue

[source]

Spring.SetCustomCommandDrawData(integer, (string|integer)?, rgba?, boolean?) -> nil
Parameters
integercmdID
(string|integer)?cmdReference
The name or ID of an icon for command. Pass nil to clear draw data for command.
rgba?color
(Default: white)
boolean?showArea
(Default: false)
Returns
nil

Spring.WarpMouse (function)

[source]
Spring.WarpMouse(number, number) -> nil
Parameters
numberx
numbery
Returns
nil

Spring.SetMouseCursor (function)

[source]
Spring.SetMouseCursor(string, number?) -> nil
Parameters
stringcursorName
number?cursorScale
(Default: 1.0)
Returns
nil

Spring.SetLosViewColors (function)

[source]
Spring.SetLosViewColors(rgb, rgb, rgb, rgb, rgb) -> nil
Parameters
rgbalways
rgbLOS
rgbradar
rgbjam
rgbradar2
Returns
nil

Spring.SetNanoProjectileParams (function)

[source]
Spring.SetNanoProjectileParams(number?, number?, number?, number?, number?, number?) -> nil
Parameters
number?rotVal
(Default: 0) in degrees
number?rotVel
(Default: 0) in degrees
number?rotAcc
(Default: 0) in degrees
number?rotValRng
(Default: 0) in degrees
number?rotVelRng
(Default: 0) in degrees
number?rotAccRng
(Default: 0) in degrees
Returns
nil

Spring.SetConfigInt (function)

[source]
Spring.SetConfigInt(string, integer, boolean?) -> nil
Parameters
stringname
integervalue
boolean?useOverlay
(Default: false) If true, the value will only be set in memory, and not be restored for the next game.
Returns
nil

Spring.SetConfigFloat (function)

[source]
Spring.SetConfigFloat(string, number, boolean?) -> nil
Parameters
stringname
numbervalue
boolean?useOverlay
(Default: false) If true, the value will only be set in memory, and not be restored for the next game.
Returns
nil

Spring.SetConfigString (function)

[source]
Spring.SetConfigString(string, string, boolean?) -> nil
Parameters
stringname
stringvalue
boolean?useOverlay
(Default: false) If true, the value will only be set in memory, and not be restored for the next game.
Returns
nil

Spring.Quit (function)

Closes the application

[source]

Spring.Quit() -> nil
Returns
nil

Spring.SetUnitGroup (function)

[source]
Spring.SetUnitGroup(integer, integer) -> nil
Parameters
integerunitID
integergroupID
the group number to be assigned, or -1 for deassignment
Returns
nil

Spring.GiveOrder (function)

Give order to selected units.

[source]

Spring.GiveOrder((CMD|integer), CreateCommandParams, CreateCommandOptions?, integer?) -> boolean
Parameters
(CMD|integer)cmdID
The command ID.
CreateCommandParamsparams
Parameters for the given command.
CreateCommandOptions?options
integer?timeout
Absolute frame number. The command will be discarded after this frame. Only respected by mobile units.
Returns
boolean

Spring.GiveOrderToUnit (function)

Give order to specific unit.

[source]

Spring.GiveOrderToUnit(integer, (CMD|integer), CreateCommandParams?, CreateCommandOptions?, integer?) -> boolean
Parameters
integerunitID
(CMD|integer)cmdID
The command ID.
CreateCommandParams?params
Parameters for the given command.
CreateCommandOptions?options
integer?timeout
Absolute frame number. The command will be discarded after this frame. Only respected by mobile units.
Returns
boolean

Spring.GiveOrderToUnit (function overload 1)

[source]
Spring.GiveOrderToUnit(integer, (CMD|integer), CreateCommandParams?, CreateCommandOptions?, integer?) -> boolean
Parameters
integerunitID
(CMD|integer)cmdID
The command ID.
CreateCommandParams?params
Parameters for the given command.
CreateCommandOptions?options
integer?timeout
Absolute frame number. The command will be discarded after this frame. Only respected by mobile units.
Returns
booleanunitOrdered

Spring.GiveOrderToUnitMap (function)

Give order to multiple units, specified by table keys.

[source]

Spring.GiveOrderToUnitMap(table<integer,any>, (CMD|integer), CreateCommandParams?, CreateCommandOptions?, integer?) -> boolean
Parameters
table<integer,any>unitMap
A table with unit IDs as keys.
(CMD|integer)cmdID
The command ID.
CreateCommandParams?params
Parameters for the given command.
CreateCommandOptions?options
integer?timeout
Absolute frame number. The command will be discarded after this frame. Only respected by mobile units.
Returns
booleanorderGiven

Spring.GiveOrderToUnitMap (function overload 1)

Give order to multiple units, specified by table keys.

[source]

Spring.GiveOrderToUnitMap(table<integer,any>, (CMD|integer), CreateCommandParams?, CreateCommandOptions?, integer?) -> integer
Parameters
table<integer,any>unitMap
A table with unit IDs as keys.
(CMD|integer)cmdID
The command ID.
CreateCommandParams?params
Parameters for the given command.
CreateCommandOptions?options
integer?timeout
Absolute frame number. The command will be discarded after this frame. Only respected by mobile units.
Returns
integerunitsOrdered
The number of units ordered.

Spring.GiveOrderToUnitArray (function)

Give order to an array of units.

[source]

Spring.GiveOrderToUnitArray(integer[], (CMD|integer), CreateCommandParams?, CreateCommandOptions?, integer?) -> boolean
Parameters
integer[]unitIDs
Array of unit IDs.
(CMD|integer)cmdID
The command ID.
CreateCommandParams?params
Parameters for the given command.
CreateCommandOptions?options
integer?timeout
Absolute frame number. The command will be discarded after this frame. Only respected by mobile units.
Returns
booleanordersGiven
true if any orders were sent, otherwise false.

Spring.GiveOrderToUnitArray (function overload 1)

[source]
Spring.GiveOrderToUnitArray(integer[], (CMD|integer), CreateCommandParams?, CreateCommandOptions?, integer?) -> integer
Parameters
integer[]unitIDs
An array of unit IDs.
(CMD|integer)cmdID
The command ID.
CreateCommandParams?params
Parameters for the given command.
CreateCommandOptions?options
integer?timeout
Absolute frame number. The command will be discarded after this frame. Only respected by mobile units.
Returns
integerunitsOrdered
The number of units ordered.

Spring.GiveOrderArrayToUnit (function)

[source]
Spring.GiveOrderArrayToUnit(integer, CreateCommand[]) -> boolean
Parameters
integerunitID
Unit ID.
CreateCommand[]commands
Returns
booleanordersGiven
true if any orders were sent, otherwise false.

Spring.GiveOrderArrayToUnit (function overload 1)

[source]
Spring.GiveOrderArrayToUnit(integer, CreateCommand[]) -> boolean
Parameters
integerunitID
CreateCommand[]commands
Returns
booleanordersGiven

Spring.GiveOrderArrayToUnitMap (function)

[source]
Spring.GiveOrderArrayToUnitMap(table<integer,any>, CreateCommand[]) -> boolean
Parameters
table<integer,any>unitMap
A table with unit IDs as keys.
CreateCommand[]commands
Returns
booleanordersGiven
true if any orders were sent, otherwise false.

Spring.GiveOrderArrayToUnitMap (function overload 1)

[source]
Spring.GiveOrderArrayToUnitMap(table<integer,any>, CreateCommand[]) -> integer
Parameters
table<integer,any>unitMap
A table with unit IDs as keys.
CreateCommand[]commands
Returns
integerunitsOrdered
The number of units ordered.

Spring.GiveOrderArrayToUnitArray (function)

[source]
Spring.GiveOrderArrayToUnitArray(integer[], CreateCommand[], boolean?) -> boolean
Parameters
integer[]unitIDs
Array of unit IDs.
CreateCommand[]commands
boolean?pairwise

(Default: false) When false, assign all commands to each unit.

When true, assign commands according to index between units and cmds arrays.

If len(unitArray) < len(cmdArray) only the first len(unitArray) commands will be assigned, and vice-versa.

Returns
booleanordersGiven
true if any orders were sent, otherwise false.

Spring.GiveOrderArrayToUnitArray (function overload 1)

[source]
Spring.GiveOrderArrayToUnitArray(integer[], CreateCommand[], boolean?) -> integer
Parameters
integer[]unitIDs
Array of unit IDs.
CreateCommand[]commands
boolean?pairwise

(Default: false) When false, assign all commands to each unit.

When true, assign commands according to index between units and cmds arrays.

If len(unitArray) < len(cmdArray) only the first len(unitArray) commands will be assigned, and vice-versa.

Returns
integerunitsOrdered
The number of units ordered.

Spring.SetBuildSpacing (function)

[source]
Spring.SetBuildSpacing(number) -> nil
Parameters
numberspacing
Returns
nil

Spring.SetBuildFacing (function)

[source]
Spring.SetBuildFacing(FacingInteger) -> nil
Parameters
FacingIntegerfacing
Returns
nil

Spring.SendLuaUIMsg (function)

[source]
Spring.SendLuaUIMsg(string, string) -> nil
Parameters
stringmessage
stringmode
“s”/“specs” | “a”/“allies”
Returns
nil

Spring.SendLuaGaiaMsg (function)

[source]
Spring.SendLuaGaiaMsg(string) -> nil
Parameters
stringmessage
Returns
nil

Spring.SendLuaRulesMsg (function)

[source]
Spring.SendLuaRulesMsg(string) -> nil
Parameters
stringmessage
Returns
nil

Spring.SendLuaMenuMsg (function)

[source]
Spring.SendLuaMenuMsg(string) -> nil
Parameters
stringmsg

Spring.SetShareLevel (function)

[source]
Spring.SetShareLevel(string, number) -> nil
Parameters
stringresource
metal | energy
numbershareLevel
Returns
nil

Spring.ShareResources (function)

[source]
Spring.ShareResources(integer, string) -> nil
Parameters
integerteamID
stringunits
Returns
nil

Spring.ShareResources (function overload 1)

[source]
Spring.ShareResources(integer, string, number) -> nil
Parameters
integerteamID
stringresource
metal | energy
numberamount
Returns
nil

Spring.SetLastMessagePosition (function)

[source]
Spring.SetLastMessagePosition(number, number, number) -> nil
Parameters
numberx
numbery
numberz
Returns
nil

Spring.MarkerAddPoint (function)

[source]
Spring.MarkerAddPoint(number, number, number, string?, boolean?) -> nil
Parameters
numberx
numbery
numberz
string?text
(Default: "")
boolean?localOnly
Returns
nil

Spring.MarkerAddLine (function)

[source]
Spring.MarkerAddLine(number, number, number, number, number, number, boolean?, number?) -> nil
Parameters
numberx1
numbery1
numberz1
numberx2
numbery2
numberz2
boolean?localOnly
(Default: false)
number?playerId
Returns
nil

Spring.MarkerErasePosition (function)

[source]

Issue an erase command for markers on the map.

Spring.MarkerErasePosition(number, number, number, nil, boolean?, number?, boolean?) -> nil
Parameters
numberx
numbery
numberz
nilunused
This argument is ignored.
boolean?localOnly
(Default: false) do not issue a network message, erase only for the current player
number?playerId
when not specified it uses the issuer playerId
boolean?alwaysErase
(Default: false) erase any marker when localOnly and current player is spectating. Allows spectators to erase players markers locally
Returns
nil

Spring.SetAtmosphere (function)

Set atmosphere parameters

[source]

Spring.SetAtmosphere(AtmosphereParams) -> nil
Parameters
AtmosphereParamsparams

Spring.SetSunDirection (function)

[source]
Spring.SetSunDirection(number, number, number, number?) -> nil
Parameters
numberdirX
numberdirY
numberdirZ
number?intensity
(Default: 1.0)
Returns
nil

Spring.SetSunLighting (function)

Modify sun lighting parameters.

lua Spring.SetSunLighting({groundAmbientColor = {1, 0.1, 1}, groundDiffuseColor = {1, 0.1, 1} })

[source]

Spring.SetSunLighting({ groundAmbientColor: rgb, groundDiffuseColor: rgb }) -> nil
Parameters
{ groundAmbientColor: rgb, groundDiffuseColor: rgb }params

Spring.SetMapRenderingParams (function)

Allows to change map rendering params at runtime.

[source]

Spring.SetMapRenderingParams(MapRenderingParams) -> nil
Parameters
MapRenderingParamsparams
Returns
nil

Spring.ForceTesselationUpdate (function)

[source]
Spring.ForceTesselationUpdate(boolean?, boolean?) -> boolean
Parameters
boolean?normal
(Default: true)
boolean?shadow
(Default: false)
Returns
booleanupdated

Spring.SendSkirmishAIMessage (function)

[source]
Spring.SendSkirmishAIMessage(number, string) -> boolean?
Parameters
numberaiTeam
stringmessage
Returns
boolean?ai_processed

Spring.SetLogSectionFilterLevel (function)

[source]
Spring.SetLogSectionFilterLevel(string, (string|number)?) -> nil
Parameters
stringsectionName
(string|number)?logLevel
Returns
nil

Spring.GarbageCollectCtrl (function)

[source]
Spring.GarbageCollectCtrl(integer?, integer?, integer?, integer?, number?, number?, number?, number?) -> nil
Parameters
integer?itersPerBatch
integer?numStepsPerIter
integer?minStepsPerIter
integer?maxStepsPerIter
number?minLoopRunTime
number?maxLoopRunTime
number?baseRunTimeMult
number?baseMemLoadMult
Returns
nil

Spring.SetAutoShowMetal (function)

[source]
Spring.SetAutoShowMetal(boolean) -> nil
Parameters
booleanautoShow
Returns
nil

Spring.SetDrawSky (function)

[source]
Spring.SetDrawSky(boolean) -> nil
Parameters
booleandrawSky
Returns
nil

Spring.SetDrawWater (function)

[source]
Spring.SetDrawWater(boolean) -> nil
Parameters
booleandrawWater
Returns
nil

Spring.SetDrawGround (function)

[source]
Spring.SetDrawGround(boolean) -> nil
Parameters
booleandrawGround
Returns
nil

Spring.SetDrawGroundDeferred (function)

[source]
Spring.SetDrawGroundDeferred(boolean, boolean?) -> nil
Parameters
booleandrawGroundDeferred
boolean?drawGroundForward
allows disabling of the forward pass
Returns
nil

Spring.SetDrawModelsDeferred (function)

[source]
Spring.SetDrawModelsDeferred(boolean, boolean, boolean?, boolean?) -> nil
Parameters
booleandrawUnitsDeferred
booleandrawFeaturesDeferred
boolean?drawUnitsForward
allows disabling of the respective forward passes
boolean?drawFeaturesForward
allows disabling of the respective forward passes
Returns
nil

Spring.SetVideoCapturingMode (function)

This doesn’t actually record the game in any way, it just regulates the framerate and interpolations.

[source]

Spring.SetVideoCapturingMode(boolean) -> nil
Parameters
booleanallowCaptureMode
Returns
nil

Spring.SetVideoCapturingTimeOffset (function)

[source]
Spring.SetVideoCapturingTimeOffset(boolean) -> nil
Parameters
booleantimeOffset
Returns
nil

Spring.SetWaterParams (function)

Does not need cheating enabled.

Allows to change water params (mostly BumpWater ones) at runtime. You may want to set BumpWaterUseUniforms in your springrc to 1, then you don’t even need to restart BumpWater via /water 4.

[source]

Spring.SetWaterParams(WaterParams) -> nil
Parameters
WaterParamswaterParams
Returns
nil

Spring.PreloadUnitDefModel (function)

[source]

Allow the engine to load the unit’s model (and texture) in a background thread. Wreckages and buildOptions of a unit are automatically preloaded.

Spring.PreloadUnitDefModel(integer) -> nil
Parameters
integerunitDefID
Returns
nil

Spring.PreloadFeatureDefModel (function)

[source]
Spring.PreloadFeatureDefModel(integer) -> nil
Parameters
integerfeatureDefID
Returns
nil

Spring.PreloadSoundItem (function)

[source]
Spring.PreloadSoundItem(string) -> nil
Parameters
stringname
Returns
nil

Spring.LoadModelTextures (function)

[source]
Spring.LoadModelTextures(string) -> boolean?
Parameters
stringmodelName
Returns
boolean?success

Spring.CreateGroundDecal (function)

[source]
Spring.CreateGroundDecal() -> number?
Returns
number?decalID

Spring.DestroyGroundDecal (function)

[source]
Spring.DestroyGroundDecal(integer) -> boolean
Parameters
integerdecalID
Returns
booleandelSuccess

Spring.SetGroundDecalPosAndDims (function)

[source]
Spring.SetGroundDecalPosAndDims(integer, number?, number?, number?, number?, number?) -> boolean
Parameters
integerdecalID
number?midPosX
(Default: currMidPosX)
number?midPosZ
(Default: currMidPosZ)
number?sizeX
(Default: currSizeX)
number?sizeZ
(Default: currSizeZ)
number?projCubeHeight
(Default: calculateProjCubeHeight)
Returns
booleandecalSet

Spring.SetGroundDecalQuadPosAndHeight (function)

[source]

Use for non-rectangular decals

Spring.SetGroundDecalQuadPosAndHeight(integer, xz?, xz?, xz?, xz?, number?) -> boolean
Parameters
integerdecalID
xz?posTL
(Default: currPosTL)
xz?posTR
(Default: currPosTR)
xz?posBR
(Default: currPosBR)
xz?posBL
(Default: currPosBL)
number?projCubeHeight
(Default: calculateProjCubeHeight)
Returns
booleandecalSet

Spring.SetGroundDecalRotation (function)

[source]
Spring.SetGroundDecalRotation(integer, number?) -> boolean
Parameters
integerdecalID
number?rot
(Default: random) in radians
Returns
booleandecalSet

Spring.SetGroundDecalTexture (function)

[source]
Spring.SetGroundDecalTexture(integer, string, boolean?) -> boolean?
Parameters
integerdecalID
stringtextureName
The texture has to be on the atlas which seems to mean it’s defined as an explosion, unit tracks, or building plate decal on some unit already (no arbitrary textures)
boolean?isMainTex
(Default: true) If false, it sets the normals/glow map
Returns
boolean?decalSet

Spring.SetGroundDecalTextureParams (function)

[source]
Spring.SetGroundDecalTextureParams(integer, number?, number?) -> boolean?
Parameters
integerdecalID
number?texWrapDistance
(Default: currTexWrapDistance) if non-zero sets the mode to repeat the texture along the left-right direction of the decal every texWrapFactor elmos
number?texTraveledDistance
(Default: currTexTraveledDistance) shifts the texture repetition defined by texWrapFactor so the texture of a next line in the continuous multiline can start where the previous finished. For that it should collect all elmo lengths of the previously set multiline segments.
Returns
boolean?decalSet

Spring.SetGroundDecalTextureParams (function overload 1)

[source]
Spring.SetGroundDecalTextureParams(integer) -> number?, number
Parameters
integerdecalID
Returns
number?texWrapDistance
If non-zero, sets the mode to repeat the texture along the left-right direction of the decal every texWrapFactor elmos.
numbertexTraveledDistance
Shifts the texture repetition defined by texWrapFactor so the texture of a next line in the continuous multiline can start where the previous finished. For that it should collect all elmo lengths of the previously set multiline segments.

Spring.SetGroundDecalAlpha (function)

[source]
Spring.SetGroundDecalAlpha(integer, number?, number?) -> boolean
Parameters
integerdecalID
number?alpha
(Default: currAlpha) Between 0 and 1
number?alphaFalloff
(Default: currAlphaFalloff) Between 0 and 1, per second
Returns
booleandecalSet

Spring.SetGroundDecalNormal (function)

[source]

Sets projection cube normal to orient in 3D space. In case the normal (0,0,0) then normal is picked from the terrain

Spring.SetGroundDecalNormal(integer, number?, number?, number?) -> boolean
Parameters
integerdecalID
number?normalX
(Default: 0)
number?normalY
(Default: 0)
number?normalZ
(Default: 0)
Returns
booleandecalSet

Spring.SetGroundDecalTint (function)

[source]

Sets the tint of the ground decal. Color = 2 * textureColor * tintColor Respectively a color of (0.5, 0.5, 0.5, 0.5) is effectively no tint

Spring.SetGroundDecalTint(integer, number?, number?, number?, number?) -> boolean
Parameters
integerdecalID
number?tintColR
(Default: curTintColR)
number?tintColG
(Default: curTintColG)
number?tintColB
(Default: curTintColB)
number?tintColA
(Default: curTintColA)
Returns
booleandecalSet

Spring.SetGroundDecalMisc (function)

[source]

Sets varios secondary parameters of a decal

Spring.SetGroundDecalMisc(integer, number?, number?, number?, number?, number?) -> boolean
Parameters
integerdecalID
number?dotElimExp
(Default: curValue) pow(max(dot(decalProjVector, SurfaceNormal), 0.0), dotElimExp), used to reduce decal artifacts on surfaces non-collinear with the projection vector
number?refHeight
(Default: curValue)
number?minHeight
(Default: curValue)
number?maxHeight
(Default: curValue)
number?forceHeightMode
(Default: curValue) in case forceHeightMode==1.0 ==> force relative height: midPoint.y = refHeight + clamp(midPoint.y - refHeight, minHeight); forceHeightMode==2.0 ==> force absolute height: midPoint.y = midPoint.y, clamp(midPoint.y, minHeight, maxHeight); other forceHeightMode values do not enforce the height of the center position
Returns
booleandecalSet

Spring.SetGroundDecalCreationFrame (function)

[source]

Use separate min and max for “gradient” style decals such as tank tracks

Spring.SetGroundDecalCreationFrame(integer, number?, number?) -> boolean
Parameters
integerdecalID
number?creationFrameMin
(Default: currCreationFrameMin)
number?creationFrameMax
(Default: currCreationFrameMax)
Returns
booleandecalSet

Spring.SDLSetTextInputRect (function)

[source]
Spring.SDLSetTextInputRect(number, number, number, number) -> nil
Parameters
numberx
numbery
numberwidth
numberheight
Returns
nil

Spring.SDLStartTextInput (function)

[source]
Spring.SDLStartTextInput() -> nil
Returns
nil

Spring.SDLStopTextInput (function)

[source]
Spring.SDLStopTextInput() -> nil
Returns
nil

Spring.SetWindowGeometry (function)

[source]
Spring.SetWindowGeometry(number, number, number, number, number, boolean, boolean) -> nil
Parameters
numberdisplayIndex
numberwinRelPosX
numberwinRelPosY
numberwinSizeX
numberwinSizeY
booleanfullScreen
booleanborderless
Returns
nil

Spring.SetWindowMinimized (function)

[source]
Spring.SetWindowMinimized() -> boolean
Returns
booleanminimized

Spring.SetWindowMaximized (function)

[source]
Spring.SetWindowMaximized() -> boolean
Returns
booleanmaximized

Spring.Reload (function)

[source]
Spring.Reload(string) -> nil
Parameters
stringstartScript
the CONTENT of the script.txt spring should use to start.
Returns
nil

Spring.Restart (function)

[source]

If this call returns, something went wrong

Spring.Restart(string, string) -> nil
Parameters
stringcommandline_args
commandline arguments passed to spring executable.
stringstartScript
Returns
nil

Spring.Start (function)

Launches a new Spring instance without terminating the existing one.

[source]

If this call returns, something went wrong

Spring.Start(string, string) -> nil
Parameters
stringcommandline_args
commandline arguments passed to spring executable.
stringstartScript
the CONTENT of the script.txt spring should use to start (if empty, no start-script is added, you can still point spring to your custom script.txt when you add the file-path to commandline_args.
Returns
nil

Spring.SetWMIcon (function)

Sets the icon for the process which is seen in the OS task-bar and other places (default: spring-logo).

[source]

Note: has to be 24bit or 32bit. Note: on windows, it has to be 32x32 pixels in size (recommended for cross-platform) Note: *.bmp images have to be in BGR format (default for m$ ones). Note: *.ico images are not supported.

Spring.SetWMIcon(string) -> nil
Parameters
stringiconFileName
Returns
nil

Spring.SetWMCaption (function)

Set the window title for the process

[source]

Spring.SetWMCaption(string, string?) -> nil
Parameters
stringtitle
(Default: “Spring <version>")
string?titleShort

(Default: “Spring <version>") displayed in the OS task-bar .

Note

shortTitle is only ever possibly used under X11 (Linux & OS X), but not with QT (KDE) and never under Windows.

Returns
nil

Spring.ClearWatchDogTimer (function)

[source]
Spring.ClearWatchDogTimer(string?) -> nil
Parameters
string?threadName
(Default: main)
Returns
nil

Spring.SetClipboard (function)

[source]
Spring.SetClipboard(string) -> nil
Parameters
stringtext
Returns
nil

Spring.Yield (function)

Relinquish control of the game loading thread and OpenGL context back to the UI (LuaIntro).

[source]

Should be called after each widget/unsynced gadget is loaded in widget/gadget handler. Use it to draw screen updates and process windows events.

Spring.Yield() -> boolean
Returns
booleanwhen
true caller should continue calling Spring.Yield during the widgets/gadgets load, when false it shouldn’t call it any longer.

Spring.SetAlly (function)

Changes the value of the (one-sided) alliance between: firstAllyTeamID -> secondAllyTeamID.

[source]

Spring.SetAlly(integer, integer, boolean) -> nil
Parameters
integerfirstAllyTeamID
integersecondAllyTeamID
booleanally
Returns
nil

Spring.SetAllyTeamStartBox (function)

Changes the start box position of an allyTeam.

[source]

Spring.SetAllyTeamStartBox(integer, number, number, number, number) -> nil
Parameters
integerallyTeamID
numberxMin
left start box boundary (elmos)
numberzMin
top start box boundary (elmos)
numberxMax
right start box boundary (elmos)
numberzMax
bottom start box boundary (elmos)
Returns
nil

Spring.AssignPlayerToTeam (function)

Assigns a player to a team.

[source]

Spring.AssignPlayerToTeam(integer, integer) -> nil
Parameters
integerplayerID
integerteamID
Returns
nil

Spring.SetGlobalLos (function)

Changes access to global line of sight for a team and its allies.

[source]

Spring.SetGlobalLos(integer, boolean) -> nil
Parameters
integerallyTeamID
booleangloballos
Returns
nil

Spring.KillTeam (function)

Will declare a team to be dead (no further orders can be assigned to such teams units).

[source]

Gaia team cannot be killed.

Spring.KillTeam(integer) -> nil
Parameters
integerteamID
Returns
nil

Spring.GameOver (function)

Declare game over.

[source]

Spring.GameOver(integer[]) -> integer
Parameters
integer[]winningAllyTeamIDs

A list of winning ally team IDs.

Pass multiple winners to declare a draw. Pass no arguments if undecided (e.g. when dropped from the host).

Returns
integerNumber
of accepted (valid) ally teams.

Spring.SetTidal (function)

Set tidal strength

[source]

Spring.SetTidal(number) -> nil
Parameters
numberstrength
Returns
nil

Spring.SetWind (function)

Set wind strength

[source]

Spring.SetWind(number, number) -> nil
Parameters
numberminStrength
numbermaxStrength
Returns
nil

Spring.AddTeamResource (function)

Adds metal or energy resources to the specified team.

[source]

Spring.AddTeamResource(integer, ResourceName, number) -> nil
Parameters
integerteamID
ResourceNametype
numberamount
Returns
nil

Spring.UseTeamResource (function)

Consumes metal or energy resources of the specified team.

[source]

Spring.UseTeamResource(integer, ResourceName, number) -> boolean
Parameters
integerteamID
ResourceNametype
Resource type.
numberamount
Amount of resource to use.
Returns
booleanhadEnough

Spring.UseTeamResource (function overload 1)

Consumes metal and/or energy resources of the specified team.

[source]

Spring.UseTeamResource(integer, ResourceUsage) -> boolean
Parameters
integerteamID
ResourceUsageamount
Returns
booleanhadEnough

Spring.SetTeamResource (function)

[source]
Spring.SetTeamResource(integer, (ResourceName|StorageName), number) -> nil
Parameters
integerteamID
(ResourceName|StorageName)resource
numberamount
Returns
nil

Spring.SetTeamShareLevel (function)

Changes the resource amount for a team beyond which resources aren’t stored but transferred to other allied teams if possible.

[source]

Spring.SetTeamShareLevel(integer, ResourceName, number) -> nil
Parameters
integerteamID
ResourceNametype
numberamount
Returns
nil

Spring.ShareTeamResource (function)

Transfers resources between two teams.

[source]

Spring.ShareTeamResource(integer, integer, ResourceName, number) -> nil
Parameters
integerteamID_src
integerteamID_recv
ResourceNametype
numberamount
Returns
nil

Spring.SetGameRulesParam (function)

[source]
Spring.SetGameRulesParam(string, (number|string)?, losAccess?) -> nil
Parameters
stringparamName
(number|string)?paramValue
numeric paramValues in quotes will be converted to number.
losAccess?losAccess
Returns
nil

Spring.SetTeamRulesParam (function)

[source]
Spring.SetTeamRulesParam(integer, string, (number|string)?, losAccess?) -> nil
Parameters
integerteamID
stringparamName
(number|string)?paramValue
numeric paramValues in quotes will be converted to number.
losAccess?losAccess
Returns
nil

Spring.SetPlayerRulesParam (function)

[source]
Spring.SetPlayerRulesParam(integer, string, (number|string)?, losAccess?) -> nil
Parameters
integerplayerID
stringparamName
(number|string)?paramValue
numeric paramValues in quotes will be converted to number.
losAccess?losAccess
Returns
nil

Spring.SetUnitRulesParam (function)

[source]
Spring.SetUnitRulesParam(integer, string, (number|string)?, losAccess?) -> nil
Parameters
integerunitID
stringparamName
(number|string)?paramValue
numeric paramValues in quotes will be converted to number.
losAccess?losAccess
Returns
nil

Spring.SetFeatureRulesParam (function)

[source]
Spring.SetFeatureRulesParam(integer, string, (number|string)?, losAccess?) -> nil
Parameters
integerfeatureID
stringparamName
(number|string)?paramValue
numeric paramValues in quotes will be converted to number.
losAccess?losAccess
Returns
nil

Spring.CallCOBScript (function)

[source]
Spring.CallCOBScript(integer, (integer|string)?, integer, [any, ]*) -> number ...
Parameters
integerunitID
(integer|string)?funcName
Function ID or name.
integerretArgs
Number of values to return.
any...
Arguments
Returns
number ...

Spring.GetCOBScriptID (function)

[source]
Spring.GetCOBScriptID(integer, string) -> integer?
Parameters
integerunitID
stringfuncName
Returns
integer?funcID

Spring.CreateUnit (function)

[source]

See Spring.DestroyUnit

Spring.CreateUnit((string|integer), number, number, number, Facing, integer, boolean?, boolean?, integer?, integer?) -> integer?
Parameters
(string|integer)unitDef
UnitDef name or ID.
numberposX
numberposY
numberposZ
Facingfacing
integerteamID
boolean?build
(Default: false) The unit is created in “being built” state with zero buildProgress.
boolean?flattenGround
(Default: true) The unit flattens ground, if it normally does so.
integer?unitID
Request a specific unitID.
integer?builderID
Returns
integer?unitID
The ID of the created unit, or nil if the unit could not be created.

Spring.DestroyUnit (function)

[source]

See Spring.CreateUnit

Spring.DestroyUnit(integer, boolean?, boolean?, integer?, boolean?) -> nil
Parameters
integerunitID
boolean?selfd
(Default: false) makes the unit act like it self-destructed.
boolean?reclaimed
(Default: false) don’t show any DeathSequences, don’t leave a wreckage. This does not give back the resources to the team!
integer?attackerID
boolean?cleanupImmediately
(Default: false) stronger version of reclaimed, removes the unit unconditionally and makes its ID available for immediate reuse (otherwise it takes a few frames)
Returns
nil

Spring.TransferUnit (function)

[source]
Spring.TransferUnit(integer, integer, boolean?) -> nil
Parameters
integerunitID
integernewTeamID
boolean?given
(Default: true) if false, the unit is captured.
Returns
nil

Spring.SetUnitCosts (function)

[source]
Spring.SetUnitCosts(integer, table<number,number>) -> nil
Parameters
integerunitID
table<number,number>where
keys and values are, respectively and in this order: buildTime=amount, metalCost=amount, energyCost=amount
Returns
nil

Spring.SetUnitResourcing (function)

[source]
Spring.SetUnitResourcing(integer, string, number) -> nil
Parameters
integerunitID
stringres
numberamount
Returns
nil

Spring.SetUnitResourcing (function overload 1)

[source]
Spring.SetUnitResourcing(integer, table<string,number>) -> nil
Parameters
integerunitID
table<string,number>res
keys are: “[u|c][u|m][m|e]” unconditional | conditional, use | make, metal | energy. Values are amounts
Returns
nil

Spring.SetUnitStorage (function)

[source]
Spring.SetUnitStorage(integer, string, number) -> nil
Parameters
integerunitID
stringres
numberamount

Spring.SetUnitStorage (function overload 1)

[source]
Spring.SetUnitStorage(integer, ResourceUsage) -> nil
Parameters
integerunitID
ResourceUsageres
keys are: “[m|e]” metal | energy. Values are amounts

Spring.SetUnitTooltip (function)

[source]
Spring.SetUnitTooltip(integer, string) -> nil
Parameters
integerunitID
stringtooltip
Returns
nil

Spring.SetUnitHealth (function)

[source]

Note, if your game’s custom shading framework doesn’t support reverting into nanoframes then reverting into nanoframes via the “build” tag will fail to render properly.

See SetUnitHealthAmounts

Spring.SetUnitHealth(integer, (number|SetUnitHealthAmounts)) -> nil
Parameters
integerunitID
(number|SetUnitHealthAmounts)health
If a number, sets the units health to that value. Pass a table to update health, capture progress, paralyze damage, and build progress.
Returns
nil

Spring.SetUnitMaxHealth (function)

[source]
Spring.SetUnitMaxHealth(integer, number) -> nil
Parameters
integerunitID
numbermaxHealth
Returns
nil

Spring.SetUnitStockpile (function)

[source]
Spring.SetUnitStockpile(integer, number?, number?) -> nil
Parameters
integerunitID
number?stockpile
number?buildPercent
Returns
nil

Spring.SetUnitUseWeapons (function)

[source]
Spring.SetUnitUseWeapons(integer, number?, number?) -> nil
Parameters
integerunitID
number?forceUseWeapons
number?allowUseWeapons
Returns
nil

Spring.SetUnitWeaponState (function)

[source]
Spring.SetUnitWeaponState(integer, number, WeaponState) -> nil
Parameters
integerunitID
numberweaponNum
WeaponStatestates
Returns
nil

Spring.SetUnitWeaponState (function overload 1)

[source]
Spring.SetUnitWeaponState(integer, number, string, number) -> nil
Parameters
integerunitID
numberweaponNum
stringkey
numbervalue
Returns
nil

Spring.SetUnitWeaponDamages (function)

[source]
Spring.SetUnitWeaponDamages(integer, (number|"selfDestruct"|"explode"), WeaponDamages) -> nil
Parameters
integerunitID
(number|"selfDestruct"|"explode")weaponNum
WeaponDamagesdamages
Returns
nil

Spring.SetUnitWeaponDamages (function overload 1)

[source]
Spring.SetUnitWeaponDamages(integer, (number|"selfDestruct"|"explode"), string, number) -> nil
Parameters
integerunitID
(number|"selfDestruct"|"explode")weaponNum
stringkey
numbervalue
Returns
nil

Spring.SetUnitMaxRange (function)

[source]
Spring.SetUnitMaxRange(integer, number) -> nil
Parameters
integerunitID
numbermaxRange
Returns
nil

Spring.SetUnitExperience (function)

[source]

See Spring.GetUnitExperience

Spring.SetUnitExperience(integer, number) -> nil
Parameters
integerunitID
numberexperience
Returns
nil

Spring.AddUnitExperience (function)

[source]

See Spring.GetUnitExperience

Spring.AddUnitExperience(integer, number) -> nil
Parameters
integerunitID
numberdeltaExperience
Can be negative to subtract, but the unit will never have negative total afterwards
Returns
nil

Spring.SetUnitArmored (function)

[source]
Spring.SetUnitArmored(integer, boolean?, number?) -> nil
Parameters
integerunitID
boolean?armored
number?armorMultiple
Returns
nil

Spring.SetUnitLosMask (function)

[source]

The 3rd argument is either the bit-and combination of the following numbers:

LOS_INLOS = 1 LOS_INRADAR = 2 LOS_PREVLOS = 4 LOS_CONTRADAR = 8

or a table of the following form:

losTypes = { [los = boolean,] [radar = boolean,] [prevLos = boolean,] [contRadar = boolean] }

Spring.SetUnitLosMask(integer, number, (number|table)) -> nil
Parameters
integerunitID
numberallyTeam
(number|table)losTypes
Returns
nil

Spring.SetUnitLosState (function)

[source]
Spring.SetUnitLosState(integer, number, (number|table)) -> nil
Parameters
integerunitID
numberallyTeam
(number|table)los
Returns
nil

Spring.SetUnitCloak (function)

[source]

If the 2nd argument is a number, the value works like this: 1:=normal cloak 2:=for free cloak (cost no E) 3:=for free + no decloaking (except the unit is stunned) 4:=ultimate cloak (no ecost, no decloaking, no stunned decloak)

The decloak distance is only changed:

  • if the 3th argument is a number or a boolean.
  • if the boolean is false it takes the default decloak distance for that unitdef,
  • if the boolean is true it takes the absolute value of it.
Spring.SetUnitCloak(integer, (boolean|number), (boolean|number)) -> nil
Parameters
integerunitID
(boolean|number)cloak
(boolean|number)cloakArg
Returns
nil

Spring.SetUnitStealth (function)

[source]
Spring.SetUnitStealth(integer, boolean) -> nil
Parameters
integerunitID
booleanstealth
Returns
nil

Spring.SetUnitSonarStealth (function)

[source]
Spring.SetUnitSonarStealth(integer, boolean) -> nil
Parameters
integerunitID
booleansonarStealth
Returns
nil

Spring.SetUnitSeismicSignature (function)

[source]
Spring.SetUnitSeismicSignature(integer, number) -> nil
Parameters
integerunitID
numberseismicSignature
Returns
nil

Spring.SetUnitLeavesGhost (function)

Set whether unit leaves static radar ghosts.

[source]

Spring.SetUnitLeavesGhost(boolean, boolean?) -> nil
Parameters
booleanleavesGhost
boolean?leaveDeadGhost
(Default: false) leave a dead ghost behind if disabling and the unit had a live static ghost.

Spring.SetUnitAlwaysVisible (function)

[source]
Spring.SetUnitAlwaysVisible(integer, boolean) -> nil
Parameters
integerunitID
booleanalwaysVisible
Returns
nil

Spring.SetUnitUseAirLos (function)

[source]
Spring.SetUnitUseAirLos(integer, boolean) -> nil
Parameters
integerunitID
booleanuseAirLos
Returns
nil

Spring.SetUnitMetalExtraction (function)

[source]
Spring.SetUnitMetalExtraction(integer, number, number?) -> nil
Parameters
integerunitID
numberdepth
corresponds to metal extraction rate
number?range
similar to “extractsMetal” in unitDefs.
Returns
nil

Spring.SetUnitHarvestStorage (function)

See also harvestStorage UnitDef tag.

[source]

Spring.SetUnitHarvestStorage(integer, number) -> nil
Parameters
integerunitID
numbermetal
Returns
nil

Spring.SetUnitBuildParams (function)

[source]
Spring.SetUnitBuildParams(integer, string, (number|boolean)) -> nil
Parameters
integerunitID
stringparamName
one of buildRange|buildDistance|buildRange3D
(number|boolean)value
boolean when paramName is buildRange3D, otherwise number.
Returns
nil

Spring.SetUnitBuildSpeed (function)

[source]
Spring.SetUnitBuildSpeed(integer, number, number?, number?, number?, number?) -> nil
Parameters
integerbuilderID
numberbuildSpeed
number?repairSpeed
number?reclaimSpeed
number?captureSpeed
number?terraformSpeed
Returns
nil

Spring.SetUnitNanoPieces (function)

[source]

This saves a lot of engine calls, by replacing: function script.QueryNanoPiece() return currentpiece end Use it!

Spring.SetUnitNanoPieces(integer, table) -> nil
Parameters
integerbuilderID
tablepieces
Returns
nil

Spring.SetUnitBlocking (function)

[source]
Spring.SetUnitBlocking(integer, boolean?, boolean?, boolean?, boolean?, boolean?, boolean?, boolean?) -> boolean
Parameters
integerunitID
boolean?isBlocking
If true add this unit to the GroundBlockingMap, but only if it collides with solid objects (or is being set to collide with the isSolidObjectCollidable argument). If false, remove this unit from the GroundBlockingMap. No change if nil.
boolean?isSolidObjectCollidable
Enable or disable collision with solid objects, or no change if nil.
boolean?isProjectileCollidable
Enable or disable collision with projectiles, or no change if nil.
boolean?isRaySegmentCollidable
Enable or disable collision with ray segments, or no change if nil.
boolean?crushable
Enable or disable crushable, or no change if nil.
boolean?blockEnemyPushing
Enable or disable blocking enemy pushing, or no change if nil.
boolean?blockHeightChanges
Enable or disable blocking height changes, or no change if nil.
Returns
booleanisBlocking

Spring.SetUnitCrashing (function)

[source]
Spring.SetUnitCrashing(integer, boolean) -> boolean
Parameters
integerunitID
booleancrashing
Returns
booleansuccess

Spring.SetUnitShieldState (function)

[source]
Spring.SetUnitShieldState(integer, integer?, boolean?, number?) -> nil
Parameters
integerunitID
integer?weaponID
(Default: -1)
boolean?enabled
number?power
Returns
nil

Spring.SetUnitShieldRechargeDelay (function)

[source]
Spring.SetUnitShieldRechargeDelay(integer, integer?, number?) -> nil
Parameters
integerunitID
integer?weaponID
(optional if the unit only has one shield)
number?rechargeTime
(in seconds; emulates a regular hit if nil)
Returns
nil

Spring.SetUnitFlanking (function)

[source]
Spring.SetUnitFlanking(integer, string, number, number?, number?) -> nil
Parameters
integerunitID
stringtype
“dir”|“minDamage”|“maxDamage”|“moveFactor”|“mode”
numberarg1
x|minDamage|maxDamage|moveFactor|mode
number?y
only when type is “dir”
number?z
only when type is “dir”
Returns
nil

Spring.SetUnitPhysicalStateBit (function)

[source]
Spring.SetUnitPhysicalStateBit(integer, ) -> nil
Parameters
integerunitID
Physical
Returns
nil

Spring.GetUnitPhysicalState (function)

[source]
Spring.GetUnitPhysicalState(integer) -> number
Parameters
integerunitID
Returns
numberUnit
’s PhysicalState bitmask

Spring.SetUnitNeutral (function)

[source]
Spring.SetUnitNeutral(integer, boolean) -> boolean?
Parameters
integerunitID
booleanneutral
Returns
boolean?setNeutral

Spring.SetUnitTarget (function)

Defines a unit’s target.

[source]

Spring.SetUnitTarget(integer, integer?, boolean?, boolean?, number?) -> boolean
Parameters
integerunitID
integer?enemyUnitID
when nil drops the units current target.
boolean?dgun
(Default: false)
boolean?userTarget
(Default: false)
number?weaponNum
(Default: -1)
Returns
booleansuccess

Spring.SetUnitTarget (function overload 1)

[source]
Spring.SetUnitTarget(integer, number?, number?, number?, boolean?, boolean?, number?) -> boolean
Parameters
integerunitID
number?x
when nil or not passed it will drop target and ignore other parameters
number?y
number?z
boolean?dgun
(Default: false)
boolean?userTarget
(Default: false)
number?weaponNum
(Default: -1)
Returns
booleansuccess

Spring.SetUnitMidAndAimPos (function)

[source]
Spring.SetUnitMidAndAimPos(integer, number, number, number, number, number, number, boolean?) -> boolean
Parameters
integerunitID
numbermpX
new middle positionX of unit
numbermpY
new middle positionY of unit
numbermpZ
new middle positionZ of unit
numberapX
new positionX that enemies aim at on this unit
numberapY
new positionY that enemies aim at on this unit
numberapZ
new positionZ that enemies aim at on this unit
boolean?relative
(Default: false) are the new coordinates relative to world (false) or unit (true) coordinates? Also, note that apy is inverted!
Returns
booleansuccess

Spring.SetUnitRadiusAndHeight (function)

[source]
Spring.SetUnitRadiusAndHeight(integer, number, number) -> boolean
Parameters
integerunitID
numberradius
numberheight
Returns
booleansuccess

Spring.SetUnitBuildeeRadius (function)

[source]

Sets the unit’s radius for when targeted by build, repair, reclaim-type commands.

Spring.SetUnitBuildeeRadius(integer, number) -> nil
Parameters
integerunitID
numberbuild
radius for when targeted by build, repair, reclaim-type commands.
Returns
nil

Spring.SetUnitPieceParent (function)

Changes the pieces hierarchy of a unit by attaching a piece to a new parent.

[source]

Spring.SetUnitPieceParent(integer, number, number) -> nil
Parameters
integerunitID
numberAlteredPiece
numberParentPiece
Returns
nil

Spring.SetUnitPieceMatrix (function)

Sets the local (i.e. parent-relative) matrix of the given piece.

[source]

If any of the first three elements are non-zero, and also blocks all script animations from modifying it until {0, 0, 0} is passed.

Spring.SetUnitPieceMatrix(integer, number, number[]) -> nil
Parameters
integerunitID
numberpieceNum
number[]matrix
an array of 16 floats
Returns
nil

Spring.SetUnitCollisionVolumeData (function)

[source]
Spring.SetUnitCollisionVolumeData(integer, number, number, number, number, number, number, number, number, number) -> nil
Parameters
integerunitID
numberscaleX
numberscaleY
numberscaleZ
numberoffsetX
numberoffsetY
numberoffsetZ
numbervType
numbertType
numberAxis
Returns
nilenum
COLVOL_TYPES { COLVOL_TYPE_DISABLED = -1, COLVOL_TYPE_ELLIPSOID = 0, COLVOL_TYPE_CYLINDER, COLVOL_TYPE_BOX, COLVOL_TYPE_SPHERE, COLVOL_NUM_TYPES // number of non-disabled collision volume types }; enum COLVOL_TESTS { COLVOL_TEST_DISC = 0, COLVOL_TEST_CONT = 1, COLVOL_NUM_TESTS = 2 // number of tests }; enum COLVOL_AXES { COLVOL_AXIS_X = 0, COLVOL_AXIS_Y = 1, COLVOL_AXIS_Z = 2, COLVOL_NUM_AXES = 3 // number of collision volume axes };

Spring.SetUnitPieceCollisionVolumeData (function)

[source]
Spring.SetUnitPieceCollisionVolumeData(integer, number, boolean, number, number, number, number, number, number, number?, number?) -> nil
Parameters
integerunitID
numberpieceIndex
booleanenable
numberscaleX
numberscaleY
numberscaleZ
numberoffsetX
numberoffsetY
numberoffsetZ
number?volumeType
number?primaryAxis
Returns
nil

Spring.SetUnitPieceVisible (function)

[source]
Spring.SetUnitPieceVisible(integer, number, boolean) -> nil
Parameters
integerunitID
numberpieceIndex
booleanvisible
Returns
nil

Spring.SetUnitSensorRadius (function)

[source]
Spring.SetUnitSensorRadius(integer, ("los"|"airLos"|"radar"|"sonar"|"seismic"|"radarJammer"...), number) -> number?
Parameters
integerunitID
("los"|"airLos"|"radar"|"sonar"|"seismic"|"radarJammer"...)type
numberradius
Returns
number?New
radius, or nil if unit is invalid.

Spring.SetUnitPosErrorParams (function)

Sets a unit’s radar wobble

Controls how much a unit’s radar dot will wobble. Note that setting this above the allyTeam’s default wobble may result in the edgemost dot positions failing to register in ray traces, i.e. things like native “is under cursor” checks and some Lua interfaces.

[source]

Spring.SetUnitPosErrorParams(integer, number, number, number, number, number, number, number?) -> nil
Parameters
integerunitID
numberposErrorVectorX
numberposErrorVectorY
numberposErrorVectorZ
numberposErrorDeltaX
numberposErrorDeltaY
numberposErrorDeltaZ
number?nextPosErrorUpdate
Returns
nil

Spring.SetUnitMoveGoal (function)

Used by default commands to get in build-, attackrange etc.

[source]

Spring.SetUnitMoveGoal(integer, number, number, number, number?, number?, boolean?) -> nil
Parameters
integerunitID
numbergoalX
numbergoalY
numbergoalZ
number?goalRadius
number?moveSpeed
boolean?moveRaw
Returns
nil

Spring.SetUnitLandGoal (function)

Used in conjunction with Spring.UnitAttach et al. to re-implement old airbase & fuel system in Lua.

[source]

Spring.SetUnitLandGoal(integer, number, number, number, number?) -> nil
Parameters
integerunitID
numbergoalX
numbergoalY
numbergoalZ
number?goalRadius
Returns
nil

Spring.ClearUnitGoal (function)

[source]
Spring.ClearUnitGoal(integer) -> nil
Parameters
integerunitID
Returns
nil

Spring.SetUnitPhysics (function)

[source]
Spring.SetUnitPhysics(integer, number, number, number, number, number, number, number, number, number, number, number, number) -> nil
Parameters
integerunitID
numberposX
numberposY
numberposZ
numbervelX
numbervelY
numbervelZ
numberrotX
numberrotY
numberrotZ
numberdragX
numberdragY
numberdragZ
Returns
nil

Spring.SetUnitMass (function)

[source]
Spring.SetUnitMass(integer, number) -> nil
Parameters
integerunitID
numbermass
Returns
nil

Spring.SetUnitPosition (function)

Set unit position (2D)

[source]

Sets a unit’s position in 2D, at terrain height.

Spring.SetUnitPosition(integer, number, number, boolean?) -> nil
Parameters
integerunitID
numberx
numberz
boolean?floating
(Default: false) If true, over water the position is on surface. If false, on seafloor.
Returns
nil

Spring.SetUnitPosition (function overload 1)

Set unit position (3D)

[source]

Sets a unit’s position in 3D, at an arbitrary height.

Spring.SetUnitPosition(integer, number, number, number) -> nil
Parameters
integerunitID
numberx
numbery
numberz
Returns
nil

Spring.SetUnitRotation (function)

[source]

Note: PYR order

Spring.SetUnitRotation(integer, number, number, number) -> nil
Parameters
integerunitID
numberpitch
Rotation in X axis
numberyaw
Rotation in Y axis
numberroll
Rotation in Z axis
Returns
nil

Spring.SetUnitDirection (function)

[source]

Set unit front direction vector. The vector is normalized in the engine.

Deprecated: It’s strongly that you use the overload that accepts a right direction as frontDir alone doesn’t define object orientation.

Spring.SetUnitDirection(integer, number, number, number) -> nil
Parameters
integerunitID
numberfrontx
numberfronty
numberfrontz
Returns
nil

Spring.SetUnitDirection (function overload 1)

[source]

Set unit front and right direction vectors.

Both vectors will be normalized in the engine.

Spring.SetUnitDirection(integer, number, number, number, number, number, number) -> nil
Parameters
integerunitID
numberfrontx
numberfronty
numberfrontz
numberrightx
numberrighty
numberrightz
Returns
nil

Spring.SetUnitHeadingAndUpDir (function)

[source]

Use this call to set up unit direction in a robust way. If unit was completely upright, new {upx, upy, upz} direction will be used as new “up” vector, the rotation set by “heading” will remain preserved.

Spring.SetUnitHeadingAndUpDir(integer, Heading, number, number, number) -> nil
Parameters
integerunitID
Headingheading
numberupx
numberupy
numberupz
Returns
nil

Spring.SetUnitVelocity (function)

Set the velocity of a Unit

[source]

See Spring.SetUnitMoveCtrl for disabling/enabling this control

Spring.SetUnitVelocity(integer, number, number, number) -> nil
Parameters
integerunitID
numbervelX
in elmos/frame
numbervelY
in elmos/frame
numbervelZ
in elmos/frame

Spring.SetFactoryBuggerOff (function)

[source]
Spring.SetFactoryBuggerOff(integer, boolean?, number?, number?, Heading?, boolean?, boolean?) -> number?
Parameters
integerunitID
boolean?buggerOff
number?offset
number?radius
Heading?relHeading
boolean?spherical
boolean?forced
Returns
number?buggerOff

Spring.BuggerOff (function)

[source]
Spring.BuggerOff(number, number, number?, number, integer, boolean?, boolean?, integer?, number[]?) -> nil
Parameters
numberx
numbery
number?z
uses ground height when unspecified
numberradius
integerteamID
boolean?spherical
(Default: true)
boolean?forced
(Default: true)
integer?excludeUnitID
number[]?excludeUnitDefIDs
Returns
nil

Spring.AddUnitDamage (function)

[source]
Spring.AddUnitDamage(integer, number, number?, integer?, integer?, number?, number?, number?) -> nil
Parameters
integerunitID
numberdamage
number?paralyze
(Default: 0) equals to the paralyzetime in the WeaponDef.
integer?attackerID
(Default: -1)
integer?weaponID
(Default: -1)
number?impulseX
number?impulseY
number?impulseZ
Returns
nil

Spring.AddUnitImpulse (function)

[source]
Spring.AddUnitImpulse(integer, number, number, number, number?) -> nil
Parameters
integerunitID
numberx
numbery
numberz
number?decayRate
Returns
nil

Spring.AddUnitSeismicPing (function)

[source]
Spring.AddUnitSeismicPing(integer, number) -> nil
Parameters
integerunitID
numberpindSize
Returns
nil

Spring.AddUnitResource (function)

[source]
Spring.AddUnitResource(integer, string, number) -> nil
Parameters
integerunitID
stringresource
“m” | “e”
numberamount
Returns
nil

Spring.UseUnitResource (function)

[source]
Spring.UseUnitResource(integer, ResourceName, number) -> boolean?
Parameters
integerunitID
ResourceNameresource
numberamount
Returns
boolean?okay

Spring.UseUnitResource (function overload 1)

[source]
Spring.UseUnitResource(integer, ResourceUsage) -> boolean?
Parameters
integerunitID
ResourceUsageresources
Returns
boolean?okay

Spring.AddObjectDecal (function)

[source]
Spring.AddObjectDecal(integer) -> nil
Parameters
integerunitID
Returns
nil

Spring.RemoveObjectDecal (function)

[source]
Spring.RemoveObjectDecal(integer) -> nil
Parameters
integerunitID
Returns
nil

Spring.AddGrass (function)

[source]
Spring.AddGrass(number, number) -> nil
Parameters
numberx
numberz
Returns
nil

Spring.RemoveGrass (function)

[source]
Spring.RemoveGrass(number, number) -> nil
Parameters
numberx
numberz
Returns
nil

Spring.CreateFeature (function)

[source]
Spring.CreateFeature((string|integer), number, number, number, Heading?, integer?, integer?) -> integer
Parameters
(string|integer)featureDef
name or id
numberx
numbery
numberz
Heading?heading
integer?AllyTeamID
integer?featureID
Returns
integerfeatureID

Spring.DestroyFeature (function)

[source]
Spring.DestroyFeature(integer) -> nil
Parameters
integerfeatureID
Returns
nil

Spring.TransferFeature (function)

Feature Control

[source]

Spring.TransferFeature(integer, integer) -> nil
Parameters
integerfeatureID
integerteamID
Returns
nil

Spring.SetFeatureAlwaysVisible (function)

[source]
Spring.SetFeatureAlwaysVisible(integer, boolean) -> nil
Parameters
integerfeatureID
booleanenable
Returns
nil

Spring.SetFeatureUseAirLos (function)

[source]
Spring.SetFeatureUseAirLos(integer, boolean) -> nil
Parameters
integerfeatureID
booleanuseAirLos
Returns
nil

Spring.SetFeatureHealth (function)

[source]
Spring.SetFeatureHealth(integer, number) -> nil
Parameters
integerfeatureID
numberhealth
Returns
nil

Spring.SetFeatureMaxHealth (function)

[source]
Spring.SetFeatureMaxHealth(integer, number) -> nil
Parameters
integerfeatureID
numbermaxHealth
minimum 0.1
Returns
nil

Spring.SetFeatureReclaim (function)

[source]
Spring.SetFeatureReclaim(integer, number) -> nil
Parameters
integerfeatureID
numberreclaimLeft
Returns
nil

Spring.SetFeatureResources (function)

[source]
Spring.SetFeatureResources(integer, number, number, number?, number?, number?, number?) -> nil
Parameters
integerfeatureID
numbermetal
numberenergy
number?reclaimTime
number?reclaimLeft
number?featureDefMetal
number?featureDefEnergy
Returns
nil

Spring.SetFeatureResurrect (function)

[source]
Spring.SetFeatureResurrect(integer, (string|integer), Facing?, number?) -> nil
Parameters
integerfeatureID
(string|integer)unitDef
Can be a number id or a string name, this allows cancelling resurrection by passing -1.
Facing?facing
(Default: “south”)
number?progress
Set the level of progress.
Returns
nil

Spring.SetFeatureMoveCtrl (function)

Enable feature movement control.

[source]

Spring.SetFeatureMoveCtrl(integer, true, number?, number?, number?, number?, number?, number?) -> nil
Parameters
integerfeatureID
trueenabled
Enable feature movement.
number?initialVelocityX
Initial velocity on X axis, or nil for no change.
number?initialVelocityY
Initial velocity on Y axis, or nil for no change.
number?initialVelocityZ
Initial velocity on Z axis, or nil for no change.
number?accelerationX
Acceleration per frame on X axis, or nil for no change.
number?accelerationY
Acceleration per frame on Y axis, or nil for no change.
number?accelerationZ
Acceleration per frame on Z axis, or nil for no change.

Spring.SetFeatureMoveCtrl (function overload 1)

Disable feature movement control.

Optional parameter allow physics vectors to build when not using MoveCtrl.

It is necessary to unlock feature movement on x, z axis before changing feature physics.

For example:

lua – Unlock all movement before setting velocity. Spring.SetFeatureMoveCtrl(featureID,false,1,1,1,1,1,1,1,1,1)

– Set velocity. Spring.SetFeatureVelocity(featureID,10,0,10)

[source]

Spring.SetFeatureMoveCtrl(integer, false, number?, number?, number?, number?, number?, number?, number?, number?, number?) -> nil
Parameters
integerfeatureID
falseenabled
Disable feature movement.
number?velocityMaskX
Lock velocity change in X dimension when not using MoveCtrl. 0 to lock, non-zero to allow, or nil to for no change.
number?velocityMaskY
Lock velocity change in Y dimension when not using MoveCtrl. 0 to lock, non-zero to allow, or nil to for no change.
number?velocityMaskZ
Lock velocity change in Z dimension when not using MoveCtrl. 0 to lock, non-zero to allow, or nil to for no change.
number?impulseMaskX
Lock impulse in X dimension when not using MoveCtrl. 0 to lock, non-zero to allow, or nil to for no change.
number?impulseMaskY
Lock impulse in Y dimension when not using MoveCtrl. 0 to lock, non-zero to allow, or nil to for no change.
number?impulseMaskZ
Lock impulse in Z dimension when not using MoveCtrl. 0 to lock, non-zero to allow, or nil to for no change.
number?movementMaskX
Lock move in X dimension when not using MoveCtrl. 0 to lock the axis, non-zero to allow, or nil for no change.
number?movementMaskY
Lock move in Y dimension when not using MoveCtrl. 0 to lock the axis, non-zero to allow, or nil for no change.
number?movementMaskZ
Lock move in Z dimension when not using MoveCtrl. 0 to lock the axis, non-zero to allow, or nil for no change.

Spring.SetFeaturePhysics (function)

[source]
Spring.SetFeaturePhysics(integer, number, number, number, number, number, number, number, number, number, number, number, number) -> nil
Parameters
integerfeatureID
numberposX
numberposY
numberposZ
numbervelX
numbervelY
numbervelZ
numberrotX
numberrotY
numberrotZ
numberdragX
numberdragY
numberdragZ
Returns
nil

Spring.SetFeatureMass (function)

[source]
Spring.SetFeatureMass(integer, number) -> nil
Parameters
integerfeatureID
numbermass
Returns
nil

Spring.SetFeaturePosition (function)

[source]
Spring.SetFeaturePosition(integer, number, number, number, boolean?) -> nil
Parameters
integerfeatureID
numberx
numbery
numberz
boolean?snapToGround
Returns
nil

Spring.SetFeatureRotation (function)

[source]

Note: PYR order

Spring.SetFeatureRotation(integer, number, number, number) -> nil
Parameters
integerfeatureID
numberpitch
Rotation in X axis
numberyaw
Rotation in Y axis
numberroll
Rotation in Z axis
Returns
nil

Spring.SetFeatureDirection (function)

[source]

Set feature front direction vector. The vector is normalized in the engine.

Deprecated: It’s strongly that you use the overload that accepts a right direction as frontDir alone doesn’t define object orientation.

Spring.SetFeatureDirection(integer, number, number, number) -> nil
Parameters
integerfeatureID
numberfrontx
numberfronty
numberfrontz
Returns
nil

Spring.SetFeatureDirection (function overload 1)

[source]

Set feature front and right direction vectors.

Both vectors will be normalized in the engine.

Spring.SetFeatureDirection(integer, number, number, number, number, number, number) -> nil
Parameters
integerfeatureID
numberfrontx
numberfronty
numberfrontz
numberrightx
numberrighty
numberrightz
Returns
nil

Spring.SetFeatureHeadingAndUpDir (function)

[source]

Use this call to set up feature direction in a robust way. If feature was completely upright, new {upx, upy, upz} direction will be used as new “up” vector, the rotation set by “heading” will remain preserved.

Spring.SetFeatureHeadingAndUpDir(integer, Heading, number, number, number) -> nil
Parameters
integerfeatureID
Headingheading
numberupx
numberupy
numberupz
Returns
nil

Spring.SetFeatureVelocity (function)

Set the velocity of a Feature

[source]

See Spring.SetFeatureMoveCtrl for disabling/enabling this control

Spring.SetFeatureVelocity(integer, number, number, number) -> nil
Parameters
integerfeatureID
numbervelX
in elmos/frame
numbervelY
in elmos/frame
numbervelZ
in elmos/frame

Spring.SetFeatureBlocking (function)

[source]
Spring.SetFeatureBlocking(integer, boolean?, boolean?, boolean?, boolean?, boolean?, boolean?, boolean?) -> boolean
Parameters
integerfeatureID
boolean?isBlocking
If true add this feature to the GroundBlockingMap, but only if it collides with solid objects (or is being set to collide with the isSolidObjectCollidable argument). If false, remove this feature from the GroundBlockingMap. No change if nil.
boolean?isSolidObjectCollidable
Enable or disable collision with solid objects, or no change if nil.
boolean?isProjectileCollidable
Enable or disable collision with projectiles, or no change if nil.
boolean?isRaySegmentCollidable
Enable or disable collision with ray segments, or no change if nil.
boolean?crushable
Enable or disable crushable, or no change if nil.
boolean?blockEnemyPushing
Enable or disable blocking enemy pushing, or no change if nil.
boolean?blockHeightChanges
Enable or disable blocking height changes, or no change if nil.
Returns
booleanisBlocking

Spring.SetFeatureNoSelect (function)

[source]
Spring.SetFeatureNoSelect(integer, boolean) -> nil
Parameters
integerfeatureID
booleannoSelect
Returns
nil

Spring.SetFeatureMidAndAimPos (function)

[source]

Check Spring.SetUnitMidAndAimPos for further explanation of the arguments.

Spring.SetFeatureMidAndAimPos(integer, number, number, number, number, number, number, boolean?) -> boolean
Parameters
integerfeatureID
numbermpX
numbermpY
numbermpZ
numberapX
numberapY
numberapZ
boolean?relative
Returns
booleansuccess

Spring.SetFeatureRadiusAndHeight (function)

[source]
Spring.SetFeatureRadiusAndHeight(integer, number, number) -> boolean
Parameters
integerfeatureID
numberradius
numberheight
Returns
booleansuccess

Spring.SetFeatureCollisionVolumeData (function)

[source]

Check Spring.SetUnitCollisionVolumeData for further explanation of the arguments.

Spring.SetFeatureCollisionVolumeData(integer, number, number, number, number, number, number, number, number, number) -> nil
Parameters
integerfeatureID
numberscaleX
numberscaleY
numberscaleZ
numberoffsetX
numberoffsetY
numberoffsetZ
numbervType
numbertType
numberAxis
Returns
nil

Spring.SetFeaturePieceCollisionVolumeData (function)

[source]
Spring.SetFeaturePieceCollisionVolumeData(integer, number, boolean, number, number, number, number, number, number, number, number, number?) -> nil
Parameters
integerfeatureID
numberpieceIndex
booleanenable
numberscaleX
numberscaleY
numberscaleZ
numberoffsetX
numberoffsetY
numberoffsetZ
numberAxis
numbervolumeType
number?primaryAxis
Returns
nil

Spring.SetFeaturePieceVisible (function)

[source]
Spring.SetFeaturePieceVisible(integer, number, boolean) -> nil
Parameters
integerfeatureID
numberpieceIndex
booleanvisible
Returns
nil

Spring.SetProjectileAlwaysVisible (function)

[source]
Spring.SetProjectileAlwaysVisible(integer, boolean) -> nil
Parameters
integerprojectileID
booleanalwaysVisible
Returns
nil

Spring.SetProjectileUseAirLos (function)

[source]
Spring.SetProjectileUseAirLos(integer, boolean) -> nil
Parameters
integerprojectileID
booleanuseAirLos
Returns
nil

Spring.SetProjectileMoveControl (function)

Disables engine movecontrol, so lua can fully control the physics.

[source]

Spring.SetProjectileMoveControl(integer, boolean) -> nil
Parameters
integerprojectileID
booleanenable
Returns
nil

Spring.SetProjectilePosition (function)

[source]
Spring.SetProjectilePosition(integer, number?, number?, number?) -> nil
Parameters
integerprojectileID
number?posX
(Default: 0)
number?posY
(Default: 0)
number?posZ
(Default: 0)
Returns
nil

Spring.SetProjectileVelocity (function)

Set the velocity of a Projectile

[source]

See Spring.SetProjectileMoveCtrl for disabling/enabling this control

Spring.SetProjectileVelocity(integer, number, number, number) -> nil
Parameters
integerprojectileID
numbervelX
in elmos/frame
numbervelY
in elmos/frame
numbervelZ
in elmos/frame

Spring.SetProjectileCollision (function)

[source]
Spring.SetProjectileCollision(integer) -> nil
Parameters
integerprojectileID
Returns
nil

Spring.SetProjectileTarget (function)

[source]

targetTypeStr can be one of: ‘u’ - unit ‘f’ - feature ‘p’ - projectile while targetTypeInt is one of: string.byte(‘g’) := GROUND string.byte(‘u’) := UNIT string.byte(‘f’) := FEATURE string.byte(‘p’) := PROJECTILE

Spring.SetProjectileTarget(integer, number?, number?, number?) -> boolean?
Parameters
integerprojectileID
number?arg1
(Default: 0) targetID or posX
number?arg2
(Default: 0) targetType or posY
number?posZ
(Default: 0)
Returns
boolean?validTarget

Spring.SetProjectileTimeToLive (function)

[source]
Spring.SetProjectileTimeToLive(integer, number) -> nil
Parameters
integerprojectileID
numberttl
Remaining time to live in frames
Returns
nil

Spring.SetProjectileIsIntercepted (function)

[source]
Spring.SetProjectileIsIntercepted(integer) -> nil
Parameters
integerprojectileID
Returns
nil

Spring.SetProjectileDamages (function)

[source]
Spring.SetProjectileDamages(integer, number, string, number) -> nil
Parameters
integerunitID
numberweaponNum
stringkey
numbervalue
Returns
nil

Spring.SetProjectileIgnoreTrackingError (function)

[source]
Spring.SetProjectileIgnoreTrackingError(integer, boolean) -> nil
Parameters
integerprojectileID
booleanignore
Returns
nil

Spring.SetProjectileGravity (function)

[source]
Spring.SetProjectileGravity(integer, number?) -> nil
Parameters
integerprojectileID
number?grav
(Default: 0)
Returns
nil

Spring.SetPieceProjectileParams (function)

Set piece projectile params

Non passed or nil args don’t set params.

[source]

Spring.SetPieceProjectileParams(integer, number?, number?, number?, number?, number?, number?) -> nil
Parameters
integerprojectileID
number?explosionFlags
number?spinAngle
number?spinSpeed
number?spinVectorX
number?spinVectorY
number?spinVectorZ

Spring.SetProjectileCEG (function)

[source]
Spring.SetProjectileCEG(integer, string) -> nil
Parameters
integerprojectileID
stringceg_name
Returns
nil

Spring.UnitFinishCommand (function)

[source]
Spring.UnitFinishCommand(integer) -> nil
Parameters
integerunitID

Spring.LevelHeightMap (function)

Set the height of a point in the world.

[source]

Spring.LevelHeightMap(number, number, number) -> nil
Parameters
numberx
numberz
numberheight

Spring.LevelHeightMap (function overload 1)

Set the height of a rectangle area in the world.

[source]

Spring.LevelHeightMap(number, number, number, number, number?) -> nil
Parameters
numberx1
numberz1
numberx2
numberz2
number?height
Returns
nil

Spring.AdjustHeightMap (function)

Add height to a point in the world.

[source]

Spring.AdjustHeightMap(number, number, number) -> nil
Parameters
numberx
numberz
numberheight

Spring.AdjustHeightMap (function overload 1)

Add height to a rectangle in the world.

[source]

Spring.AdjustHeightMap(number, number, number, number, number?) -> nil
Parameters
numberx1
numberz1
numberx2
numberz2
number?height
Returns
nil

Spring.RevertHeightMap (function)

Restore map height at a point in the world.

[source]

Spring.RevertHeightMap(number, number, number) -> nil
Parameters
numberx
numberz
numberheight

Spring.RevertHeightMap (function overload 1)

Restore map height of a rectangle area in the world.

[source]

Spring.RevertHeightMap(number, number, number, number, number?) -> nil
Parameters
numberx1
numberz1
numberx2
numberz2
number?height
Returns
nil

Spring.AddHeightMap (function)

Can only be called in Spring.SetHeightMapFunc

[source]

Spring.AddHeightMap(number, number, number) -> integer?
Parameters
numberx
numberz
numberheight
Returns
integer?newHeight

Spring.SetHeightMap (function)

[source]

Can only be called in Spring.SetHeightMapFunc.

Spring.SetHeightMap(number, number, number, number?) -> integer?
Parameters
numberx
numberz
numberheight
number?terraform
(Default: 1) Scaling factor.
Returns
integer?absHeightDiff
If 0, nothing will be changed (the terraform starts), if 1 the terraform will be finished.

Spring.SetHeightMapFunc (function)

[source]

Example code:

lua function Spring.SetHeightMapFunc(function() for z=0,Game.mapSizeZ, Game.squareSize do for x=0,Game.mapSizeX, Game.squareSize do Spring.SetHeightMap( x, z, 200 + 20 * math.cos((x + z) / 90) ) end end end)

Spring.SetHeightMapFunc(function, number, [number, ]*) -> integer?
Parameters
functionluaFunction
numberarg
number...
Returns
integer?absTotalHeightMapAmountChanged

Spring.LevelOriginalHeightMap (function)

Set the height of a point in the original map height cache.

[source]

Spring.LevelOriginalHeightMap(number, number, number) -> nil
Parameters
numberx
numberz
numberheight

Spring.LevelOriginalHeightMap (function overload 1)

Set the height of a rectangle area in the original map height cache.

[source]

Spring.LevelOriginalHeightMap(number, number, number, number, number) -> nil
Parameters
numberx1
numberz1
numberx2
numberz2
numberheight

Spring.AdjustOriginalHeightMap (function)

Add height to a point in the original map height cache.

[source]

Spring.AdjustOriginalHeightMap(number, number, number) -> nil
Parameters
numberx
numberz
numberheight

Spring.AdjustOriginalHeightMap (function overload 1)

Add height to a rectangle area in the original map height cache.

[source]

Spring.AdjustOriginalHeightMap(number, number, number, number, number) -> nil
Parameters
numberx1
numberz1
numberx2
numberz2
numberheight

Spring.RevertOriginalHeightMap (function)

Restore original map height at a point in the world.

[source]

Spring.RevertOriginalHeightMap(number, number, number) -> nil
Parameters
numberx
numberz
numberheight

Spring.RevertOriginalHeightMap (function overload 1)

Restore original map height over a rectangle in the world.

[source]

Spring.RevertOriginalHeightMap(number, number, number, number, number?) -> nil
Parameters
numberx1
numberz1
numberx2
numberz2
number?height
Returns
nil

Spring.AddOriginalHeightMap (function)

[source]

Can only be called in Spring.SetOriginalHeightMapFunc

Spring.AddOriginalHeightMap(number, number, number) -> nil
Parameters
numberx
numbery
numberheight
Returns
nil

Spring.SetOriginalHeightMap (function)

[source]

Can only be called in Spring.SetOriginalHeightMapFunc

Spring.SetOriginalHeightMap(number, number, number, number?) -> nil
Parameters
numberx
numbery
numberheight
number?factor
Returns
nil

Spring.SetOriginalHeightMapFunc (function)

[source]

Cannot recurse on itself

Spring.SetOriginalHeightMapFunc(function) -> nil
Parameters
functionheightMapFunc
Returns
nil

Spring.RebuildSmoothMesh (function)

[source]

Heightmap changes normally take up to 25s to propagate to the smooth mesh. Use to force a mapwide update immediately.

Spring.RebuildSmoothMesh() -> nil
Returns
nil

Spring.LevelSmoothMesh (function)

[source]
Spring.LevelSmoothMesh(number, number, number) -> nil
Parameters
numberx
numberz
numberheight

Spring.LevelSmoothMesh (function overload 1)

[source]
Spring.LevelSmoothMesh(number, number, number, number, number) -> nil
Parameters
numberx1
numberz1
numberx2
numberz2
numberheight

Spring.AdjustSmoothMesh (function)

[source]
Spring.AdjustSmoothMesh(number, number, number) -> nil
Parameters
numberx
numberz
numberheight

Spring.AdjustSmoothMesh (function overload 1)

[source]
Spring.AdjustSmoothMesh(number, number, number, number, number) -> nil
Parameters
numberx1
numberz1
numberx2
numberz2
numberheight

Spring.RevertSmoothMesh (function)

[source]
Spring.RevertSmoothMesh(number, number, number) -> nil
Parameters
numberx
numberz
numberorigFactor

Spring.RevertSmoothMesh (function overload 1)

[source]
Spring.RevertSmoothMesh(number, number, number, number, number) -> nil
Parameters
numberx1
numberz1
numberx2
numberz2
numberorigFactor

Spring.AddSmoothMesh (function)

Can only be called in Spring.SetSmoothMeshFunc.

[source]

Spring.AddSmoothMesh(number, number, number) -> number?
Parameters
numberx
numberz
numberheight
Returns
number?height
The new height, or nil if coordinates are invalid.

Spring.SetSmoothMesh (function)

Can only be called in Spring.SetSmoothMeshFunc.

[source]

Spring.SetSmoothMesh(number, number, number, number?) -> number?
Parameters
numberx
numberz
numberheight
number?terraform
(Default: 1)
Returns
number?The
absolute height difference, or nil if coordinates are invalid.

Spring.SetSmoothMeshFunc (function)

[source]
Spring.SetSmoothMeshFunc(function, any, [any, ]*) -> number?
Parameters
functionluaFunction
anyarg
any...
Returns
number?absTotalHeightMapAmountChanged

Spring.SetMapSquareTerrainType (function)

[source]
Spring.SetMapSquareTerrainType(number, number, number) -> integer?
Parameters
numberx
numberz
numbernewType
Returns
integer?oldType

Spring.SetTerrainTypeData (function)

[source]
Spring.SetTerrainTypeData(number, number?, number?, number?, number?) -> boolean?
Parameters
numbertypeIndex
number?speedTanks
(Default: nil)
number?speedKBOts
(Default: nil)
number?speedHovers
(Default: nil)
number?speedShips
(Default: nil)
Returns
boolean?
true

Spring.SetSquareBuildingMask (function)

[source]
Spring.SetSquareBuildingMask(number, number, number) -> nil
Parameters
numberx
numberz
numbermask
Returns
nilSee
also buildingMask unitdef tag.

Spring.UnitWeaponFire (function)

[source]
Spring.UnitWeaponFire(integer, integer) -> nil
Parameters
integerunitID
integerweaponID
Returns
nil

Spring.UnitWeaponHoldFire (function)

[source]
Spring.UnitWeaponHoldFire(integer, integer) -> nil
Parameters
integerunitID
integerweaponID
Returns
nil

Spring.ForceUnitCollisionUpdate (function)

Prevent collision checks from working on outdated data

There’s a rare edge case that requires units to be in specific positions and being shot by specific weapons but which can result in shots ghosting through the unit. This is because the unit’s collision volume is stale. The movement.unitQuadPositionUpdateRate modrule controls this behaviour and can guarantee 100% correctness if set to 1, but the default value is 3 and large-scale games generally don’t want to set it so low. This function lets you guarantee success for important weapons regardless of how high the normal update rate is set.

[source]

Spring.ForceUnitCollisionUpdate(integer) -> nil
Parameters
integerunitID
Returns
nil

Spring.UnitAttach (function)

[source]
Spring.UnitAttach(integer, integer, number) -> nil
Parameters
integertransporterID
integerpassengerID
numberpieceNum
Returns
nil

Spring.UnitDetach (function)

[source]
Spring.UnitDetach(integer) -> nil
Parameters
integerpassengerID
Returns
nil

Spring.UnitDetachFromAir (function)

[source]
Spring.UnitDetachFromAir(integer) -> nil
Parameters
integerpassengerID
Returns
nil

Spring.SetUnitLoadingTransport (function)

Disables collisions between the two units to allow colvol intersection during the approach.

[source]

Spring.SetUnitLoadingTransport(integer, integer) -> nil
Parameters
integerpassengerID
integertransportID
Returns
nil

Spring.SpawnProjectile (function)

[source]
Spring.SpawnProjectile(integer, ProjectileParams) -> integer?
Parameters
integerweaponDefID
ProjectileParamsprojectileParams
Returns
integer?projectileID

Spring.DeleteProjectile (function)

Silently removes projectiles (no explosion).

[source]

Spring.DeleteProjectile(integer) -> nil
Parameters
integerprojectileID
Returns
nil

Spring.SpawnExplosion (function)

[source]
Spring.SpawnExplosion(number?, number?, number?, number?, number?, number?, ExplosionParams) -> nil
Parameters
number?posX
(Default: 0)
number?posY
(Default: 0)
number?posZ
(Default: 0)
number?dirX
(Default: 0)
number?dirY
(Default: 0)
number?dirZ
(Default: 0)
ExplosionParamsexplosionParams
Returns
nil

Spring.SpawnCEG (function)

[source]
Spring.SpawnCEG(string, number?, number?, number?, number?, number?, number?, number?, number?) -> boolean?, integer
Parameters
stringcegname
number?posX
(Default: 0)
number?posY
(Default: 0)
number?posZ
(Default: 0)
number?dirX
(Default: 0)
number?dirY
(Default: 0)
number?dirZ
(Default: 0)
number?radius
(Default: 0)
number?damage
(Default: 0)
Returns
boolean?success
integercegID

Spring.SpawnSFX (function)

Equal to the UnitScript versions of EmitSFX, but takes position and direction arguments (in either unit- or piece-space) instead of a piece index.

[source]

Spring.SpawnSFX(integer?, integer?, number?, number?, number?, number?, number?, number?, number?, number?, boolean?) -> boolean?
Parameters
integer?unitID
(Default: 0)
integer?sfxID
(Default: 0)
number?posX
(Default: 0)
number?posY
(Default: 0)
number?posZ
(Default: 0)
number?dirX
(Default: 0)
number?dirY
(Default: 0)
number?dirZ
(Default: 0)
number?radius
(Default: 0)
number?damage
(Default: 0)
boolean?absolute
Returns
boolean?success

Spring.SetNoPause (function)

[source]
Spring.SetNoPause(boolean) -> nil
Parameters
booleannoPause
Returns
nil

Spring.SetExperienceGrade (function)

Defines how often Callins.UnitExperience will be called.

[source]

Spring.SetExperienceGrade(number, number?, number?, number?) -> nil
Parameters
numberexpGrade
number?ExpPowerScale
number?ExpHealthScale
number?ExpReloadScale
Returns
nil

Spring.SetRadarErrorParams (function)

[source]
Spring.SetRadarErrorParams(integer, number, number?, number?) -> nil
Parameters
integerallyTeamID
numberallyteamErrorSize
number?baseErrorSize
number?baseErrorMult
Returns
nil

Spring.EditUnitCmdDesc (function)

[source]
Spring.EditUnitCmdDesc(integer, integer, CommandDescription) -> nil
Parameters
integerunitID
integercmdDescID
CommandDescriptioncmdArray

Spring.InsertUnitCmdDesc (function)

Insert a command description at a specific index.

[source]

Spring.InsertUnitCmdDesc(integer, integer, CommandDescription) -> nil
Parameters
integerunitID
integerindex
CommandDescriptioncmdDesc

Spring.InsertUnitCmdDesc (function overload 1)

Insert a command description at the last position.

[source]

Spring.InsertUnitCmdDesc(integer, CommandDescription) -> nil
Parameters
integerunitID
CommandDescriptioncmdDesc

Spring.RemoveUnitCmdDesc (function)

[source]
Spring.RemoveUnitCmdDesc(integer, integer?) -> nil
Parameters
integerunitID
integer?cmdDescID

Spring.IsReplay (function)

[source]
Spring.IsReplay() -> boolean?
Returns
boolean?isReplay

Spring.GetReplayLength (function)

[source]
Spring.GetReplayLength() -> number?
Returns
number?timeInSeconds

Spring.GetGameName (function)

[source]
Spring.GetGameName() -> string
Returns
stringname

Spring.GetMenuName (function)

[source]
Spring.GetMenuName() -> string
Returns
stringname
name .. version from Modinfo.lua. E.g. “Spring: 1944 test-5640-ac2d15b”.

Spring.GetProfilerTimeRecord (function)

[source]
Spring.GetProfilerTimeRecord(string, boolean?) -> number, number, number, number, number, table<number,number>?
Parameters
stringprofilerName
boolean?frameData
(Default: false)
Returns
numbertotal
in ms
numbercurrent
in ms
numbermax_dt
numbertime_pct
numberpeak_pct
table<number,number>?frameData
Table where key is the frame index and value is duration.

Spring.GetProfilerRecordNames (function)

[source]
Spring.GetProfilerRecordNames() -> string[]
Returns
string[]profilerNames

Spring.GetLuaMemUsage (function)

[source]
Spring.GetLuaMemUsage() -> number, number, number, number, number, number, number, number
Returns
numberluaHandleAllocedMem
in kilobytes
numberluaHandleNumAllocs
divided by 1000
numberluaGlobalAllocedMem
in kilobytes
numberluaGlobalNumAllocs
divided by 1000
numberluaUnsyncedGlobalAllocedMem
in kilobytes
numberluaUnsyncedGlobalNumAllocs
divided by 1000
numberluaSyncedGlobalAllocedMem
in kilobytes
numberluaSyncedGlobalNumAllocs
divided by 1000

Spring.GetVidMemUsage (function)

[source]
Spring.GetVidMemUsage() -> number, number
Returns
numberusedMem
in MB
numberavailableMem
in MB

Spring.GetTimer (function)

Get a timer with millisecond resolution

[source]

Spring.GetTimer() -> integer
Returns
integer

Spring.GetTimerMicros (function)

Get a timer with microsecond resolution

[source]

Spring.GetTimerMicros() -> integer
Returns
integer

Spring.GetFrameTimer (function)

Get a timer for the start of the frame

[source]

This should give better results for camera interpolations

Spring.GetFrameTimer(boolean?) -> integer
Parameters
boolean?lastFrameTime
(Default: false) whether to use last frame time instead of last frame start
Returns
integer

Spring.DiffTimers (function)

[source]
Spring.DiffTimers(integer, integer, boolean?, boolean?) -> number
Parameters
integerendTimer
integerstartTimer
boolean?returnMs
(Default: false) whether to return timeAmount in milliseconds as opposed to seconds
boolean?fromMicroSecs
(Default: false) whether timers are in microseconds instead of milliseconds
Returns
numbertimeAmount

Spring.GetNumDisplays (function)

[source]
Spring.GetNumDisplays() -> number
Returns
numbernumDisplays
as returned by SDL_GetNumVideoDisplays

Spring.GetViewGeometry (function)

Get main view geometry (map and game rendering)

[source]

Spring.GetViewGeometry() -> number, number, number, number
Returns
numberviewSizeX
in px
numberviewSizeY
in px
numberviewPosX
offset from leftmost screen left border in px
numberviewPosY
offset from bottommost screen bottom border in px

Spring.GetDualViewGeometry (function)

Get dual view geometry (minimap when enabled)

[source]

Spring.GetDualViewGeometry() -> number, number, number, number
Returns
numberdualViewSizeX
in px
numberdualViewSizeY
in px
numberdualViewPosX
offset from leftmost screen left border in px
numberdualViewPosY
offset from bottommost screen bottom border in px

Spring.GetWindowGeometry (function)

Get main window geometry

[source]

Spring.GetWindowGeometry() -> number, number, number, number, number, number, number, number
Returns
numberwinSizeX
in px
numberwinSizeY
in px
numberwinPosX
in px
numberwinPosY
in px
numberwindowBorderTop
in px
numberwindowBorderLeft
in px
numberwindowBorderBottom
in px
numberwindowBorderRight
in px

Spring.GetWindowDisplayMode (function)

Get main window display mode

[source]

Spring.GetWindowDisplayMode() -> number, number, number, number
Returns
numberwidth
in px
numberheight
in px
numberbits
per pixel
numberrefresh
rate in Hz

Spring.GetScreenGeometry (function)

Get screen geometry

[source]

Spring.GetScreenGeometry(number?, boolean?) -> number, number, number, number, number, number, number, number, number?, number?, number?, number?
Parameters
number?displayIndex
(Default: -1)
boolean?queryUsable
(Default: false)
Returns
numberscreenSizeX
in px
numberscreenSizeY
in px
numberscreenPosX
in px
numberscreenPosY
in px
numberwindowBorderTop
in px
numberwindowBorderLeft
in px
numberwindowBorderBottom
in px
numberwindowBorderRight
in px
number?screenUsableSizeX
in px
number?screenUsableSizeY
in px
number?screenUsablePosX
in px
number?screenUsablePosY
in px

Spring.GetMiniMapGeometry (function)

Get minimap geometry

[source]

Spring.GetMiniMapGeometry() -> number, number, number, number, boolean, boolean
Returns
numberminimapPosX
in px
numberminimapPosY
in px
numberminimapSizeX
in px
numberminimapSizeY
in px
booleanminimized
booleanmaximized

Spring.GetMiniMapRotation (function)

Get minimap rotation

[source]

Spring.GetMiniMapRotation() -> number
Returns
numberamount
in radians

Spring.GetMiniMapDualScreen (function)

[source]
Spring.GetMiniMapDualScreen() -> ("left"|"right"|false)
Returns
("left"|"right"|false)position
“left” or “right” when dual screen is enabled, otherwise false.

Spring.GetSelectionBox (function)

Get vertices from currently active selection box

[source]

Returns nil when selection box is inactive

See Spring.GetUnitsInScreenRectangle

Spring.GetSelectionBox() -> number?, number?, number?, number?
Returns
number?left
number?top
number?right
number?bottom

Spring.GetDrawSelectionInfo (function)

[source]
Spring.GetDrawSelectionInfo() -> boolean
Returns
boolean

Spring.IsAboveMiniMap (function)

[source]
Spring.IsAboveMiniMap(number, number) -> boolean
Parameters
numberx
numbery
Returns
booleanisAbove

Spring.GetDrawFrame (function)

[source]
Spring.GetDrawFrame() -> number, number
Returns
numberlow_16bit
numberhigh_16bit

Spring.GetFrameTimeOffset (function)

[source]

Ideally, when running 30hz sim, and 60hz rendering, the draw frames should have and offset of either 0.0 frames, or 0.5 frames.

When draw frames are not integer multiples of sim frames, some interpolation happens, and this timeoffset shows how far along it is.

Spring.GetFrameTimeOffset() -> number?
Returns
number?offset
of the current draw frame from the last sim frame, expressed in fractions of a frame

Spring.GetLastUpdateSeconds (function)

[source]
Spring.GetLastUpdateSeconds() -> number?
Returns
number?lastUpdateSeconds

Spring.GetVideoCapturingMode (function)

[source]
Spring.GetVideoCapturingMode() -> boolean
Returns
booleanallowRecord

Spring.IsUnitAllied (function)

[source]
Spring.IsUnitAllied(integer) -> boolean?
Parameters
integerunitID
Returns
boolean?isAllied
nil with unitID cannot be parsed

Spring.IsUnitSelected (function)

[source]
Spring.IsUnitSelected(integer) -> boolean?
Parameters
integerunitID
Returns
boolean?isSelected
nil when unitID cannot be parsed

Spring.GetUnitLuaDraw (function)

[source]
Spring.GetUnitLuaDraw(integer) -> boolean?
Parameters
integerunitID
Returns
boolean?draw
nil when unitID cannot be parsed

Spring.GetUnitNoDraw (function)

[source]
Spring.GetUnitNoDraw(integer) -> boolean?
Parameters
integerunitID
Returns
boolean?nil
when unitID cannot be parsed

Spring.GetUnitEngineDrawMask (function)

[source]
Spring.GetUnitEngineDrawMask(integer) -> boolean?
Parameters
integerunitID
Returns
boolean?nil
when unitID cannot be parsed

Spring.GetUnitAlwaysUpdateMatrix (function)

[source]
Spring.GetUnitAlwaysUpdateMatrix(integer) -> boolean?
Parameters
integerunitID
Returns
boolean?nil
when unitID cannot be parsed

Spring.GetUnitDrawFlag (function)

[source]
Spring.GetUnitDrawFlag(integer) -> number?
Parameters
integerunitID
Returns
number?nil
when unitID cannot be parsed

Spring.GetUnitNoMinimap (function)

[source]
Spring.GetUnitNoMinimap(integer) -> boolean?
Parameters
integerunitID
Returns
boolean?nil
when unitID cannot be parsed

Spring.GetUnitNoGroup (function)

Check if a unit is not allowed to be added to a group by a player.

[source]

Spring.GetUnitNoGroup(integer) -> boolean?
Parameters
integerunitID
Returns
boolean?noGroup
true if the unit is not allowed to be added to a group, false if it is allowed to be added to a group, or nil when unitID is not valid.

Spring.GetUnitNoSelect (function)

[source]
Spring.GetUnitNoSelect(integer) -> boolean?
Parameters
integerunitID
Returns
boolean?noSelect
nil when unitID cannot be parsed.

Spring.UnitIconGetDraw (function)

[source]
Spring.UnitIconGetDraw(integer) -> boolean?
Parameters
integerunitID
Returns
boolean?drawIcon

Spring.GetUnitSelectionVolumeData (function)

[source]
Spring.GetUnitSelectionVolumeData(integer) -> number?, number, number, number, number, number, number, number, number, boolean
Parameters
integerunitID
Returns
number?scaleX
nil when unitID cannot be parsed
numberscaleY
numberscaleZ
numberoffsetX
numberoffsetY
numberoffsetZ
numbervolumeType
numberuseContHitTest
numbergetPrimaryAxis
booleanignoreHits

Spring.GetFeatureLuaDraw (function)

[source]
Spring.GetFeatureLuaDraw(integer) -> boolean?
Parameters
integerfeatureID
Returns
boolean?nil
when featureID cannot be parsed

Spring.GetFeatureNoDraw (function)

[source]
Spring.GetFeatureNoDraw(integer) -> boolean?
Parameters
integerfeatureID
Returns
boolean?nil
when featureID cannot be parsed

Spring.GetFeatureEngineDrawMask (function)

[source]
Spring.GetFeatureEngineDrawMask(integer) -> boolean?
Parameters
integerfeatureID
Returns
boolean?nil
when featureID cannot be parsed

Spring.GetFeatureAlwaysUpdateMatrix (function)

[source]
Spring.GetFeatureAlwaysUpdateMatrix(integer) -> boolean?
Parameters
integerfeatureID
Returns
boolean?nil
when featureID cannot be parsed

Spring.GetFeatureDrawFlag (function)

[source]
Spring.GetFeatureDrawFlag(integer) -> number?
Parameters
integerfeatureID
Returns
number?nil
when featureID cannot be parsed

Spring.GetFeatureSelectionVolumeData (function)

[source]
Spring.GetFeatureSelectionVolumeData(integer) -> number?, number, number, number, number, number, number, number, number, boolean
Parameters
integerfeatureID
Returns
number?scaleX
nil when unitID cannot be parsed
numberscaleY
numberscaleZ
numberoffsetX
numberoffsetY
numberoffsetZ
numbervolumeType
numberuseContHitTest
numbergetPrimaryAxis
booleanignoreHits

Spring.GetUnitTransformMatrix (function)

[source]
Spring.GetUnitTransformMatrix(integer) -> number?, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number
Parameters
integerunitID
Returns
number?m11
nil when unitID cannot be parsed
numberm12
numberm13
numberm14
numberm21
numberm22
numberm23
numberm24
numberm31
numberm32
numberm33
numberm34
numberm41
numberm42
numberm43
numberm44

Spring.GetFeatureTransformMatrix (function)

[source]
Spring.GetFeatureTransformMatrix(integer) -> number?, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number
Parameters
integerfeatureID
Returns
number?m11
nil when featureID cannot be parsed
numberm12
numberm13
numberm14
numberm21
numberm22
numberm23
numberm24
numberm31
numberm32
numberm33
numberm34
numberm41
numberm42
numberm43
numberm44

Spring.IsUnitInView (function)

[source]
Spring.IsUnitInView(integer) -> boolean?
Parameters
integerunitID
Returns
boolean?inView
nil when unitID cannot be parsed

Spring.IsUnitVisible (function)

[source]
Spring.IsUnitVisible(integer, number?, boolean) -> boolean?
Parameters
integerunitID
number?radius
unitRadius when not specified
booleancheckIcon
Returns
boolean?isVisible
nil when unitID cannot be parsed

Spring.IsUnitIcon (function)

[source]
Spring.IsUnitIcon(integer) -> boolean?
Parameters
integerunitID
Returns
boolean?isUnitIcon
nil when unitID cannot be parsed

Spring.IsAABBInView (function)

[source]
Spring.IsAABBInView(number, number, number, number, number, number) -> boolean
Parameters
numberminX
numberminY
numberminZ
numbermaxX
numbermaxY
numbermaxZ
Returns
booleaninView

Spring.IsSphereInView (function)

[source]
Spring.IsSphereInView(number, number, number, number?) -> boolean
Parameters
numberposX
numberposY
numberposZ
number?radius
(Default: 0)
Returns
booleaninView

Spring.GetUnitViewPosition (function)

[source]
Spring.GetUnitViewPosition(integer, boolean?) -> number?, number, number
Parameters
integerunitID
boolean?midPos
(Default: false)
Returns
number?x
nil when unitID cannot be parsed
numbery
numberz

Spring.GetVisibleUnits (function)

[source]
Spring.GetVisibleUnits(integer?, number?, boolean?) -> number[]?
Parameters
integer?teamID
(Default: -1)
number?radius
(Default: 30)
boolean?icons
(Default: true)
Returns
number[]?unitIDs

Spring.GetVisibleFeatures (function)

[source]
Spring.GetVisibleFeatures(integer?, number?, boolean?, boolean?) -> number[]?
Parameters
integer?teamID
(Default: -1)
number?radius
(Default: 30)
boolean?icons
(Default: true)
boolean?geos
(Default: true)
Returns
number[]?featureIDs

Spring.GetVisibleProjectiles (function)

[source]
Spring.GetVisibleProjectiles(integer?, boolean?, boolean?, boolean?) -> number[]?
Parameters
integer?allyTeamID
(Default: -1)
boolean?addSyncedProjectiles
(Default: true)
boolean?addWeaponProjectiles
(Default: true)
boolean?addPieceProjectiles
(Default: true)
Returns
number[]?projectileIDs

Spring.GetRenderUnits (function)

[source]
Spring.GetRenderUnits(DrawMask, true) -> integer[], DrawFlag[]
Parameters
DrawMaskdrawMask
(Default: 0) Filter objects by their draw flags.
truesendMask
Whether to send objects draw flags as second return
Returns
integer[]featureIDs
DrawFlag[]drawFlags

Spring.GetRenderUnits (function overload 1)

[source]
Spring.GetRenderUnits(DrawMask, false?) -> integer[]
Parameters
DrawMaskdrawMask
(Default: 0) Filter objects by their draw flags.
false?sendMask
Whether to send objects draw flags as second return
Returns
integer[]featureIDs

Spring.GetRenderUnitsDrawFlagChanged (function)

[source]

Gets a list of IDs of units that have had their draw flags changed, and the corresponding flags.

Spring.GetRenderUnitsDrawFlagChanged(true) -> integer[], DrawFlag[]
Parameters
truesendMask
Whether to send objects draw flags as second return.
Returns
integer[]ids
DrawFlag[]unitDrawFlags

Spring.GetRenderUnitsDrawFlagChanged (function overload 1)

[source]

Gets a list of IDs of units that have had their draw flags changed, and the corresponding flags.

Spring.GetRenderUnitsDrawFlagChanged(false?) -> integer[]
Parameters
false?sendMask
Whether to send objects draw flags as second return.
Returns
integer[]ids

Spring.GetRenderFeatures (function)

[source]
Spring.GetRenderFeatures(DrawMask, true) -> integer[], DrawFlag[]
Parameters
DrawMaskdrawMask
(Default: 0) Filter objects by their draw flags.
truesendMask
Whether to send objects draw flags as second return
Returns
integer[]featureIDs
DrawFlag[]drawFlags

Spring.GetRenderFeatures (function overload 1)

[source]
Spring.GetRenderFeatures(DrawMask, false?) -> integer[]
Parameters
DrawMaskdrawMask
(Default: 0) Filter objects by their draw flags.
false?sendMask
Whether to send objects draw flags as second return
Returns
integer[]featureIDs

Spring.GetRenderFeaturesDrawFlagChanged (function)

[source]

Gets a list of IDs of features that have had their draw flags changed, and the corresponding flags.

Spring.GetRenderFeaturesDrawFlagChanged(true) -> integer[], DrawFlag[]
Parameters
truesendMask
Whether to send objects draw flags as second return.
Returns
integer[]ids
DrawFlag[]unitDrawFlags

Spring.GetRenderFeaturesDrawFlagChanged (function overload 1)

[source]

Gets a list of IDs of features that have had their draw flags changed, and the corresponding flags.

Spring.GetRenderFeaturesDrawFlagChanged(false?) -> integer[]
Parameters
false?sendMask
Whether to send objects draw flags as second return.
Returns
integer[]ids

Spring.ClearUnitsPreviousDrawFlag (function)

[source]
Spring.ClearUnitsPreviousDrawFlag() -> nil

Spring.ClearFeaturesPreviousDrawFlag (function)

[source]
Spring.ClearFeaturesPreviousDrawFlag() -> nil

Spring.GetUnitsInScreenRectangle (function)

Get units inside a rectangle area on the map

[source]

Spring.GetUnitsInScreenRectangle(number, number, number, number, number?) -> number[]?
Parameters
numberleft
numbertop
numberright
numberbottom
number?allegiance
(Default: -1) teamID when > 0, when < 0 one of AllUnits = -1, MyUnits = -2, AllyUnits = -3, EnemyUnits = -4
Returns
number[]?unitIDs

Spring.GetFeaturesInScreenRectangle (function)

Get features inside a rectangle area on the map

[source]

Spring.GetFeaturesInScreenRectangle(number, number, number, number) -> number[]?
Parameters
numberleft
numbertop
numberright
numberbottom
Returns
number[]?featureIDs

Spring.GetLocalPlayerID (function)

[source]
Spring.GetLocalPlayerID() -> integer
Returns
integerplayerID

Spring.GetLocalTeamID (function)

[source]
Spring.GetLocalTeamID() -> integer
Returns
integerteamID

Spring.GetLocalAllyTeamID (function)

[source]
Spring.GetLocalAllyTeamID() -> integer
Returns
integerallyTeamID

Spring.GetSpectatingState (function)

[source]
Spring.GetSpectatingState() -> boolean, boolean, boolean
Returns
booleanspectating
booleanspectatingFullView
booleanspectatingFullSelect

Spring.GetSelectedUnits (function)

[source]
Spring.GetSelectedUnits() -> number[]
Returns
number[]unitIDs

Spring.GetSelectedUnitsSorted (function)

Get selected units aggregated by unitDefID

[source]

Spring.GetSelectedUnitsSorted() -> table<number,number[]>, integer
Returns
table<number,number[]>where
keys are unitDefIDs and values are unitIDs
integerthe
number of unitDefIDs

Spring.GetSelectedUnitsCounts (function)

Get an aggregate count of selected units per unitDefID

[source]

Spring.GetSelectedUnitsCounts() -> table<number,number>, integer
Returns
table<number,number>unitsCounts
where keys are unitDefIDs and values are counts
integerthe
number of unitDefIDs

Spring.GetSelectedUnitsCount (function)

Returns the amount of selected units

[source]

Spring.GetSelectedUnitsCount() -> number
Returns
numberselectedUnitsCount

Spring.GetBoxSelectionByEngine (function)

Get if selection box is handled by engine.

[source]

See Spring.SetBoxSelectionByEngine

Spring.GetBoxSelectionByEngine() -> boolean
Returns
booleanisHandledByEngine
true if the engine will select units inside selection box on release, otherwise false.

Spring.IsGUIHidden (function)

[source]
Spring.IsGUIHidden() -> boolean
Returns
boolean

Spring.HaveShadows (function)

[source]
Spring.HaveShadows() -> boolean
Returns
booleanshadowsLoaded

Spring.HaveAdvShading (function)

[source]
Spring.HaveAdvShading() -> boolean, boolean
Returns
booleanuseAdvShading
booleangroundUseAdvShading

Spring.GetWaterMode (function)

[source]

See rts/Rendering/Env/IWater.h

Spring.GetWaterMode() -> integer, string
Returns
integerwaterRendererID
stringwaterRendererName

Spring.GetMapDrawMode (function)

[source]
Spring.GetMapDrawMode() -> ("normal"|"height"|"metal"|"pathTraversability"|"los")
Returns
("normal"|"height"|"metal"|"pathTraversability"|"los")

Spring.GetMapSquareTexture (function)

[source]
Spring.GetMapSquareTexture(number, number, number, string, number?) -> boolean?
Parameters
numbertexSquareX
numbertexSquareY
numberlodMin
stringluaTexName
number?lodMax
(Default: lodMin)
Returns
boolean?success

Spring.GetLosViewColors (function)

[source]
Spring.GetLosViewColors() -> rgb, rgb, rgb, rgb, rgb
Returns
rgbalways
rgbLOS
rgbradar
rgbjam
rgbradar2

Spring.GetNanoProjectileParams (function)

[source]
Spring.GetNanoProjectileParams() -> number, number, number, number, number, number
Returns
numberrotVal
in degrees
numberrotVel
in degrees
numberrotAcc
in degrees
numberrotValRng
in degrees
numberrotVelRng
in degrees
numberrotAccRng
in degrees

Spring.GetCameraNames (function)

Get available cameras.

[source]

Spring.GetCameraNames() -> table<string,integer>
Returns
table<string,integer>indexByName
Table where where keys are names and values are indices.

Spring.GetCameraState (function)

[source]
Spring.GetCameraState(false) -> CameraState
Parameters
falseuseReturns
Returns
CameraStatecameraState

Spring.GetCameraState (function overload 1)

[source]
Spring.GetCameraState(true?) -> CameraName, any ...
Parameters
true?useReturns
(Default: true) Return multiple values instead of a table.
Returns
CameraNamename
any ...depend
on current controller mode.

Spring.GetCameraPosition (function)

[source]
Spring.GetCameraPosition() -> number, number, number
Returns
numberposX
numberposY
numberposZ

Spring.GetCameraDirection (function)

[source]
Spring.GetCameraDirection() -> number, number, number
Returns
numberdirX
numberdirY
numberdirZ

Spring.GetCameraRotation (function)

Get camera rotation in radians.

[source]

Spring.GetCameraRotation() -> number, number, number
Returns
numberrotX
Rotation around X axis in radians.
numberrotY
Rotation around Y axis in radians.
numberrotZ
Rotation around Z axis in radians.

Spring.GetCameraFOV (function)

[source]
Spring.GetCameraFOV() -> number, number
Returns
numbervFOV
numberhFOV

Spring.GetCameraVectors (function)

[source]
Spring.GetCameraVectors() -> CameraVectors
Returns
CameraVectors

Spring.WorldToScreenCoords (function)

[source]
Spring.WorldToScreenCoords(number, number, number) -> number, number, number
Parameters
numberx
numbery
numberz
Returns
numberviewPortX
numberviewPortY
numberviewPortZ

Spring.TraceScreenRay (function)

Get information about a ray traced from screen to world position

[source]

Extended to allow a custom plane, parameters are (0, 1, 0, D=0) where D is the offset D can be specified in the third argument (if all the bools are false) or in the seventh (as shown).

Intersection coordinates are returned in t[4],t[5],t[6] when the ray goes offmap and includeSky is true), or when no unit or feature is hit (or onlyCoords is true).

This will only work for units & objects with the default collision sphere. Per Piece collision and custom collision objects are not supported.

The unit must be selectable, to appear to a screen trace ray.

Spring.TraceScreenRay(number, number, boolean?, boolean?, boolean?, boolean?, number?) -> string?, (number|string|xyz)?, (number|string)?, xyz?
Parameters
numberscreenX
position on x axis in mouse coordinates (origin on left border of view)
numberscreenY
position on y axis in mouse coordinates (origin on top border of view)
boolean?onlyCoords
(Default: false) return only description (1st return value) and coordinates (2nd return value)
boolean?useMinimap
(Default: false) if position arguments are contained by minimap, use the minimap corresponding world position
boolean?includeSky
(Default: false)
boolean?ignoreWater
(Default: false)
number?heightOffset
(Default: 0)
Returns
string?description
of traced position
(number|string|xyz)?unitID
or feature, position triple when onlyCoords=true
(number|string)?featureID
or ground
xyz?coords

Spring.GetPixelDir (function)

[source]
Spring.GetPixelDir(number, number) -> number, number, number
Parameters
numberx
numbery
Returns
numberdirX
numberdirY
numberdirZ

Spring.GetTeamColor (function)

[source]
Spring.GetTeamColor(integer) -> number?, number?, number?, number?
Parameters
integerteamID
Returns
number?r
factor from 0 to 1
number?g
factor from 0 to 1
number?b
factor from 0 to 1
number?a
factor from 0 to 1

Spring.GetTeamOrigColor (function)

[source]
Spring.GetTeamOrigColor(integer) -> number?, number?, number?, number?
Parameters
integerteamID
Returns
number?r
factor from 0 to 1
number?g
factor from 0 to 1
number?b
factor from 0 to 1
number?a
factor from 0 to 1

Spring.GetDrawSeconds (function)

[source]
Spring.GetDrawSeconds() -> integer
Returns
integertime
Time in seconds.

Spring.GetSoundDevices (function)

[source]
Spring.GetSoundDevices() -> SoundDeviceSpec[]
Returns
SoundDeviceSpec[]devices
Sound devices.

Spring.GetSoundStreamTime (function)

[source]
Spring.GetSoundStreamTime() -> number, number
Returns
numberplayTime
numbertime

Spring.GetSoundEffectParams (function)

[source]
Spring.GetSoundEffectParams() -> nil

Spring.GetFPS (function)

[source]
Spring.GetFPS() -> number
Returns
numberfps

Spring.GetGameSpeed (function)

[source]
Spring.GetGameSpeed() -> number, number, boolean
Returns
numberwantedSpeedFactor
numberspeedFactor
booleanpaused

Spring.GetGameState (function)

[source]
Spring.GetGameState(number?) -> boolean, boolean, boolean, boolean
Parameters
number?maxLatency
(Default: 500) used for isSimLagging return parameter
Returns
booleandoneLoading
booleanisSavedGame
booleanisClientPaused
booleanisSimLagging

Spring.GetActiveCommand (function)

[source]
Spring.GetActiveCommand() -> number?, integer?, number?, string?
Returns
number?cmdIndex
integer?cmdID
number?cmdType
string?cmdName

Spring.GetDefaultCommand (function)

[source]
Spring.GetDefaultCommand() -> integer?, integer?, integer?, string?
Returns
integer?cmdIndex
integer?cmdID
integer?cmdType
string?cmdName

Spring.GetActiveCmdDescs (function)

[source]
Spring.GetActiveCmdDescs() -> CommandDescription[]
Returns
CommandDescription[]cmdDescs

Spring.GetActiveCmdDesc (function)

[source]
Spring.GetActiveCmdDesc(integer) -> CommandDescription?
Parameters
integercmdIndex
Returns
CommandDescription?

Spring.GetCmdDescIndex (function)

[source]
Spring.GetCmdDescIndex(integer) -> integer?
Parameters
integercmdID
Returns
integer?cmdDescIndex

Spring.GetBuildFacing (function)

[source]
Spring.GetBuildFacing() -> FacingInteger
Returns
FacingIntegerbuildFacing

Spring.GetBuildSpacing (function)

[source]
Spring.GetBuildSpacing() -> number
Returns
numberbuildSpacing

Spring.GetGatherMode (function)

[source]
Spring.GetGatherMode() -> number
Returns
numbergatherMode

Spring.GetActivePage (function)

[source]
Spring.GetActivePage() -> number, number
Returns
numberactivePage
numbermaxPage

Spring.GetMouseState (function)

[source]
Spring.GetMouseState() -> number, number, number, number, number, boolean, boolean
Returns
numberx
numbery
numberlmbPressed
left mouse button pressed
numbermmbPressed
middle mouse button pressed
numberrmbPressed
right mouse button pressed
booleanoffscreen
booleanmmbScroll

Spring.GetMouseCursor (function)

[source]
Spring.GetMouseCursor() -> string, number
Returns
stringcursorName
numbercursorScale

Spring.GetMouseStartPosition (function)

[source]
Spring.GetMouseStartPosition(number) -> number, number, number, number, number, number, number, number
Parameters
numberbutton
Returns
numberx
numbery
numbercamPosX
numbercamPosY
numbercamPosZ
numberdirX
numberdirY
numberdirZ

Spring.GetMouseButtonsPressed (function)

[source]

Get pressed status for specific buttons.

Spring.GetMouseButtonsPressed(integer, [integer, ]*) -> boolean ...
Parameters
integerbutton1
Index of the first button.
integer...
Indices for more buttons.
Returns
boolean ...Pressed
status for the buttons.

Spring.GetClipboard (function)

[source]
Spring.GetClipboard() -> string
Returns
stringtext

Spring.IsUserWriting (function)

[source]
Spring.IsUserWriting() -> boolean
Returns
boolean

Spring.GetLastMessagePositions (function)

[source]
Spring.GetLastMessagePositions() -> xyz[]
Returns
xyz[]message
positions

Spring.GetConsoleBuffer (function)

[source]
Spring.GetConsoleBuffer(number) -> { priority: integer, text: string }[]
Parameters
numbermaxLines
Returns
{ priority: integer, text: string }[]buffer

Spring.GetCurrentTooltip (function)

[source]
Spring.GetCurrentTooltip() -> string
Returns
stringtooltip

Spring.GetKeyFromScanSymbol (function)

[source]
Spring.GetKeyFromScanSymbol(string) -> string
Parameters
stringscanSymbol
Returns
stringkeyName

Spring.GetKeyState (function)

[source]
Spring.GetKeyState(number) -> boolean
Parameters
numberkeyCode
Returns
booleanpressed

Spring.GetModKeyState (function)

[source]
Spring.GetModKeyState() -> boolean, boolean, boolean, boolean
Returns
booleanalt
booleanctrl
booleanmeta
booleanshift

Spring.GetPressedKeys (function)

[source]
Spring.GetPressedKeys() -> table<(number|string),true>
Returns
table<(number|string),true>where
keys are keyCodes or key names

Spring.GetPressedScans (function)

[source]
Spring.GetPressedScans() -> table<(number|string),true>
Returns
table<(number|string),true>where
keys are scanCodes or scan names

Spring.GetInvertQueueKey (function)

[source]
Spring.GetInvertQueueKey() -> number?
Returns
number?queueKey

Spring.GetKeyCode (function)

[source]
Spring.GetKeyCode(string) -> number
Parameters
stringkeySym
Returns
numberkeyCode

Spring.GetKeySymbol (function)

[source]
Spring.GetKeySymbol(number) -> string, string
Parameters
numberkeyCode
Returns
stringkeyCodeName
stringkeyCodeDefaultName
name when there are not aliases

Spring.GetScanSymbol (function)

[source]
Spring.GetScanSymbol(number) -> string, string
Parameters
numberscanCode
Returns
stringscanCodeName
stringscanCodeDefaultName
name when there are not aliases

Spring.GetKeyBindings (function)

[source]
Spring.GetKeyBindings(string?, string?) -> KeyBinding[]
Parameters
string?keySet1
filters keybindings bound to this keyset
string?keySet2
OR bound to this keyset
Returns
KeyBinding[]

Spring.GetActionHotKeys (function)

[source]
Spring.GetActionHotKeys(string) -> string[]?
Parameters
stringactionName
Returns
string[]?hotkeys

Spring.GetGroupList (function)

[source]
Spring.GetGroupList() -> table<number,number>?
Returns
table<number,number>?where
keys are groupIDs and values are counts

Spring.GetSelectedGroup (function)

[source]
Spring.GetSelectedGroup() -> integer
Returns
integergroupID

Spring.GetUnitGroup (function)

[source]
Spring.GetUnitGroup(integer) -> integer?
Parameters
integerunitID
Returns
integer?groupID

Spring.GetGroupUnits (function)

[source]
Spring.GetGroupUnits(integer) -> number[]?
Parameters
integergroupID
Returns
number[]?unitIDs

Spring.GetGroupUnitsSorted (function)

[source]
Spring.GetGroupUnitsSorted(integer) -> table<number,number[]>?
Parameters
integergroupID
Returns
table<number,number[]>?where
keys are unitDefIDs and values are unitIDs

Spring.GetGroupUnitsCounts (function)

[source]
Spring.GetGroupUnitsCounts(integer) -> table<number,number>?
Parameters
integergroupID
Returns
table<number,number>?where
keys are unitDefIDs and values are counts

Spring.GetGroupUnitsCount (function)

[source]
Spring.GetGroupUnitsCount(integer) -> number?
Parameters
integergroupID
Returns
number?groupSize

Spring.GetPlayerRoster (function)

[source]
Spring.GetPlayerRoster(number?, boolean?) -> Roster[]?
Parameters
number?sortType
return unsorted if unspecified. Disabled = 0, Allies = 1, TeamID = 2, PlayerName = 3, PlayerCPU = 4, PlayerPing = 5
boolean?showPathingPlayers
(Default: false)
Returns
Roster[]?playerTable

Spring.GetPlayerTraffic (function)

[source]
Spring.GetPlayerTraffic(integer, integer?) -> number
Parameters
integerplayerID
integer?packetID
Returns
numbertraffic

Spring.GetPlayerStatistics (function)

[source]
Spring.GetPlayerStatistics(integer) -> number?, number, number, number, number
Parameters
integerplayerID
Returns
number?mousePixels
nil when invalid playerID
numbermouseClicks
numberkeyPresses
numbernumCommands
numberunitCommands

Spring.GetConfigParams (function)

[source]
Spring.GetConfigParams() -> Configuration[]
Returns
Configuration[]

Spring.GetConfigInt (function)

[source]
Spring.GetConfigInt(string, number?) -> number?
Parameters
stringname
number?default
(Default: 0)
Returns
number?configInt

Spring.GetConfigFloat (function)

[source]
Spring.GetConfigFloat(string, number?) -> number?
Parameters
stringname
number?default
(Default: 0)
Returns
number?configFloat

Spring.GetConfigString (function)

[source]
Spring.GetConfigString(string, string?) -> number?
Parameters
stringname
string?default
(Default: "")
Returns
number?configString

Spring.GetLogSections (function)

[source]
Spring.GetLogSections() -> table<string,number>
Returns
table<string,number>sections
where keys are names and loglevel are values. E.g. { “KeyBindings” = LOG.INFO, “Font” = LOG.INFO, “Sound” = LOG.WARNING, … }

Spring.GetAllGroundDecals (function)

[source]
Spring.GetAllGroundDecals() -> number[]
Returns
number[]decalIDs

Spring.GetGroundDecalMiddlePos (function)

[source]
Spring.GetGroundDecalMiddlePos(integer) -> number?, number
Parameters
integerdecalID
Returns
number?posX
numberposZ

Spring.GetGroundDecalQuadPos (function)

[source]
Spring.GetGroundDecalQuadPos(integer) -> number?, number, number, number, number, number, number, number
Parameters
integerdecalID
Returns
number?posTL.x
numberposTL.z
numberposTR.x
numberposTR.z
numberposBR.x
numberposBR.z
numberposBL.x
numberposBL.z

Spring.GetGroundDecalSizeAndHeight (function)

[source]
Spring.GetGroundDecalSizeAndHeight(integer) -> number?, number, number
Parameters
integerdecalID
Returns
number?sizeX
numbersizeY
numberprojCubeHeight

Spring.GetGroundDecalRotation (function)

[source]
Spring.GetGroundDecalRotation(integer) -> number?
Parameters
integerdecalID
Returns
number?rotation
Rotation in radians.

Spring.GetGroundDecalTexture (function)

[source]
Spring.GetGroundDecalTexture(integer, boolean?) -> string?
Parameters
integerdecalID
boolean?isMainTex
(Default: true) If false, return the normal/glow map.
Returns
string?texture

Spring.GetGroundDecalTextures (function)

[source]

See Spring.GetGroundDecalTexture

Spring.GetGroundDecalTextures(boolean?) -> string[]
Parameters
boolean?isMainTex
(Default: true) If false, return the texture for normal/glow maps.
Returns
string[]textureNames
All textures on the atlas and available for use in SetGroundDecalTexture.

Spring.GetGroundDecalAlpha (function)

[source]
Spring.GetGroundDecalAlpha(integer) -> number?, number
Parameters
integerdecalID
Returns
number?alpha
Between 0 and 1
numberalphaFalloff
Between 0 and 1, per second

Spring.GetGroundDecalNormal (function)

[source]

If all three equal 0, the decal follows the normals of ground at midpoint

Spring.GetGroundDecalNormal(integer) -> number?, number, number
Parameters
integerdecalID
Returns
number?normal.x
numbernormal.y
numbernormal.z

Spring.GetGroundDecalTint (function)

[source]

Gets the tint of the ground decal. A color of (0.5, 0.5, 0.5, 0.5) is effectively no tint

Spring.GetGroundDecalTint(integer) -> number?, number, number, number
Parameters
integerdecalID
Returns
number?tintR
numbertintG
numbertintB
numbertintA

Spring.GetGroundDecalMisc (function)

[source]

Returns less important parameters of a ground decal

Spring.GetGroundDecalMisc(integer) -> number?, number, number, number, number
Parameters
integerdecalID
Returns
number?dotElimExp
numberrefHeight
numberminHeight
numbermaxHeight
numberforceHeightMode

Spring.GetGroundDecalCreationFrame (function)

[source]

Min can be not equal to max for “gradient” style decals, e.g. unit tracks

Spring.GetGroundDecalCreationFrame(integer) -> number?, number
Parameters
integerdecalID
Returns
number?creationFrameMin
numbercreationFrameMax

Spring.GetGroundDecalOwner (function)

[source]
Spring.GetGroundDecalOwner(integer) -> integer?
Parameters
integerdecalID
Returns
integer?value
If owner is a unit, then this is unitID, if owner is a feature it is featureID + MAX_UNITS. If there is no owner, then nil.

Spring.GetGroundDecalType (function)

[source]
Spring.GetGroundDecalType(integer) -> ("explosion"|"plate"|"lua"|"track"|"unknown")?
Parameters
integerdecalID
Returns
("explosion"|"plate"|"lua"|"track"|"unknown")?type

Spring.GetSyncedGCInfo (function)

[source]
Spring.GetSyncedGCInfo(boolean?) -> number?
Parameters
boolean?collectGC
(Default: false) collect before returning metric
Returns
number?GC
values are expressed in Kbytes: #bytes/2^10

Spring.SolveNURBSCurve (function)

[source]
Spring.SolveNURBSCurve(integer) -> number[]?
Parameters
integergroupID
Returns
number[]?unitIDs

Spring.IsCheatingEnabled (function)

[source]
Spring.IsCheatingEnabled() -> boolean
Returns
booleanenabled

Spring.IsGodModeEnabled (function)

[source]
Spring.IsGodModeEnabled() -> boolean
Returns
booleanenabled

Spring.IsDevLuaEnabled (function)

[source]
Spring.IsDevLuaEnabled() -> boolean
Returns
booleanenabled

Spring.IsEditDefsEnabled (function)

[source]
Spring.IsEditDefsEnabled() -> boolean
Returns
booleanenabled

Spring.IsNoCostEnabled (function)

[source]
Spring.IsNoCostEnabled() -> boolean
Returns
booleanenabled

Spring.GetGlobalLos (function)

[source]
Spring.GetGlobalLos(integer?) -> boolean
Parameters
integer?teamID
Returns
booleanenabled

Spring.AreHelperAIsEnabled (function)

[source]
Spring.AreHelperAIsEnabled() -> boolean
Returns
booleanenabled

Spring.FixedAllies (function)

[source]
Spring.FixedAllies() -> boolean?
Returns
boolean?enabled

Spring.IsGameOver (function)

[source]
Spring.IsGameOver() -> boolean
Returns
booleanisGameOver

Spring.GetGameFrame (function)

[source]
Spring.GetGameFrame() -> number, number
Returns
numbert1
frameNum % dayFrames
numbert2
frameNum / dayFrames

Spring.GetGameSeconds (function)

[source]
Spring.GetGameSeconds() -> number
Returns
numberseconds

Spring.GetTidal (function)

[source]
Spring.GetTidal() -> number
Returns
numbertidalStrength

Spring.GetWind (function)

[source]
Spring.GetWind() -> number, number, number, number, number, number, number
Returns
numberwindSpeedX
numberwindSpeedY
(Always 0)
numberwindSpeedZ
numberwindStrength
(Length of windSpeed)
numberwindDirX
(Normalized windSpeed)
numberwindDirY
(Always 0)
numberwindDirZ

Spring.GetGameRulesParams (function)

[source]
Spring.GetGameRulesParams() -> RulesParams
Returns
RulesParamsrulesParams
map with rules names as key and values as values

Spring.GetTeamRulesParams (function)

[source]
Spring.GetTeamRulesParams(integer) -> RulesParams
Parameters
integerteamID
Returns
RulesParamsrulesParams
map with rules names as key and values as values

Spring.GetPlayerRulesParams (function)

[source]
Spring.GetPlayerRulesParams(integer) -> RulesParams
Parameters
integerplayerID
Returns
RulesParamsrulesParams
map with rules names as key and values as values

Spring.GetUnitRulesParams (function)

[source]
Spring.GetUnitRulesParams(integer) -> RulesParams
Parameters
integerunitID
Returns
RulesParamsrulesParams
map with rules names as key and values as values

Spring.GetFeatureRulesParams (function)

[source]
Spring.GetFeatureRulesParams(integer) -> RulesParams
Parameters
integerfeatureID
Returns
RulesParamsrulesParams
map with rules names as key and values as values

Spring.GetGameRulesParam (function)

[source]
Spring.GetGameRulesParam((number|string)) -> number?
Parameters
(number|string)ruleRef
the rule index or name
Returns
number?
|string value

Spring.GetTeamRulesParam (function)

[source]
Spring.GetTeamRulesParam(integer, (number|string)) -> (number|string)?
Parameters
integerteamID
(number|string)ruleRef
the rule index or name
Returns
(number|string)?value

Spring.GetPlayerRulesParam (function)

[source]
Spring.GetPlayerRulesParam(integer, (number|string)) -> (number|string)?
Parameters
integerplayerID
(number|string)ruleRef
the rule index or name
Returns
(number|string)?value

Spring.GetUnitRulesParam (function)

[source]
Spring.GetUnitRulesParam(integer, (number|string)) -> (number|string)?
Parameters
integerunitID
(number|string)ruleRef
the rule index or name
Returns
(number|string)?value

Spring.GetFeatureRulesParam (function)

[source]
Spring.GetFeatureRulesParam(integer, (number|string)) -> (number|string)?
Parameters
integerfeatureID
(number|string)ruleRef
the rule index or name
Returns
(number|string)?value

Spring.GetMapOption (function)

[source]
Spring.GetMapOption(string) -> string
Parameters
stringmapOption
Returns
stringvalue
Value of modOption.

Spring.GetMapOptions (function)

[source]
Spring.GetMapOptions() -> table<string,string>
Returns
table<string,string>mapOptions
Table with options names as keys and values as values.

Spring.GetModOption (function)

[source]
Spring.GetModOption(string) -> string
Parameters
stringmodOption
Returns
stringvalue
Value of modOption.

Spring.GetModOptions (function)

[source]
Spring.GetModOptions() -> table<string,string>
Returns
table<string,string>modOptions
Table with options names as keys and values as values.

Spring.GetHeadingFromVector (function)

[source]
Spring.GetHeadingFromVector(number, number) -> number
Parameters
numberx
numberz
Returns
numberheading

Spring.GetVectorFromHeading (function)

[source]
Spring.GetVectorFromHeading(number) -> number, number
Parameters
numberheading
Returns
numberx
numberz

Spring.GetFacingFromHeading (function)

[source]
Spring.GetFacingFromHeading(number) -> FacingInteger
Parameters
numberheading
Returns
FacingIntegerfacing

Spring.GetHeadingFromFacing (function)

[source]
Spring.GetHeadingFromFacing(FacingInteger) -> number
Parameters
FacingIntegerfacing
Returns
numberheading

Spring.GetSideData (function)

[source]
Spring.GetSideData(string) -> string?, string?
Parameters
stringsideName
Case-insensitive side name.
Returns
string?startUnit
string?caseName
Original case side name.

Spring.GetSideData (function overload 1)

[source]
Spring.GetSideData(integer) -> string?, string?, string?
Parameters
integersideID
Returns
string?sideName
Lowercase side name.
string?startUnit
string?caseName
Original case side name.

Spring.GetSideData (function overload 2)

[source]
Spring.GetSideData() -> SideSpec[]
Returns
SideSpec[]sideArray

Spring.GetGaiaTeamID (function)

[source]
Spring.GetGaiaTeamID() -> integer
Returns
integerteamID

Spring.GetAllyTeamStartBox (function)

[source]
Spring.GetAllyTeamStartBox(integer) -> number?, number?, number?, number?
Parameters
integerallyID
Returns
number?xMin
number?zMin
number?xMax
number?zMax

Spring.GetTeamStartPosition (function)

[source]
Spring.GetTeamStartPosition(integer) -> number?, number?, number?
Parameters
integerteamID
Returns
number?x
number?y
number?x

Spring.GetMapStartPositions (function)

[source]
Spring.GetMapStartPositions() -> float3[]
Returns
float3[]array
of positions indexed by teamID

Spring.GetAllyTeamList (function)

[source]
Spring.GetAllyTeamList() -> integer[]
Returns
integer[]allyTeamIDs

Spring.GetTeamList (function)

Get all team IDs.

[source]

Spring.GetTeamList(unknown) -> number[]
Parameters
unknownallyTeamID
(Default: -1)
Returns
number[]teamIDs
List of team IDs.

Spring.GetTeamList (function overload 1)

Get team IDs in a specific ally team.

[source]

Spring.GetTeamList(integer) -> number[]?
Parameters
integerallyTeamID
The ally team ID to filter teams by. A value less than 0 will return all teams.
Returns
number[]?teamIDs
List of team IDs or nil if allyTeamID is invalid.

Spring.GetPlayerList (function)

[source]
Spring.GetPlayerList(integer?, boolean?) -> number[]?
Parameters
integer?teamID
(Default: -1) to filter by when >= 0
boolean?active
(Default: false) whether to filter only active teams
Returns
number[]?list
of playerIDs

Spring.GetTeamInfo (function)

[source]
Spring.GetTeamInfo(integer, boolean?) -> integer?, number, number, number, string, number, number, table<string,string>
Parameters
integerteamID
boolean?getTeamKeys
(Default: true) whether to return the customTeamKeys table
Returns
integer?teamID
numberleader
numberisDead
numberhasAI
stringside
numberallyTeam
numberincomeMultiplier
table<string,string>customTeamKeys
when getTeamKeys is true, otherwise nil

Spring.GetTeamAllyTeamID (function)

[source]
Spring.GetTeamAllyTeamID(integer) -> integer?
Parameters
integerteamID
Returns
integer?allyTeamID

Spring.GetTeamResources (function)

[source]
Spring.GetTeamResources(integer, ResourceName) -> number?, number, number, number, number, number, number, number, number
Parameters
integerteamID
ResourceNameresource
Returns
number?currentLevel
numberstorage
numberpull
numberincome
numberexpense
numbershare
numbersent
numberreceived
numberexcess

Spring.GetTeamUnitStats (function)

[source]
Spring.GetTeamUnitStats(integer) -> number?, number, number, number, number, number
Parameters
integerteamID
Returns
number?killed
numberdied
numbercapturedBy
numbercapturedFrom
numberreceived
numbersent

Spring.GetTeamResourceStats (function)

[source]
Spring.GetTeamResourceStats(integer, ResourceName) -> number?, number, number, number, number
Parameters
integerteamID
ResourceNameresource
Returns
number?used
numberproduced
numberexcessed
numberreceived
numbersent

Spring.GetTeamDamageStats (function)

Gets team damage dealt/received totals

[source]

Returns a team’s damage stats. Note that all damage is counted, including self-inflicted and unconfirmed out-of-sight.

Spring.GetTeamDamageStats(integer) -> number, number
Parameters
integerteamID
Returns
numberdamageDealt
numberdamageReceived

Spring.GetTeamStatsHistory (function)

Get the number of history entries.

[source]

Spring.GetTeamStatsHistory(integer) -> integer?
Parameters
integerteamID
Returns
integer?historyCount
The number of history entries, or nil if unable to resolve team.

Spring.GetTeamStatsHistory (function overload 1)

Get team stats history.

[source]

Spring.GetTeamStatsHistory(integer, integer, integer?) -> TeamStats[]
Parameters
integerteamID
integerstartIndex
integer?endIndex
(Default: startIndex)
Returns
TeamStats[]The
team stats history, or nil if unable to resolve team.

Spring.GetTeamLuaAI (function)

[source]
Spring.GetTeamLuaAI(integer) -> string
Parameters
integerteamID
Returns
string

Spring.GetTeamMaxUnits (function)

Returns a team’s unit cap.

Also returns the current unit count for readable teams as the 2nd value.

[source]

Spring.GetTeamMaxUnits(integer) -> number, number?
Parameters
integerteamID
Returns
numbermaxUnits
number?currentUnits

Spring.GetPlayerInfo (function)

[source]
Spring.GetPlayerInfo(integer, boolean?) -> string, boolean, boolean, integer, integer, number, number, string, number, boolean, { [string]: string }, boolean
Parameters
integerplayerID
boolean?getPlayerOpts
(Default: true) whether to return custom player options
Returns
stringname
booleanactive
booleanspectator
integerteamID
integerallyTeamID
numberpingTime
numbercpuUsage
stringcountry
numberrank
booleanhasSkirmishAIsInTeam
{ [string]: string }playerOpts
when playerOpts is true
booleandesynced

Spring.GetPlayerControlledUnit (function)

Returns unit controlled by player on FPS mode

[source]

Spring.GetPlayerControlledUnit(integer) -> number?
Parameters
integerplayerID
Returns
number?

Spring.GetAIInfo (function)

[source]
Spring.GetAIInfo(integer) -> integer, string, integer, string, string, table<string,string>
Parameters
integerteamID
Returns
integerskirmishAIID
stringname
integerhostingPlayerID
stringshortName
When synced “SYNCED_NOSHORTNAME”, otherwise the AI shortname or “UNKNOWN”.
stringversion
When synced “SYNCED_NOVERSION”, otherwise the AI version or “UNKNOWN”.
table<string,string>options

Spring.GetAllyTeamInfo (function)

[source]
Spring.GetAllyTeamInfo(integer) -> table<string,string>?
Parameters
integerallyTeamID
Returns
table<string,string>?

Spring.AreTeamsAllied (function)

[source]
Spring.AreTeamsAllied(number, number) -> boolean?
Parameters
numberteamID1
numberteamID2
Returns
boolean?

Spring.ArePlayersAllied (function)

[source]
Spring.ArePlayersAllied(number, number) -> boolean?
Parameters
numberplayerID1
numberplayerID2
Returns
boolean?

Spring.GetAllUnits (function)

Get a list of all unitIDs

[source]

Note that when called from a widget, this also returns units that are only radar blips.

For units that are radar blips, you may want to check if they are in los, as GetUnitDefID() will still return true if they have previously been seen.

See UnsyncedRead.GetVisibleUnits

Spring.GetAllUnits() -> number[]
Returns
number[]unitIDs

Spring.GetTeamUnits (function)

[source]
Spring.GetTeamUnits(integer) -> number[]?
Parameters
integerteamID
Returns
number[]?unitIDs

Spring.GetTeamUnitsSorted (function)

[source]
Spring.GetTeamUnitsSorted(integer) -> table<integer,integer>
Parameters
integerteamID
Returns
table<integer,integer>unitsByDef
A table where keys are unitDefIDs and values are unitIDs

Spring.GetTeamUnitsCounts (function)

[source]
Spring.GetTeamUnitsCounts(integer) -> table<number,number>?
Parameters
integerteamID
Returns
table<number,number>?countByUnit
A table where keys are unitDefIDs and values are counts.

Spring.GetTeamUnitsByDefs (function)

[source]
Spring.GetTeamUnitsByDefs(integer, (number|number[])) -> number[]?
Parameters
integerteamID
(number|number[])unitDefIDs
Returns
number[]?unitIDs

Spring.GetTeamUnitDefCount (function)

[source]
Spring.GetTeamUnitDefCount(integer, integer) -> number?
Parameters
integerteamID
integerunitDefID
Returns
number?count

Spring.GetTeamUnitCount (function)

[source]
Spring.GetTeamUnitCount(integer) -> number?
Parameters
integerteamID
Returns
number?count

Spring.GetUnitsInRectangle (function)

[source]
Spring.GetUnitsInRectangle(number, number, number, number, number?) -> number[]
Parameters
numberxmin
numberzmin
numberxmax
numberzmax
number?allegiance
Returns
number[]unitIDs

Spring.GetUnitsInBox (function)

[source]
Spring.GetUnitsInBox(number, number, number, number, number, number, number?) -> number[]
Parameters
numberxmin
numberymin
numberzmin
numberxmax
numberymax
numberzmax
number?allegiance
Returns
number[]unitIDs

Spring.GetUnitsInCylinder (function)

[source]
Spring.GetUnitsInCylinder(number, number, number) -> number[]
Parameters
numberx
numberz
numberradius
Returns
number[]unitIDs

Spring.GetUnitsInSphere (function)

[source]
Spring.GetUnitsInSphere(number, number, number, number) -> number[]
Parameters
numberx
numbery
numberz
numberradius
Returns
number[]unitIDs

Spring.GetUnitsInPlanes (function)

[source]

Plane normals point towards accepted space, so the acceptance criteria for each plane is:

radius = unit radius px, py, pz = unit position [(nx * px) + (ny * py) + (nz * pz) + (d - radius)] <= 0

Spring.GetUnitsInPlanes(Plane[], integer?) -> integer[]
Parameters
Plane[]planes
integer?allegiance
Returns
integer[]unitIDs

Spring.GetUnitArrayCentroid (function)

Returns the centroid of an array of units

Returns nil for an empty array

[source]

Spring.GetUnitArrayCentroid(table) -> number, number, number
Parameters
tableunits
{ unitID, unitID, … }
Returns
numbercenterX
numbercenterY
numbercenterZ

Spring.GetUnitMapCentroid (function)

Returns the centroid of a map of units

Returns nil for an empty map

[source]

Spring.GetUnitMapCentroid(table) -> number, number, number
Parameters
tableunits
{ [unitID] = true, [unitID] = true, … }
Returns
numbercenterX
numbercenterY
numbercenterZ

Spring.GetUnitNearestAlly (function)

[source]
Spring.GetUnitNearestAlly(integer, number?) -> integer?
Parameters
integerunitID
number?range
(Default: 1.0e9)
Returns
integer?unitID

Spring.GetUnitNearestEnemy (function)

[source]
Spring.GetUnitNearestEnemy(integer, number?, boolean?) -> integer?
Parameters
integerunitID
number?range
(Default: 1.0e9)
boolean?useLOS
(Default: true)
Returns
integer?unitID

Spring.GetFeaturesInRectangle (function)

[source]
Spring.GetFeaturesInRectangle(number, number, number, number) -> number[]
Parameters
numberxmin
numberzmin
numberxmax
numberzmax
Returns
number[]featureIDs

Spring.GetFeaturesInSphere (function)

[source]
Spring.GetFeaturesInSphere(number, number, number, number) -> number[]
Parameters
numberx
numbery
numberz
numberradius
Returns
number[]featureIDs

Spring.GetFeaturesInCylinder (function)

[source]
Spring.GetFeaturesInCylinder(number, number, number, number?) -> number[]
Parameters
numberx
numberz
numberradius
number?allegiance
Returns
number[]featureIDs

Spring.GetProjectilesInRectangle (function)

[source]
Spring.GetProjectilesInRectangle(number, number, number, number, boolean?, boolean?) -> number[]
Parameters
numberxmin
numberzmin
numberxmax
numberzmax
boolean?excludeWeaponProjectiles
(Default: false)
boolean?excludePieceProjectiles
(Default: false)
Returns
number[]projectileIDs

Spring.GetProjectilesInSphere (function)

[source]
Spring.GetProjectilesInSphere(number, number, number, number, boolean?, boolean?) -> number[]
Parameters
numberx
numbery
numberz
numberradius
boolean?excludeWeaponProjectiles
(Default: false)
boolean?excludePieceProjectiles
(Default: false)
Returns
number[]projectileIDs

Spring.ValidUnitID (function)

Get whether a unitID is valid

Dead units are not valid.

[source]

Spring.ValidUnitID(integer) -> boolean
Parameters
integerunitID
Returns
boolean

Spring.GetUnitStates (function)

[source]
Spring.GetUnitStates(integer) -> UnitState
Parameters
integerunitID
Returns
UnitState

Spring.GetUnitArmored (function)

[source]
Spring.GetUnitArmored(integer) -> boolean?, number
Parameters
integerunitID
Returns
boolean?armored
numberarmorMultiple

Spring.GetUnitIsActive (function)

[source]
Spring.GetUnitIsActive(integer) -> boolean?
Parameters
integerunitID
Returns
boolean?isActive

Spring.GetUnitIsCloaked (function)

[source]
Spring.GetUnitIsCloaked(integer) -> boolean?
Parameters
integerunitID
Returns
boolean?isCloaked

Spring.GetUnitSeismicSignature (function)

[source]
Spring.GetUnitSeismicSignature(integer) -> number?
Parameters
integerunitID
Returns
number?seismicSignature

Spring.GetUnitLeavesGhost (function)

Get whether unit leaves static radar ghosts.

[source]

Spring.GetUnitLeavesGhost() -> number?
Returns
number?

Spring.GetUnitSelfDTime (function)

[source]
Spring.GetUnitSelfDTime(integer) -> integer?
Parameters
integerunitID
Returns
integer?selfDTime

Spring.GetUnitStockpile (function)

[source]
Spring.GetUnitStockpile(integer) -> integer?, integer?, number?
Parameters
integerunitID
Returns
integer?numStockpiled
integer?numStockpileQued
number?buildPercent

Spring.GetUnitSensorRadius (function)

[source]
Spring.GetUnitSensorRadius(integer, string) -> number?
Parameters
integerunitID
stringtype
one of los, airLos, radar, sonar, seismic, radarJammer, sonarJammer
Returns
number?radius

Spring.GetUnitPosErrorParams (function)

[source]
Spring.GetUnitPosErrorParams(integer, integer?) -> number?, number, number, number, number, number, number, boolean
Parameters
integerunitID
integer?allyTeamID
Returns
number?posErrorVectorX
numberposErrorVectorY
numberposErrorVectorZ
numberposErrorDeltaX
numberposErrorDeltaY
numberposErrorDeltaZ
numbernextPosErrorUpdatebaseErrorMult
booleanposErrorBit

Spring.GetUnitTooltip (function)

[source]
Spring.GetUnitTooltip(integer) -> string?
Parameters
integerunitID
Returns
string?

Spring.GetUnitDefID (function)

[source]
Spring.GetUnitDefID(integer) -> number?
Parameters
integerunitID
Returns
number?

Spring.GetUnitTeam (function)

[source]
Spring.GetUnitTeam(integer) -> number?
Parameters
integerunitID
Returns
number?

Spring.GetUnitAllyTeam (function)

[source]
Spring.GetUnitAllyTeam(integer) -> number?
Parameters
integerunitID
Returns
number?

Spring.GetUnitNeutral (function)

Checks if a unit is neutral (NOT Gaia!)

[source]

Note that a “neutral” unit can belong to any ally-team (ally, enemy, Gaia). To check if a unit is Gaia, check its owner team.

Spring.GetUnitNeutral(integer) -> boolean?
Parameters
integerunitID
Returns
boolean?

Spring.GetUnitHealth (function)

[source]
Spring.GetUnitHealth(integer) -> number?, number, number, number, number
Parameters
integerunitID
Returns
number?health
numbermaxHealth
numberparalyzeDamage
numbercaptureProgress
numberbuildProgress
between 0.0-1.0

Spring.GetUnitIsDead (function)

[source]
Spring.GetUnitIsDead(integer) -> boolean?
Parameters
integerunitID
Returns
boolean?

Spring.GetUnitIsStunned (function)

Checks whether a unit is disabled and can’t act

The first return value is a simple OR of the following ones, any of those conditions is sufficient to disable the unit.

Note that EMP and being transported are mechanically the same and thus lumped together. Use other callouts to differentiate them if you need to.

[source]

Spring.GetUnitIsStunned(integer) -> boolean?, boolean, boolean
Parameters
integerunitID
Returns
boolean?stunnedOrBuilt
unit is disabled
booleanstunned
unit is either stunned via EMP or being transported by a non-fireplatform
booleanbeingBuilt
unit is under construction

Spring.GetUnitIsBeingBuilt (function)

[source]
Spring.GetUnitIsBeingBuilt(integer) -> boolean, number
Parameters
integerunitID
Returns
booleanbeingBuilt
numberbuildProgress

Spring.GetUnitResources (function)

[source]
Spring.GetUnitResources(integer) -> number?, number, number, number
Parameters
integerunitID
Returns
number?metalMake
numbermetalUse
numberenergyMake
numberenergyUse

Spring.GetUnitStorage (function)

[source]
Spring.GetUnitStorage(integer) -> number, number
Parameters
integerunitID
Returns
numberUnit
’s metal storage
numberUnit
’s energy storage

Spring.GetUnitCosts (function)

[source]
Spring.GetUnitCosts(integer) -> number?, number, number
Parameters
integerunitID
Returns
number?buildTime
numbermetalCost
numberenergyCost

Spring.GetUnitCostTable (function)

[source]
Spring.GetUnitCostTable(integer) -> ResourceCost?, number?
Parameters
integerunitID
Returns
ResourceCost?cost
The cost of the unit, or nil if invalid.
number?buildTime
The build time the unit, or nil if invalid.

Spring.GetUnitMetalExtraction (function)

[source]
Spring.GetUnitMetalExtraction(integer) -> number?
Parameters
integerunitID
Returns
number?metalExtraction

Spring.GetUnitExperience (function)

[source]
Spring.GetUnitExperience(integer) -> number, number
Parameters
integerunitID
Returns
numberxp
[0.0; +∞)
numberlimXp
[0.0; 1.0) as experience approaches infinity

Spring.GetUnitHeight (function)

[source]
Spring.GetUnitHeight(integer) -> number?
Parameters
integerunitID
Returns
number?

Spring.GetUnitRadius (function)

[source]
Spring.GetUnitRadius(integer) -> number?
Parameters
integerunitID
Returns
number?

Spring.GetUnitBuildeeRadius (function)

[source]

Gets the unit’s radius for when targeted by build, repair, reclaim-type commands.

Spring.GetUnitBuildeeRadius(integer) -> number?
Parameters
integerunitID
Returns
number?

Spring.GetUnitMass (function)

[source]
Spring.GetUnitMass(integer) -> number?
Parameters
integerunitID
Returns
number?

Spring.GetUnitPosition (function)

[source]
Spring.GetUnitPosition(integer, boolean?, boolean?) -> number?, number, number, number?, number, number, number?, number, number
Parameters
integerunitID
boolean?midPos
(Default: false) return midpoint as well
boolean?aimPos
(Default: false) return aimpoint as well
Returns
number?basePointX
numberbasePointY
numberbasePointZ
number?midPointX
numbermidPointY
numbermidPointZ
number?aimPointX
numberaimPointY
numberaimPointZ

Spring.GetUnitBasePosition (function)

[source]

The same as Spring.GetUnitPosition, but without the optional midpoint calculations.

See Spring.GetUnitPosition

Spring.GetUnitBasePosition(integer) -> number?, number?, number?
Parameters
integerunitID
Returns
number?posX
number?posY
number?posZ

Spring.GetUnitVectors (function)

[source]
Spring.GetUnitVectors(integer) -> float3?, float3, float3
Parameters
integerunitID
Returns
float3?front
float3up
float3right

Spring.GetUnitRotation (function)

[source]

Note: PYR order

Spring.GetUnitRotation(integer) -> number, number, number
Parameters
integerunitID
Returns
numberpitch
Rotation in X axis
numberyaw
Rotation in Y axis
numberroll
Rotation in Z axis

Spring.GetUnitDirection (function)

[source]
Spring.GetUnitDirection(integer) -> number, number, number, number, number, number, number, number, number
Parameters
integerunitID
Returns
numberfrontDirX
numberfrontDirY
numberfrontDirZ
numberrightDirX
numberrightDirY
numberrightDirZ
numberupDirX
numberupDirY
numberupDirZ

Spring.GetUnitHeading (function)

[source]
Spring.GetUnitHeading(integer, boolean?) -> number
Parameters
integerunitID
boolean?convertToRadians
(Default: false)
Returns
numberheading

Spring.GetUnitVelocity (function)

[source]
Spring.GetUnitVelocity(integer) -> nil
Parameters
integerunitID

Spring.GetUnitBuildFacing (function)

[source]
Spring.GetUnitBuildFacing(integer) -> nil
Parameters
integerunitID

Spring.GetUnitIsBuilding (function)

Checks whether a unit is currently building another (NOT for checking if it’s a structure)

[source]

Works for both mobile builders and factories.

Spring.GetUnitIsBuilding(integer) -> integer
Parameters
integerunitID
Returns
integerbuildeeUnitID
or nil

Spring.GetUnitWorkerTask (function)

Checks a builder’s current task

[source]

Checks what a builder is currently doing. This is not the same as Spring.GetUnitCurrentCommand, because you can have a command at the front of the queue and not be doing it (for example because the target is still too far away), and on the other hand you can also be doing a task despite not having it in front of the queue (for example you’re Guarding another builder who does). Also, it resolves the Repair command into either actual repair, or construction assist (in which case it returns the appropriate “build” command). Only build-related commands are returned (no Move or any custom commands).

The possible commands returned are repair, reclaim, resurrect, capture, restore, and build commands (negative buildee unitDefID).

Spring.GetUnitWorkerTask(integer) -> integer, integer
Parameters
integerunitID
Returns
integercmdID
of the relevant command
integertargetID
if applicable (all except RESTORE)

Spring.GetUnitEffectiveBuildRange (function)

[source]

Useful for setting move goals manually.

Spring.GetUnitEffectiveBuildRange(integer, integer) -> number
Parameters
integerunitID
integerbuildeeDefID
or nil
Returns
numbereffectiveBuildRange
counted to the center of prospective buildee; buildRange if buildee nil

Spring.GetUnitCurrentBuildPower (function)

[source]
Spring.GetUnitCurrentBuildPower(integer) -> nil
Parameters
integerunitID

Spring.GetUnitHarvestStorage (function)

Get a unit’s carried resources

[source]

Checks resources being carried internally by the unit.

Spring.GetUnitHarvestStorage(integer) -> number, number, number, number
Parameters
integerunitID
Returns
numberstoredMetal
numbermaxStoredMetal
numberstoredEnergy
numbermaxStoredEnergy

Spring.GetUnitBuildParams (function)

[source]
Spring.GetUnitBuildParams(integer) -> nil
Parameters
integerunitID

Spring.GetUnitInBuildStance (function)

Is builder in build stance

[source]

Checks if a builder is in build stance, i.e. can create nanoframes. Returns nil for non-builders.

Spring.GetUnitInBuildStance(integer) -> boolean
Parameters
integerunitID
Returns
booleaninBuildStance

Spring.GetUnitNanoPieces (function)

Get construction FX attachment points

[source]

Returns an array of pieces which represent construction points. Default engine construction FX (nano spray) will originate there.

Only works on builders and factories, returns nil (NOT empty table) for other units.

Spring.GetUnitNanoPieces(integer) -> integer[]
Parameters
integerunitID
Returns
integer[]pieceArray

Spring.GetUnitTransporter (function)

Get the transport carrying the unit

[source]

Returns the unit ID of the transport, if any. Returns nil if the unit is not being transported.

Spring.GetUnitTransporter(integer) -> integer?
Parameters
integerunitID
Returns
integer?transportUnitID

Spring.GetUnitIsTransporting (function)

Get units being transported

[source]

Spring.GetUnitIsTransporting(integer) -> integer[]?
Parameters
integerunitID
Returns
integer[]?transporteeArray

Spring.GetUnitShieldState (function)

[source]
Spring.GetUnitShieldState(integer, number?) -> number, number
Parameters
integerunitID
number?weaponNum
Optional if the unit has just one shield
Returns
numberisEnabled
Warning, number not boolean. 0 or 1
numbercurrentPower

Spring.GetUnitFlanking (function)

[source]
Spring.GetUnitFlanking(integer) -> nil
Parameters
integerunitID

Spring.GetUnitMaxRange (function)

Get a unit’s engagement range

[source]

Returns the range at which a unit will stop to engage. By default this is the highest among the unit’s weapon ranges (hence name), but can be changed dynamically. Also note that unarmed units ignore this.

Spring.GetUnitMaxRange(integer) -> number
Parameters
integerunitID
Returns
numbermaxRange

Spring.GetUnitWeaponState (function)

Check the state of a unit’s weapon

[source]

Available states to poll: “reloadFrame” (frame on which the weapon will be ready to fire), “reloadSpeed” (reload time in seconds), “range” (in elmos), “autoTargetRangeBoost” (predictive aiming range buffer, in elmos), “projectileSpeed” (in elmos/frame), “reloadTimeXP” (reload time after XP bonus, in seconds), “reaimTime” (frames between AimWeapon calls), “burst” (shots in a burst), “burstRate” (delay between shots in a burst, in seconds), “projectiles” (projectiles per shot), “salvoLeft” (shots remaining in ongoing burst), “nextSalvo” (simframe of the next shot in an ongoing burst), “accuracy” (INaccuracy after XP bonus), “sprayAngle” (spray angle after XP bonus), “targetMoveError” (extra inaccuracy against moving targets, after XP bonus) “avoidFlags” (bitmask for targeting avoidance), “ttl” (number of seconds a projectile should live) “collisionFlags” (bitmask for collisions).

The state “salvoError” is an exception and returns a table: {x, y, z}, which represents the inaccuracy error of the ongoing burst.

Spring.GetUnitWeaponState(integer, number, string) -> number
Parameters
integerunitID
numberweaponNum
stringstateName
Returns
numberstateValue

Spring.GetUnitWeaponDamages (function)

[source]
Spring.GetUnitWeaponDamages(integer) -> nil
Parameters
integerunitID

Spring.GetUnitWeaponVectors (function)

[source]
Spring.GetUnitWeaponVectors(integer) -> nil
Parameters
integerunitID

Spring.GetUnitWeaponTryTarget (function)

[source]
Spring.GetUnitWeaponTryTarget(integer) -> nil
Parameters
integerunitID

Spring.GetUnitWeaponTestTarget (function)

[source]
Spring.GetUnitWeaponTestTarget(integer) -> nil
Parameters
integerunitID

Spring.GetUnitWeaponTestRange (function)

[source]
Spring.GetUnitWeaponTestRange(integer) -> nil
Parameters
integerunitID

Spring.GetUnitWeaponHaveFreeLineOfFire (function)

[source]
Spring.GetUnitWeaponHaveFreeLineOfFire(integer) -> nil
Parameters
integerunitID

Spring.GetUnitWeaponCanFire (function)

[source]
Spring.GetUnitWeaponCanFire(integer) -> nil
Parameters
integerunitID

Spring.GetUnitWeaponTarget (function)

Checks a weapon’s target

Note that this doesn’t need to reflect the unit’s Attack orders or such, and that weapons can aim individually unless slaved.

[source]

Spring.GetUnitWeaponTarget(integer, integer) -> 0, boolean
Parameters
integerunitID
integerweaponNum
Returns
0TargetType
none
booleanisUserTarget

Spring.GetUnitWeaponTarget (function overload 1)

Checks a weapon’s target

Note that this doesn’t need to reflect the unit’s Attack orders or such, and that weapons can aim individually unless slaved.

[source]

Spring.GetUnitWeaponTarget(integer, integer) -> 1, boolean, integer
Parameters
integerunitID
integerweaponNum
Returns
1TargetType
unit
booleanisUserTarget
integertargetUnitID

Spring.GetUnitWeaponTarget (function overload 2)

Checks a weapon’s target

Note that this doesn’t need to reflect the unit’s Attack orders or such, and that weapons can aim individually unless slaved.

[source]

Spring.GetUnitWeaponTarget(integer, integer) -> 2, boolean, float3
Parameters
integerunitID
integerweaponNum
Returns
2TargetType
position
booleanisUserTarget
float3targetPosition

Spring.GetUnitWeaponTarget (function overload 3)

Checks a weapon’s target

Note that this doesn’t need to reflect the unit’s Attack orders or such, and that weapons can aim individually unless slaved.

[source]

Spring.GetUnitWeaponTarget(integer, integer) -> 3, boolean, integer
Parameters
integerunitID
integerweaponNum
Returns
3TargetType
projectileID
booleanisUserTarget
integertargetProjectileId

Spring.GetUnitEstimatedPath (function)

[source]
Spring.GetUnitEstimatedPath(integer) -> nil
Parameters
integerunitID

Spring.GetUnitLastAttacker (function)

[source]
Spring.GetUnitLastAttacker(integer) -> nil
Parameters
integerunitID

Spring.GetUnitLastAttackedPiece (function)

[source]
Spring.GetUnitLastAttackedPiece(integer) -> nil
Parameters
integerunitID

Spring.GetUnitCollisionVolumeData (function)

[source]
Spring.GetUnitCollisionVolumeData(integer) -> nil
Parameters
integerunitID

Spring.GetUnitSeparation (function)

[source]
Spring.GetUnitSeparation(number, number, boolean?, boolean?) -> number?
Parameters
numberunitID1
numberunitID2
boolean?direction
(Default: false) to subtract from, default unitID1 - unitID2
boolean?subtractRadii
(Default: false) whether units radii should be subtracted from the total
Returns
number?

Spring.GetUnitFeatureSeparation (function)

[source]
Spring.GetUnitFeatureSeparation(integer) -> nil
Parameters
integerunitID

Spring.GetUnitDefDimensions (function)

[source]
Spring.GetUnitDefDimensions(integer) -> UnitDefDimensions?
Parameters
integerunitDefID
Returns
UnitDefDimensions?dimensions

Spring.GetCEGID (function)

[source]
Spring.GetCEGID() -> nil

Spring.GetUnitBlocking (function)

[source]
Spring.GetUnitBlocking(integer) -> boolean?, boolean, boolean, boolean, boolean, boolean, boolean
Parameters
integerunitID
Returns
boolean?isBlocking
booleanisSolidObjectCollidable
booleanisProjectileCollidable
booleanisRaySegmentCollidable
booleancrushable
booleanblockEnemyPushing
booleanblockHeightChanges

Spring.GetUnitMoveTypeData (function)

[source]
Spring.GetUnitMoveTypeData(integer) -> nil
Parameters
integerunitID

Spring.GetUnitCurrentCommand (function)

Get a command from a units command queue.

For factories, this function uses the command queue automatically assigned to new units.

[source]

See Spring.GetFactoryCommands for getting factory build queue commands

Spring.GetUnitCurrentCommand(integer, integer?) -> CMD?, (integer|CommandOptionBit)?, integer?, number? ...
Parameters
integerunitID
unitID when invalid this function returns nil.
integer?cmdIndex
(Default: 0) Command index to get. If negative will count from the end of the queue, e.g. -1 will be the last command.
Returns
CMD?cmdID
(integer|CommandOptionBit)?options
integer?tag
number? ...Command
parameters.

Spring.GetUnitCommands (function)

Get the commands for a unit.

[source]

Same as Spring.GetCommandQueue

Spring.GetUnitCommands(integer, integer) -> Command[]
Parameters
integerunitID
integercount
Maximum amount of commands to return, -1 returns all commands.
Returns
Command[]commands

Spring.GetUnitCommands (function overload 1)

Get the count of commands for a unit.

[source]

Deprecated: This overload is deprecated, use Spring.GetUnitCommandCount(unitId) instead.

Spring.GetUnitCommands(integer, 0) -> integer
Parameters
integerunitID
0count
Returns the number of commands in the units queue.
Returns
integerThe
number of commands in the unit queue.

Spring.GetFactoryCommands (function)

Get the number or list of commands for a factory

[source]

See Spring.GetFactoryCounts to get command counts grouped by cmdID.

Spring.GetFactoryCommands(integer, integer) -> Command[]
Parameters
integerunitID
integercount
Maximum amount of commands to return, -1 returns all commands.
Returns
Command[]commands

Spring.GetFactoryCommands (function overload 1)

Get the count of commands for a factory.

[source]

Deprecated: This overload is deprecated, use Spring.GetFactoryCommandCount(unitId) instead.

See Spring.GetFactoryCommandCount for replacement function.

Spring.GetFactoryCommands(integer, 0) -> integer
Parameters
integerunitID
0count
Returns the number of commands in the factory queue.
Returns
integerThe
number of commands in the factory queue.

Spring.GetUnitCommandCount (function)

Get the number of commands in a unit’s queue.

[source]

Spring.GetUnitCommandCount(integer) -> integer
Parameters
integerunitID
Returns
integerThe
number of commands in the unit’s queue.

Spring.GetFactoryCommandCount (function)

Get the number of commands in a factory queue.

[source]

See Spring.GetFactoryCounts to get command counts grouped by cmdID.

Spring.GetFactoryCommandCount(integer) -> integer
Parameters
integerunitID
Returns
integerThe
number of commands in the factory queue.

Spring.GetFactoryBuggerOff (function)

[source]
Spring.GetFactoryBuggerOff(integer) -> nil
Parameters
integerunitID

Spring.GetFactoryCounts (function)

Gets the build queue of a factory

[source]

Spring.GetFactoryCounts(integer, integer?, boolean?) -> table<number,number>?
Parameters
integerunitID
integer?count
(Default: -1) Number of commands to retrieve, -1 for all.
boolean?addCmds
(Default: false) Retrieve commands other than buildunit
Returns
table<number,number>?counts
Build queue count by unitDefID or -cmdID, or nil if unit is not found.

Spring.GetCommandQueue (function)

Get the commands for a unit.

[source]

Same as Spring.GetUnitCommands

Deprecated: Use Spring.GetUnitCommands instead.

Spring.GetCommandQueue(integer, integer) -> Command[]
Parameters
integerunitID
integercount
Number of commands to return, -1 returns all commands, 0 returns command count.
Returns
Command[]commands

Spring.GetCommandQueue (function overload 1)

Get the count of commands for a unit.

[source]

Same as Spring.GetUnitCommands

Deprecated: Use Spring.GetUnitCommandCount instead.

Spring.GetCommandQueue(integer, 0) -> integer
Parameters
integerunitID
0count
Returns the number of commands in the units queue.
Returns
integercmdCount
The number of commands in the unit queue.

Spring.GetFullBuildQueue (function)

Returns the build queue

[source]

Spring.GetFullBuildQueue(integer) -> table<number,number>?
Parameters
integerunitID
Returns
table<number,number>?buildqueue
indexed by unitDefID with count values

Spring.GetRealBuildQueue (function)

Returns the build queue cleaned of things the unit can’t build itself

[source]

Spring.GetRealBuildQueue(integer) -> table<number,number>?
Parameters
integerunitID
Returns
table<number,number>?buildqueue
indexed by unitDefID with count values

Spring.GetUnitCmdDescs (function)

[source]
Spring.GetUnitCmdDescs(integer) -> nil
Parameters
integerunitID

Spring.FindUnitCmdDesc (function)

[source]
Spring.FindUnitCmdDesc(integer) -> nil
Parameters
integerunitID

Spring.ValidFeatureID (function)

[source]
Spring.ValidFeatureID(integer) -> boolean
Parameters
integerfeatureID
Returns
boolean

Spring.GetAllFeatures (function)

[source]
Spring.GetAllFeatures() -> integer[]
Returns
integer[]featureIDs

Spring.GetFeatureDefID (function)

[source]
Spring.GetFeatureDefID(integer) -> number?
Parameters
integerfeatureID
Returns
number?

Spring.GetFeatureTeam (function)

[source]
Spring.GetFeatureTeam(integer) -> number?
Parameters
integerfeatureID
Returns
number?

Spring.GetFeatureAllyTeam (function)

[source]
Spring.GetFeatureAllyTeam(integer) -> number?
Parameters
integerfeatureID
Returns
number?

Spring.GetFeatureHealth (function)

[source]
Spring.GetFeatureHealth(integer) -> number?, number, number
Parameters
integerfeatureID
Returns
number?health
numberdefHealth
numberresurrectProgress

Spring.GetFeatureHeight (function)

[source]
Spring.GetFeatureHeight(integer) -> number?
Parameters
integerfeatureID
Returns
number?

Spring.GetFeatureRadius (function)

[source]
Spring.GetFeatureRadius(integer) -> number?
Parameters
integerfeatureID
Returns
number?

Spring.GetFeatureMass (function)

[source]
Spring.GetFeatureMass(integer) -> number?
Parameters
integerfeatureID
Returns
number?

Spring.GetFeaturePosition (function)

[source]
Spring.GetFeaturePosition(integer) -> number?, number?, number?
Parameters
integerfeatureID
Returns
number?x
number?y
number?z

Spring.GetFeatureSeparation (function)

[source]
Spring.GetFeatureSeparation(number, number, boolean?) -> number?
Parameters
numberfeatureID1
numberfeatureID2
boolean?direction
(Default: false) to subtract from, default featureID1 - featureID2
Returns
number?

Spring.GetFeatureRotation (function)

[source]

Note: PYR order

Spring.GetFeatureRotation(integer) -> number?, number?, number?
Parameters
integerfeatureID
Returns
number?pitch
Rotation in X axis
number?yaw
Rotation in Y axis
number?roll
Rotation in Z axis

Spring.GetFeatureDirection (function)

[source]
Spring.GetFeatureDirection(integer) -> number?, number?, number?, number?, number?, number?, number?, number?, number?
Parameters
integerfeatureID
Returns
number?frontDirX
number?frontDirY
number?frontDirZ
number?rightDirX
number?rightDirY
number?rightDirZ
number?upDirX
number?upDirY
number?upDirZ

Spring.GetFeatureVelocity (function)

[source]

Returns nil if no feature found with ID.

Spring.GetFeatureVelocity(integer) -> number?, number?, number?, number?
Parameters
integerfeatureID
Returns
number?x
number?y
number?z
number?w

Spring.GetFeatureHeading (function)

[source]
Spring.GetFeatureHeading(integer) -> nil
Parameters
integerfeatureID

Spring.GetFeatureResources (function)

[source]
Spring.GetFeatureResources(integer) -> number?, number, number, number, number, number
Parameters
integerfeatureID
Returns
number?metal
numberdefMetal
numberenergy
numberdefEnergy
numberreclaimLeft
numberreclaimTime

Spring.GetFeatureBlocking (function)

[source]
Spring.GetFeatureBlocking(integer) -> boolean?, boolean?, boolean?, boolean?, boolean?, boolean?, boolean?
Parameters
integerfeatureID
Returns
boolean?isBlocking
boolean?isSolidObjectCollidable
boolean?isProjectileCollidable
boolean?isRaySegmentCollidable
boolean?crushable
boolean?blockEnemyPushing
boolean?blockHeightChanges

Spring.GetFeatureNoSelect (function)

[source]
Spring.GetFeatureNoSelect(integer) -> boolean?
Parameters
integerfeatureID
Returns
boolean?

Spring.GetFeatureResurrect (function)

[source]

Returns nil if no feature found with ID.

Spring.GetFeatureResurrect(integer) -> (string|"")?, FacingInteger
Parameters
integerfeatureID
Returns
(string|"")?featureDefName
FacingIntegerbuildFacing
facing of footprint, 0 - 3

Spring.GetFeatureLastAttackedPiece (function)

[source]
Spring.GetFeatureLastAttackedPiece(integer) -> (string|"")?, integer?
Parameters
integerfeatureID
Returns
(string|"")?Last
hit piece name
integer?frame
it was last hit on, nil when featureID is not valid

Spring.GetFeatureCollisionVolumeData (function)

[source]
Spring.GetFeatureCollisionVolumeData(integer) -> CollisionVolumeData?
Parameters
integerfeatureID
Returns
CollisionVolumeData?

Spring.GetFeaturePieceCollisionVolumeData (function)

[source]
Spring.GetFeaturePieceCollisionVolumeData(integer) -> CollisionVolumeData?
Parameters
integerfeatureID
Returns
CollisionVolumeData?

Spring.GetProjectilePosition (function)

[source]
Spring.GetProjectilePosition(integer) -> number?, number?, number?
Parameters
integerprojectileID
Returns
number?posX
number?posY
number?posZ

Spring.GetProjectileDirection (function)

[source]
Spring.GetProjectileDirection(integer) -> number?, number?, number?
Parameters
integerprojectileID
Returns
number?dirX
number?dirY
number?dirZ

Spring.GetProjectileVelocity (function)

[source]
Spring.GetProjectileVelocity(integer) -> number?, number?, number?, number?
Parameters
integerprojectileID
Returns
number?velX
number?velY
number?velZ
number?velW

Spring.GetProjectileGravity (function)

[source]
Spring.GetProjectileGravity(integer) -> number?
Parameters
integerprojectileID
Returns
number?

Spring.GetPieceProjectileParams (function)

[source]
Spring.GetPieceProjectileParams(integer) -> number?, number, number, number, number, number
Parameters
integerprojectileID
Returns
number?explosionFlags
encoded bitwise with SHATTER = 1, EXPLODE = 2, EXPLODE_ON_HIT = 2, FALL = 4, SMOKE = 8, FIRE = 16, NONE = 32, NO_CEG_TRAIL = 64, NO_HEATCLOUD = 128
numberspinAngle
numberspinSpeed
numberspinVectorX
numberspinVectorY
numberspinVectorZ

Spring.GetProjectileTarget (function)

[source]
Spring.GetProjectileTarget(integer) -> number?, (number|float3)
Parameters
integerprojectileID
Returns
number?targetTypeInt
where string.byte(‘g’) := GROUND string.byte(‘u’) := UNIT string.byte(‘f’) := FEATURE string.byte(‘p’) := PROJECTILE
(number|float3)target
targetID or targetPos when targetTypeInt == string.byte(‘g’)

Spring.GetProjectileIsIntercepted (function)

[source]
Spring.GetProjectileIsIntercepted(integer) -> boolean?
Parameters
integerprojectileID
Returns
boolean?

Spring.GetProjectileTimeToLive (function)

[source]
Spring.GetProjectileTimeToLive(integer) -> number?
Parameters
integerprojectileID
Returns
number?

Spring.GetProjectileOwnerID (function)

[source]
Spring.GetProjectileOwnerID(integer) -> number?
Parameters
integerprojectileID
Returns
number?

Spring.GetProjectileTeamID (function)

[source]
Spring.GetProjectileTeamID(integer) -> number?
Parameters
integerprojectileID
Returns
number?

Spring.GetProjectileAllyTeamID (function)

[source]
Spring.GetProjectileAllyTeamID(integer) -> number?
Parameters
integerprojectileID
Returns
number?

Spring.GetProjectileType (function)

[source]
Spring.GetProjectileType(integer) -> boolean?, boolean
Parameters
integerprojectileID
Returns
boolean?weapon
booleanpiece

Spring.GetProjectileDefID (function)

[source]

Using this to get a weaponDefID is HIGHLY preferred to indexing WeaponDefNames via GetProjectileName

Spring.GetProjectileDefID(integer) -> number?
Parameters
integerprojectileID
Returns
number?

Spring.GetProjectileDamages (function)

[source]
Spring.GetProjectileDamages(integer, string) -> number?
Parameters
integerprojectileID
stringtag

one of: “paralyzeDamageTime” “impulseFactor” “impulseBoost” “craterMult” “craterBoost” “dynDamageExp” “dynDamageMin” “dynDamageRange” “dynDamageInverted” “craterAreaOfEffect” “damageAreaOfEffect” “edgeEffectiveness” “explosionSpeed”

  • or - an armor type index to get the damage against it.
Returns
number?

Spring.IsPosInMap (function)

[source]
Spring.IsPosInMap(number, number) -> boolean, boolean
Parameters
numberx
numberz
Returns
booleaninPlayArea
whether the position is in the active play area
booleaninMap
whether the position is in the full map area (currently this is the same as above)

Spring.GetGroundHeight (function)

Get ground height

On sea, this returns the negative depth of the seafloor

[source]

Spring.GetGroundHeight(number, number) -> number
Parameters
numberx
numberz
Returns
number

Spring.GetWaterPlaneLevel (function)

Get water plane height

Water may at some point become shaped (rivers etc) but for now it is always a flat plane. Use this function instead of GetWaterLevel to denote you are relying on that assumption.

[source]

See Spring.GetWaterLevel

Spring.GetWaterPlaneLevel() -> number
Returns
numberwaterPlaneLevel

Spring.GetWaterLevel (function)

Get water level in a specific position

Water is currently a flat plane, so this returns the same value regardless of XZ. However water may become more dynamic at some point so by using this you are future-proof.

[source]

Spring.GetWaterLevel(number, number) -> number
Parameters
numberx
numberz
Returns
numberwaterLevel

Spring.GetGroundOrigHeight (function)

Get ground height as it was at game start

Returns the original height before the ground got deformed

[source]

Spring.GetGroundOrigHeight(number, number) -> number
Parameters
numberx
numberz
Returns
number

Spring.GetGroundNormal (function)

[source]
Spring.GetGroundNormal(number, number, boolean?) -> number, number, number, number
Parameters
numberx
numberz
boolean?smoothed
(Default: false) raw or smoothed center normal
Returns
numbernormalX
numbernormalY
numbernormalZ
numberslope

Spring.GetGroundInfo (function)

[source]
Spring.GetGroundInfo(number, number) -> number, number, number, string, number, number, number, number, number, number, boolean
Parameters
numberx
numberz
Returns
numberix
numberiz
numberterrainTypeIndex
stringname
numbermetalExtraction
numberhardness
numbertankSpeed
numberkbotSpeed
numberhoverSpeed
numbershipSpeed
booleanreceiveTracks

Spring.GetGroundBlocked (function)

[source]
Spring.GetGroundBlocked() -> nil

Spring.GetGroundExtremes (function)

[source]
Spring.GetGroundExtremes() -> number, number, number, number
Returns
numberinitMinHeight
numberinitMaxHeight
numbercurrMinHeight
numbercurrMaxHeight

Spring.GetTerrainTypeData (function)

[source]
Spring.GetTerrainTypeData(number) -> number, string, number, number, number, number, number, boolean
Parameters
numberterrainTypeInfo
Returns
numberindex
stringname
numberhardness
numbertankSpeed
numberkbotSpeed
numberhoverSpeed
numbershipSpeed
booleanreceiveTracks

Spring.GetGrass (function)

[source]
Spring.GetGrass(number, number) -> number
Parameters
numberx
numberz
Returns
number

Spring.GetSmoothMeshHeight (function)

[source]
Spring.GetSmoothMeshHeight(number, number) -> number
Parameters
numberx
numberz
Returns
numberheight

Spring.TestMoveOrder (function)

[source]
Spring.TestMoveOrder(integer, number, number, number, number?, number?, number?, boolean?, boolean?, boolean?) -> boolean
Parameters
integerunitDefID
numberposX
numberposY
numberposZ
number?dirX
(Default: 0.0)
number?dirY
(Default: 0.0)
number?dirZ
(Default: 0.0)
boolean?testTerrain
(Default: true)
boolean?testObjects
(Default: true)
boolean?centerOnly
(Default: false)
Returns
boolean

Spring.TestBuildOrder (function)

[source]
Spring.TestBuildOrder(integer, number, number, number, Facing) -> BuildOrderBlockedStatus, integer?
Parameters
integerunitDefID
numberx
numbery
numberz
Facingfacing
Returns
BuildOrderBlockedStatusblocking
integer?featureID
A reclaimable feature in the way.

Spring.Pos2BuildPos (function)

Snaps a position to the building grid

[source]

Spring.Pos2BuildPos(integer, number, number, number, number?) -> number, number, number
Parameters
integerunitDefID
numberposX
numberposY
numberposZ
number?buildFacing
(Default: 0) one of SOUTH = 0, EAST = 1, NORTH = 2, WEST = 3
Returns
numberbuildPosX
numberbuildPosY
numberbuildPosZ

Spring.ClosestBuildPos (function)

[source]
Spring.ClosestBuildPos(integer, integer, number, number, number, number, number, number) -> number, number, number
Parameters
integerteamID
integerunitDefID
numberposX
numberposY
numberposZ
numbersearchRadius
numberminDistance
numberbuildFacing
one of SOUTH = 0, EAST = 1, NORTH = 2, WEST = 3
Returns
numberbuildPosX
numberbuildPosY
numberbuildPosZ

Spring.GetPositionLosState (function)

[source]
Spring.GetPositionLosState(number, number, number, integer?) -> boolean, boolean, boolean, boolean
Parameters
numberposX
numberposY
numberposZ
integer?allyTeamID
Returns
booleaninLosOrRadar
booleaninLos
booleaninRadar
booleaninJammer

Spring.IsPosInLos (function)

[source]
Spring.IsPosInLos(number, number, number, integer?) -> boolean
Parameters
numberposX
numberposY
numberposZ
integer?allyTeamID
Returns
boolean

Spring.IsPosInRadar (function)

[source]
Spring.IsPosInRadar(number, number, number, integer?) -> boolean
Parameters
numberposX
numberposY
numberposZ
integer?allyTeamID
Returns
boolean

Spring.IsPosInAirLos (function)

[source]
Spring.IsPosInAirLos(number, number, number, integer?) -> boolean
Parameters
numberposX
numberposY
numberposZ
integer?allyTeamID
Returns
boolean

Spring.GetUnitLosState (function)

[source]
Spring.GetUnitLosState(integer, integer?, true) -> integer?
Parameters
integerunitID
integer?allyTeamID
trueraw
Return a bitmask.
Returns
integer?bitmask

Spring.GetUnitLosState (function overload 1)

[source]
Spring.GetUnitLosState(integer, integer?, false?) -> { los: boolean, radar: boolean, ... }?
Parameters
integerunitID
integer?allyTeamID
false?raw
Return a bitmask.
Returns
{ los: boolean, radar: boolean, ... }?los

Spring.IsUnitInLos (function)

[source]
Spring.IsUnitInLos(integer, integer) -> boolean
Parameters
integerunitID
integerallyTeamID
Returns
booleaninLos

Spring.IsUnitInAirLos (function)

[source]
Spring.IsUnitInAirLos(integer, integer) -> boolean
Parameters
integerunitID
integerallyTeamID
Returns
booleaninAirLos

Spring.IsUnitInRadar (function)

[source]
Spring.IsUnitInRadar(integer, integer) -> boolean
Parameters
integerunitID
integerallyTeamID
Returns
booleaninRadar

Spring.IsUnitInJammer (function)

[source]
Spring.IsUnitInJammer(integer, integer) -> boolean
Parameters
integerunitID
integerallyTeamID
Returns
booleaninJammer

Spring.GetModelRootPiece (function)

[source]
Spring.GetModelRootPiece(string) -> number
Parameters
stringmodelName
Returns
numberindex
of the root piece

Spring.GetModelPieceMap (function)

[source]
Spring.GetModelPieceMap(string) -> table<string,number>?
Parameters
stringmodelName
Returns
table<string,number>?pieceInfos
where keys are piece names and values are indices

Spring.GetModelPieceList (function)

[source]
Spring.GetModelPieceList(string) -> string[]?
Parameters
stringmodelName
Returns
string[]?pieceNames

Spring.GetUnitRootPiece (function)

[source]
Spring.GetUnitRootPiece(integer) -> number
Parameters
integerunitID
Returns
numberindex
of the root piece

Spring.GetUnitPieceMap (function)

[source]
Spring.GetUnitPieceMap(integer) -> table<string,number>?
Parameters
integerunitID
Returns
table<string,number>?pieceInfos
where keys are piece names and values are indices

Spring.GetUnitPieceList (function)

[source]
Spring.GetUnitPieceList(integer) -> string[]
Parameters
integerunitID
Returns
string[]pieceNames

Spring.GetUnitPieceInfo (function)

[source]
Spring.GetUnitPieceInfo(integer, integer) -> PieceInfo?
Parameters
integerunitID
integerpieceIndex
Returns
PieceInfo?pieceInfo

Spring.GetUnitPiecePosDir (function)

[source]
Spring.GetUnitPiecePosDir(integer, integer) -> number?, number, number, number, number, number
Parameters
integerunitID
integerpieceIndex
Returns
number?posX
numberposY
numberposZ
numberdirX
numberdirY
numberdirZ

Spring.GetUnitPiecePosition (function)

[source]
Spring.GetUnitPiecePosition(integer, integer) -> number?, number, number
Parameters
integerunitID
integerpieceIndex
Returns
number?posX
numberposY
numberposZ

Spring.GetUnitPieceDirection (function)

[source]
Spring.GetUnitPieceDirection(integer, integer) -> number?, number, number
Parameters
integerunitID
integerpieceIndex
Returns
number?dirX
numberdirY
numberdirZ

Spring.GetUnitPieceMatrix (function)

[source]
Spring.GetUnitPieceMatrix(integer) -> number?, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number
Parameters
integerunitID
Returns
number?m11
numberm12
numberm13
numberm14
numberm21
numberm22
numberm23
numberm24
numberm31
numberm32
numberm33
numberm34
numberm41
numberm42
numberm43
numberm44

Spring.GetFeatureRootPiece (function)

[source]
Spring.GetFeatureRootPiece(integer) -> number
Parameters
integerfeatureID
Returns
numberindex
of the root piece

Spring.GetFeaturePieceMap (function)

[source]
Spring.GetFeaturePieceMap(integer) -> table<string,number>
Parameters
integerfeatureID
Returns
table<string,number>pieceInfos
where keys are piece names and values are indices

Spring.GetFeaturePieceList (function)

[source]
Spring.GetFeaturePieceList(integer) -> string[]
Parameters
integerfeatureID
Returns
string[]pieceNames

Spring.GetFeaturePieceInfo (function)

[source]
Spring.GetFeaturePieceInfo(integer, integer) -> PieceInfo?
Parameters
integerfeatureID
integerpieceIndex
Returns
PieceInfo?pieceInfo

Spring.GetFeaturePiecePosDir (function)

[source]
Spring.GetFeaturePiecePosDir(integer, integer) -> number?, number, number, number, number, number
Parameters
integerfeatureID
integerpieceIndex
Returns
number?posX
numberposY
numberposZ
numberdirX
numberdirY
numberdirZ

Spring.GetFeaturePiecePosition (function)

[source]
Spring.GetFeaturePiecePosition(integer, integer) -> number?, number, number
Parameters
integerfeatureID
integerpieceIndex
Returns
number?posX
numberposY
numberposZ

Spring.GetFeaturePieceDirection (function)

[source]
Spring.GetFeaturePieceDirection(integer, integer) -> number?, number, number
Parameters
integerfeatureID
integerpieceIndex
Returns
number?dirX
numberdirY
numberdirZ

Spring.GetFeaturePieceMatrix (function)

[source]
Spring.GetFeaturePieceMatrix(integer) -> number?, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number
Parameters
integerfeatureID
Returns
number?m11
numberm12
numberm13
numberm14
numberm21
numberm22
numberm23
numberm24
numberm31
numberm32
numberm33
numberm34
numberm41
numberm42
numberm43
numberm44

Spring.GetUnitScriptPiece (function)

[source]
Spring.GetUnitScriptPiece(integer) -> integer[]
Parameters
integerunitID
Returns
integer[]pieceIndices

Spring.GetUnitScriptPiece (function overload 1)

[source]
Spring.GetUnitScriptPiece(integer, integer) -> integer
Parameters
integerunitID
integerscriptPiece
Returns
integerpieceIndex

Spring.GetUnitScriptNames (function)

[source]
Spring.GetUnitScriptNames(integer) -> table<string,number>
Parameters
integerunitID
Returns
table<string,number>where
keys are piece names and values are piece indices

Spring.TraceRayGroundInDirection (function)

Checks for a ground collision in given direction

[source]

Checks if there is surface (ground, optionally water) towards a vector and returns the distance to the closest hit and its position, if any.

Spring.TraceRayGroundInDirection(number, number, number, number, number, number, boolean?) -> number, number, number, number
Parameters
numberposX
numberposY
numberposZ
numberdirX
numberdirY
numberdirZ
boolean?testWater
(Default: true)
Returns
numberrayLength
numberposX
numberposY
numberposZ

Spring.TraceRayGroundBetweenPositions (function)

Checks for a ground collision between two positions

[source]

Checks if there is surface (ground, optionally water) between two positions and returns the distance to the closest hit and its position, if any.

Spring.TraceRayGroundBetweenPositions(number, number, number, number, number, number, boolean?) -> number, number, number, number
Parameters
numberstartX
numberstartY
numberstartZ
numberendX
numberendY
numberendZ
boolean?testWater
(Default: true)
Returns
numberrayLength
numberposX
numberposY
numberposZ

Spring.GetRadarErrorParams (function)

[source]
Spring.GetRadarErrorParams(integer) -> number?, number, number
Parameters
integerallyTeamID
Returns
number?radarErrorSize
actual radar error size (when allyTeamID is allied to current team) or base radar error size
numberbaseRadarErrorSize
numberbaseRadarErrorMult

Spring.GetMetalMapSize (function)

[source]
Spring.GetMetalMapSize() -> integer, integer
Returns
integerx
X coordinate in worldspace / Game.metalMapSquareSize.
integerz
Z coordinate in worldspace / Game.metalMapSquareSize.

Spring.GetMetalAmount (function)

Returns the amount of metal on a single square.

[source]

Spring.GetMetalAmount(integer, integer) -> number
Parameters
integerx
X coordinate in worldspace / Game.metalMapSquareSize.
integerz
Z coordinate in worldspace / Game.metalMapSquareSize.
Returns
numberamount

Spring.SetMetalAmount (function)

Sets the amount of metal on a single square.

[source]

Spring.SetMetalAmount(integer, integer, number) -> nil
Parameters
integerx
X coordinate in worldspace / Game.metalMapSquareSize.
integerz
Z coordinate in worldspace / Game.metalMapSquareSize.
numbermetalAmount
must be between 0 and 255*maxMetal (with maxMetal from the .smd or mapinfo.lua).
Returns
nil

Spring.GetMetalExtraction (function)

[source]
Spring.GetMetalExtraction(integer, integer) -> number
Parameters
integerx
X coordinate in worldspace / Game.metalMapSquareSize.
integerz
Z coordinate in worldspace / Game.metalMapSquareSize.
Returns
numberextraction

Fields

MoveCtrl MoveCtrl
[source]

Callins (class)

[source]

Members

Callins:Initialize (function)

Called when the addon is (re)loaded.

[source]

Callins:Initialize() -> nil

Callins:LoadCode (function)

Called when the game is (re)loaded.

[source]

Callins:LoadCode() -> nil

Callins:Shutdown (function)

Called when the addon or the game is shutdown.

[source]

Callins:Shutdown() -> nil
Returns
nil

Callins:GotChatMsg (function)

Called when a player issues a UI command e.g. types /foo or /luarules foo.

[source]

Callins:GotChatMsg(string, integer) -> nil
Parameters
stringmsg
integerplayerID

Callins:Load (function)

Called after GamePreload and before GameStart. See Lua_SaveLoad.

[source]

Callins:Load(table) -> nil
Parameters
tablezipReader

Callins:GamePreload (function)

Called before the 0 gameframe.

Is not called when a saved game is loaded.

[source]

Callins:GamePreload() -> nil

Callins:GameStart (function)

Called upon the start of the game.

[source]

Is not called when a saved game is loaded.

Callins:GameStart() -> nil

Callins:GameOver (function)

Called when the game ends

[source]

Callins:GameOver(number[]) -> nil
Parameters
number[]winningAllyTeams
list of winning allyTeams, if empty the game result was undecided (like when dropping from an host).

Callins:GamePaused (function)

Called when the game is paused.

[source]

Callins:GamePaused(integer, boolean) -> nil
Parameters
integerplayerID
booleanpaused

Callins:GameFrame (function)

Called for every game simulation frame (30 per second).

[source]

Callins:GameFrame(number) -> nil
Parameters
numberframe
Starts at frame 1

Callins:GameFramePost (function)

Called at the end of every game simulation frame

[source]

Callins:GameFramePost(number) -> nil
Parameters
numberframe
Starts at frame 1

Callins:GameID (function)

Called once to deliver the gameID

[source]

Callins:GameID(string) -> nil
Parameters
stringgameID
encoded in hex.

Callins:TeamDied (function)

Called when a team dies (see Spring.KillTeam).

[source]

Callins:TeamDied(integer) -> nil
Parameters
integerteamID

Callins:TeamChanged (function)

[source]
Callins:TeamChanged(integer) -> nil
Parameters
integerteamID

Callins:PlayerChanged (function)

Called whenever a player’s status changes e.g. becoming a spectator.

[source]

Callins:PlayerChanged(integer) -> nil
Parameters
integerplayerID

Callins:PlayerAdded (function)

Called whenever a new player joins the game.

[source]

Callins:PlayerAdded(integer) -> nil
Parameters
integerplayerID

Callins:PlayerRemoved (function)

Called whenever a player is removed from the game.

[source]

Callins:PlayerRemoved(integer, string) -> nil
Parameters
integerplayerID
stringreason

Callins:UnitCreated (function)

Called at the moment the unit is created.

[source]

Callins:UnitCreated(integer, integer, integer, integer?) -> nil
Parameters
integerunitID
integerunitDefID
integerunitTeam
integer?builderID

Callins:UnitFinished (function)

Called at the moment the unit is completed.

[source]

Callins:UnitFinished(integer, integer, integer) -> nil
Parameters
integerunitID
integerunitDefID
integerunitTeam

Callins:UnitFromFactory (function)

Called when a factory finishes construction of a unit.

[source]

Callins:UnitFromFactory(integer, integer, integer, integer, integer, boolean) -> nil
Parameters
integerunitID
integerunitDefID
integerunitTeam
integerfactID
integerfactDefID
booleanuserOrders

Callins:UnitReverseBuilt (function)

Called when a living unit becomes a nanoframe again.

[source]

Callins:UnitReverseBuilt(integer, integer, integer) -> nil
Parameters
integerunitID
integerunitDefID
integerunitTeam

Callins:UnitConstructionDecayed (function)

Called when a unit being built starts decaying.

[source]

Callins:UnitConstructionDecayed(integer, integer, integer, number, number, number) -> nil
Parameters
integerunitID
integerunitDefID
integerunitTeam
numbertimeSinceLastBuild
numberiterationPeriod
numberpart

Callins:UnitDestroyed (function)

Called when a unit is destroyed.

[source]

Callins:UnitDestroyed(integer, integer, integer, integer, integer, number, integer) -> nil
Parameters
integerunitID
integerunitDefID
integerunitTeam
integerattackerID
integerattackerDefID
numberattackerTeam
integerweaponDefID

Callins:UnitTaken (function)

Called when a unit is transferred between teams. This is called before UnitGiven and in that moment unit is still assigned to the oldTeam.

[source]

Callins:UnitTaken(integer, integer, number, number) -> nil
Parameters
integerunitID
integerunitDefID
numberoldTeam
numbernewTeam

Callins:UnitGiven (function)

Called when a unit is transferred between teams. This is called after UnitTaken and in that moment unit is assigned to the newTeam.

[source]

Callins:UnitGiven(integer, integer, number, number) -> nil
Parameters
integerunitID
integerunitDefID
numbernewTeam
numberoldTeam

Callins:UnitIdle (function)

Called when a unit is idle (empty command queue).

[source]

Callins:UnitIdle(integer, integer, integer) -> nil
Parameters
integerunitID
integerunitDefID
integerunitTeam

Callins:UnitCommand (function)

Called after when a unit accepts a command, after AllowCommand returns true.

[source]

Callins:UnitCommand(integer, integer, integer, integer, table, CommandOptions, number) -> nil
Parameters
integerunitID
integerunitDefID
integerunitTeam
integercmdID
tablecmdParams
CommandOptionsoptions
numbercmdTag

Callins:UnitCmdDone (function)

Called when a unit completes a command.

[source]

Callins:UnitCmdDone(integer, integer, integer, integer, table, CommandOptions, number) -> nil
Parameters
integerunitID
integerunitDefID
integerunitTeam
integercmdID
tablecmdParams
CommandOptionsoptions
numbercmdTag

Callins:UnitDamaged (function)

Called when a unit is damaged (after UnitPreDamaged).

[source]

Callins:UnitDamaged(integer, integer, integer, number, number, integer, integer, integer, integer, number) -> nil
Parameters
integerunitID
integerunitDefID
integerunitTeam
numberdamage
numberparalyzer
integerweaponDefID
integerprojectileID
integerattackerID
integerattackerDefID
numberattackerTeam

Callins:UnitStunned (function)

Called when a unit changes its stun status.

[source]

Callins:UnitStunned(integer, integer, integer, boolean) -> nil
Parameters
integerunitID
integerunitDefID
integerunitTeam
booleanstunned

Callins:UnitExperience (function)

Called when a unit gains experience greater or equal to the minimum limit set by calling Spring.SetExperienceGrade.

Should be called more reliably with small values of experience grade.

[source]

Callins:UnitExperience(integer, integer, integer, number, number) -> nil
Parameters
integerunitID
integerunitDefID
integerunitTeam
numberexperience
numberoldExperience

Callins:UnitHarvestStorageFull (function)

Called when a unit’s harvestStorage is full (according to its unitDef’s entry).

[source]

Callins:UnitHarvestStorageFull(integer, integer, integer) -> nil
Parameters
integerunitID
integerunitDefID
integerunitTeam

Callins:UnitSeismicPing (function)

Called when a unit emits a seismic ping.

[source]

See seismicSignature.

Callins:UnitSeismicPing(number, number, number, number, integer, integer, integer) -> nil
Parameters
numberx
numbery
numberz
numberstrength
integerallyTeam
integerunitID
integerunitDefID

Callins:UnitEnteredRadar (function)

Called when a unit enters radar of an allyteam.

Also called when a unit enters LOS without any radar coverage.

[source]

Callins:UnitEnteredRadar(integer, integer, integer, integer) -> nil
Parameters
integerunitID
integerunitTeam
integerallyTeam
integerunitDefID

Callins:UnitEnteredLos (function)

Called when a unit enters LOS of an allyteam.

Its called after the unit is in LOS, so you can query that unit.

[source]

Callins:UnitEnteredLos(integer, integer, integer, integer) -> nil
Parameters
integerunitID
integerunitTeam
integerallyTeam
who’s LOS the unit entered.
integerunitDefID

Callins:UnitLeftRadar (function)

Called when a unit leaves radar of an allyteam.

Also called when a unit leaves LOS without any radar coverage. For widgets, this is called just after a unit leaves radar coverage, so widgets cannot get the position of units that left their radar.

[source]

Callins:UnitLeftRadar(integer, integer, integer, integer) -> nil
Parameters
integerunitID
integerunitTeam
integerallyTeam
integerunitDefID

Callins:UnitLeftLos (function)

Called when a unit leaves LOS of an allyteam.

For widgets, this one is called just before the unit leaves los, so you can still get the position of a unit that left los.

[source]

Callins:UnitLeftLos(integer, integer, integer, integer) -> nil
Parameters
integerunitID
integerunitTeam
integerallyTeam
integerunitDefID

Callins:UnitLoaded (function)

Called when a unit is loaded by a transport.

[source]

Callins:UnitLoaded(integer, integer, integer, integer, integer) -> nil
Parameters
integerunitID
integerunitDefID
integerunitTeam
integertransportID
integertransportTeam

Callins:UnitUnloaded (function)

Called when a unit is unloaded by a transport.

[source]

Callins:UnitUnloaded(integer, integer, integer, integer, integer) -> nil
Parameters
integerunitID
integerunitDefID
integerunitTeam
integertransportID
integertransportTeam

Callins:UnitEnteredUnderwater (function)

[source]
Callins:UnitEnteredUnderwater(integer, integer, integer) -> nil
Parameters
integerunitID
integerunitDefID
integerunitTeam

Callins:UnitEnteredWater (function)

[source]
Callins:UnitEnteredWater(integer, integer, integer) -> nil
Parameters
integerunitID
integerunitDefID
integerunitTeam

Callins:UnitLeftAir (function)

[source]
Callins:UnitLeftAir(integer, integer, integer) -> nil
Parameters
integerunitID
integerunitDefID
integerunitTeam

Callins:UnitLeftUnderwater (function)

[source]
Callins:UnitLeftUnderwater(integer, integer, integer) -> nil
Parameters
integerunitID
integerunitDefID
integerunitTeam

Callins:UnitLeftWater (function)

[source]
Callins:UnitLeftWater(integer, integer, integer) -> nil
Parameters
integerunitID
integerunitDefID
integerunitTeam

Callins:UnitEnteredAir (function)

[source]
Callins:UnitEnteredAir(integer, integer, integer) -> nil
Parameters
integerunitID
integerunitDefID
integerunitTeam

Callins:UnitCloaked (function)

Called when a unit cloaks.

[source]

Callins:UnitCloaked(integer, integer, integer) -> nil
Parameters
integerunitID
integerunitDefID
integerunitTeam

Callins:UnitDecloaked (function)

Called when a unit decloaks.

[source]

Callins:UnitDecloaked(integer, integer, integer) -> nil
Parameters
integerunitID
integerunitDefID
integerunitTeam

Callins:UnitUnitCollision (function)

Called when two units collide.

Both units must be registered with Script.SetWatchUnit.

[source]

Callins:UnitUnitCollision(integer, integer) -> nil
Parameters
integercolliderID
integercollideeID

Callins:UnitFeatureCollision (function)

Called when a unit collides with a feature.

[source]

The unit must be registered with Script.SetWatchUnit and the feature registered with Script.SetWatchFeature.

Callins:UnitFeatureCollision(integer, integer) -> nil
Parameters
integercolliderID
integercollideeID

Callins:UnitMoveFailed (function)

[source]
Callins:UnitMoveFailed(integer, integer, integer) -> nil
Parameters
integerunitID
integerunitDefID
integerunitTeam

Callins:UnitArrivedAtGoal (function)

[source]
Callins:UnitArrivedAtGoal(integer, integer, integer) -> nil
Parameters
integerunitID
integerunitDefID
integerunitTeam

Callins:RenderUnitDestroyed (function)

Called just before a unit is invalid, after it finishes its death animation.

[source]

Callins:RenderUnitDestroyed(integer, integer, integer) -> nil
Parameters
integerunitID
integerunitDefID
integerunitTeam

Callins:FeatureCreated (function)

Called when a feature is created.

[source]

Callins:FeatureCreated(integer, integer) -> nil
Parameters
integerfeatureID
integerallyTeamID

Callins:FeatureDestroyed (function)

Called when a feature is destroyed.

[source]

Callins:FeatureDestroyed(integer, integer) -> nil
Parameters
integerfeatureID
integerallyTeamID

Callins:FeatureDamaged (function)

Called when a feature is damaged.

[source]

Callins:FeatureDamaged(integer, integer, number, number, integer, integer, integer, integer, number) -> nil
Parameters
integerfeatureID
integerfeatureDefID
numberfeatureTeam
numberdamage
integerweaponDefID
integerprojectileID
integerattackerID
integerattackerDefID
numberattackerTeam

Callins:ProjectileCreated (function)

Called when the projectile is created.

[source]

Note that weaponDefID is missing if the projectile is spawned as part of a burst, but Spring.GetProjectileDefID and Spring.GetProjectileName still work in callin scope using proID.

See Script.SetWatchWeapon

Callins:ProjectileCreated(integer, integer, integer) -> nil
Parameters
integerproID
integerproOwnerID
integerweaponDefID

Callins:ProjectileDestroyed (function)

Called when the projectile is destroyed.

[source]

See Script.SetWatchWeapon

Callins:ProjectileDestroyed(integer, integer, integer) -> nil
Parameters
integerproID
integerownerID
integerproWeaponDefID

Callins:Explosion (function)

Called when an explosion occurs.

[source]

Only called for weaponDefIDs registered via Script.SetWatchExplosion or Script.SetWatchWeapon.

See Script.SetWatchWeapon

Callins:Explosion(integer, number, number, number, integer, integer) -> boolean
Parameters
integerweaponDefID
numberpx
numberpy
numberpz
integerattackerID
integerprojectileID
Returns
booleannoGfx
if then no graphical effects are drawn by the engine for this explosion.

Callins:StockpileChanged (function)

Called when a units stockpile of weapons increases or decreases.

[source]

Callins:StockpileChanged(integer, integer, integer, integer, integer, integer) -> nil
Parameters
integerunitID
integerunitDefID
integerunitTeam
integerweaponNum
integeroldCount
integernewCount

Callins:RecvLuaMsg (function)

Receives messages from unsynced sent via Spring.SendLuaRulesMsg or Spring.SendLuaUIMsg.

[source]

Callins:RecvLuaMsg(string, integer) -> nil
Parameters
stringmsg
integerplayerID

Callins:Save (function)

Called when a chat command ‘/save’ or ‘/savegame’ is received.

[source]

Callins:Save(table) -> nil
Parameters
tablezip
a userdatum representing the savegame zip file. See Lua_SaveLoad.

Callins:UnsyncedHeightMapUpdate (function)

Called when the unsynced copy of the height-map is altered.

[source]

Callins:UnsyncedHeightMapUpdate() -> number, number, number, number
Returns
numberx1
numberz1
numberx2
numberz2

Callins:Update (function)

Called for every draw frame (including when the game is paused) and at least once per sim frame except when catching up.

[source]

Callins:Update(number) -> nil
Parameters
numberdt
the time since the last update.

Callins:ViewResize (function)

Called whenever the window is resized.

[source]

Callins:ViewResize(number, number) -> nil
Parameters
numberviewSizeX
numberviewSizeY

Callins:FontsChanged (function)

Called whenever fonts are updated. Signals the game display lists and other caches should be discarded.

Gets called before other Update and Draw callins.

[source]

Callins:FontsChanged() -> nil

Callins:SunChanged (function)

[source]
Callins:SunChanged() -> nil

Callins:DefaultCommand (function)

Used to set the default command when a unit is selected.

[source]

Callins:DefaultCommand(("unit"|"feature"), integer) -> nil
Parameters
("unit"|"feature")type
The type of the object pointed at.
integerid
The unitID or featureID.

Callins:DrawGenesis (function)

Use this callin to update textures, shaders, etc.

[source]

Doesn’t render to screen! Also available to LuaMenu.

Callins:DrawGenesis() -> nil

Callins:DrawWorld (function)

Spring draws command queues, ‘map stuff’, and map marks.

[source]

Callins:DrawWorld() -> nil

Callins:DrawWorldPreUnit (function)

Spring draws units, features, some water types, cloaked units, and the sun.

[source]

Callins:DrawWorldPreUnit() -> nil

Callins:DrawPreDecals (function)

Called before decals are drawn

[source]

Callins:DrawPreDecals() -> nil

Callins:DrawWaterPost (function)

[source]
Callins:DrawWaterPost() -> nil

Callins:DrawShadowPassTransparent (function)

Invoked after semi-transparent shadows pass is about to conclude

[source]

This callin has depth and color buffer of shadowmap bound via FBO as well as the FFP state to do “semi-transparent” shadows pass (traditionally only used to draw shadows of shadow casting semi-transparent particles). Can be used to draw nice colored shadows.

Callins:DrawShadowPassTransparent() -> nil

Callins:DrawWorldShadow (function)

[source]
Callins:DrawWorldShadow() -> nil

Callins:DrawWorldReflection (function)

[source]
Callins:DrawWorldReflection() -> nil

Callins:DrawWorldRefraction (function)

[source]
Callins:DrawWorldRefraction() -> nil

Callins:DrawGroundPreForward (function)

Runs at the start of the forward pass when a custom map shader has been assigned via Spring.SetMapShader (convenient for setting uniforms).

[source]

Callins:DrawGroundPreForward() -> nil

Callins:DrawGroundPostForward (function)

[source]
Callins:DrawGroundPostForward() -> nil

Callins:DrawGroundPreDeferred (function)

Runs at the start of the deferred pass when a custom map shader has been assigned via Spring.SetMapShader (convenient for setting uniforms).

[source]

Callins:DrawGroundPreDeferred() -> nil

Callins:DrawGroundDeferred (function)

[source]
Callins:DrawGroundDeferred() -> nil

Callins:DrawGroundPostDeferred (function)

This runs at the end of its respective deferred pass.

[source]

Allows proper frame compositing (with ground flashes/decals/foliage/etc, which are drawn between it and DrawWorldPreUnit) via gl.CopyToTexture.

Callins:DrawGroundPostDeferred() -> nil

Callins:DrawUnitsPostDeferred (function)

Runs at the end of the unit deferred pass.

[source]

Informs Lua code it should make use of the $model_gbuffer_* textures before another pass overwrites them (and to allow proper blending with e.g. cloaked objects which are drawn between these events and DrawWorld via gl.CopyToTexture). N.B. The *PostDeferred events are only sent (and only have a real purpose) if forward drawing is disabled.

Callins:DrawUnitsPostDeferred() -> nil

Callins:DrawFeaturesPostDeferred (function)

Runs at the end of the feature deferred pass to inform Lua code it should make use of the $model_gbuffer_* textures before another pass overwrites them (and to allow proper blending with e.g. cloaked objects which are drawn between these events and DrawWorld via gl.CopyToTexture). N.B. The *PostDeferred events are only sent (and only have a real purpose) if forward drawing is disabled.

[source]

Callins:DrawFeaturesPostDeferred() -> nil

Callins:DrawShadowUnitsLua (function)

[source]
Callins:DrawShadowUnitsLua() -> nil

Callins:DrawShadowFeaturesLua (function)

[source]
Callins:DrawShadowFeaturesLua() -> nil

Callins:DrawWorldPreParticles (function)

DrawWorldPreParticles is called multiples times per draw frame. Each call has a different permutation of values for drawAboveWater, drawBelowWater, drawReflection, and drawRefraction.

[source]

Callins:DrawWorldPreParticles(boolean, boolean, boolean, boolean) -> nil
Parameters
booleandrawAboveWater
booleandrawBelowWater
booleandrawReflection
booleandrawRefraction

Callins:DrawScreen (function)

Also available to LuaMenu.

[source]

Callins:DrawScreen(number, number) -> nil
Parameters
numberviewSizeX
numberviewSizeY

Callins:DrawScreenEffects (function)

[source]
Callins:DrawScreenEffects(number, number) -> nil
Parameters
numberviewSizeX
numberviewSizeY

Callins:DrawScreenPost (function)

Similar to DrawScreenEffects, this can be used to alter the contents of a frame after it has been completely rendered (i.e. World, MiniMap, Menu, UI).

[source]

Note: This callin is invoked after the software rendered cursor (configuration variable HardwareCursor=0) is drawn.

Callins:DrawScreenPost(number, number) -> nil
Parameters
numberviewSizeX
numberviewSizeY

Callins:DrawInMiniMap (function)

[source]
Callins:DrawInMiniMap(number, number) -> nil
Parameters
numbersx
relative to the minimap’s position and scale.
numbersy
relative to the minimap’s position and scale.

Callins:DrawInMiniMapBackground (function)

[source]
Callins:DrawInMiniMapBackground(number, number) -> nil
Parameters
numbersx
relative to the minimap’s position and scale.
numbersy
relative to the minimap’s position and scale.

Callins:GameProgress (function)

Called every 60 frames, calculating delta between GameFrame and GameProgress.

Can give an ETA about catching up with simulation for mid-game join players.

[source]

Callins:GameProgress(integer) -> nil
Parameters
integerserverFrameNum

Callins:KeyMapChanged (function)

Called when the keymap changes

[source]

Can be caused due to a change in language or keyboard

Callins:KeyMapChanged() -> nil

Callins:KeyPress (function)

Called repeatedly when a key is pressed down.

[source]

Return true if you don’t want other callins or the engine to also receive this keypress. A list of key codes can be seen at the SDL wiki.

Callins:KeyPress(number, KeyModifiers, boolean, boolean, number, number, table) -> boolean
Parameters
numberkeyCode
KeyModifiersmods
booleanisRepeat
If you want an action to occur only once check for isRepeat == false.
booleanlabel
the name of the key
numberutf32char
(deprecated) always 0
numberscanCode
tableactionList
the list of actions for this keypress
Returns
booleanhalt
whether to halt the chain for consumers of the keypress

Callins:KeyRelease (function)

Called when the key is released.

[source]

Callins:KeyRelease(number, KeyModifiers, boolean, number, number, table) -> boolean
Parameters
numberkeyCode
KeyModifiersmods
booleanlabel
the name of the key
numberutf32char
(deprecated) always 0
numberscanCode
tableactionList
the list of actions for this keyrelease
Returns
boolean

Callins:TextInput (function)

Called whenever a key press results in text input.

[source]

Callins:TextInput(string) -> nil
Parameters
stringutf8char

Callins:TextEditing (function)

[source]
Callins:TextEditing(string, number, number) -> nil
Parameters
stringutf8
numberstart
numberlength

Callins:MousePress (function)

Called when a mouse button is pressed.

The button parameter supports up to 7 buttons. Must return true for MouseRelease and other functions to be called.

[source]

Callins:MousePress(number, number, number) -> boolean
Parameters
numberx
numbery
numberbutton
Returns
booleanbecomeMouseOwner

Callins:MouseRelease (function)

Called when a mouse button is released.

[source]

Please note that in order to have Spring call Spring.MouseRelease, you need to have a Spring.MousePress call-in in the same addon that returns true.

Callins:MouseRelease(number, number, number) -> boolean
Parameters
numberx
numbery
numberbutton
Returns
booleanbecomeMouseOwner

Callins:MouseMove (function)

Called when the mouse is moved.

[source]

Callins:MouseMove(number, number, number, number, number) -> nil
Parameters
numberx
final x position
numbery
final y position
numberdx
distance travelled in x
numberdy
distance travelled in y
numberbutton

Callins:MouseWheel (function)

Called when the mouse wheel is moved.

[source]

Callins:MouseWheel(boolean, number) -> nil
Parameters
booleanup
the direction
numbervalue
the amount travelled

Callins:IsAbove (function)

Called every Update.

[source]

Must return true for Mouse* events and Spring.GetToolTip to be called.

Callins:IsAbove(number, number) -> boolean
Parameters
numberx
numbery
Returns
booleanisAbove

Callins:GetTooltip (function)

Called when Spring.IsAbove returns true.

[source]

Callins:GetTooltip(number, number) -> string
Parameters
numberx
numbery
Returns
stringtooltip

Callins:ActiveCommandChanged (function)

Called when a command is issued.

[source]

Callins:ActiveCommandChanged(integer?, integer?) -> nil
Parameters
integer?cmdId
integer?cmdType

Callins:CameraRotationChanged (function)

Called whenever the camera rotation changes

[source]

Callins:CameraRotationChanged(number, number, number) -> nil
Parameters
numberrotX
Camera rotation around the x axis in radians.
numberrotY
Camera rotation around the y axis in radians.
numberrotZ
Camera rotation around the z axis in radians.

Callins:CameraPositionChanged (function)

Called whenever the camera position changes

[source]

Callins:CameraPositionChanged(number, number, number) -> nil
Parameters
numberposX
Camera position x in world coordinates
numberposY
Camera position y in world coordinates
numberposZ
Camera position z in world coordinates

Callins:CommandNotify (function)

Called when a command is issued.

[source]

Callins:CommandNotify(integer, table, CommandOptions) -> boolean
Parameters
integercmdID
tablecmdParams
CommandOptionsoptions
Returns
booleanReturning
true deletes the command and does not send it through the network.

Callins:AddConsoleLine (function)

Called when text is entered into the console (e.g. Spring.Echo).

[source]

Callins:AddConsoleLine(string, integer) -> nil
Parameters
stringmsg
integerpriority

Callins:GroupChanged (function)

Called when a unit is added to or removed from a control group.

[source]

Callins:GroupChanged(integer) -> nil
Parameters
integergroupID

Callins:WorldTooltip (function)

[source]
Callins:WorldTooltip("unit", integer) -> string
Parameters
"unit"type
integerunitId
Returns
stringtooltip

Callins:WorldTooltip (function overload 1)

[source]
Callins:WorldTooltip("feature", integer) -> string
Parameters
"feature"type
integerfeatureId
Returns
stringtooltip

Callins:WorldTooltip (function overload 2)

[source]
Callins:WorldTooltip("ground", number, number, number) -> string
Parameters
"ground"type
numberposX
numberposY
numberposZ
Returns
stringtooltip

Callins:WorldTooltip (function overload 3)

[source]
Callins:WorldTooltip("selection") -> string
Parameters
"selection"type
Returns
stringtooltip

Callins:MapDrawCmd (function)

[source]
Callins:MapDrawCmd(integer, "point", number, number, number, string) -> nil
Parameters
integerplayerID
"point"type
numberposX
numberposY
numberposZ
stringlabel

Callins:MapDrawCmd (function overload 1)

[source]
Callins:MapDrawCmd(integer, "line", number, number, number, number, number, number) -> nil
Parameters
integerplayerID
"line"type
numberpos1X
numberpos1Y
numberpos1Z
numberpos2X
numberpos2Y
numberpos2Z

Callins:MapDrawCmd (function overload 2)

[source]
Callins:MapDrawCmd(integer, "erase", number, number, number, number) -> nil
Parameters
integerplayerID
"erase"type
numberposX
numberposY
numberposZ
numberradius

Callins:GameSetup (function)

[source]
Callins:GameSetup(string, boolean, table) -> boolean, boolean
Parameters
stringstate
booleanready
tableplayerStates
Returns
booleansuccess
booleannewReady

Callins:RecvSkirmishAIMessage (function)

[source]
Callins:RecvSkirmishAIMessage(integer, string) -> nil
Parameters
integeraiTeam
stringdataStr

Callins:DownloadQueued (function)

Called when a Pr-downloader download is queued

[source]

Callins:DownloadQueued(integer, string, string) -> nil
Parameters
integerid
stringname
stringtype

Callins:DownloadStarted (function)

Called when a Pr-downloader download is started via VFS.DownloadArchive.

[source]

Callins:DownloadStarted(integer) -> nil
Parameters
integerid

Callins:DownloadFinished (function)

Called when a Pr-downloader download finishes successfully.

[source]

Callins:DownloadFinished(integer) -> nil
Parameters
integerid

Callins:DownloadFailed (function)

Called when a Pr-downloader download fails to complete.

[source]

Callins:DownloadFailed(integer, integer) -> nil
Parameters
integerid
integererrorID

Callins:DownloadProgress (function)

Called incrementally during a Pr-downloader download.

[source]

Callins:DownloadProgress(integer, integer, integer) -> nil
Parameters
integerid
integerdownloaded
integertotal

SyncedCallins (class)

[source]

Functions called by the Engine (Synced).

Members

SyncedCallins:CommandFallback (function)

Called when the unit reaches an unknown command in its queue (i.e. one not handled by the engine).

[source]

SyncedCallins:CommandFallback(integer, integer, integer, integer, number[], CommandOptions, number) -> boolean
Parameters
integerunitID
integerunitDefID
integerunitTeam
integercmdID
number[]cmdParams
CommandOptionscmdOptions
numbercmdTag
Returns
booleanwhether
to remove the command from the queue

SyncedCallins:AllowCommand (function)

Called when the command is given, before the unit’s queue is altered.

[source]

The queue remains untouched when a command is blocked, whether it would be queued or replace the queue.

SyncedCallins:AllowCommand(integer, integer, integer, integer, number[], CommandOptions, number, boolean, boolean) -> boolean
Parameters
integerunitID
integerunitDefID
integerunitTeam
integercmdID
number[]cmdParams
CommandOptionscmdOptions
numbercmdTag
booleansynced
booleanfromLua
Returns
booleanwhether
it should be let into the queue.

SyncedCallins:AllowUnitCreation (function)

Called just before unit is created.

[source]

SyncedCallins:AllowUnitCreation(integer, integer, integer, number, number, number, FacingInteger) -> boolean, boolean
Parameters
integerunitDefID
integerbuilderID
integerbuilderTeam
numberx
numbery
numberz
FacingIntegerfacing
Returns
booleanallow
booleandropOrder

SyncedCallins:AllowUnitTransfer (function)

Called just before a unit is transferred to a different team.

[source]

SyncedCallins:AllowUnitTransfer(integer, integer, integer, integer, boolean) -> boolean
Parameters
integerunitID
integerunitDefID
integeroldTeam
integernewTeam
booleancapture
Returns
booleanwhether
or not the transfer is permitted.

SyncedCallins:AllowUnitBuildStep (function)

Called just before a unit progresses its build percentage.

[source]

SyncedCallins:AllowUnitBuildStep(integer, integer, integer, integer, number) -> boolean
Parameters
integerbuilderID
integerbuilderTeam
integerunitID
integerunitDefID
numberpart
Returns
booleanwhether
or not the build makes progress.

SyncedCallins:AllowUnitCaptureStep (function)

[source]
SyncedCallins:AllowUnitCaptureStep(integer, integer, integer, integer, number) -> boolean
Parameters
integerbuilderID
integerbuilderTeam
integerunitID
integerunitDefID
numberpart
Returns
booleanwhether
or not the capture makes progress.

SyncedCallins:AllowUnitTransport (function)

[source]
SyncedCallins:AllowUnitTransport(integer, integer, integer, integer, integer, integer) -> boolean
Parameters
integertransporterID
integertransporterUnitDefID
integertransporterTeam
integertransporteeID
integertransporteeUnitDefID
integertransporteeTeam
Returns
booleanwhether
or not the transport is allowed

SyncedCallins:AllowUnitTransportLoad (function)

[source]
SyncedCallins:AllowUnitTransportLoad(integer, integer, integer, integer, integer, integer, number, number, number) -> boolean
Parameters
integertransporterID
integertransporterUnitDefID
integertransporterTeam
integertransporteeID
integertransporteeUnitDefID
integertransporteeTeam
numberx
numbery
numberz
Returns
booleanwhether
or not the transport load is allowed

SyncedCallins:AllowUnitTransportUnload (function)

[source]
SyncedCallins:AllowUnitTransportUnload(integer, integer, integer, integer, integer, integer, number, number, number) -> boolean
Parameters
integertransporterID
integertransporterUnitDefID
integertransporterTeam
integertransporteeID
integertransporteeUnitDefID
integertransporteeTeam
numberx
numbery
numberz
Returns
booleanwhether
or not the transport unload is allowed

SyncedCallins:AllowUnitCloak (function)

[source]
SyncedCallins:AllowUnitCloak(integer, integer?) -> boolean
Parameters
integerunitID
integer?enemyID
Returns
booleanwhether
unit is allowed to cloak

SyncedCallins:AllowUnitCloak (function overload 1)

[source]
SyncedCallins:AllowUnitCloak(integer, integer?, number?) -> boolean
Parameters
integerunitID
integer?objectID
number?weaponNum
Returns
booleanwhether
unit is allowed to decloak

SyncedCallins:AllowUnitKamikaze (function)

[source]
SyncedCallins:AllowUnitKamikaze(integer, integer) -> boolean
Parameters
integerunitID
integertargetID
Returns
booleanwhether
unit is allowed to selfd

SyncedCallins:AllowFeatureCreation (function)

Called just before feature is created.

[source]

SyncedCallins:AllowFeatureCreation(integer, integer, number, number, number) -> boolean
Parameters
integerfeatureDefID
integerteamID
numberx
numbery
numberz
Returns
booleanwhether
or not the creation is permitted

SyncedCallins:AllowFeatureBuildStep (function)

Called just before a feature changes its build percentage.

[source]

Note that this is also called for resurrecting features, and for refilling features with resources before resurrection. On reclaim the part values are negative, and on refill and resurrect they are positive. Part is the percentage the feature be built or reclaimed per frame. Eg. for a 30 workertime builder, that’s a build power of 1 per frame. For a 50 buildtime feature reclaimed by this builder, part will be 100/-50(/1) = -2%, or -0.02 numerically.

SyncedCallins:AllowFeatureBuildStep(integer, integer, integer, integer, number) -> boolean
Parameters
integerbuilderID
integerbuilderTeam
integerfeatureID
integerfeatureDefID
numberpart
Returns
booleanwhether
or not the change is permitted

SyncedCallins:AllowResourceLevel (function)

Called when a team sets the sharing level of a resource.

[source]

SyncedCallins:AllowResourceLevel(integer, string, number) -> boolean
Parameters
integerteamID
stringres
numberlevel
Returns
booleanwhether
or not the sharing level is permitted

SyncedCallins:AllowResourceTransfer (function)

Called just before resources are transferred between players.

[source]

SyncedCallins:AllowResourceTransfer(integer, integer, string, number) -> boolean
Parameters
integeroldTeamID
integernewTeamID
stringres
numberamount
Returns
booleanwhether
or not the transfer is permitted.

SyncedCallins:AllowDirectUnitControl (function)

Determines if this unit can be controlled directly in FPS view.

[source]

SyncedCallins:AllowDirectUnitControl(integer, integer, integer, integer) -> boolean
Parameters
integerunitID
integerunitDefID
integerunitTeam
integerplayerID
Returns
booleanallow

SyncedCallins:AllowBuilderHoldFire (function)

Called when a construction unit wants to “use his nano beams”.

[source]

SyncedCallins:AllowBuilderHoldFire(integer, integer, unknown) -> boolean
Parameters
integerunitID
integerunitDefID
unknownaction
Returns
booleanactionAllowed

SyncedCallins:AllowStartPosition (function)

Whether a start position should be allowed

[source]

clamped{X,Y,Z} are the coordinates clamped into start-boxes, raw is where player tried to place their marker.

The readyState can be any one of:

0 - player picked a position, 1 - player clicked ready, 2 - player pressed ready OR the game was force-started (player did not click ready, but is now forcibly readied) or 3 - the player failed to load. The default ‘failed to choose’ start-position is the north-west point of their startbox, or (0,0,0) if they do not have a startbox.

SyncedCallins:AllowStartPosition(integer, integer, number, number, number, number, number, number, number) -> boolean
Parameters
integerplayerID
integerteamID
numberreadyState
numberclampedX
numberclampedY
numberclampedZ
numberrawX
numberrawY
numberrawZ
Returns
booleanallow

SyncedCallins:MoveCtrlNotify (function)

Enable both Spring.MoveCtrl.SetCollideStop and Spring.MoveCtrl.SetTrackGround to enable this call-in.

[source]

SyncedCallins:MoveCtrlNotify(integer, integer, integer, number) -> boolean
Parameters
integerunitID
integerunitDefID
integerunitTeam
numberdata
was supposed to indicate the type of notification but currently never has a value other than 1 (“unit hit the ground”).
Returns
booleanwhether
or not the unit should remain script-controlled (false) or return to engine controlled movement (true).

SyncedCallins:TerraformComplete (function)

Called when pre-building terrain levelling terraforms are completed (c.f. levelGround)

[source]

SyncedCallins:TerraformComplete(integer, integer, integer, integer, integer, integer) -> boolean
Parameters
integerunitID
integerunitDefID
integerunitTeam
integerbuildUnitID
integerbuildUnitDefID
integerbuildUnitTeam
Returns
booleanif
true the current build order is terminated

SyncedCallins:UnitPreDamaged (function)

Called before damage is applied to the unit, allows fine control over how much damage and impulse is applied.

[source]

Called after every damage modification (even HitByWeaponId) but before the damage is applied

expects two numbers returned by lua code: 1st is stored under *newDamage if newDamage != NULL 2nd is stored under *impulseMult if impulseMult != NULL

SyncedCallins:UnitPreDamaged(integer, integer, integer, number, boolean, integer?, integer?, integer?, integer?, integer?) -> number, number
Parameters
integerunitID
integerunitDefID
integerunitTeam
numberdamage
booleanparalyzer
integer?weaponDefID
Synced Only
integer?projectileID
Synced Only
integer?attackerID
Synced Only
integer?attackerDefID
Synced Only
integer?attackerTeam
Synced Only
Returns
numbernewDamage
numberimpulseMult

SyncedCallins:FeaturePreDamaged (function)

Called before damage is applied to the feature.

[source]

Allows fine control over how much damage and impulse is applied.

SyncedCallins:FeaturePreDamaged(integer, integer, integer, number, integer, integer, integer, integer, integer) -> number, number
Parameters
integerfeatureID
integerfeatureDefID
integerfeatureTeam
numberdamage
integerweaponDefID
integerprojectileID
integerattackerID
integerattackerDefID
integerattackerTeam
Returns
numbernewDamage
numberimpulseMult

SyncedCallins:ShieldPreDamaged (function)

Called before any engine shield-vs-projectile logic executes.

[source]

If the weapon is a hitscan type (BeamLaser or LightningCanon) then proID is nil and beamEmitterWeaponNum and beamEmitterUnitID are populated instead.

SyncedCallins:ShieldPreDamaged(integer, integer, integer, integer, boolean, integer, integer, number, number, number, number, number, number) -> boolean
Parameters
integerprojectileID
integerprojectileOwnerID
integershieldWeaponNum
integershieldCarrierID
booleanbounceProjectile
integerbeamEmitterWeaponNum
integerbeamEmitterUnitID
numberstartX
numberstartY
numberstartZ
numberhitX
numberhitY
numberhitZ
Returns
booleanif
true the gadget handles the collision event and the engine does not remove the projectile

SyncedCallins:AllowWeaponTargetCheck (function)

Determines if this weapon can automatically generate targets itself. See also commandFire weaponDef tag.

[source]

Only called for weaponDefIDs registered via Script.SetWatchAllowTarget or Script.SetWatchWeapon.

See Script.SetWatchWeapon

SyncedCallins:AllowWeaponTargetCheck(integer, integer, integer) -> boolean, boolean
Parameters
integerattackerID
integerattackerWeaponNum
integerattackerWeaponDefID
Returns
booleanallowCheck
booleanignoreCheck

SyncedCallins:AllowWeaponTarget (function)

Controls blocking of a specific target from being considered during a weapon’s periodic auto-targeting sweep.

[source]

Only called for weaponDefIDs registered via Script.SetWatchAllowTarget or Script.SetWatchWeapon.

See Script.SetWatchWeapon

SyncedCallins:AllowWeaponTarget(integer, integer, integer, integer, number) -> boolean, number
Parameters
integerattackerID
integertargetID
integerattackerWeaponNum
integerattackerWeaponDefID
numberdefPriority
Returns
booleanallowed
numberthe
new priority for this target (if you don’t want to change it, return defPriority). Lower priority targets are targeted first.

SyncedCallins:AllowWeaponInterceptTarget (function)

Controls blocking of a specific intercept target from being considered during an interceptor weapon’s periodic auto-targeting sweep.

[source]

Only called for weaponDefIDs registered via Script.SetWatchAllowTarget or Script.SetWatchWeapon.

See Script.SetWatchWeapon

SyncedCallins:AllowWeaponInterceptTarget(integer, integer, integer) -> boolean
Parameters
integerinterceptorUnitID
integerinterceptorWeaponID
integertargetProjectileID
Returns
booleanallowed

SyncedCallins.SendToUnsynced (function)

Invoke UnsyncedCallins:RecvFromSynced callin with the given arguments.

[source]

See UnsyncedCallins:RecvFromSynced

SyncedCallins.SendToUnsynced([(boolean|number|string|table)?, ]*) -> nil
Parameters
(boolean|number|string|table)?...

Arguments. Typically the first argument is the name of a function to call.

Argument tables will be recursively copied and stripped of unsupported types and metatables.

UnsyncedCallins (class)

[source]

Functions called by the Engine (Unsynced).

Members

UnsyncedCallins:RecvFromSynced (function)

Receives data sent via SendToUnsynced callout.

[source]

UnsyncedCallins:RecvFromSynced([any, ]*) -> nil
Parameters
any...

UnsyncedCallins:DrawUnit (function)

For custom rendering of units

[source]

Deprecated

UnsyncedCallins:DrawUnit(integer, number) -> boolean
Parameters
integerunitID
numberdrawMode
Returns
booleansuppressEngineDraw

UnsyncedCallins:DrawFeature (function)

For custom rendering of features

[source]

Deprecated

UnsyncedCallins:DrawFeature(integer, number) -> boolean
Parameters
integerfeatureID
numberdrawMode
Returns
booleansuppressEngineDraw

UnsyncedCallins:DrawShield (function)

For custom rendering of shields.

[source]

Deprecated

UnsyncedCallins:DrawShield(integer, integer, number) -> boolean
Parameters
integerfeatureID
integerweaponID
numberdrawMode
Returns
booleansuppressEngineDraw

UnsyncedCallins:DrawProjectile (function)

For custom rendering of weapon (& other) projectiles

[source]

Deprecated

UnsyncedCallins:DrawProjectile(integer, number) -> boolean
Parameters
integerprojectileID
numberdrawMode
Returns
booleansuppressEngineDraw

UnsyncedCallins:DrawMaterial (function)

[source]

Deprecated

UnsyncedCallins:DrawMaterial(integer, number) -> boolean
Parameters
integeruuid
numberdrawMode
Returns
booleansuppressEngineDraw

gl (table)

Callouts for OpenGL API

Only setters and getters for OpenGL usage in Recoil, see GL for constants.

[source]

See GL

Members

gl.CreateRBO (function)

[source]
gl.CreateRBO(integer, integer, CreateRBOData) -> RBO
Parameters
integerxsize
integerysize
CreateRBODatadata
Returns
RBO

gl.DeleteRBO (function)

[source]
gl.DeleteRBO(RBO) -> nil
Parameters
RBOrbo

gl.GetVAO (function)

Example: local myVAO = gl.GetVAO() if myVAO == nil then Spring.Echo(“Failed to get VAO”) end

[source]

gl.GetVAO() -> VAO?
Returns
VAO?vao
The VAO ref on success, else nil

gl.GetVBO (function)

Example:

lua local myVBO = gl.GetVBO() if myVBO == nil then Spring.Echo(“Failed to get VBO”) end

[source]

See GL.OpenGL_Buffer_Types

gl.GetVBO(GL?, boolean?) -> VBO?
Parameters
GL?bufferType

(Default: GL.ARRAY_BUFFER) The buffer type to use.

Accepts the following:

boolean?freqUpdated

(Default: true)

true to updated frequently, false to update only once.

Returns
VBO?VBO

gl.CreateFBO (function)

[source]
gl.CreateFBO(FBODescription) -> FBO
Parameters
FBODescriptionfboDesc
Returns
FBOfbo

gl.DeleteFBO (function)

This doesn’t delete the attached objects!

[source]

gl.DeleteFBO(FBO) -> nil
Parameters
FBOfbo

gl.IsValidFBO (function)

[source]
gl.IsValidFBO(FBO, GL?) -> boolean, number?
Parameters
FBOfbo
GL?target
Returns
booleanvalid
number?status

gl.ActiveFBO (function)

[source]
gl.ActiveFBO(FBO, fun(...), [any, ]*) -> nil
Parameters
FBOfbo
fun(...)func
any...
args

gl.ActiveFBO (function overload 1)

[source]
gl.ActiveFBO(FBO, GL?, fun(...), [any, ]*) -> nil
Parameters
FBOfbo
GL?target
fun(...)func
any...
args

gl.RawBindFBO (function)

Bind default or specified via rawFboId numeric id of FBO

[source]

gl.RawBindFBO(nil, GL?, integer?) -> nil
Parameters
nilfbo
GL?target
(Default: GL_FRAMEBUFFER_EXT)
integer?rawFboId
(Default: 0)
Returns
nil

gl.RawBindFBO (function overload 1)

[source]
gl.RawBindFBO(FBO, GL?) -> number
Parameters
FBOfbo
GL?target
(Default: fbo.target)
Returns
numberpreviouslyBoundRawFboId

gl.BlitFBO (function)

needs GLAD_GL_EXT_framebuffer_blit

[source]

gl.BlitFBO(number, number, number, number, number, number, number, number, number?, number?) -> nil
Parameters
numberx0Src
numbery0Src
numberx1Src
numbery1Src
numberx0Dst
numbery0Dst
numberx1Dst
numbery1Dst
number?mask
(Default: GL_COLOR_BUFFER_BIT)
number?filter
(Default: GL_NEAREST)

gl.BlitFBO (function overload 1)

needs GLAD_GL_EXT_framebuffer_blit

[source]

gl.BlitFBO(FBO, number, number, number, number, FBO, number, number, number, number, number?, number?) -> nil
Parameters
FBOfboSrc
numberx0Src
numbery0Src
numberx1Src
numbery1Src
FBOfboDst
numberx0Dst
numbery0Dst
numberx1Dst
numbery1Dst
number?mask
(Default: GL_COLOR_BUFFER_BIT)
number?filter
(Default: GL_NEAREST)

gl.ClearAttachmentFBO (function)

needs Platform.glVersionNum >= 30 Clears the “attachment” of the currently bound FBO type “target” with “clearValues”

[source]

gl.ClearAttachmentFBO(number?, (GL|Attachment), number?, number?, number?, number?) -> boolean
Parameters
number?target
(Default: GL.FRAMEBUFFER)
(GL|Attachment)attachment
(e.g. “color0” or GL.COLOR_ATTACHMENT0)
number?clearValue0
(Default: 0)
number?clearValue1
(Default: 0)
number?clearValue2
(Default: 0)
number?clearValue3
(Default: 0)
Returns
booleansuccess

gl.GetShaderLog (function)

Returns the shader compilation error log. This is empty if the shader linking failed, in that case, check your in/out blocks and ensure they match.

[source]

gl.GetShaderLog() -> string
Returns
stringinfoLog

gl.CreateShader (function)

Create a shader.

[source]

gl.CreateShader(ShaderParams) -> integer
Parameters
ShaderParamsshaderParams
Returns
integershaderID

gl.DeleteShader (function)

Deletes a shader identified by shaderID

[source]

gl.DeleteShader(integer) -> nil
Parameters
integershaderID

gl.UseShader (function)

Binds a shader program identified by shaderID. Pass 0 to disable the shader. Returns whether the shader was successfully bound.

[source]

gl.UseShader(integer) -> boolean
Parameters
integershaderID
Returns
booleanlinked

gl.ActiveShader (function)

Binds a shader program identified by shaderID, and calls the Lua func with the specified arguments.

Can be used in NON-drawing events (to update uniforms etc.)!

[source]

gl.ActiveShader(integer, function, [any, ]*) -> nil
Parameters
integershaderID
functionfunc
any...
Arguments

gl.GetActiveUniforms (function)

Query the active (actually used) uniforms of a shader and identify their names, types (float, int, uint) and sizes (float, vec4, …).

[source]

gl.GetActiveUniforms(integer) -> ActiveUniform[]
Parameters
integershaderID
Returns
ActiveUniform[]activeUniforms

gl.GetUniformLocation (function)

Returns the locationID of a shaders uniform. Needed for changing uniform values with function gl.Uniform.

[source]

gl.GetUniformLocation(integer, string) -> GL
Parameters
integershaderID
stringname
Returns
GLlocationID

gl.Uniform (function)

Sets the uniform float value at the locationID for the currently active shader. Shader must be activated before setting uniforms.

[source]

gl.Uniform((GL|string), number, number?, number?, number?) -> nil
Parameters
(GL|string)locationID
uniformName
numberf1
number?f2
number?f3
number?f4

gl.UniformInt (function)

Sets the uniform int value at the locationID for the currently active shader. Shader must be activated before setting uniforms.

[source]

gl.UniformInt((integer|string), integer, integer?, integer?, integer?) -> nil
Parameters
(integer|string)locationID
uniformName
integerint1
integer?int2
integer?int3
integer?int4

gl.UniformArray (function)

Sets the an array of uniform values at the locationID for the currently active shader.

Shader must be activated before setting uniforms.

[source]

gl.UniformArray((integer|string), UniformArrayType, number[]) -> nil
Parameters
(integer|string)locationID
uniformName
UniformArrayTypetype
number[]uniforms
Array up to 1024 elements

gl.UniformMatrix (function)

Sets the a uniform mat4 locationID for the currently active shader.

Shader must be activated before setting uniforms.

Can set one one common matrix like shadow, or by passing 16 additional numbers for the matrix.

[source]

gl.UniformMatrix((integer|string), MatrixName) -> nil
Parameters
(integer|string)locationID
uniformName
MatrixNamematrix
Name of common matrix.

gl.UniformMatrix (function overload 1)

Sets the a uniform mat4 locationID for the currently active shader.

Shader must be activated before setting uniforms.

Can set one one common matrix like shadow, or by passing 16 additional numbers for the matrix.

[source]

gl.UniformMatrix((integer|string), number[]) -> nil
Parameters
(integer|string)locationID
uniformName
number[]matrix
A 2x2, 3x3 or 4x4 matrix.

gl.GetEngineUniformBufferDef (function)

[source]

Return the GLSL compliant definition of UniformMatricesBuffer(idx=0) or UniformParamsBuffer(idx=1) structure.

gl.GetEngineUniformBufferDef(number) -> string
Parameters
numberindex
Returns
stringglslDefinition

gl.GetEngineModelUniformDataDef (function)

[source]

Return the GLSL compliant definition of ModelUniformData structure (per Unit/Feature buffer available on GPU)

gl.GetEngineModelUniformDataDef(number) -> string
Parameters
numberindex
Returns
stringglslDefinition

gl.GetEngineModelUniformDataSize (function)

[source]

Return the current size values of ModelUniformData structure (per Unit/Feature buffer available on GPU)

gl.GetEngineModelUniformDataSize(number) -> number, number
Parameters
numberindex
Returns
numbersizeInElements
numbersizeInBytesOnCPU

gl.SetGeometryShaderParameter (function)

Sets the Geometry shader parameters for shaderID. Needed by geometry shader programs (check the opengl GL_ARB_geometry_shader4 extension for glProgramParameteri)

[source]

gl.SetGeometryShaderParameter(integer, number, number) -> nil
Parameters
integershaderID
numberkey
numbervalue
Returns
nil

gl.SetTesselationShaderParameter (function)

Sets the tesselation shader parameters for shaderID.

Needed by tesselation shader programs. (Check the opengl GL_ARB_tessellation_shader extension for glProgramParameteri).

[source]

gl.SetTesselationShaderParameter(integer, integer) -> nil
Parameters
integerparam
integervalue
Returns
nil

gl.HasExtension (function)

[source]
gl.HasExtension(string) -> boolean
Parameters
stringext
Returns
boolean

gl.GetNumber (function)

Get the value or values of a selected parameter.

[source]

gl.GetNumber(GL, integer?) -> number ...
Parameters
GLpname
integer?count
(Default: 1) Number of values to return, in range [1, 64].
Returns
number ...

gl.GetString (function)

Get a string describing the current OpenGL connection.

[source]

gl.GetString(GL) -> nil
Parameters
GLpname

gl.GetScreenViewTrans (function)

[source]
gl.GetScreenViewTrans() -> number, number, number
Returns
numberx
numbery
numberz

gl.GetViewSizes (function)

[source]
gl.GetViewSizes() -> number, number
Returns
numberx
numbery

gl.GetViewRange (function)

[source]
gl.GetViewRange() -> number, number, number, number
Returns
numbernearPlaneDist
numberfarPlaneDist
numberminViewRange
numbermaxViewRange

gl.SlaveMiniMap (function)

[source]
gl.SlaveMiniMap(boolean) -> nil
Parameters
booleannewMode

gl.ConfigMiniMap (function)

[source]
gl.ConfigMiniMap(integer, integer, integer, integer) -> nil
Parameters
integerpx
integerpy
integersx
integersy

gl.DrawMiniMap (function)

[source]
gl.DrawMiniMap(boolean?) -> nil
Parameters
boolean?defaultTransform
(Default: true)

gl.BeginText (function)

Begin a block of text commands.

[source]

Text can be drawn without Start/End, but when doing several operations it’s more optimal if done inside a block.

Also allows disabling automatic setting of the blend mode. Otherwise the font will always print with BlendFunc(GL.SRC_ALPHA, GL.ONE_MINUS_SRC_ALPHA).

See gl.BlendFuncSeparate

gl.BeginText(boolean?) -> nil
Parameters
boolean?userDefinedBlending
When true doesn’t set the gl.BlendFunc automatically. Defaults to false.

gl.EndText (function)

[source]
gl.EndText() -> nil

gl.Text (function)

[source]
gl.Text(string, number, number, number, string?) -> nil
Parameters
stringtext
numberx
numbery
numbersize
string?options

concatenated string of option characters.

  • horizontal alignment:
  • ‘c’ = center
  • ‘r’ = right
  • vertical alignment:
  • ‘a’ = ascender
  • ’t’ = top
  • ‘v’ = vertical center
  • ‘x’ = baseline
  • ‘b’ = bottom
  • ’d’ = descender
  • decorations:
  • ‘o’ = black outline
  • ‘O’ = white outline
  • ’s’ = shadow
  • other:
  • ’n’ = don’t round vertex coords to nearest integer (font may get blurry)
Returns
nil

gl.GetTextWidth (function)

[source]
gl.GetTextWidth(string) -> number
Parameters
stringtext
Returns
numberwidth

gl.GetTextHeight (function)

[source]
gl.GetTextHeight(string) -> number, number, integer
Parameters
stringtext
Returns
numberheight
numberdescender
integerlines

gl.Unit (function)

Draw the unit, applying transform.

[source]

gl.Unit(integer, boolean?, integer?, boolean?, boolean?) -> nil
Parameters
integerunitID
boolean?doRawDraw
(Default: false)
integer?useLuaMat
boolean?noLuaCall
(Default: false) Skip the DrawUnit callin.
boolean?fullModel
(Default: true)

gl.UnitRaw (function)

Draw the unit without applying transform.

Also skips the DrawUnit callin by default so any recursion is blocked.

[source]

gl.UnitRaw(integer, boolean?, integer?, boolean?, boolean?) -> nil
Parameters
integerunitID
boolean?doRawDraw
(Default: false)
integer?useLuaMat
boolean?noLuaCall
(Default: true) Skip the DrawUnit callin.
boolean?fullModel
(Default: true)

gl.UnitTextures (function)

[source]
gl.UnitTextures(integer, boolean) -> nil
Parameters
integerunitID
booleanpush
If true, push the render state; if false, pop it.

gl.UnitShape (function)

[source]
gl.UnitShape(integer, integer, boolean?, boolean?, boolean?) -> nil
Parameters
integerunitDefID
integerteamID
boolean?rawState
(Default: true)
boolean?toScreen
(Default: false)
boolean?opaque
(Default: true) If true, draw opaque; if false, draw alpha.

gl.UnitShapeTextures (function)

[source]
gl.UnitShapeTextures(integer, boolean) -> nil
Parameters
integerunitDefID
booleanpush
If true, push the render state; if false, pop it.

gl.UnitMultMatrix (function)

[source]
gl.UnitMultMatrix(integer) -> nil
Parameters
integerunitID

gl.UnitPiece (function)

[source]
gl.UnitPiece(integer, integer) -> nil
Parameters
integerunitID
integerpieceID

gl.UnitPieceMatrix (function)

[source]
gl.UnitPieceMatrix(integer, integer) -> nil
Parameters
integerunitID
integerpieceID

gl.UnitPieceMultMatrix (function)

[source]
gl.UnitPieceMultMatrix(integer, integer) -> nil
Parameters
integerunitID
integerpieceID

gl.Feature (function)

Draw the feature, applying transform.

[source]

gl.Feature(integer, boolean?, integer?, boolean?) -> nil
Parameters
integerfeatureID
boolean?doRawDraw
(Default: false)
integer?useLuaMat
boolean?noLuaCall
(Default: false) Skip the DrawFeature callin.

gl.FeatureRaw (function)

Draw the unit without applying transform.

Also skips the DrawFeature callin by default so any recursion is blocked.

[source]

gl.FeatureRaw(integer, boolean?, integer?, boolean?) -> nil
Parameters
integerfeatureID
boolean?doRawDraw
(Default: false)
integer?useLuaMat
boolean?noLuaCall
(Default: true) Skip the DrawFeature callin.

gl.FeatureTextures (function)

[source]
gl.FeatureTextures(integer, boolean) -> nil
Parameters
integerfeatureID
booleanpush
If true, push the render state; if false, pop it.

gl.FeatureShape (function)

[source]
gl.FeatureShape(integer, integer, boolean?, boolean?, boolean?) -> nil
Parameters
integerfeatureDefID
integerteamID
boolean?rawState
(Default: true)
boolean?toScreen
(Default: false)
boolean?opaque
(Default: true) If true, draw opaque; if false, draw alpha.

gl.FeatureShapeTextures (function)

[source]
gl.FeatureShapeTextures(integer, boolean) -> nil
Parameters
integerfeatureDefID
booleanpush
If true, push the render state; if false, pop it.

gl.FeatureMultMatrix (function)

[source]
gl.FeatureMultMatrix(integer) -> nil
Parameters
integerfeatureID

gl.FeaturePiece (function)

[source]
gl.FeaturePiece(integer, integer) -> nil
Parameters
integerfeatureID
integerpieceID

gl.FeaturePieceMatrix (function)

[source]
gl.FeaturePieceMatrix(integer, integer) -> nil
Parameters
integerfeatureID
integerpieceID

gl.FeaturePieceMultMatrix (function)

[source]
gl.FeaturePieceMultMatrix(integer, integer) -> nil
Parameters
integerfeatureID
integerpieceID

gl.DrawListAtUnit (function)

[source]
gl.DrawListAtUnit(integer, integer, boolean?, number?, number?, number?, number?, number?, number?, number?) -> nil
Parameters
integerunitID
integerlistIndex
boolean?useMidPos
(Default: true)
number?scaleX
(Default: 1.0)
number?scaleY
(Default: 1.0)
number?scaleZ
(Default: 1.0)
number?degrees
(Default: 0.0)
number?rotX
(Default: 0.0)
number?rotY
(Default: 1.0)
number?rotZ
(Default: 0.0)

gl.DrawFuncAtUnit (function)

[source]
gl.DrawFuncAtUnit(integer, boolean?, unknown, [any, ]*) -> nil
Parameters
integerunitID
boolean?useMidPos
(Default: true)
unknownfun
any...
Arguments passed to function.

gl.DrawGroundCircle (function)

[source]
gl.DrawGroundCircle(number, number, number, number, integer) -> nil
Parameters
numberposX
numberposY
numberposZ
numberradius
integerresolution

gl.DrawGroundCircle (function overload 1)

[source]
gl.DrawGroundCircle(number, number, number, number, integer, number, number, integer) -> nil
Parameters
numberposX
numberposY
numberposZ
numberradius
integerresolution
numberslope
numbergravity
integerweaponDefID

gl.DrawGroundCircle (function overload 2)

[source]
gl.DrawGroundCircle(number, number, number, number, nil, boolean?) -> nil
Parameters
numberx0
numberz0
numberx1
numberz1
niluseNorm
No longer used.
boolean?useTxcd
(Default: false)

gl.DrawGroundCircle (function overload 3)

[source]
gl.DrawGroundCircle(number, number, number, number, nil, number, number, number, number) -> nil
Parameters
numberx0
numberz0
numberx1
numberz1
niluseNorm
No longer used.
numbertu0
numbertv0
numbertu1
numbertv1

gl.Shape (function)

[source]
gl.Shape(GL, VertexData[]) -> nil
Parameters
GLtype
VertexData[]vertices

gl.BeginEnd (function)

[source]
gl.BeginEnd(GL, unknown, [any, ]*) -> nil
Parameters
GLprimMode
unknownfun
any...
Arguments passed to function.

gl.Vertex (function)

[source]
gl.Vertex(xy) -> nil
Parameters
xyv

gl.Vertex (function overload 1)

[source]
gl.Vertex(xyz) -> nil
Parameters
xyzv

gl.Vertex (function overload 2)

[source]
gl.Vertex(xyzw) -> nil
Parameters
xyzwv

gl.Vertex (function overload 3)

[source]
gl.Vertex(number, number, number?, number?) -> nil
Parameters
numberx
numbery
number?z
number?w

gl.Normal (function)

[source]
gl.Normal(xyz) -> nil
Parameters
xyzv

gl.Normal (function overload 1)

[source]
gl.Normal(number, number, number) -> nil
Parameters
numberx
numbery
numberz

gl.TexCoord (function)

[source]
gl.TexCoord((number)) -> nil
Parameters
(number)coord

gl.TexCoord (function overload 1)

[source]
gl.TexCoord(xy) -> nil
Parameters
xycoord

gl.TexCoord (function overload 2)

[source]
gl.TexCoord(xyz) -> nil
Parameters
xyzcoord

gl.TexCoord (function overload 3)

[source]
gl.TexCoord(xyzw) -> nil
Parameters
xyzwcoord

gl.TexCoord (function overload 4)

[source]
gl.TexCoord(number, number?, number?, number?) -> nil
Parameters
numbers
number?t
number?r
number?q

gl.MultiTexCoord (function)

[source]
gl.MultiTexCoord(integer, (number)) -> nil
Parameters
integertexNum
(number)coord

gl.MultiTexCoord (function overload 1)

[source]
gl.MultiTexCoord(integer, xy) -> nil
Parameters
integertexNum
xycoord

gl.MultiTexCoord (function overload 2)

[source]
gl.MultiTexCoord(integer, xyz) -> nil
Parameters
integertexNum
xyzcoord

gl.MultiTexCoord (function overload 3)

[source]
gl.MultiTexCoord(integer, xyzw) -> nil
Parameters
integertexNum
xyzwcoord

gl.MultiTexCoord (function overload 4)

[source]
gl.MultiTexCoord(integer, number, number?, number?, number?) -> nil
Parameters
integertexNum
numbers
number?t
number?r
number?q

gl.SecondaryColor (function)

[source]
gl.SecondaryColor(rgb) -> nil
Parameters
rgbcolor

gl.SecondaryColor (function overload 1)

[source]
gl.SecondaryColor(number, number, number) -> nil
Parameters
numberr
numberg
numberb

gl.FogCoord (function)

[source]
gl.FogCoord(number) -> nil
Parameters
numbercoord

gl.EdgeFlag (function)

[source]
gl.EdgeFlag(boolean) -> nil
Parameters
booleanflag

gl.Rect (function)

[source]
gl.Rect(number, number, number, number) -> nil
Parameters
numberx1
numbery1
numberx2
numbery2

gl.Rect (function overload 1)

[source]
gl.Rect(number, number, number, number, boolean?, boolean?) -> nil
Parameters
numberx1
numbery1
numberx2
numbery2
boolean?flipSCoords
boolean?flipTCoords

gl.Rect (function overload 2)

[source]
gl.Rect(number, number, number, number, number, number, number, number) -> nil
Parameters
numberx1
numbery1
numberx2
numbery2
numbers1
numbert1
numbers2
numbert2

gl.DispatchCompute (function)

[source]
gl.DispatchCompute(integer, integer, integer, integer?) -> nil
Parameters
integernumGroupX
integernumGroupY
integernumGroupZ
integer?barriers
(Default: 4)

gl.MemoryBarrier (function)

[source]
gl.MemoryBarrier(integer?) -> nil
Parameters
integer?barriers
(Default: 4)

gl.Color (function)

[source]
gl.Color(number, number, number, number?) -> nil
Parameters
numberr
Red.
numberg
Green.
numberb
Blue.
number?a
(Default: 1.0) Alpha.

gl.Color (function overload 1)

[source]
gl.Color(rgba) -> nil
Parameters
rgbacolor
Color with alpha.

gl.Color (function overload 2)

[source]
gl.Color(rgb) -> nil
Parameters
rgbcolor
Color.

gl.Material (function)

[source]
gl.Material(Material) -> nil
Parameters
Materialmaterial

gl.ResetState (function)

[source]
gl.ResetState() -> nil

gl.ResetMatrices (function)

[source]
gl.ResetMatrices() -> nil

gl.Lighting (function)

[source]
gl.Lighting(boolean) -> nil
Parameters
booleanenable

gl.ShadeModel (function)

[source]
gl.ShadeModel(GL) -> nil
Parameters
GLmodel

gl.Scissor (function)

[source]
gl.Scissor(boolean) -> nil
Parameters
booleanenable

gl.Scissor (function overload 1)

[source]
gl.Scissor(integer, integer, integer, integer) -> nil
Parameters
integerx
integery
integerw
integerh

gl.Viewport (function)

[source]
gl.Viewport(integer, integer, integer, integer) -> nil
Parameters
integerx
integery
integerw
integerh

gl.ColorMask (function)

Enable or disable writing of frame buffer color components.

[source]

gl.ColorMask(boolean) -> nil
Parameters
booleanrgba

gl.ColorMask (function overload 1)

Enable or disable writing of frame buffer color components.

[source]

gl.ColorMask(boolean, boolean, boolean, boolean) -> nil
Parameters
booleanred
booleangreen
booleanblue
booleanalpha

gl.DepthMask (function)

Enable or disable writing into the depth buffer.

[source]

gl.DepthMask(boolean) -> nil
Parameters
booleanenable

gl.DepthTest (function)

Enable or disable depth test.

[source]

gl.DepthTest(boolean) -> nil
Parameters
booleanenable

gl.DepthTest (function overload 1)

Enable depth test and specify the depth comparison function.

[source]

gl.DepthTest(GL) -> nil
Parameters
GLdepthFunction

gl.DepthClamp (function)

[source]
gl.DepthClamp(boolean) -> nil
Parameters
booleanenable

gl.Culling (function)

[source]
gl.Culling(boolean) -> nil
Parameters
booleanenable

gl.Culling (function overload 1)

Enable culling and set culling mode.

[source]

gl.Culling(GL) -> nil
Parameters
GLmode

gl.LogicOp (function)

[source]
gl.LogicOp(boolean) -> nil
Parameters
booleanenable

gl.LogicOp (function overload 1)

Specify a logical pixel operation for rendering.

[source]

gl.LogicOp(GL) -> nil
Parameters
GLopCode

gl.Fog (function)

[source]
gl.Fog(boolean) -> nil
Parameters
booleanenable

gl.Blending (function)

[source]
gl.Blending(boolean) -> nil
Parameters
booleanenable

gl.Blending (function overload 1)

[source]
gl.Blending(("add"|"alpha_add"|"alpha"|"reset"|"color"|"modulate"...)) -> nil
Parameters
("add"|"alpha_add"|"alpha"|"reset"|"color"|"modulate"...)mode

gl.Blending (function overload 2)

[source]
gl.Blending(GL, GL) -> nil
Parameters
GLsrc
GLdst

gl.BlendEquation (function)

[source]
gl.BlendEquation(GL) -> nil
Parameters
GLmode

gl.BlendFunc (function)

[source]
gl.BlendFunc(GL, GL) -> nil
Parameters
GLsrc
GLdst

gl.BlendEquationSeparate (function)

[source]
gl.BlendEquationSeparate(GL, GL) -> nil
Parameters
GLmodeRGB
GLmodeAlpha

gl.BlendFuncSeparate (function)

[source]
gl.BlendFuncSeparate(GL, GL, GL, GL) -> nil
Parameters
GLsrcRGB
GLdstRGB
GLsrcAlpha
GLdstAlpha

gl.AlphaTest (function)

[source]
gl.AlphaTest(boolean) -> nil
Parameters
booleanenable

gl.AlphaTest (function overload 1)

Specify the alpha test function.

[source]

gl.AlphaTest(GL, number) -> nil
Parameters
GLfunc
numberref

gl.AlphaToCoverage (function)

[source]
gl.AlphaToCoverage(boolean) -> nil
Parameters
booleanenable

gl.PolygonMode (function)

Select polygon rasterization mode.

[source]

gl.PolygonMode(GL, GL) -> nil
Parameters
GLface
GLmode

gl.PolygonOffset (function)

[source]
gl.PolygonOffset(boolean) -> nil
Parameters
booleanenable

gl.PolygonOffset (function overload 1)

[source]
gl.PolygonOffset(number, number) -> nil
Parameters
numberfactor
numberunits

gl.StencilTest (function)

[source]
gl.StencilTest(boolean) -> nil
Parameters
booleanenable

gl.StencilMask (function)

Control the front and back writing of individual bits in the stencil planes.

[source]

gl.StencilMask(integer) -> nil
Parameters
integermask
Specifies a bit mask to enable and disable writing of individual bits in the stencil planes. Initially, the mask is all 1’s.

gl.StencilFunc (function)

Set front and back function and reference value for stencil testing.

[source]

gl.StencilFunc(GL, integer, integer) -> nil
Parameters
GLfunc
Specifies the test function. Eight symbolic constants are valid: GL.NEVER, GL.LESS, GL.EQUAL, GL.LEQUAL, GL.GREATER, GL.NOTEQUAL, GL.GEQUAL, and GL.ALWAYS. The initial value is GL.ALWAYS.
integerref
Specifies the reference value for the stencil test. ref is clamped to the range [0, 2^n - 1], where n is the number of bitplanes in the stencil buffer. The initial value is 0.
integermask
Specifies a mask that is ANDed with both the reference value and the stored stencil value when the test is done. The initial value is all 1’s.

gl.StencilOp (function)

Set front and back stencil test actions.

[source]

gl.StencilOp(GL, GL, GL) -> nil
Parameters
GLfail
Specifies the action to take when the stencil test fails. Eight symbolic constants are valid: GL.KEEP, GL.ZERO, GL.REPLACE, GL.INCR, GL.INCR_WRAP, GL.DECR, GL.DECR_WRAP, and GL.INVERT. The initial value is GL.KEEP.
GLzfail
Specifies the stencil action when the stencil test passes, but the depth test fails. The initial value is GL.KEEP.
GLzpass
Specifies the stencil action when both the stencil test and the depth test pass, or when the stencil test passes and either there is no depth buffer or depth testing is not enabled. The initial value is GL.KEEP.

gl.StencilMaskSeparate (function)

Control the front and back writing of individual bits in the stencil planes.

[source]

gl.StencilMaskSeparate(GL, integer) -> nil
Parameters
GLface
Specifies whether the front and/or back stencil writemask is updated. Three symbolic constants are accepted: GL.FRONT, GL.BACK, and GL.FRONT_AND_BACK. The initial value is GL.FRONT_AND_BACK.
integermask
Specifies a bit mask to enable and disable writing of individual bits in the stencil planes. Initially, the mask is all 1’s.

gl.StencilFuncSeparate (function)

Set front and/or back function and reference value for stencil testing.

[source]

gl.StencilFuncSeparate(GL, GL, integer, integer) -> nil
Parameters
GLface
Specifies whether front and/or back stencil state is updated. Three symbolic constants are accepted: GL.FRONT, GL.BACK, and GL.FRONT_AND_BACK. The initial value is GL.FRONT_AND_BACK.
GLfunc
Specifies the test function. Eight symbolic constants are valid: GL.NEVER, GL.LESS, GL.EQUAL, GL.LEQUAL, GL.GREATER, GL.NOTEQUAL, GL.GEQUAL, and GL.ALWAYS. The initial value is GL.ALWAYS.
integerref
Specifies the reference value for the stencil test. ref is clamped to the range [0, 2^n - 1], where n is the number of bitplanes in the stencil buffer. The initial value is 0.
integermask
Specifies a mask that is ANDed with both the reference value and the stored stencil value when the test is done. The initial value is all 1’s.

gl.StencilOpSeparate (function)

Set front and/or back stencil test actions.

[source]

gl.StencilOpSeparate(GL, GL, GL, GL) -> nil
Parameters
GLface
Specifies whether front and/or back stencil state is updated. Three symbolic constants are accepted: GL.FRONT, GL.BACK, and GL.FRONT_AND_BACK. The initial value is GL.FRONT_AND_BACK.
GLfail
Specifies the action to take when the stencil test fails. Eight symbolic constants are valid: GL.KEEP, GL.ZERO, GL.REPLACE, GL.INCR, GL.INCR_WRAP, GL.DECR, GL.DECR_WRAP, and GL.INVERT. The initial value is GL.KEEP.
GLzfail
Specifies the stencil action when the stencil test passes, but the depth test fails. The initial value is GL.KEEP.
GLzpass
Specifies the stencil action when both the stencil test and the depth test pass, or when the stencil test passes and either there is no depth buffer or depth testing is not enabled. The initial value is GL.KEEP.

gl.LineStipple (function)

[source]
gl.LineStipple(boolean) -> nil
Parameters
booleanenable

gl.LineStipple (function overload 1)

[source]
gl.LineStipple(string) -> nil
Parameters
stringignoredString
The value of this string is ignored, but it still does something.

gl.LineStipple (function overload 2)

[source]
gl.LineStipple(integer, integer, integer?) -> nil
Parameters
integerfactor
integerpattern
integer?shift

gl.LineWidth (function)

[source]
gl.LineWidth(number) -> nil
Parameters
numberwidth

gl.PointSize (function)

[source]
gl.PointSize(number) -> nil
Parameters
numbersize

gl.PointSprite (function)

[source]
gl.PointSprite(boolean, boolean?, boolean?) -> nil
Parameters
booleanenable
boolean?enableCoordReplace
boolean?coordOrigin
true for upper left, false for lower left, otherwise no change.

gl.PointParameter (function)

[source]
gl.PointParameter(number, number, number, number?, number?, number?) -> nil
Parameters
numberatten0
numberatten1
numberatten2
number?sizeMin
number?sizeMax
number?sizeFade

gl.Texture (function)

[source]
gl.Texture(integer, boolean?) -> boolean
Parameters
integertexNum
boolean?enable
Returns
boolean

gl.Texture (function overload 1)

[source]
gl.Texture(boolean) -> boolean
Parameters
booleanenable
Returns
boolean

gl.Texture (function overload 2)

[source]
gl.Texture(integer, string) -> boolean
Parameters
integertexNum
stringimage
Returns
boolean

gl.Texture (function overload 3)

[source]
gl.Texture(string) -> boolean
Parameters
stringimage
Returns
boolean

gl.CreateTexture (function)

[source]
gl.CreateTexture(integer, integer, Texture) -> string?
Parameters
integerxsize
integerysize
Texturetexture
Returns
string?texName

gl.CreateTexture (function overload 1)

[source]
gl.CreateTexture(integer, integer, integer, Texture) -> string?
Parameters
integerxsize
integerysize
integerzsize
Texturetexture
Returns
string?texName

gl.ChangeTextureParams (function)

[source]
gl.ChangeTextureParams(string, Texture) -> nil
Parameters
stringtexName
Textureparams

gl.DeleteTexture (function)

[source]
gl.DeleteTexture(string) -> boolean
Parameters
stringtexName
Returns
boolean

gl.DeleteTextureFBO (function)

[source]
gl.DeleteTextureFBO(string) -> boolean
Parameters
stringtexName
Returns
boolean

gl.TextureInfo (function)

[source]
gl.TextureInfo(string) -> TextureInfo
Parameters
stringtexName
Returns
TextureInfotextureInfo

gl.CopyToTexture (function)

[source]
gl.CopyToTexture(string, integer, integer, integer, integer, integer, integer, GL?, GL?) -> nil
Parameters
stringtexName
integerxoff
integeryoff
integerx
integery
integerw
integerh
GL?target
GL?level

gl.RenderToTexture (function)

[source]
gl.RenderToTexture(string, unknown, [any, ]*) -> nil
Parameters
stringtexName
unknownfun
any...
Arguments to the function.

gl.GenerateMipmap (function)

[source]
gl.GenerateMipmap(string) -> nil
Parameters
stringtexName

gl.ActiveTexture (function)

[source]
gl.ActiveTexture(integer, function, [any, ]*) -> nil
Parameters
integertexNum
functionfunc
any...
Arguments to the function.

gl.TextEnv (function)

[source]
gl.TextEnv(GL, GL, number) -> nil
Parameters
GLtarget
GLpname
numbervalue

gl.TextEnv (function overload 1)

[source]
gl.TextEnv(GL, GL, number?, number?, number?, number?) -> nil
Parameters
GLtarget
GLpname
number?r
(Default: 0.0)
number?g
(Default: 0.0)
number?b
(Default: 0.0)
number?a
(Default: 0.0)

gl.MultiTexEnv (function)

[source]
gl.MultiTexEnv(integer, GL, GL, number) -> nil
Parameters
integertexNum
GLtarget
GLpname
numbervalue

gl.MultiTexEnv (function overload 1)

[source]
gl.MultiTexEnv(integer, GL, GL, number?, number?, number?, number?) -> nil
Parameters
integertexNum
GLtarget
GLpname
number?r
(Default: 0.0)
number?g
(Default: 0.0)
number?b
(Default: 0.0)
number?a
(Default: 0.0)

gl.TexGen (function)

[source]
gl.TexGen(GL, boolean) -> nil
Parameters
GLtarget
booleanstate

gl.TexGen (function overload 1)

[source]
gl.TexGen(GL, GL, number) -> nil
Parameters
GLtarget
GLpname
numbervalue

gl.TexGen (function overload 2)

[source]
gl.TexGen(GL, GL, number?, number?, number?, number?) -> nil
Parameters
GLtarget
GLpname
number?r
(Default: 0.0)
number?g
(Default: 0.0)
number?b
(Default: 0.0)
number?a
(Default: 0.0)

gl.MultiTexGen (function)

[source]
gl.MultiTexGen(integer, GL, boolean) -> nil
Parameters
integertexNum
GLtarget
booleanstate

gl.MultiTexGen (function overload 1)

[source]
gl.MultiTexGen(integer, GL, GL, number) -> nil
Parameters
integertexNum
GLtarget
GLpname
numbervalue

gl.MultiTexGen (function overload 2)

[source]
gl.MultiTexGen(integer, GL, GL, number?, number?, number?, number?) -> nil
Parameters
integertexNum
GLtarget
GLpname
number?r
(Default: 0.0)
number?g
(Default: 0.0)
number?b
(Default: 0.0)
number?a
(Default: 0.0)

gl.BindImageTexture (function)

[source]

For format parameters refer to https://registry.khronos.org/OpenGL-Refpages/gl4/html/glBindImageTexture.xhtml and https://beyond-all-reason.github.io/RecoilEngine/lua-api/types/GL#rgba32f

Example uses local my_texture_id = gl.CreateTexture(…)

– bind layer 1 of my_texture_id if it supports layered bindings to image unit 0 gl.BindImageTexture(0, my_texture_id, 0, 1, GL.READ_WRITE, GL.RGBA16F)

– bind all layers of my_texture_id if it supports layered bindings to image unit 0 gl.BindImageTexture(0, my_texture_id, 0, nil, GL.READ_WRITE, GL.RGBA16F)

– unbind any texture attached to image unit 0 gl.BindImageTexture(0, nil, nil, nil, nil, GL.RGBA16F)

gl.BindImageTexture(integer, string?, integer?, integer?, GL?, integer) -> nil
Parameters
integerunit
string?texID
(nil breaks any existing binding to the image unit)
integer?level
(Default: 0)
integer?layer
(nil binds the entire texture(array/cube), an integer binds a specific layer, ignored by gl if the texture does not support layered bindings)
GL?access
(Default: GL.READ_WRITE) Accepts GL.READ_ONLY, GL.WRITE_ONLY or GL.READ_WRITE.
integerformat
(Example: GL.RGBA16F)

gl.CreateTextureAtlas (function)

[source]
gl.CreateTextureAtlas(integer, integer, integer?) -> string
Parameters
integerxsize
integerysize
integer?allocType
Returns
stringtexName

gl.FinalizeTextureAtlas (function)

[source]
gl.FinalizeTextureAtlas(string) -> boolean
Parameters
stringtexName
Returns
boolean

gl.DeleteTextureAtlas (function)

[source]
gl.DeleteTextureAtlas(string) -> boolean
Parameters
stringtexName
Returns
boolean

gl.AddAtlasTexture (function)

[source]
gl.AddAtlasTexture(string, string) -> nil
Parameters
stringtexName
stringsubAtlasTexName

gl.GetAtlasTexture (function)

[source]
gl.GetAtlasTexture(string, string) -> number, number, number, number
Parameters
stringtexName
stringsubAtlasTexName
Returns
numberx1
numberx2
numbery1
numbery2

gl.GetEngineAtlasTextures (function)

[source]
gl.GetEngineAtlasTextures(("$explosions"|"$groundfx")) -> table<string,float4>
Parameters
("$explosions"|"$groundfx")atlasName
Returns
table<string,float4>atlasTextures
Table of x1,x2,y1,y2 coordinates by texture name.

gl.Clear (function)

[source]
gl.Clear(GL, number) -> nil
Parameters
GLbits
GL.DEPTH_BUFFER_BIT or GL.STENCIL_BUFFER_BIT.
numberval

gl.Clear (function overload 1)

[source]
gl.Clear(GL, number, number, number, number) -> nil
Parameters
GLbits
GL.COLOR_BUFFER_BIT or GL.ACCUM_BUFFER_BIT.
numberr
numberg
numberb
numbera

gl.SwapBuffers (function)

[source]
gl.SwapBuffers() -> nil

gl.Translate (function)

[source]
gl.Translate(number, number, number) -> nil
Parameters
numberx
numbery
numberz

gl.Scale (function)

[source]
gl.Scale(number, number, number) -> nil
Parameters
numberx
numbery
numberz

gl.Rotate (function)

[source]
gl.Rotate(number, number, number, number) -> nil
Parameters
numberr
numberx
numbery
numberz

gl.Ortho (function)

[source]
gl.Ortho(number, number, number, number, number, number) -> nil
Parameters
numberleft
numberright
numberbottom
numbertop
numbernear
numberfar

gl.Frustum (function)

[source]
gl.Frustum(number, number, number, number, number, number) -> nil
Parameters
numberleft
numberright
numberbottom
numbertop
numbernear
numberfar

gl.Billboard (function)

[source]
gl.Billboard() -> nil

gl.Light (function)

[source]
gl.Light(integer, boolean) -> nil
Parameters
integerlight
booleanenable

gl.Light (function overload 1)

[source]
gl.Light(integer, GL, GL) -> nil
Parameters
integerlight
GLpname
GLparam

gl.Light (function overload 2)

[source]
gl.Light(integer, GL, number, number, number, number?) -> nil
Parameters
integerlight
GLpname
numberr
numberg
numberb
number?a

gl.ClipPlane (function)

[source]
gl.ClipPlane(integer, boolean) -> nil
Parameters
integerplane
booleanenable

gl.ClipPlane (function overload 1)

[source]
gl.ClipPlane(integer, number, number, number, number) -> nil
Parameters
integerplane
numberequation0
numberequation1
numberequation2
numberequation3

gl.ClipDistance (function)

[source]
gl.ClipDistance(integer, boolean) -> nil
Parameters
integerclipId
booleanenable

gl.MatrixMode (function)

[source]
gl.MatrixMode(GL) -> nil
Parameters
GLmode

gl.LoadIdentity (function)

[source]
gl.LoadIdentity() -> nil

gl.LoadMatrix (function)

[source]
gl.LoadMatrix(string) -> nil
Parameters
stringmatrix

gl.LoadMatrix (function overload 1)

[source]
gl.LoadMatrix(Matrix4x4) -> nil
Parameters
Matrix4x4matrix

gl.LoadMatrix (function overload 2)

[source]
gl.LoadMatrix() -> number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number
Returns
numberm11
numberm12
numberm13
numberm14
numberm21
numberm22
numberm23
numberm24
numberm31
numberm32
numberm33
numberm34
numberm41
numberm42
numberm43
numberm44

gl.MultMatrix (function)

[source]
gl.MultMatrix(string) -> nil
Parameters
stringmatrixName

gl.MultMatrix (function overload 1)

[source]
gl.MultMatrix(Matrix4x4) -> nil
Parameters
Matrix4x4matrix

gl.MultMatrix (function overload 2)

[source]
gl.MultMatrix(number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number) -> nil
Parameters
numberm11
numberm12
numberm13
numberm14
numberm21
numberm22
numberm23
numberm24
numberm31
numberm32
numberm33
numberm34
numberm41
numberm42
numberm43
numberm44

gl.PushMatrix (function)

[source]
gl.PushMatrix() -> nil

gl.PopMatrix (function)

[source]
gl.PopMatrix() -> nil

gl.PushPopMatrix (function)

[source]
gl.PushPopMatrix(GL, fun(), [any, ]*) -> nil
Parameters
GLmatMode1
fun()func
any...
Arguments to the function.

gl.PushPopMatrix (function overload 1)

[source]
gl.PushPopMatrix(fun(), [any, ]*) -> nil
Parameters
fun()func
any...
Arguments to the function.

gl.GetMatrixData (function)

Get value at index of matrix.

[source]

gl.GetMatrixData(GL, integer) -> number
Parameters
GLtype
Matrix type (GL.PROJECTION, GL.MODELVIEW, GL.TEXTURE).
integerindex
Matrix index in range [1, 16].
Returns
numberThe
value.

gl.GetMatrixData (function overload 1)

[source]
gl.GetMatrixData(GL) -> Matrix4x4
Parameters
GLtype
Matrix type (GL.PROJECTION, GL.MODELVIEW, GL.TEXTURE).
Returns
Matrix4x4The
matrix.

gl.GetMatrixData (function overload 2)

[source]
gl.GetMatrixData(integer) -> number
Parameters
integerindex
Matrix index in range [1, 16].
Returns
numberThe
value.

gl.GetMatrixData (function overload 3)

[source]
gl.GetMatrixData(MatrixName) -> Matrix4x4
Parameters
MatrixNamename
The matrix name.
Returns
Matrix4x4The
matrix.

gl.PushAttrib (function)

[source]
gl.PushAttrib(GL?) -> nil
Parameters
GL?mask
(Default: GL.ALL_ATTRIB_BITS)

gl.PopAttrib (function)

[source]
gl.PopAttrib() -> nil

gl.UnsafeState (function)

[source]
gl.UnsafeState(GL, fun(), [any, ]*) -> nil
Parameters
GLstate
fun()func
any...
Arguments to the function.

gl.UnsafeState (function overload 1)

[source]
gl.UnsafeState(GL, boolean, fun(), [any, ]*) -> nil
Parameters
GLstate
booleanreverse
fun()func
any...
Arguments to the function.

gl.GetFixedState (function)

[source]
gl.GetFixedState(string, boolean?) -> boolean, any ...
Parameters
stringparam
boolean?toStr
(Default: false)
Returns
booleanenabled
any ...values

gl.CreateList (function)

[source]
gl.CreateList(fun(), [any, ]*) -> nil
Parameters
fun()func
any...
Arguments to the function.

gl.CallList (function)

[source]
gl.CallList(integer) -> nil
Parameters
integerlistIndex

gl.DeleteList (function)

[source]
gl.DeleteList(integer) -> nil
Parameters
integerlistIndex

gl.Flush (function)

[source]
gl.Flush() -> nil

gl.Finish (function)

[source]
gl.Finish() -> nil

gl.ReadPixels (function)

Get single pixel.

[source]

gl.ReadPixels(integer, integer, 1, 1, GL?) -> number ...
Parameters
integerx
integery
1w
1h
GL?format
(Default: GL.RGBA)
Returns
number ...Color
values (color size based on format).

gl.ReadPixels (function overload 1)

Get column of pixels.

[source]

gl.ReadPixels(integer, integer, 1, integer, GL?) -> number[][]
Parameters
integerx
integery
1w
integerh
GL?format
(Default: GL.RGBA)
Returns
number[][]Column
of color values (color size based on format).

gl.ReadPixels (function overload 2)

Get row of pixels.

[source]

gl.ReadPixels(integer, integer, integer, 1, GL?) -> number[][]
Parameters
integerx
integery
integerw
1h
GL?format
(Default: GL.RGBA)
Returns
number[][]Row
of color values (color size based on format).

gl.ReadPixels (function overload 3)

Get row of pixels.

[source]

gl.ReadPixels(integer, integer, integer, integer, GL?) -> number[][][]
Parameters
integerx
integery
integerw
integerh
GL?format
(Default: GL.RGBA)
Returns
number[][][]Array
of columns of color values (color size based on format).

gl.SaveImage (function)

[source]
gl.SaveImage(integer, integer, integer, integer, string, SaveImageOptions?) -> boolean?
Parameters
integerx
integery
integerwidth
integerheight
stringfilename
SaveImageOptions?options
Returns
boolean?success

gl.CreateQuery (function)

[source]
gl.CreateQuery() -> any
Returns
anyquery

gl.DeleteQuery (function)

[source]
gl.DeleteQuery(any) -> nil
Parameters
anyquery

gl.RunQuery (function)

[source]
gl.RunQuery(any) -> nil
Parameters
anyquery

gl.GetQuery (function)

[source]
gl.GetQuery(any) -> integer
Parameters
anyquery
Returns
integercount

gl.GetGlobalTexNames (function)

[source]
gl.GetGlobalTexNames() -> string[]
Returns
string[]List
of texture names.

gl.GetGlobalTexCoords (function)

[source]
gl.GetGlobalTexCoords() -> number, number, number, number
Returns
numberxstart
numberystart
numberxend
numberyend

gl.GetShadowMapParams (function)

[source]
gl.GetShadowMapParams() -> number, number, number, number
Returns
numberx
numbery
numberz
numberw

gl.GetAtmosphere (function)

[source]
gl.GetAtmosphere() -> number, number, number
Returns
numberlightDirX
numberlightDirY
numberlightDirZ

gl.GetAtmosphere (function overload 1)

[source]
gl.GetAtmosphere(("fogStart"|"fogEnd"|"pos"|"fogColor"|"skyColor"|"sunColor"...)) -> any ...
Parameters
("fogStart"|"fogEnd"|"pos"|"fogColor"|"skyColor"|"sunColor"...)param
Returns
any ...

gl.GetSun (function)

[source]
gl.GetSun() -> number, number, number
Returns
numberlightDirX
numberlightDirY
numberlightDirZ

gl.GetSun (function overload 1)

[source]
gl.GetSun(("pos"|"dir"|"specularExponent"|"shadowDensity"|"diffuse"|"ambient"...), ("ground"|"unit")) -> number?, number?, number?
Parameters
("pos"|"dir"|"specularExponent"|"shadowDensity"|"diffuse"|"ambient"...)param
("ground"|"unit")mode
(Default: “ground”)
Returns
number?data1
number?data2
number?data3

gl.GetWaterRendering (function)

[source]
gl.GetWaterRendering(string) -> any ...
Parameters
stringkey
Returns
any ...value

gl.GetMapRendering (function)

[source]
gl.GetMapRendering(string) -> any ...
Parameters
stringkey
Returns
any ...value

gl.ObjectLabel (function)

Labels an object for use with debugging tools. May be unavailable and nil if the platform doesn’t support the feature.

[source]

gl.ObjectLabel(GL, integer, string) -> nil
Parameters
GLobjectTypeIdentifier
Specifies the type of object being labeled.
integerobjectID
Specifies the name or ID of the object to label.
stringlabel
A string containing the label to be assigned to the object.

gl.PushDebugGroup (function)

Pushes a debug marker for debugging tools such as nVidia nSight 2024.04, see https://registry.khronos.org/OpenGL-Refpages/gl4/html/glPushDebugGroup.xhtml .

May be unavailable and nil if the platform doesn’t support the feature.

Groups are basically named scopes similar to tracy’s, and are pushed/popped independently from GL attribute/matrix push/pop (though of course makes sense to put them together).

Tools are known to struggle to see the annotation for FBOs if they are raw bound.

[source]

gl.PushDebugGroup(integer, string, boolean) -> nil
Parameters
integerid
A numeric identifier for the group, can be any unique number.
stringmessage
A human-readable string describing the debug group. Will be truncated if longer than driver-specific limit
booleansourceIsThirdParty
Set the source tag, true for GL_DEBUG_SOURCE_THIRD_PARTY, false for GL_DEBUG_SOURCE_APPLICATION. default false
Returns
nil

gl.PopDebugGroup (function)

Pops the most recent GL debug group from the stack (does NOT take the numerical ID from push). May be unavailable and nil if the platform doesn’t support the feature.

[source]

gl.PopDebugGroup() -> nil
Returns
nil

gl.AddFallbackFont (function)

Adds a fallback font for the font rendering engine.

Fonts added first will have higher priority. When a glyph isn’t found when rendering a font, the fallback fonts will be searched first, otherwise os fonts will be used.

The application should listen for the unsynced ‘FontsChanged’ callin so modules can clear any already reserved display lists or other relevant caches.

Note the callin won’t be executed at the time of calling this method, but later, on the Update cycle (before other Update and Draw callins).

[source]

gl.AddFallbackFont(string) -> boolean
Parameters
stringfilePath
VFS path to the file, for example “fonts/myfont.ttf”. Uses VFS.RAW_FIRST access mode.
Returns
booleansuccess

gl.ClearFallbackFonts (function)

Clears all fallback fonts.

See the note at ‘AddFallbackFont’ about the ‘FontsChanged’ callin, it also applies when calling this method.

[source]

gl.ClearFallbackFonts() -> nil
Returns
nil

GL (field)

Constants for OpenGL API

For callouts related to OpenGL usage in Recoil, see gl.

[source]

See gl

GL (enum)

Constants for OpenGL API

For callouts related to OpenGL usage in Recoil, see gl.

[source]

integer POINTS
[source]
integer LINES
[source]
integer LINE_LOOP
[source]
integer LINE_STRIP
[source]
integer TRIANGLES
[source]
integer TRIANGLE_STRIP
[source]
integer TRIANGLE_FAN
[source]
integer QUADS
[source]
integer QUAD_STRIP
[source]
integer POLYGON
[source]
integer LINE_STRIP_ADJACENCY
[source]
integer LINES_ADJACENCY
[source]
integer TRIANGLE_STRIP_ADJACENCY
[source]
integer TRIANGLES_ADJACENCY
[source]
integer PATCHES
[source]
integer ZERO
[source]
integer ONE
[source]
integer SRC_COLOR
[source]
integer ONE_MINUS_SRC_COLOR
[source]
integer SRC_ALPHA
[source]
integer ONE_MINUS_SRC_ALPHA
[source]
integer DST_ALPHA
[source]
integer ONE_MINUS_DST_ALPHA
[source]
integer DST_COLOR
[source]
integer ONE_MINUS_DST_COLOR
[source]
integer SRC_ALPHA_SATURATE
[source]
integer FUNC_ADD
[source]
integer FUNC_SUBTRACT
[source]
integer FUNC_REVERSE_SUBTRACT
[source]
integer MIN
[source]
integer MAX
[source]
integer NEVER
[source]
integer LESS
[source]
integer EQUAL
[source]
integer LEQUAL
[source]
integer GREATER
[source]
integer NOTEQUAL
[source]
integer GEQUAL
[source]
integer ALWAYS
[source]
integer CLEAR
[source]
integer AND
[source]
integer AND_REVERSE
[source]
integer COPY
[source]
integer AND_INVERTED
[source]
integer NOOP
[source]
integer XOR
[source]
integer OR
[source]
integer NOR
[source]
integer EQUIV
[source]
integer INVERT
[source]
integer OR_REVERSE
[source]
integer COPY_INVERTED
[source]
integer OR_INVERTED
[source]
integer NAND
[source]
integer SET
[source]
integer BACK
[source]
integer FRONT
[source]
integer FRONT_AND_BACK
[source]
integer POINT
[source]
integer LINE
[source]
integer FILL
[source]
integer FLAT
[source]
integer SMOOTH
[source]
integer MODELVIEW
[source]
integer PROJECTION
[source]
integer TEXTURE
[source]
integer NEAREST
[source]
integer LINEAR
[source]
integer NEAREST_MIPMAP_NEAREST
[source]
integer LINEAR_MIPMAP_NEAREST
[source]
integer NEAREST_MIPMAP_LINEAR
[source]
integer LINEAR_MIPMAP_LINEAR
[source]
integer REPEAT
[source]
integer MIRRORED_REPEAT
[source]
integer CLAMP
[source]
integer CLAMP_TO_EDGE
[source]
integer CLAMP_TO_BORDER
[source]
integer TEXTURE_ENV
[source]
integer TEXTURE_ENV_MODE
[source]
integer TEXTURE_ENV_COLOR
[source]
integer MODULATE
[source]
integer DECAL
[source]
integer BLEND
[source]
integer REPLACE
[source]
integer TEXTURE_FILTER_CONTROL
[source]
integer TEXTURE_LOD_BIAS
[source]
integer TEXTURE_GEN_MODE
[source]
integer EYE_PLANE
[source]
integer OBJECT_PLANE
[source]
integer EYE_LINEAR
[source]
integer OBJECT_LINEAR
[source]
integer SPHERE_MAP
[source]
integer NORMAL_MAP
[source]
integer REFLECTION_MAP
[source]
integer S
[source]
integer T
[source]
integer R
[source]
integer Q
[source]
integer CURRENT_BIT
[source]
integer POINT_BIT
[source]
integer LINE_BIT
[source]
integer POLYGON_BIT
[source]
integer POLYGON_STIPPLE_BIT
[source]
integer PIXEL_MODE_BIT
[source]
integer LIGHTING_BIT
[source]
integer FOG_BIT
[source]
integer DEPTH_BUFFER_BIT
[source]
integer ACCUM_BUFFER_BIT
[source]
integer STENCIL_BUFFER_BIT
[source]
integer VIEWPORT_BIT
[source]
integer TRANSFORM_BIT
[source]
integer ENABLE_BIT
[source]
integer COLOR_BUFFER_BIT
[source]
integer HINT_BIT
[source]
integer EVAL_BIT
[source]
integer LIST_BIT
[source]
integer TEXTURE_BIT
[source]
integer SCISSOR_BIT
[source]
integer ALL_ATTRIB_BITS
[source]
integer FOG_HINT
[source]
integer PERSPECTIVE_CORRECTION_HINT
[source]
integer DONT_CARE
[source]
integer FASTEST
[source]
integer NICEST
[source]
integer AMBIENT
[source]
integer DIFFUSE
[source]
integer SPECULAR
[source]
integer POSITION
[source]
integer SPOT_DIRECTION
[source]
integer SPOT_EXPONENT
[source]
integer SPOT_CUTOFF
[source]
integer CONSTANT_ATTENUATION
[source]
integer LINEAR_ATTENUATION
[source]
integer QUADRATIC_ATTENUATION
[source]
integer VERTEX_SHADER
[source]
integer TESS_CONTROL_SHADER
[source]
integer TESS_EVALUATION_SHADER
[source]
integer GEOMETRY_SHADER_EXT
[source]
integer FRAGMENT_SHADER
[source]
integer GEOMETRY_INPUT_TYPE_EXT
[source]
integer GEOMETRY_OUTPUT_TYPE_EXT
[source]
integer GEOMETRY_VERTICES_OUT_EXT
[source]
integer PATCH_VERTICES
[source]
integer PATCH_DEFAULT_OUTER_LEVEL
[source]
integer PATCH_DEFAULT_INNER_LEVEL
[source]
integer BYTE
[source]
integer UNSIGNED_BYTE
[source]
integer SHORT
[source]
integer UNSIGNED_SHORT
[source]
integer INT
[source]
integer UNSIGNED_INT
[source]
integer FLOAT
[source]
integer FLOAT_VEC4
[source]
integer INT_VEC4
[source]
integer UNSIGNED_INT_VEC4
[source]
integer FLOAT_MAT4
[source]
integer ELEMENT_ARRAY_BUFFER
[source]
integer ARRAY_BUFFER
[source]
integer UNIFORM_BUFFER
[source]
integer SHADER_STORAGE_BUFFER
[source]
integer TEXTURE_1D
[source]
integer TEXTURE_2D
[source]
integer TEXTURE_2D_ARRAY
[source]
integer TEXTURE_3D
[source]
integer TEXTURE_CUBE_MAP
[source]
integer TEXTURE_2D_MULTISAMPLE
[source]
integer RGBA32F
[source]
integer RGBA16F
[source]
integer RG32F
[source]
integer RG16F
[source]
integer R11F_G11F_B10F
[source]
integer R32F
[source]
integer R16F
[source]
integer RGBA32UI
[source]
integer RGBA16UI
[source]
integer RGB10_A2UI
[source]
integer RGBA8UI
[source]
integer RG32UI
[source]
integer RG16UI
[source]
integer RG8UI
[source]
integer R32UI
[source]
integer R16UI
[source]
integer R8UI
[source]
integer RGBA32I
[source]
integer RGBA16I
[source]
integer RGBA8I
[source]
integer RG32I
[source]
integer RG16I
[source]
integer RG8I
[source]
integer R32I
[source]
integer R16I
[source]
integer R8I
[source]
integer RGBA16
[source]
integer RGB10_A2
[source]
integer RGBA8
[source]
integer RG16
[source]
integer RG8
[source]
integer R16
[source]
integer R8
[source]
integer RGBA16_SNORM
[source]
integer RGBA8_SNORM
[source]
integer RG16_SNORM
[source]
integer RG8_SNORM
[source]
integer R16_SNORM
[source]
integer R8_SNORM
[source]
integer DEPTH_COMPONENT16
[source]
integer DEPTH_COMPONENT24
[source]
integer DEPTH_COMPONENT32
[source]
integer DEPTH_COMPONENT32F
[source]
integer READ_ONLY
[source]
integer WRITE_ONLY
[source]
integer READ_WRITE
[source]
integer VERTEX_ATTRIB_ARRAY_BARRIER_BIT
[source]
integer ELEMENT_ARRAY_BARRIER_BIT
[source]
integer UNIFORM_BARRIER_BIT
[source]
integer TEXTURE_FETCH_BARRIER_BIT
[source]
integer SHADER_IMAGE_ACCESS_BARRIER_BIT
[source]
integer COMMAND_BARRIER_BIT
[source]
integer PIXEL_BUFFER_BARRIER_BIT
[source]
integer TEXTURE_UPDATE_BARRIER_BIT
[source]
integer BUFFER_UPDATE_BARRIER_BIT
[source]
integer FRAMEBUFFER_BARRIER_BIT
[source]
integer TRANSFORM_FEEDBACK_BARRIER_BIT
[source]
integer ATOMIC_COUNTER_BARRIER_BIT
[source]
integer SHADER_STORAGE_BARRIER_BIT
[source]
integer ALL_BARRIER_BITS
[source]
integer COLOR_ATTACHMENT0
[source]
integer COLOR_ATTACHMENT1
[source]
integer COLOR_ATTACHMENT2
[source]
integer COLOR_ATTACHMENT3
[source]
integer COLOR_ATTACHMENT4
[source]
integer COLOR_ATTACHMENT5
[source]
integer COLOR_ATTACHMENT6
[source]
integer COLOR_ATTACHMENT7
[source]
integer COLOR_ATTACHMENT8
[source]
integer COLOR_ATTACHMENT9
[source]
integer COLOR_ATTACHMENT10
[source]
integer COLOR_ATTACHMENT11
[source]
integer COLOR_ATTACHMENT12
[source]
integer COLOR_ATTACHMENT13
[source]
integer COLOR_ATTACHMENT14
[source]
integer COLOR_ATTACHMENT15
[source]
integer DEPTH_ATTACHMENT
[source]
integer STENCIL_ATTACHMENT
[source]
integer COLOR_ATTACHMENT0_EXT
[source]
integer COLOR_ATTACHMENT1_EXT
[source]
integer COLOR_ATTACHMENT2_EXT
[source]
integer COLOR_ATTACHMENT3_EXT
[source]
integer COLOR_ATTACHMENT4_EXT
[source]
integer COLOR_ATTACHMENT5_EXT
[source]
integer COLOR_ATTACHMENT6_EXT
[source]
integer COLOR_ATTACHMENT7_EXT
[source]
integer COLOR_ATTACHMENT8_EXT
[source]
integer COLOR_ATTACHMENT9_EXT
[source]
integer COLOR_ATTACHMENT10_EXT
[source]
integer COLOR_ATTACHMENT11_EXT
[source]
integer COLOR_ATTACHMENT12_EXT
[source]
integer COLOR_ATTACHMENT13_EXT
[source]
integer COLOR_ATTACHMENT14_EXT
[source]
integer COLOR_ATTACHMENT15_EXT
[source]
integer DEPTH_ATTACHMENT_EXT
[source]
integer STENCIL_ATTACHMENT_EXT
[source]
integer BUFFER
[source]
integer SHADER
[source]
integer PROGRAM
[source]
integer VERTEX_ARRAY
[source]
integer QUERY
[source]
integer PROGRAM_PIPELINE
[source]
integer TRANSFORM_FEEDBACK
[source]
integer RENDERBUFFER
[source]
integer FRAMEBUFFER
[source]

RmlUi (table)

Global functions for Recoil’s RmlUi implementation.

[source]

Members

RmlUi.CreateContext (function)

Create a new context.

[source]

RmlUi.CreateContext(string) -> RmlUi.Context?
Parameters
stringname
Returns
RmlUi.Context?nil
if failed.

RmlUi.RemoveContext (function)

Remove a context.

[source]

RmlUi.RemoveContext((string|RmlUi.Context)) -> nil
Parameters
(string|RmlUi.Context)context

RmlUi.LoadFontFace (function)

Load a font face.

[source]

RmlUi.LoadFontFace(string, boolean?, RmlUi.font_weight?) -> boolean
Parameters
stringfile_path
boolean?fallback
RmlUi.font_weight?weight
Returns
booleansuccess

RmlUi.GetContext (function)

Get a context by name.

[source]

RmlUi.GetContext(string) -> RmlUi.Context?
Parameters
stringname
Returns
RmlUi.Context?nil
if failed.

RmlUi.RegiserEventType (function)

Register a new event type.

[source]

RmlUi.RegiserEventType(string, boolean?, boolean?, RmlUi.default_action_phase?) -> RmlUi.EventID
Parameters
stringevent_type
boolean?interruptible
boolean?bubbles
RmlUi.default_action_phase?default_phase
Returns
RmlUi.EventID

RmlUi.AddTranslationString (function)

Add a translation string.

[source]

RmlUi.AddTranslationString(string, string) -> boolean
Parameters
stringkey
stringtranslation
Returns
booleansuccess

RmlUi.ClearTranslations (function)

Clear registered translations.

[source]

RmlUi.ClearTranslations() -> nil

RmlUi.SetMouseCursorAlias (function)

Converts the css names for cursors to the Recoil Engine names for cursors like RmlUi.SetMouseCursorAlias(“pointer”, ‘Move’). Web devs tend to want to use specific words for pointer types.

[source]

RmlUi.SetMouseCursorAlias(string, string) -> nil
Parameters
stringrml_name
name used in rml script
stringrecoil_name
name used in recoil

RmlUi.SetDebugContext (function)

Set which context the debug inspector is meant to inspect.

[source]

RmlUi.SetDebugContext((string|RmlUi.Context)) -> nil
Parameters
(string|RmlUi.Context)context

Fields

RmlUi.Context Context

Holds documents and a data model.

The Context class has no constructor; it must be instantiated through the CreateContext() function. It has the following functions and properties:

[source]

RmlUi.ElementPtr ElementPtr

Represents an owned element.

This type is mainly used to modify the DOM tree by passing the object into other elements. For example RmlUi.Element:AppendChild(). A current limitation in the Lua plugin is that Element member properties and functions cannot be used directly on this type.

[source]

RmlUi.Context[] contexts
[source]
string version
[source] RmlUi version
RmlUi.key_identifier key_identifier
[source]
RmlUi.key_modifier key_modifier
[source]
RmlUi.font_weight font_weight
[source]
RmlUi.default_action_phase default_action_phase
[source]
RmlUi.RmlModalFlag RmlModalFlag
[source]
RmlUi.RmlFocusFlag RmlFocusFlag
[source]
RmlUi.Document Document

Document derives from Element.

Document has no constructor; it must be instantiated through a Context object instead, either by loading an external RML file or creating an empty document. It has the following functions and properties:

[source]

RmlUi.Vector2i Vector2i

Two-dimensional integral vector.

[source]

RmlUi.Vector2f Vector2f

Two-dimensional float vector

[source]

RmlUi.ElementForm ElementForm
[source]
RmlUi.ElementFormControl ElementFormControl
[source]
RmlUi.ElementFormControlInput ElementFormControlInput
[source]
RmlUi.ElementFormControlSelect ElementFormControlSelect
[source]
RmlUi.ElementFormControlTextArea ElementFormControlTextArea
[source]
RmlUi.EventListener EventListener

Event listener interface

[source]

RmlUi.Element Element

Represents an element in the RmlUi document tree. This class cannot be constructed directly; use a Document object to instantiate elements. This is the foundational piece of the DOM.

[source]

RmlUi.RmlEventPhase RmlEventPhase
[source]
RmlUi.EventParametersProxy EventParametersProxy

Keyboard and mouse input data associated with an event.

[source]

RmlUi.Event Event

An event that happens to an element.

[source]

RmlUi.ElementText ElementText
[source]
RmlUi.ElementTabSet ElementTabSet
[source]
RmlUi.ElementProgress ElementProgress
[source]
RmlUi.SolLuaDataModel<T> SolLuaDataModel

Handle for a data model.

It is a wrapper around the model table, marked as type T. You can access fields by using normal indexing, but for the moment, the only keys that work are strings. Any index done this way will automatically trigger a rerender. If you need to index any tables or subtables by anything not a string, you will need to use the underlying table, gotten with __GetTable. This will not trigger a rerender. To trigger a rerender manually, use _SetDirty, passing in the name of the top-level entry in your model table that you edited.

[source]

AIInfo (class)

[source]

Fields

string shortName
string version

ActiveUniform (class)

[source]

Fields

string name
string type
String name of GL_* constant.
integer length
The character length of name.
integer size
GL location

ArchiveInfo (class)

[source]

Fields

string name
string shortname
string version
string mutator
string game
string shortgame
string description
string mapfile
ModType modtype

AtmosphereParams (class)

[source]

Fields

number fogStart
number fogEnd
rgba sunColor
rgba skyColor
rgba cloudColor
xyzw skyAxisAngle
rotation axis and angle in radians of skybox orientation

CallAsTeamOptions (class)

[source]

Fields

integer ctrl
Ctrl team ID.
integer read
Read team ID.
integer select
Select team ID.

CameraState (class)

Parameters for camera state.

Highly dependent on the type of the current camera controller.

Fields

CameraName name
The camera name.
CameraMode mode
The camera mode.
number? fov
number? px
Position X of the ground point in screen center.
number? py
Position Y of the ground point in screen center.
number? pz
Position Z of the ground point in screen center.
number? dx
Camera direction vector X.
number? dy
Camera direction vector Y.
number? dz
Camera direction vector Z.
number? rx
Camera rotation angle on X axis. (spring)
number? ry
Camera rotation angle on Y axis. (spring)
number? rz
Camera rotation angle on Z axis. (spring)
number? angle
Camera rotation angle on X axis (aka tilt/pitch). (ta)
number? flipped
-1 for when south is down, 1 for when north is down. (ta)
number? dist
Camera distance from the ground. (spring)
number? height
Camera distance from the ground. (ta)
number? oldHeight
Camera distance from the ground, cannot be changed. (rot)

CameraVectors (class)

[source]

Fields

xyz forward
xyz up
xyz right
xyz topFrustumPlane
xyz botFrustumPlane
xyz lftFrustumPlane
xyz rgtFrustumPlane

CollisionVolumeData (class)

Parameters related to a collision volume.

[source]

Fields

("ellipsoid"|"cylinder"|"box"|"sphere") type
type
number scaleX
number scaleY
number scaleZ
number offsetX
number offsetY
number offsetZ
number boundingRadius
boolean defaultToSphere
boolean defaultToFootPrint
boolean defaultToPieceTree

Command (class)

[source]

Fields

integer id
number[]? params
CommandOptions? options

CommandDescription (class)

Contains data about a command.

[source]

Fields

(CMD|integer)? id
CMDTYPE? type
string? name
string? action
string? tooltip
string? texture
string? cursor
boolean? queueing
boolean? hidden
boolean? disabled
boolean? showUnique
boolean? onlyTexture
string[]? params

CommandOptions (class)

Full command options object for reading from a Command.

Note that this has extra fields internal and coded that are not supported when creating a command from Lua.

[source]

Fields

(CommandOptionBit|integer) coded
Bitmask of command options.
boolean alt
Alt key pressed.
boolean ctrl
Ctrl key pressed.
boolean shift
Shift key pressed.
boolean right
Right mouse key pressed.
boolean meta
Meta key (space) pressed.
boolean internal

Configuration (class)

Contains data about a configuration, only name and type are guaranteed

[source]

Fields

string name
string type
string description
string defaultValue
string minimumValue
string maximumValue
string safemodeValue
string declarationFile
string declarationLine
boolean readOnly

ControlPoint (class)

NURBS control point.

[source]

CreateCommand (class)

Used when assigning multiple commands at once.

[source]

CreateRBOData (class)

[source]

Fields

GL target
GL format
number? samples
any number here will result in creation of multisampled RBO

ExplosionParams (class)

Parameters for explosion.

Please note the explosion defaults to 1 damage regardless of what it’s defined in the weaponDef. The weapondefID is only used for visuals and for passing into callins like UnitDamaged.

[source]

Fields

number weaponDef
number owner
number hitUnit
number hitFeature
number craterAreaOfEffect
number damageAreaOfEffect
number edgeEffectiveness
number explosionSpeed
number gfxMod
boolean impactOnly
boolean ignoreOwner
boolean damageGround

FBO (class)

User Data FBO

[source]

FBODescription (class)

[source]

Fields

string? depth
string? stencil
string? color0
string? color1
string? color2
string? color3
string? color4
string? color5
string? color6
string? color7
string? color8
string? color9
string? color10
string? color11
string? color12
string? color13
string? color14
string? color15
(integer|GL)[]? drawbuffers
e.g. { GL_COLOR_ATTACHMENT0_EXT, GL_COLOR_ATTACHMENT3_EXT, ..}
(integer|GL)? readbuffer
e.g. GL_COLOR_ATTACHMENT0_EXT

FeatureSupport (class)

[source]

Fields

boolean NegativeGetUnitCurrentCommand
Whether Spring.GetUnitCurrentCommand allows negative indices to look from the end
boolean hasExitOnlyYardmaps
Whether yardmaps accept ’e’ (exit only) and ‘u’ (unbuildable, walkable)
integer rmlUiApiVersion
Version of Recoil’s rmlUI API
boolean noAutoShowMetal
Whether the engine switches to the metal view when selecting a “build metal extractor” command (yes if false)
integer maxPiecesPerModel
How many pieces supported for 3d models?
number gunshipCruiseAltitudeMultiplier
For gunships, the cruiseAltitude from the unit def is multiplied by this much
boolean noRefundForConstructionDecay
Whether there is no refund for construction decay (100% metal back if false)
boolean noRefundForFactoryCancel
Whether there is no refund for factory cancel (100% metal back if false)
boolean noOffsetForFeatureID
Whether featureID from various interfaces (targetID for Reclaim commands, ownerID from SpringGetGroundDecalOwner, etc) needs to be offset by Game.maxUnits
boolean noHandicapForReclaim
Whether handicap is applied to income from reclaim
boolean groupAddDoesntSelect
Whether ‘group add’ also selects the group (does both if false)

GenericMoveType (class)

[source]

Fields

number? maxSpeed
number? maxWantedSpeed
number? maneuverLeash
number? waterline
boolean? useWantedSpeed[0]
Use wanted speed for individual orders.
boolean? useWantedSpeed[1]
Use wanted speed for formation orders.

GroundMoveType (class)

Inherits GenericMoveType

[source]

Fields

boolean? atGoal
boolean? atEndOfPath
boolean? pushResistant
integer? minScriptChangeHeading
number? turnRate
number? turnAccel
number? accRate
number? decRate
number? myGravity
number? maxReverseDist
number? minReverseAngle
number? maxReverseSpeed
number? sqSkidSpeedMult

HoverAirMoveType (class)

Inherits GenericMoveType

[source]

Fields

boolean? collide
boolean? dontLand
boolean? airStrafe
boolean? useSmoothMesh
boolean? bankingAllowed
number? wantedHeight
number? accRate
number? decRate
number? turnRate
number? altitudeRate
number? currentBank
number? currentPitch
number? maxDrift

Intro (class)

Inherits Callins

[source]

Members

Intro:DrawLoadScreen (function)

Draws custom load screens.

[source]

Intro:DrawLoadScreen() -> nil

Intro:LoadProgress (function)

[source]
Intro:LoadProgress(string, boolean) -> nil
Parameters
stringmessage
booleanreplaceLastLine

KeyBinding (class)

Contains data about a keybinding

[source]

Fields

string command
string extra
string boundWith

KeyModifiers (class)

Key Modifier Params

[source]

Fields

boolean right
Right mouse key pressed
boolean alt
Alt key pressed
boolean ctrl
Ctrl key pressed
boolean shift
Shift key pressed

LightParams (class)

Parameters for lighting

[source]

Fields

{ px: number, py: number, pz: number } position
{ dx: number, dy: number, dz: number } direction
{ blue: number, green: number, red: number } ambientColor
{ blue: number, green: number, red: number } diffuseColor
{ blue: number, green: number, red: number } specularColor
{ ambientWeight: number, diffuseWeight: number, specularWeight: number } intensityWeight
{ ambientBlueDecay: number, ambientGreenDecay: number, ambientRedDecay: number } ambientDecayRate
Per-frame decay of ambientColor (spread over TTL frames)
{ diffuseBlueDecay: number, diffuseGreenDecay: number, diffuseRedDecay: number } diffuseDecayRate
Per-frame decay of diffuseColor (spread over TTL frames)
{ specularBlueDecay: number, specularGreenDecay: number, specularRedDecay: number } specularDecayRate
Per-frame decay of specularColor (spread over TTL frames)
{ ambientDecayType: number, diffuseDecayType: number, specularDecayType: number } decayFunctionType
If value is 0.0 then the *DecayRate values will be interpreted as linear, otherwise exponential.
number radius
number fov
number ttl
number priority
boolean ignoreLOS

LuaFont (class)

Lua opengl font object.

[source]

Members

LuaFont:Begin (function)

Begin a block of font commands.

[source]

Fonts can be printed without using Start/End, but when doing several operations it’s more optimal if done inside a block.

Also allows disabling automatic setting of the blend mode. Otherwise the font will always print with BlendFunc(GL.SRC_ALPHA, GL.ONE_MINUS_SRC_ALPHA).

See gl.BlendFuncSeparate

LuaFont:Begin(boolean?) -> nil
Parameters
boolean?userDefinedBlending
When true doesn’t set the gl.BlendFunc automatically. Defaults to false.

LuaFont:SubmitBuffered (function)

Draws text printed with the buffered option.

[source]

See gl.BlendFuncSeparate

LuaFont:SubmitBuffered(boolean?, boolean?) -> nil
Parameters
boolean?noBillboarding
When false sets 3d billboard mode. Defaults to true.
boolean?userDefinedBlending
When true doesn’t set the gl.BlendFunc automatically. Defaults to false.

MapRenderingParams (class)

Map rendering params

[source]

Fields

rgba splatTexMults
rgba splatTexScales
boolean voidWater
boolean voidGround
boolean splatDetailNormalDiffuseAlpha

Material (class)

[source]

Fields

number shininess
(rgb|rgba) ambidiff
(rgb|rgba) ambient
(rgb|rgba) diffuse
(rgb|rgba) specular
(rgb|rgba) emission

Matrix4x4 (class)

[source]

Menu (class)

Inherits Callins

[source]

Members

Menu:ActivateMenu (function)

Called whenever LuaMenu is on with no game loaded.

[source]

Menu:ActivateMenu() -> nil

Menu:ActivateGame (function)

Called whenever LuaMenu is on with a game loaded.

[source]

Menu:ActivateGame() -> nil

Menu:AllowDraw (function)

Enables Draw{Genesis,Screen,ScreenPost} callins if true is returned, otherwise they are called once every 30 seconds. Only active when a game isn’t running.

[source]

Menu:AllowDraw() -> boolean
Returns
booleanallowDraw

MoveCtrl (class)

Members

MoveCtrl.IsEnabled (function)

[source]
MoveCtrl.IsEnabled(integer) -> boolean?
Parameters
integerunitID
Returns
boolean?isEnabled

MoveCtrl.Enable (function)

[source]
MoveCtrl.Enable(integer) -> nil
Parameters
integerunitID

MoveCtrl.Disable (function)

[source]
MoveCtrl.Disable(integer) -> nil
Parameters
integerunitID

MoveCtrl.SetTag (function)

[source]
MoveCtrl.SetTag(integer, integer) -> nil
Parameters
integerunitID
integertag

MoveCtrl.GetTag (function)

[source]
MoveCtrl.GetTag(integer?) -> nil
Parameters
integer?tag

MoveCtrl.SetProgressState (function)

[source]
MoveCtrl.SetProgressState(integer, (0|1|2|"done"|"active"|"failed")) -> nil
Parameters
integerunitID
(0|1|2|"done"|"active"|"failed")state

MoveCtrl.SetExtrapolate (function)

[source]
MoveCtrl.SetExtrapolate(integer, boolean) -> nil
Parameters
integerunitID
booleanextrapolate

MoveCtrl.SetPhysics (function)

[source]
MoveCtrl.SetPhysics(integer, number, number, number, number, number, number, number, number, number) -> nil
Parameters
integerunitID
numberposX
Position X component.
numberposY
Position Y component.
numberposZ
Position Z component.
numbervelX
Velocity X component.
numbervelY
Velocity Y component.
numbervelZ
Velocity Z component.
numberrotX
Rotation X component.
numberrotY
Rotation Y component.
numberrotZ
Rotation Z component.

MoveCtrl.SetPosition (function)

[source]
MoveCtrl.SetPosition(integer, number, number, number) -> nil
Parameters
integerunitID
numberposX
Position X component.
numberposY
Position Y component.
numberposZ
Position Z component.

MoveCtrl.SetVelocity (function)

[source]
MoveCtrl.SetVelocity(integer, number, number, number) -> nil
Parameters
integerunitID
numbervelX
Velocity X component.
numbervelY
Velocity Y component.
numbervelZ
Velocity Z component.

MoveCtrl.SetRelativeVelocity (function)

[source]
MoveCtrl.SetRelativeVelocity(integer, number, number, number) -> nil
Parameters
integerunitID
numberrelVelX
Relative velocity X component.
numberrelVelY
Relative velocity Y component.
numberrelVelZ
Relative velocity Z component.

MoveCtrl.SetRotation (function)

[source]
MoveCtrl.SetRotation(integer, number, number, number) -> nil
Parameters
integerunitID
numberrotX
Rotation X component.
numberrotY
Rotation Y component.
numberrotZ
Rotation Z component.

MoveCtrl.SetRotationOffset (function)

[source]

Deprecated

MoveCtrl.SetRotationOffset() -> nil

MoveCtrl.SetRotationVelocity (function)

[source]
MoveCtrl.SetRotationVelocity(integer, number, number, number) -> nil
Parameters
integerunitID
numberrotVelX
Rotation velocity X component.
numberrotVelY
Rotation velocity Y component.
numberrotVelZ
Rotation velocity Z component.

MoveCtrl.SetHeading (function)

[source]
MoveCtrl.SetHeading(integer, Heading) -> nil
Parameters
integerunitID
Headingheading

MoveCtrl.SetTrackSlope (function)

[source]
MoveCtrl.SetTrackSlope(integer, boolean) -> nil
Parameters
integerunitID
booleantrackSlope

MoveCtrl.SetTrackGround (function)

[source]
MoveCtrl.SetTrackGround(integer, boolean) -> nil
Parameters
integerunitID
booleantrackGround

MoveCtrl.SetTrackLimits (function)

[source]
MoveCtrl.SetTrackLimits(integer, boolean) -> nil
Parameters
integerunitID
booleantrackLimits

MoveCtrl.SetGroundOffset (function)

[source]
MoveCtrl.SetGroundOffset(integer, number) -> nil
Parameters
integerunitID
numbergroundOffset

MoveCtrl.SetGravity (function)

[source]
MoveCtrl.SetGravity(integer, number) -> nil
Parameters
integerunitID
numbergravityFactor

MoveCtrl.SetDrag (function)

[source]
MoveCtrl.SetDrag(integer, number) -> nil
Parameters
integerunitID
numberdrag

MoveCtrl.SetWindFactor (function)

[source]
MoveCtrl.SetWindFactor(integer, number) -> nil
Parameters
integerunitID
numberwindFactor

MoveCtrl.SetLimits (function)

[source]
MoveCtrl.SetLimits(integer, number, number, number, number, number, number) -> nil
Parameters
integerunitID
numberminX
Minimum position X component.
numberminY
Minimum position Y component.
numberminZ
Minimum position Z component.
numbermaxX
Maximum position X component.
numbermaxY
Maximum position Y component.
numbermaxZ
Maximum position Z component.

MoveCtrl.SetNoBlocking (function)

[source]
MoveCtrl.SetNoBlocking(integer, boolean) -> nil
Parameters
integerunitID
booleannoBlocking

MoveCtrl.SetCollideStop (function)

[source]
MoveCtrl.SetCollideStop(integer, boolean) -> nil
Parameters
integerunitID
booleancollideStop

MoveCtrl.SetLimitsStop (function)

[source]
MoveCtrl.SetLimitsStop(integer, boolean) -> nil
Parameters
integerunitID
booleanlimitsStop

MoveCtrl.SetGunshipMoveTypeData (function)

[source]
MoveCtrl.SetGunshipMoveTypeData(integer, HoverAirMoveType) -> number
Parameters
integerunitID
HoverAirMoveTypemoveType
Returns
numbernumAssignedValues

MoveCtrl.SetGunshipMoveTypeData (function overload 1)

[source]
MoveCtrl.SetGunshipMoveTypeData(integer, (GenericMoveTypeBooleanKey|"collide"|"dontLand"|"airStrafe"|"useSmoothMesh"|"bankingAllowed"), boolean) -> number
Parameters
integerunitID
(GenericMoveTypeBooleanKey|"collide"|"dontLand"|"airStrafe"|"useSmoothMesh"|"bankingAllowed")key
booleanvalue
Returns
numbernumAssignedValues

MoveCtrl.SetGunshipMoveTypeData (function overload 2)

[source]
MoveCtrl.SetGunshipMoveTypeData(integer, (GenericMoveTypeNumberKey|"wantedHeight"|"accRate"|"decRate"|"turnRate"|"altitudeRate"|"currentBank"|"currentPitch"...), number) -> number
Parameters
integerunitID
(GenericMoveTypeNumberKey|"wantedHeight"|"accRate"|"decRate"|"turnRate"|"altitudeRate"|"currentBank"|"currentPitch"...)key
numbervalue
Returns
numbernumAssignedValues

MoveCtrl.SetAirMoveTypeData (function)

[source]
MoveCtrl.SetAirMoveTypeData(integer, StrafeAirMoveType) -> number
Parameters
integerunitID
StrafeAirMoveTypemoveType
Returns
numbernumAssignedValues

MoveCtrl.SetAirMoveTypeData (function overload 1)

[source]
MoveCtrl.SetAirMoveTypeData(integer, (GenericMoveTypeBooleanKey|"collide"|"useSmoothMesh"|"loopbackAttack"), boolean) -> number
Parameters
integerunitID
(GenericMoveTypeBooleanKey|"collide"|"useSmoothMesh"|"loopbackAttack")key
booleanvalue
Returns
numbernumAssignedValues

MoveCtrl.SetAirMoveTypeData (function overload 2)

[source]
MoveCtrl.SetAirMoveTypeData(integer, (GenericMoveTypeNumberKey|"wantedHeight"|"turnRadius"|"accRate"|"decRate"|"maxAcc"|"maxDec"|"maxBank"...), number) -> number
Parameters
integerunitID
(GenericMoveTypeNumberKey|"wantedHeight"|"turnRadius"|"accRate"|"decRate"|"maxAcc"|"maxDec"|"maxBank"...)key
numbervalue
Returns
numbernumAssignedValues

MoveCtrl.SetAirMoveTypeData (function overload 3)

[source]
MoveCtrl.SetAirMoveTypeData(integer, ("maneuverBlockTime"), integer) -> number
Parameters
integerunitID
("maneuverBlockTime")key
integervalue
Returns
numbernumAssignedValues

MoveCtrl.SetGroundMoveTypeData (function)

[source]
MoveCtrl.SetGroundMoveTypeData(integer, GroundMoveType) -> number
Parameters
integerunitID
GroundMoveTypemoveType
Returns
numbernumAssignedValues

MoveCtrl.SetGroundMoveTypeData (function overload 1)

[source]
MoveCtrl.SetGroundMoveTypeData(integer, (GenericMoveTypeBooleanKey|"atGoal"|"atEndOfPath"|"pushResistant"), boolean) -> number
Parameters
integerunitID
(GenericMoveTypeBooleanKey|"atGoal"|"atEndOfPath"|"pushResistant")key
booleanvalue
Returns
numbernumAssignedValues

MoveCtrl.SetGroundMoveTypeData (function overload 2)

[source]
MoveCtrl.SetGroundMoveTypeData(integer, (GenericMoveTypeNumberKey|"turnRate"|"turnAccel"|"accRate"|"decRate"|"myGravity"|"maxReverseDist"|"minReverseAngle"...), number) -> number
Parameters
integerunitID
(GenericMoveTypeNumberKey|"turnRate"|"turnAccel"|"accRate"|"decRate"|"myGravity"|"maxReverseDist"|"minReverseAngle"...)key
numbervalue
Returns
numbernumAssignedValues

MoveCtrl.SetGroundMoveTypeData (function overload 3)

[source]
MoveCtrl.SetGroundMoveTypeData(integer, ("minScriptChangeHeading"), integer) -> number
Parameters
integerunitID
("minScriptChangeHeading")key
integervalue
Returns
numbernumAssignedValues

MoveCtrl.SetMoveDef (function)

[source]
MoveCtrl.SetMoveDef(integer, (integer|string)) -> boolean
Parameters
integerunitID
(integer|string)moveDef
Name or path type of the MoveDef.
Returns
booleansuccess
true if the MoveDef was set, false if unitID or moveDef were invalid, or if the unit does not support a MoveDef.

PieceInfo (class)

[source]

Fields

string name
string parent
string[] children
names
boolean empty
(number,number,number) min
(x,y,z)
(number,number,number) max
(x,y,z)
(number,number,number) offset
(x,y,z)

Plane (class)

[source]

Fields

number normalVecX
number normalVecY
number normalVecZ
number d

ProjectileParams (class)

[source]

Fields

xyz pos
xyz speed
xyz spread
xyz error
xyz end
integer owner
integer team
number ttl
number gravity
number tracking
number maxRange
number startAlpha
number endAlpha
string model
string cegTag

RBO (class)

User Data RBO

[source]

Fields

GL target
GL format
integer xsize
integer ysize
boolean valid
integer samples
will return globalRendering->msaaLevel for multisampled RBO or 0 otherwise

ResourceCost (class)

[source]

Fields

number metal
number energy

RmlUi.Context (class)

Holds documents and a data model.

The Context class has no constructor; it must be instantiated through the CreateContext() function. It has the following functions and properties:

[source]

Members

RmlUi.Context:AddEventListener (function)

Adds the inline Lua script, script, as an event listener to the context. element_context is an optional Element; if it is not None, then the script will be executed as if it was bound to that element.

[source]

RmlUi.Context:AddEventListener(string, RmlUi.Element, boolean, boolean) -> nil
Parameters
stringevent
RmlUi.Elementscript
booleanelement_context
booleanin_capture_phase

RmlUi.Context:CreateDocument (function)

Creates a new document with the tag name of tag.

[source]

RmlUi.Context:CreateDocument(string) -> RmlUi.Document
Parameters
stringtag
Returns
RmlUi.Document

RmlUi.Context:LoadDocument (function)

Attempts to load a document from the RML file found at document_path. If successful, the document will be returned with a reference count of one.

[source]

RmlUi.Context:LoadDocument(string) -> RmlUi.Document
Parameters
stringdocument_path
Returns
RmlUi.Document

RmlUi.Context:GetDocument (function)

[source]
RmlUi.Context:GetDocument(string) -> nil
Parameters
stringname

RmlUi.Context:Render (function)

Renders the context.

[source]

RmlUi.Context:Render() -> boolean
Returns
boolean

RmlUi.Context:UnloadAllDocuments (function)

Closes all documents currently loaded with the context.

[source]

RmlUi.Context:UnloadAllDocuments() -> nil

RmlUi.Context:UnloadDocument (function)

Unloads a specific document within the context.

[source]

RmlUi.Context:UnloadDocument(RmlUi.Document) -> nil
Parameters
RmlUi.Documentdocument

RmlUi.Context:Update (function)

Updates the context.

[source]

RmlUi.Context:Update() -> boolean
Returns
boolean

RmlUi.Context:OpenDataModel (function)

Create a new data model from a base table model and register to the context. The model table is copied. Note that widget does not actually have to be a widget; it can be any table. This table can be accessed in widgets like <button class=“mode-button” onclick=“widget:SetCamMode()">Set Dolly Mode</button>. Also note that your data model is inaccessible in onx properties.

[source]

RmlUi.Context:OpenDataModel(string, T, table) -> SolLuaDataModel<T>
Parameters
stringname
Tmodel
tablewidget
Returns
SolLuaDataModel<T>

RmlUi.Context:RemoveDataModel (function)

Removes a data model from the context.

[source]

RmlUi.Context:RemoveDataModel(string) -> nil
Parameters
stringname

RmlUi.Context:ProcessMouseMove (function)

Processes a mouse move event.

[source]

RmlUi.Context:ProcessMouseMove(RmlUi.Vector2f) -> boolean
Parameters
RmlUi.Vector2fposition
Returns
boolean

RmlUi.Context:ProcessMouseButtonDown (function)

Processes a mouse button down event.

[source]

RmlUi.Context:ProcessMouseButtonDown(RmlUi.MouseButton, integer) -> boolean
Parameters
RmlUi.MouseButtonbutton
integerkey_modifier_state
Returns
boolean

RmlUi.Context:ProcessMouseButtonUp (function)

Processes a mouse button up event.

[source]

RmlUi.Context:ProcessMouseButtonUp(RmlUi.MouseButton, integer) -> boolean
Parameters
RmlUi.MouseButtonbutton
integerkey_modifier_state
Returns
boolean

RmlUi.Context:ProcessMouseWheel (function)

Processes a mouse wheel event.

[source]

RmlUi.Context:ProcessMouseWheel((RmlUi.Vector2f|number), integer) -> boolean
Parameters
(RmlUi.Vector2f|number)delta
integerkey_modifier_state
Returns
boolean

RmlUi.Context:ProcessMouseLeave (function)

Processes a mouse leave event.

[source]

RmlUi.Context:ProcessMouseLeave() -> boolean
Returns
boolean

RmlUi.Context:IsMouseInteracting (function)

Returns true if the mouse is currently interacting with the context, false if not.

[source]

RmlUi.Context:IsMouseInteracting() -> boolean
Returns
boolean

RmlUi.Context:ProcessKeyDown (function)

Processes a key down event.

[source]

RmlUi.Context:ProcessKeyDown(RmlUi.key_identifier, integer) -> boolean
Parameters
RmlUi.key_identifierkey
integerkey_modifier_state
Returns
boolean

RmlUi.Context:ProcessKeyUp (function)

Processes a key up event.

[source]

RmlUi.Context:ProcessKeyUp(RmlUi.key_identifier, integer) -> boolean
Parameters
RmlUi.key_identifierkey
integerkey_modifier_state
Returns
boolean

RmlUi.Context:ProcessTextInput (function)

Processes a text input event.

[source]

RmlUi.Context:ProcessTextInput(string) -> boolean
Parameters
stringtext
Returns
boolean

RmlUi.Context:EnableMouseCursor (function)

Enables or disables the mouse cursor for the context.

[source]

RmlUi.Context:EnableMouseCursor(boolean) -> nil
Parameters
booleanenable

RmlUi.Context:ActivateTheme (function)

Activates a theme for the context.

[source]

RmlUi.Context:ActivateTheme(string, boolean) -> nil
Parameters
stringtheme_name
booleanactivate

RmlUi.Context:IsThemeActive (function)

Returns true if the theme is active, false if not.

[source]

RmlUi.Context:IsThemeActive(string) -> boolean
Parameters
stringtheme_name
Returns
boolean

RmlUi.Context:GetElementAtPoint (function)

Returns the element at the point specified by point.

[source]

RmlUi.Context:GetElementAtPoint(RmlUi.Vector2f, RmlUi.Element?) -> RmlUi.Element
Parameters
RmlUi.Vector2fpoint
RmlUi.Element?ignore
Returns
RmlUi.Element

RmlUi.Context:PullDocumentToFront (function)

Pulls the document to the front of the context.

[source]

RmlUi.Context:PullDocumentToFront(RmlUi.Document) -> nil
Parameters
RmlUi.Documentdocument

RmlUi.Context:PushDocumentToBack (function)

Pushes the document to the back of the context.

[source]

RmlUi.Context:PushDocumentToBack(RmlUi.Document) -> nil
Parameters
RmlUi.Documentdocument

Fields

RmlUi.Vector2i dimensions
[source]
number dp_ratio
[source]
RmlUi.Document[] documents
[source]
RmlUi.Element focus_element
[source]
RmlUi.Element hover_element
[source]
string name
[source]
RmlUi.Element root_element
[source]

RmlUi.Document (class)

Inherits RmlUi.Element

Document derives from Element.

Document has no constructor; it must be instantiated through a Context object instead, either by loading an external RML file or creating an empty document. It has the following functions and properties:

[source]

Members

RmlUi.Document:PullToFront (function)

Pulls the document in front of other documents within its context with a similar z-index.

[source]

RmlUi.Document:PullToFront() -> nil

RmlUi.Document:PushToBack (function)

Pushes the document behind other documents within its context with a similar z-index.

[source]

RmlUi.Document:PushToBack() -> nil

RmlUi.Document:Show (function)

Shows the document.

[source]

RmlUi.Document:Show(RmlUi.RmlModalFlag?, RmlUi.RmlFocusFlag?) -> nil
Parameters
RmlUi.RmlModalFlag?modal
Defaults to Focus
RmlUi.RmlFocusFlag?focus

RmlUi.Document:Hide (function)

Hides the document.

[source]

RmlUi.Document:Hide() -> nil

RmlUi.Document:Close (function)

Hides and closes the document, destroying its contents.

[source]

RmlUi.Document:Close() -> nil

RmlUi.Document:CreateElement (function)

Instances an element with a tag of tag_name.

[source]

RmlUi.Document:CreateElement(string) -> RmlUi.ElementPtr
Parameters
stringtag_name
Returns
RmlUi.ElementPtr

RmlUi.Document:CreateTextNode (function)

Instances a text element containing the string text.

[source]

RmlUi.Document:CreateTextNode(string) -> RmlUi.ElementPtr
Parameters
stringtext
Returns
RmlUi.ElementPtr

RmlUi.Document:ReloadStyleSheet (function)

Reload the active style sheet.

[source]

RmlUi.Document:ReloadStyleSheet(boolean?) -> nil
Parameters
boolean?load

RmlUi.Document:LoadInlineScript (function)

Load scripts as if it were in the script tag.

[source]

RmlUi.Document:LoadInlineScript(string, string?, integer?) -> nil
Parameters
stringcontent
string?source
integer?source_line

RmlUi.Document:LoadExternalScript (function)

Load an external script.

[source]

RmlUi.Document:LoadExternalScript(string) -> nil
Parameters
stringsource_path

RmlUi.Document:UpdateDocument (function)

Update the Document.

[source]

RmlUi.Document:UpdateDocument() -> nil

RmlUi.Document:AppendToStyleSheet (function)

Append text to style sheet.

[source]

RmlUi.Document:AppendToStyleSheet(string) -> nil
Parameters
stringcontent

Fields

string title
[source]
RmlUi.Context context
[source]
string url
[source]
boolean modal
[source] Is it modal?
table widget
[source] A table of data that can be accessed in onevent attributes. It doesn’t have to be a widget.

RmlUi.Element (class)

Represents an element in the RmlUi document tree. This class cannot be constructed directly; use a Document object to instantiate elements. This is the foundational piece of the DOM.

[source]

Members

RmlUi.Element:AddEventListener (function)

Adds an event listener to the element.

[source]

RmlUi.Element:AddEventListener(string, (function|string), boolean) -> nil
Parameters
stringevent
(function|string)listener
booleanin_capture_phase

RmlUi.Element:AppendChild (function)

Appends element as a child to this element.

[source]

RmlUi.Element:AppendChild(RmlUi.ElementPtr) -> RmlUi.ElementPtr
Parameters
RmlUi.ElementPtrelement
Returns
RmlUi.ElementPtr

RmlUi.Element:Blur (function)

Removes input focus from this element.

[source]

RmlUi.Element:Blur() -> nil

RmlUi.Element:Click (function)

Fakes a click on this element.

[source]

RmlUi.Element:Click() -> nil

RmlUi.Element:DispatchEvent (function)

Dispatches an event to this element.

[source]

RmlUi.Element:DispatchEvent(string, table, string) -> boolean
Parameters
stringevent
tableparameters
stringinterruptible
Returns
boolean

RmlUi.Element:Focus (function)

Gives input focus to this element.

[source]

RmlUi.Element:Focus() -> nil

RmlUi.Element:GetAttribute (function)

Returns the value of the attribute named name. If no such attribute exists, the empty string will be returned.

[source]

RmlUi.Element:GetAttribute(string) -> any
Parameters
stringname
Returns
any

RmlUi.Element:GetElementById (function)

Returns the descendant element with an id of id.

[source]

RmlUi.Element:GetElementById(string) -> RmlUi.Element
Parameters
stringid
Returns
RmlUi.Element

RmlUi.Element:GetElementsByTagName (function)

Returns a list of all descendant elements with the tag of tag_name.

[source]

RmlUi.Element:GetElementsByTagName(string) -> RmlUi.ElementPtr[]
Parameters
stringtag_name
Returns
RmlUi.ElementPtr[]

RmlUi.Element:QuerySelector (function)

Unsure what this does, but seems powerful?

[source]

RmlUi.Element:QuerySelector(string) -> RmlUi.ElementPtr
Parameters
stringquery
Returns
RmlUi.ElementPtr

RmlUi.Element:QuerySelectorAll (function)

Unsure what this does, but seems powerful?

[source]

RmlUi.Element:QuerySelectorAll(string) -> nil
Parameters
stringselectors

RmlUi.Element:HasAttribute (function)

Returns True if the element has a value for the attribute named name, False if not.

[source]

RmlUi.Element:HasAttribute(string) -> boolean
Parameters
stringname
Returns
boolean

RmlUi.Element:HasChildNodes (function)

Returns True if the element has at least one child node, false if not.

[source]

RmlUi.Element:HasChildNodes() -> boolean
Returns
boolean

RmlUi.Element:InsertBefore (function)

Inserts the element element as a child of this element, directly before adjacent_element in the list of children.

[source]

RmlUi.Element:InsertBefore(RmlUi.ElementPtr, RmlUi.Element) -> RmlUi.Element?
Parameters
RmlUi.ElementPtrelement
RmlUi.Elementadjacent_element
Returns
RmlUi.Element?

RmlUi.Element:IsClassSet (function)

Returns true if the class name is set on the element, false if not.

[source]

RmlUi.Element:IsClassSet(string) -> boolean
Parameters
stringname
Returns
boolean

RmlUi.Element:RemoveAttribute (function)

Removes the attribute named name from the element.

[source]

RmlUi.Element:RemoveAttribute(string) -> nil
Parameters
stringname

RmlUi.Element:RemoveChild (function)

Removes the child element element from this element.

[source]

RmlUi.Element:RemoveChild(RmlUi.Element) -> boolean
Parameters
RmlUi.Elementelement
Returns
boolean

RmlUi.Element:ReplaceChild (function)

Replaces the child element replaced_element with inserted_element in this element’s list of children. If replaced_element is not a child of this element, inserted_element will be appended onto the list instead.

[source]

RmlUi.Element:ReplaceChild(RmlUi.ElementPtr, RmlUi.Element) -> boolean
Parameters
RmlUi.ElementPtrinserted_element
RmlUi.Elementreplaced_element
Returns
boolean

RmlUi.Element:ScrollIntoView (function)

Scrolls this element into view if its ancestors have hidden overflow.

[source]

RmlUi.Element:ScrollIntoView(boolean) -> nil
Parameters
booleanalign_with_top

RmlUi.Element:SetAttribute (function)

Sets the value of the attribute named name to value.

[source]

RmlUi.Element:SetAttribute(string, string) -> nil
Parameters
stringname
stringvalue

RmlUi.Element:SetClass (function)

Sets (if value is true) or clears (if value is false) the class name on the element.

[source]

RmlUi.Element:SetClass(string, boolean) -> nil
Parameters
stringname
booleanvalue

RmlUi.Element:GetElementsByClassName (function)

[source]
RmlUi.Element:GetElementsByClassName(string) -> RmlUi.Element[]
Parameters
stringclass_name
Returns
RmlUi.Element[]

RmlUi.Element:Clone (function)

[source]
RmlUi.Element:Clone() -> RmlUi.ElementPtr
Returns
RmlUi.ElementPtr

RmlUi.Element:Closest (function)

[source]
RmlUi.Element:Closest() -> RmlUi.Element?
Returns
RmlUi.Element?

RmlUi.Element:SetPseudoClass (function)

[source]
RmlUi.Element:SetPseudoClass(string) -> nil
Parameters
stringclass_name

RmlUi.Element:IsPseudoClassSet (function)

[source]
RmlUi.Element:IsPseudoClassSet(string) -> boolean
Parameters
stringclass_name
Returns
boolean

RmlUi.Element:ArePseudoCLassesSet (function)

[source]
RmlUi.Element:ArePseudoCLassesSet(string[]) -> boolean
Parameters
string[]class_names
Returns
boolean

RmlUi.Element:GetActivePseudoCLasses (function)

[source]
RmlUi.Element:GetActivePseudoCLasses() -> string[]
Returns
string[]

RmlUi.Element:IsPointWithinElement (function)

Is a screen-space point within this element?

[source]

RmlUi.Element:IsPointWithinElement(RmlUi.Vector2i) -> boolean
Parameters
RmlUi.Vector2ipoint
Returns
boolean

RmlUi.Element:ProcessDefaultAction (function)

[source]
RmlUi.Element:ProcessDefaultAction(RmlUi.Event) -> nil
Parameters
RmlUi.Eventevent

RmlUi.Element:GetValue (function)

Get the value of this element.

[source]

RmlUi.Element:GetValue() -> (number|string|"")
Returns
(number|string|"")value
Returns number if it has the tag “input”, a string if it has the tag “textarea”, else an empty string.

RmlUi.Element:GetChild (function)

[source]
RmlUi.Element:GetChild(integer) -> RmlUi.Element?
Parameters
integerindex
Returns
RmlUi.Element?

Fields

string class_name
[source] Name of the class.
string id
[source] ID of this element, in the context of <span id=“foo”>.
string inner_rml
[source] Gets or sets the inner RML (markup) content of the element.
integer scroll_left
[source] Gets or sets the number of pixels that the content of the element is scrolled from the left.
integer scroll_top
[source] Gets or sets the number of pixels that the content of the element is scrolled from the top.
RmlUi.ElementAttributesProxy attributes
[source] Read-only. Proxy for accessing element attributes.
RmlUi.ElementChildNodesProxy child_nodes
[source] Read-only. Proxy for accessing child nodes of the element.
integer client_left
[source] Read-only. The width of the left border of the element in pixels.
integer client_height
[source] Read-only. The inner height of the element in pixels, including padding but not the horizontal scrollbar height, border, or margin.
integer client_top
[source] Read-only. The width of the top border of the element in pixels.
integer client_width
[source] Read-only. The inner width of the element in pixels, including padding but not the vertical scrollbar width, border, or margin.
RmlUi.Element? first_child
[source] Read-only. The first child element, or nil if there are no children.
RmlUi.Element? last_child
[source] Read-only. The last child element, or nil if there are no children.
RmlUi.Element? next_sibling
[source] Read-only. The next sibling element, or nil if there is none.
integer offset_height
[source] Read-only. The height of the element including vertical padding and borders, in pixels.
integer offset_left
[source] Read-only. The distance from the inner left edge of the offset parent, in pixels.
RmlUi.Element offset_parent
[source] Read-only. The closest positioned ancestor element.
integer offset_top
[source] Read-only. The distance from the inner top edge of the offset parent, in pixels.
integer offset_width
[source] Read-only. The width of the element including horizontal padding and borders, in pixels.
RmlUi.Document owner_document
[source] Read-only. The document that owns this element.
RmlUi.Element? parent_node
[source] Read-only. The parent node of this element, or nil if there is none.
RmlUi.Element? previous_sibling
[source] Read-only. The previous sibling element, or nil if there is none.
integer scroll_height
[source] Read-only. The total height of the element’s content, including content not visible on the screen due to overflow.
integer scroll_width
[source] Read-only. The total width of the element’s content, including content not visible on the screen due to overflow.
RmlUi.ElementStyleProxy style
[source] Read-only. Proxy for accessing and modifying the element’s style properties.
string tag_name
[source] Read-only. The tag name of the element.
string address
[source] Read-only. The address of the element in the document tree.
integer absolute_left
[source] Read-only. The absolute left position of the element relative to the document.
integer absolute_top
[source] Read-only. The absolute top position of the element relative to the document.
integer baseline
[source] Read-only. The baseline position of the element.
integer line_height
[source] Read-only. The computed line height of the element.
boolean visible
[source] Read-only. True if the element is visible, false otherwise.
integer z_index
[source] Read-only. The computed z-index of the element.

RmlUi.ElementForm (class)

Inherits RmlUi.Element

[source]

Members

RmlUi.ElementForm:Submit (function)

[source]
RmlUi.ElementForm:Submit(string?, string?) -> nil
Parameters
string?name
string?value

RmlUi.ElementFormControl (class)

Inherits RmlUi.Element

[source]

Fields

boolean disabled
[source]
string name
[source]
string value
[source]
boolean submitted
[source]

RmlUi.ElementFormControlInput (class)

Inherits RmlUi.Element RmlUi.ElementFormControl

[source]

Fields

boolean checked
[source]
integer maxlength
[source]
integer size
[source]
integer max
[source]
integer min
[source]
integer step
[source]

RmlUi.ElementFormControlSelect (class)

Inherits RmlUi.Element RmlUi.ElementFormControl

[source]

Members

RmlUi.ElementFormControlSelect:Add (function)

[source]
RmlUi.ElementFormControlSelect:Add(RmlUi.Element, integer?) -> nil
Parameters
RmlUi.Elementelement
integer?before

RmlUi.ElementFormControlSelect:Remove (function)

[source]
RmlUi.ElementFormControlSelect:Remove(integer) -> nil
Parameters
integerindex

RmlUi.ElementFormControlSelect:RemoveAll (function)

[source]
RmlUi.ElementFormControlSelect:RemoveAll() -> nil

RmlUi.ElementFormControlTextArea (class)

Inherits RmlUi.Element RmlUi.ElementFormControl

[source]

Fields

integer cols
[source]
integer maxlength
[source]
integer rows
[source]
boolean wordwrap
[source]

RmlUi.ElementProgress (class)

Inherits RmlUi.Element

[source]

Fields

number value
[source]
number max
[source]

RmlUi.ElementPtr (class)

Represents an owned element.

This type is mainly used to modify the DOM tree by passing the object into other elements. For example RmlUi.Element:AppendChild(). A current limitation in the Lua plugin is that Element member properties and functions cannot be used directly on this type.

[source]

RmlUi.ElementTabSet (class)

Inherits RmlUi.Element

[source]

Members

RmlUi.ElementTabSet:SetPanel (function)

Sets the contents of a panel to the RML content rml. If index is out-of-bounds, a new panel will be added at the end.

[source]

RmlUi.ElementTabSet:SetPanel(integer, string) -> nil
Parameters
integerindex
stringrml

RmlUi.ElementTabSet:SetTab (function)

Sets the contents of a tab to the RML content rml. If index is out-of-bounds, a new tab will be added at the end.

[source]

RmlUi.ElementTabSet:SetTab(integer, string) -> nil
Parameters
integerindex
stringrml

RmlUi.ElementTabSet:RemoveTab (function)

[source]
RmlUi.ElementTabSet:RemoveTab(integer) -> nil
Parameters
integerindex

Fields

integer active_tab
[source]
integer num_tabs
[source]

RmlUi.ElementText (class)

Inherits RmlUi.Element

[source]

Fields

string text
[source]

RmlUi.Event (class)

An event that happens to an element.

[source]

Fields

RmlUi.Element current_element
[source]
string type
[source]
RmlUi.Element target_element
[source] What element it happened to
RmlUi.EventParametersProxy parameters
[source]
RmlUi.RmlEventPhase event_phase
[source]
boolean interruptible
[source]
boolean propagating
[source]
boolean immediate_propagating
[source]

RmlUi.EventListener (class)

Event listener interface

[source]

Members

RmlUi.EventListener.OnAttach (function)

[source]
RmlUi.EventListener.OnAttach(RmlUi.Element) -> nil
Parameters
RmlUi.Elementelement

RmlUi.EventListener.OnDetach (function)

[source]
RmlUi.EventListener.OnDetach(RmlUi.Element) -> nil
Parameters
RmlUi.Elementelement

RmlUi.EventListener.ProcessEvent (function)

[source]
RmlUi.EventListener.ProcessEvent(RmlUi.Event) -> nil
Parameters
RmlUi.Eventevent

RmlUi.EventParametersProxy (class)

Keyboard and mouse input data associated with an event.

[source]

Fields

RmlUi.EventParametersProxy.MouseButton button
integer mouse_x
integer mouse_y
RmlUi.EventParametersProxy.TrueFalse scroll_lock_key
RmlUi.EventParametersProxy.TrueFalse meta_key
RmlUi.EventParametersProxy.TrueFalse ctrl_key
RmlUi.EventParametersProxy.TrueFalse shift_key
RmlUi.EventParametersProxy.TrueFalse caps_lock_key
RmlUi.EventParametersProxy.TrueFalse alt_key

RmlUi.SolLuaDataModel (class)

Handle for a data model.

It is a wrapper around the model table, marked as type T. You can access fields by using normal indexing, but for the moment, the only keys that work are strings. Any index done this way will automatically trigger a rerender. If you need to index any tables or subtables by anything not a string, you will need to use the underlying table, gotten with __GetTable. This will not trigger a rerender. To trigger a rerender manually, use _SetDirty, passing in the name of the top-level entry in your model table that you edited.

[source]

Members

RmlUi.SolLuaDataModel:__SetDirty (function)

Set a table property dirty to trigger a rerender

[source]

RmlUi.SolLuaDataModel:__SetDirty(string) -> nil
Parameters
stringproperty

RmlUi.Vector2f (class)

Members

RmlUi.Vector2f.new (function)

[source]
RmlUi.Vector2f.new(number, number) -> RmlUi.Vector2f
Parameters
numberx
numbery
Returns
RmlUi.Vector2f

Fields

number x
[source]
number y
[source]
number magnitude
[source]

RmlUi.Vector2i (class)

Two-dimensional integral vector.

[source]

Members

RmlUi.Vector2i.new (function)

[source]
RmlUi.Vector2i.new(integer, integer) -> RmlUi.Vector2i
Parameters
integerx
integery
Returns
RmlUi.Vector2i

Fields

integer x
[source]
integer y
[source]
number magnitude
[source]

Roster (class)

Contains data about a player

[source]

Fields

string name
integer playerID
integer teamID
integer allyTeamID
boolean spectator
number cpuUsage
in order to find the progress, use: cpuUsage&0x1 if it’s PC or BO, cpuUsage& 0xFE to get path res, (cpuUsage»8)*1000 for the progress
number pingTime
if -1, the player is pathfinding

RulesParams (class)

Inherits table<string,integer>

[source]

RulesSyncedCallins (class)

Inherits Callins UnsyncedCallins SyncedCallins

Callins that are sent to the synced lua file: LuaRules/main.lua

RulesUnsyncedCallins (class)

Inherits Callins UnsyncedCallins

Callins that are sent to the unsynced lua file: LuaRules/draw.lua

SaveImageOptions (class)

[source]

Fields

boolean alpha
(Default: false)
boolean yflip
(Default: true)
boolean grayscale16bit
(Default: false)
GL readbuffer
(Default: current read buffer)

SetUnitHealthAmounts (class)

[source]

Fields

number? health
Set the unit’s health.
number? capture
Set the unit’s capture progress.
number? paralyze
Set the unit’s paralyze damage.
number? build
Set the unit’s build progress.

ShaderParams (class)

[source]

Fields

string? vertex
The “Vertex” or vertex-shader is your GLSL-Code as string, its written in a C-Dialect. This shader is busy deforming the geometry of a unit but it can not create new polygons. Use it for waves, wobbling surfaces etc.
string? tcs
The “TCS” or Tesselation Control Shader controls how much tessellation a particular patch gets; it also defines the size of a patch, thus allowing it to augment data. It can also filter vertex data taken from the vertex shader. The main purpose of the TCS is to feed the tessellation levels to the Tessellation primitive generator stage, as well as to feed patch data (as its output values) to the Tessellation Evaluation Shader stage.
string? tes
The “TES” or Tesselation Evaluation Shader takes the abstract patch generated by the tessellation primitive generation stage, as well as the actual vertex data for the entire patch, and generates a particular vertex from it. Each TES invocation generates a single vertex. It can also take per-patch data provided by the Tessellation Control Shader.
string? geometry
The “Geometry” or Geometry-shader can create new vertices and vertice-stripes from points.
string? fragment

The “Fragment” or Fragment-shader (sometimes called pixel-Shader) is post processing the already rendered picture (for example drawing stars on the sky).

Remember textures are not always 2 dimensional pictures. They can contain information about the depth, or the third value marks areas and the strength at which these are processed.

UniformParam<number>? uniform
UniformParam<integer>? uniformInt
UniformParam<number>? uniformFloat
UniformParam<number>? uniformMatrix
integer? geoInputType
inType
integer? geoOutputType
outType
integer? geoOutputVerts
maxVerts
string? definitions
string of shader #defines"

SideSpec (class)

Side spec

[source]

Fields

string sideName

Returned when getting arrays of side specifications.

Lowercase side name.

string caseName
Original case side name.
string startUnit

SoundDeviceSpec (class)

Contains data about a sound device.

[source]

Fields

string name

StrafeAirMoveType (class)

Inherits GenericMoveType

[source]

Fields

boolean? collide
boolean? useSmoothMesh
boolean? loopbackAttack
integer? maneuverBlockTime
number? wantedHeight
number? turnRadius
number? accRate
number? decRate
number? maxAcc
Synonym for accRate.
number? maxDec
Synonym for decRate.
number? maxBank
number? maxPitch
number? maxAileron
number? maxElevator
number? maxRudder
number? attackSafetyDistance
number? myGravity

TeamStats (class)

[source]

Fields

number time
number frame
number metalUsed
number metalProduced
number metalExcess
number metalReceived
number metalSent
number energyUsed
number energyProduced
number energyExcess
number energyReceived
number energySent
number damageDealt
number damageReceived
integer unitsProduced
integer unitsDied
integer unitsReceived
integer unitsSent
integer unitsCaptured
integer unitsOutCaptured

TextColorCode (class)

Indicator bytes representing color code operations during font rendering

Fields

string Color
Indicates that the following bytes contain color code information
string ColorAndOutline
Indicates that the following bytes contain color code and outline information
string Reset
Indicates reset of the current color

Texture (class)

[source]

Fields

GL? target
integer? format
GL? min_filter
GL? mag_filter
GL? wrap_s
GL? wrap_t
GL? wrap_r
number? compareFunc
number? lodBias
number? aniso

TextureInfo (class)

[source]

Fields

integer xsize
integer ysize
integer zsize
integer id
GL target

UI (class)

Inherits Callins

[source]

Members

UI:ConfigureLayout (function)

[source]
UI:ConfigureLayout() -> nil

UniformParam (class)

Inherits { [string]: (T|T[]) }

A table of uniform name to value.

The Uniforms are the values you send along with the shader-program. To use them in the shader-program declare them like this: uniform float frame;

Specify a Lua array to initialize GLSL arrays.

The engine will automatically fill in an appropriately named uniform for team colour if it is declared;

glsl uniform vec4 teamColor;

[source]

UnitDefDimensions (class)

[source]

Fields

number height
number radius
number midx
number minx
number maxx
number midy
number miny
number maxy
number midz
number minz
number maxz

UnitState (class)

[source]

Fields

number firestate
number movestate
boolean repeat
boolean cloak
boolean active
boolean trajectory
boolean? autoland
number? autorepairlevel
boolean? loopbackattack

VAO (class)

Vertex Array Object

[source]

Members

VAO:Delete (function)

[source]
VAO:Delete() -> nil
Returns
nil

VAO:AttachVertexBuffer (function)

Attaches a VBO to be used as a vertex buffer

[source]

VAO:AttachVertexBuffer(VBO) -> nil
Parameters
VBOvbo
Returns
nil

VAO:AttachInstanceBuffer (function)

Attaches a VBO to be used as an instance buffer

[source]

VAO:AttachInstanceBuffer(VBO) -> nil
Parameters
VBOvbo
Returns
nil

VAO:AttachIndexBuffer (function)

Attaches a VBO to be used as an index buffer

[source]

VAO:AttachIndexBuffer(VBO) -> nil
Parameters
VBOvbo
Returns
nil

VAO:DrawArrays (function)

[source]
VAO:DrawArrays(number, number?, number?, number?, number?) -> nil
Parameters
numberglEnum
primitivesMode
number?vertexCount
number?vertexFirst
number?instanceCount
number?instanceFirst
Returns
nil

VAO:DrawElements (function)

[source]
VAO:DrawElements(number, number?, number?, number?, number?, number?) -> nil
Parameters
numberglEnum
primitivesMode
number?drawCount
number?baseIndex
number?instanceCount
number?baseVertex
number?baseInstance
Returns
nil

VAO:AddUnitsToSubmission (function)

[source]
VAO:AddUnitsToSubmission((number|number[])) -> number
Parameters
(number|number[])unitIDs
Returns
numbersubmittedCount

VAO:AddFeaturesToSubmission (function)

[source]
VAO:AddFeaturesToSubmission((number|number[])) -> number
Parameters
(number|number[])featureIDs
Returns
numbersubmittedCount

VAO:AddUnitDefsToSubmission (function)

[source]
VAO:AddUnitDefsToSubmission((number|number[])) -> number
Parameters
(number|number[])unitDefIDs
Returns
numbersubmittedCount

VAO:AddFeatureDefsToSubmission (function)

[source]
VAO:AddFeatureDefsToSubmission((number|number[])) -> number
Parameters
(number|number[])featureDefIDs
Returns
numbersubmittedCount

VAO:RemoveFromSubmission (function)

[source]
VAO:RemoveFromSubmission(number) -> nil
Parameters
numberindex
Returns
nil

VAO:Submit (function)

[source]
VAO:Submit() -> nil
Returns
nil

VBO (class)

Vertex Buffer Object

[source]

Members

VBO:Delete (function)

[source]
VBO:Delete() -> nil
Returns
nil

VBO:Define (function)

Specify the kind of VBO you will be using.

lua terrainVertexVBO:Define(numPoints, {{ id = 0, name = “pos”, size = 2 }})

It is usually an array of vertex/color/uv data, but can also be an array of instance uniforms.

If you want to specify multiple instances of something to render, you will need to create another VBO, which also specifies the number of instances you wish to render, and the size of the data passed to each instance.

If you want say 5 elements, and each element is defined in the layout:

lua {id = 0, name = “first”, size = 1},{id = 1, name = “second”, size = 2}}

Then the total size of your VBO will be 5 * (1 + 2).

They will be laid out consecutively: [1,2],[1,2],[1,2],[1,2],[1,2].

This is important for when you call VBO:Upload, you need to make sure you enter your data into the Lua array correctly.

[source]

See VBO:Upload

VBO:Define(number, (number|VBOAttributeDef[])) -> nil
Parameters
numbersize
The maximum number of elements this VBO can have.
(number|VBOAttributeDef[])attribs
Returns
nil

VBO:GetBufferSize (function)

[source]
VBO:GetBufferSize() -> number, number, number
Returns
numberelementsCount
numberbufferSizeInBytes
numbersize

VBO:Upload (function)

Uploads data into the VBO.

[source]

See VBO:Define

VBO:Upload(number[], integer?, integer?, integer?, integer?) -> number[], integer, (integer|(integer,integer...))
Parameters
number[]vboData
Array of values to upload into the VBO.
integer?attributeIndex

(Default: -1)

If supplied with non-default value then the data from vboData will only be used to upload the data to this particular attribute.

The whole vboData is expected to contain only attributeIndex data.

Otherwise all attributes get updated sequentially across attributes and elements.

integer?elemOffset
(Default: 0) The index in destination VBO (on GPU) at which storing begins.
integer?luaStartIndex
(Default: 1) The index of vboData at which copying begins.
integer?luaFinishIndex
(Default: #vboData) The index of vboData at which copying ends.
Returns
number[]indexData
integerelemOffset
(integer|(integer,integer...))attrID

VBO:Download (function)

[source]
VBO:Download(integer?, integer?, number?, boolean?) -> unknown
Parameters
integer?attributeIndex
(Default: -1) when supplied with non-default value: only data from specified attribute will be downloaded - otherwise all attributes are downloaded
integer?elementOffset
(Default: 0) download data starting from this element
number?elementCount
number of elements to download
boolean?forceGPURead
(Default: false) force downloading the data from GPU buffer as opposed to using shadow RAM buffer
Returns
unknown

VBO:ModelsVBO (function)

Binds engine side vertex or index VBO containing models (units, features) data.

[source]

Also fills in VBO definition data as they’re set for engine models (no need to do VBO:Define()).

VBO:ModelsVBO() -> number?
Returns
number?buffer
size in bytes

VBO:InstanceDataFromUnitDefIDs (function)

Fills in attribute data for each specified unitDefID

[source]

The instance data in that attribute will contain the offset to bind position matrix in global matrices SSBO and offset to uniform buffer structure in global per unit/feature uniform SSBO (unused for Unit/FeatureDefs), as well as some auxiliary data ushc as draw flags and team index.

Data Layout: SInstanceData: , traOffset{ matOffset_ } // updated during the following draw frames , uniOffset{ uniOffset_ } // updated during the following draw frames , info{ teamIndex, drawFlags, 0, 0 } // not updated during the following draw frames , aux1 { 0u }

VBO:InstanceDataFromUnitDefIDs((number|number[]), integer, integer?, integer?) -> (number,number,number,number), integer, integer
Parameters
(number|number[])unitDefIDs
integerattrID
integer?teamIdOpt
integer?elementOffset
Returns
(number,number,number,number)instanceData
integerelementOffset
integerattrID

VBO:InstanceDataFromFeatureDefIDs (function)

Fills in attribute data for each specified featureDefID

[source]

The instance data in that attribute will contain the offset to bind position matrix in global matrices SSBO and offset to uniform buffer structure in global per unit/feature uniform SSBO (unused for Unit/FeatureDefs), as well as some auxiliary data ushc as draw flags and team index.

Data Layout SInstanceData: , traOffset{ matOffset_ } // updated during the following draw frames , uniOffset{ uniOffset_ } // updated during the following draw frames , info{ teamIndex, drawFlags, 0, 0 } // not updated during the following draw frames , aux1 { 0u }

VBO:InstanceDataFromFeatureDefIDs((number|number[]), integer, integer?, integer?) -> (number,number,number,number), integer, integer
Parameters
(number|number[])featureDefIDs
integerattrID
integer?teamIdOpt
integer?elementOffset
Returns
(number,number,number,number)instanceData
integerelementOffset
integerattrID

VBO:InstanceDataFromUnitIDs (function)

Fills in attribute data for each specified unitID

[source]

The instance data in that attribute will contain the offset to bind position matrix in global matrices SSBO and offset to uniform buffer structure in global per unit/feature uniform SSBO (unused for Unit/FeatureDefs), as well as some auxiliary data ushc as draw flags and team index.

Data Layout

SInstanceData: , traOffset{ matOffset_ } // updated during the following draw frames , uniOffset{ uniOffset_ } // updated during the following draw frames , info{ teamIndex, drawFlags, 0, 0 } // not updated during the following draw frames , aux1 { 0u }

VBO:InstanceDataFromUnitIDs((number|number[]), integer, integer?, integer?) -> (number,number,number,number), integer, integer
Parameters
(number|number[])unitIDs
integerattrID
integer?teamIdOpt
integer?elementOffset
Returns
(number,number,number,number)instanceData
integerelementOffset
integerattrID

VBO:InstanceDataFromFeatureIDs (function)

Fills in attribute data for each specified featureID

[source]

The instance data in that attribute will contain the offset to bind position matrix in global matrices SSBO and offset to uniform buffer structure in global per unit/feature uniform SSBO (unused for Unit/FeatureDefs), as well as some auxiliary data ushc as draw flags and team index.

VBO:InstanceDataFromFeatureIDs((number|number[]), integer, integer?, integer?) -> (number,number,number,number), integer, integer
Parameters
(number|number[])featureIDs
integerattrID
integer?teamIdOpt
integer?elementOffset
Returns
(number,number,number,number)instanceData
integerelementOffset
integerattrID

VBO:MatrixDataFromProjectileIDs (function)

[source]
VBO:MatrixDataFromProjectileIDs((integer|integer[]), integer, integer?, integer?) -> number[], integer, (integer|(integer,integer...))
Parameters
(integer|integer[])projectileIDs
integerattrID
integer?teamIdOpt
integer?elementOffset
Returns
number[]matDataVec
4x4 matrix
integerelemOffset
(integer|(integer,integer...))attrID

VBO:BindBufferRange (function)

Bind a range within a buffer object to an indexed buffer target

[source]

Generally mimics https://registry.khronos.org/OpenGL-Refpages/gl4/html/glBindBufferRange.xhtml except offset and size are specified in number of elements / element indices.

VBO:BindBufferRange(integer, integer?, number?, number?) -> integer
Parameters
integerindex
should be in the range between 5 < index < GL_MAX_UNIFORM_BUFFER_BINDINGS value (usually 31)
integer?elementOffset
number?elementCount
number?target
glEnum
Returns
integerbindingIndex
when successful, -1 otherwise

VBO:UnbindBufferRange (function)

[source]
VBO:UnbindBufferRange(integer, integer?, number?, number?) -> number
Parameters
integerindex
integer?elementOffset
number?elementCount
number?target
glEnum
Returns
numberbindingIndex
when successful, -1 otherwise

VBO:DumpDefinition (function)

Logs the definition of the VBO to the console

[source]

VBO:DumpDefinition() -> nil
Returns
nil

VBO:CopyTo (function)

Copy the contents of the VBO to another VBO.

[source]

Destination VBO is expected to have sufficient allocation size, otherwise the copying will gracefully fail.

VBO:CopyTo(VBO, integer) -> boolean
Parameters
VBOdestVBO
integercopySizeInBytes
Returns
booleansuccess

VBO:GetID (function)

Gets the OpenGL Buffer ID

[source]

VBO:GetID() -> integer
Returns
integerbufferID

VBOAttributeDef (class)

[source]

Fields

integer? id
string? name

The location in the vertex shader layout e.g.: layout (location = 0) in vec2 aPos. optional attrib, specifies location in the vertex shader. If not specified the implementation will increment the counter starting from 0. There can be maximum 16 attributes (so id of 15 is max).

(Default: attr# where # is id)

The name for this VBO, only used for debugging.

integer? size
GL? type

Defaults to to 4 for VBO. The number of floats that constitute 1 element in this buffer. e.g. for the previous layout (location = 0) in vec2 aPos, it would be size = 2.

(Default: GL.FLOAT) The datatype of this element.

Accepts the following:

boolean? normalized

(Defaults: false)

It’s possible to submit normals without normalizing them first, normalized will make sure data is normalized.

VertexData (class)

[source]

Fields

xyz? vert
xyz? v
Short for vert.
float3? norm
float3? n
Short for norm.
float2? texcoord
float2? t
Short for texcoord.
float4? color
float4? c
Short for color.

WaterParams (class)

Water params

[source]

Fields

rgb absorb
rgb baseColor
rgb minColor
rgb surfaceColor
rgb diffuseColor
rgb specularColor
rgb planeColor
string texture
file
string foamTexture
file
string normalTexture
file
number damage
number repeatX
number repeatY
number surfaceAlpha
number ambientFactor
number diffuseFactor
number specularFactor
number specularPower
number fresnelMin
number fresnelMax
number fresnelPower
number reflectionDistortion
number blurBase
number blurExponent
number perlinStartFreq
number perlinLacunarity
number perlinAmplitude
number windSpeed
number waveOffsetFactor
number waveLength
number waveFoamDistortion
number waveFoamIntensity
number causticsResolution
number causticsStrength
integer numTiles
boolean shoreWaves
boolean forceRendering
boolean hasWaterPlane

WeaponDamages (class)

Parameters for damage

[source]

Fields

integer paralyzeDamageTime
number impulseFactor
number impulseBoost
number craterMult
number craterBoost
number dynDamageExp
number dynDamageMin
number dynDamageRange
number dynDamageInverted
Set to true if a non-zero value is passed, false is zero is passed.
number craterAreaOfEffect
number damageAreaOfEffect
number edgeEffectiveness
number explosionSpeed

WeaponState (class)

Parameter for weapon states

[source]

Fields

integer? reloadState
integer? reloadFrame
Alias for reloadState.
number? reloadTime
integer? reaimTime
number? accuracy
number? sprayAngle
number? range
If you change the range of a weapon with dynamic damage make sure you use SetUnitWeaponDamages to change dynDamageRange as well.
number? projectileSpeed
integer? burst
number? burstRate
integer? projectiles
integer? salvoLeft
integer? nextSalvo
number? aimReady
Set to true if a non-zero value is passed, false is zero is passed.
integer? forceAim
integer? avoidFlags
integer? collisionFlags
number? ttl
How many seconds the projectile should live

losAccess (class)

Parameters for los access

If one condition is fulfilled all beneath it are too (e.g. if an unit is in LOS it can read params with inradar=true even if the param has inlos=false) All GameRulesParam are public, TeamRulesParams can just be private,allied and/or public You can read RulesParams from any Lua environments! With those losAccess policies you can limit their access.

All GameRulesParam are public, TeamRulesParams can just be private,allied and/or public You can read RulesParams from any Lua environments! With those losAccess policies you can limit their access.

[source]

Fields

boolean? private
only readable by the ally (default)
boolean? allied
readable by ally + ingame allied
boolean? inlos
readable if the unit is in LOS
boolean? inradar
readable if the unit is in AirLOS
boolean? public
readable by all

rgb (class)

Color triple (RGB)

rgba (class)

Color quadruple (RGBA)

xy (class)

Cartesian double (XY)

xyz (class)

Cartesian triple (XYZ)

xyzw (class)

Cartesian quadruple (XYZW)

xz (class)

[source]

Fields

number x
number y

CMD (enum)

Command constants.

Table defining Command related constants.

  • Contains a mix of special constants like command options or move states, and the list of engine command IDs.
  • Also supports integer keys, and those perform reverse mapping of command IDs.

[source]

128 OPT_ALT
[source]
64 OPT_CTRL
[source]
32 OPT_SHIFT
[source]
16 OPT_RIGHT
[source]
8 OPT_INTERNAL
[source]
4 OPT_META
[source]
-1 MOVESTATE_NONE
[source]
0 MOVESTATE_HOLDPOS
[source]
1 MOVESTATE_MANEUVER
[source]
2 MOVESTATE_ROAM
[source]
-1 FIRESTATE_NONE
[source]
0 FIRESTATE_HOLDFIRE
[source]
1 FIRESTATE_RETURNFIRE
[source]
2 FIRESTATE_FIREATWILL
[source]
3 FIRESTATE_FIREATNEUTRAL
[source]
1 WAITCODE_TIME
[source]
2 WAITCODE_DEATH
[source]
3 WAITCODE_SQUAD
[source]
4 WAITCODE_GATHER
[source]
0 STOP

Stop the current action and clear the unit’s command queue.

For factories, this will cancel the new unit orders queue. For units, this will cancel the current command and queue.

Accepts no parameters.

It won’t do anything if used with CMD.INSERT, or the shift option.

[source]

1 INSERT
[source]
2 REMOVE

Remove all commands from a unit’s queue matching specific cmdIDs or tags.

Modes of operation

Filter by tag

Removes any command with a tag matching those included in params.

  • params {tag1, tag2 …} an array of tags to look for.

This is the default mode of operation.

Filter by id

Removes any command with a command id matching those included in params.

  • params {id1, id2 …} or {tag1, tag2, …} an array of ids tags to look for.

To use this mode you need to pass the alt option.

Command Options

  • alt Tag/Id switch
  • ctrl Alternative queue selection.
  • For factories alternative queue is the factory command queue, default queue is the rally queue.
  • For other units no effect.

Examples

Delete all attack orders from unit, or factory rally queue if factory: lua Spring.GiveOrderToUnit(unitID, CMD.REMOVE, CMD.ATTACK)

Delete all attack and fight orders from unit, or factory rally queue if factory: lua Spring.GiveOrderToUnit(unitID, CMD.REMOVE, {CMD.ATTACK, CMD.FIGHT}, CMD.OPT_ALT)

Delete commands with specific tags: lua Spring.GiveOrderToUnit(unitID, CMD.REMOVE, {tag1, tag2, tag3})

Delete all commands to build units with UnitDef ids unitDefId1 and unitDefId2 from factory queue: lua Spring.GiveOrderToUnit(unitID, CMD.REMOVE, {-unitDefId1, -unitDefId2}, CMD.OPT_ALT + CMD.OPT_CTRL)

[source]

5 WAIT

Makes the unit suspend processing its command queue until wait is removed.

Accepts no parameters.

[source]

6 TIMEWAIT

Makes the unit suspend processing its command queue for a given duration.

  • params {duration} Time to wait in seconds.

[source]

7 DEATHWAIT

Makes the unit suspend processing its commmand queue until the death of a given unit or units in an area.

Modes of operation

Wait for death of specific unit
  • params {unitID} unitID of the unit to wait for.
Wait for death of units in an area
  • params {x1, y1, z1, x2, y2, z2}: Wait for death of units in square {x1, z1, x2, z2}.

[source]

8 SQUADWAIT

Makes selected units, or units coming out of a factory wait until squadSize peers are found to go with them.

If given to non factory units and the squadSize is smaller than the selected number of units the command will have no effect.

Each unit will find squadSize other units and resume wait, those remaining without peers will wait. For example if there are 30 selected units and a squadSize of 12 is sent, 6 units will stay waiting, as 30 - 12*2 = 6.

If given at a waypoint for a factory queue for new units, units coming out of the factory will wait at the waypoint until squadSize units are available, and then they will proceed together.

Can also be given to a group of factories, and units from those factories will gather together.

  • params {squadSize} Squad size.

[source]

9 GATHERWAIT

Makes the unit wait for all other selected units to reach the command.

Useful to make units wait until all other units have reached a waypoint.

Will only be given to movable (unitDef.canMove == true) non-factory units.

Accepts no parameters.

[source]

10 MOVE
[source]
15 PATROL
[source]
16 FIGHT
[source]
20 ATTACK

Attack command. Gives an order to attack some target(s).

The command has different modes of operation, depending on the number of parameters and options used.

Modes of operation

Attack single target
  • params {unitID}: Attack a unit

The command will end once the target is dead or not valid any more.

Area attack

Will create a number of single target actions by finding targets in a circle.

Note: this is different than CMD.AREA_ATTACK, since this initially finds the targets but then doesn’t consider the area any more.

  • params {x,y,z,r} when radius is greater than 0.
  • r: radius
  • x,y,z: map position
Ground attack
  • params {x,y,z,0} or {x,y,z}
  • x,y,z: map position

Command Options

  • alt Also target stunned targets. Without this stunned targets will be skipped.
  • meta Override manualFire, and noAutoTarget weapon behaviours.

Other modifiers

  • modInfo.targetableTransportedUnits: Controls whether transported units are targetable.

Callins

  • UnitCmdDone: Run when the command is finished.

Examples

Attack unit with id targetID. lua Spring.GiveOrderToUnit(unitID, CMD.ATTACK, targetID)

Area attack of radius 50 at map position 1000,1000 with height 100: lua Spring.GiveOrderToUnit(unitID, CMD.ATTACK, {1000,100,1000,50})

Ground attack at map position 1000,1000 with height 100: lua Spring.GiveOrderToUnit(unitID, CMD.ATTACK, {1000,100,1000})

[source]

21 AREA_ATTACK
[source]
25 GUARD
[source]
35 GROUPSELECT
[source]
36 GROUPADD
[source]
37 GROUPCLEAR
[source]
40 REPAIR
[source]
45 FIRE_STATE
[source]
50 MOVE_STATE
[source]
55 SETBASE
[source]
60 INTERNAL
[source]
65 SELFD
[source]
75 LOAD_UNITS
[source]
76 LOAD_ONTO
[source]
80 UNLOAD_UNITS
[source]
81 UNLOAD_UNIT
[source]
85 ONOFF
[source]
90 RECLAIM
[source]
95 CLOAK
[source]
100 STOCKPILE
[source]
105 MANUALFIRE
[source]
105 DGUN
[source]
110 RESTORE
[source]
115 REPEAT
[source]
120 TRAJECTORY
[source]
125 RESURRECT
[source]
130 CAPTURE
[source]
135 AUTOREPAIRLEVEL
[source]
20 LOOPBACKATTACK
[source]
145 IDLEMODE
[source]

CMDTYPE (enum)

Command type constants

Note, the CMDTYPE[] table is bidirectional. That means: CMDTYPE[CMDTYPE.ICON] := “CMDTYPE_ICON”

[source]

integer ICON

Expect 0 parameters in return.

[source]

integer ICON_MODE

Expect 1 parameter in return (number selected mode).

[source]

integer ICON_MAP

Expect 3 parameters in return (mappos).

[source]

integer ICON_AREA

Expect 4 parameters in return (mappos+radius).

[source]

integer ICON_UNIT

Expect 1 parameters in return (unitid).

[source]

integer ICON_UNIT_OR_MAP

Expect 1 parameters in return (unitid) or 3 parameters in return (mappos).

[source]

integer ICON_FRONT

Expect 3 or 6 parameters in return (middle and right side of front if a front was defined).

[source]

integer ICON_UNIT_OR_AREA

Expect 1 parameter in return (unitid) or 4 parameters in return (mappos+radius).

[source]

integer NEXT

Expect command page used with CMD_INTERNAL.

[source]

integer PREV

Expect command page used with CMD_INTERNAL.

[source]

integer ICON_UNIT_FEATURE_OR_AREA

Expect 1 parameter in return (unitid or Game.maxUnits+featureid) or 4 parameters in return (mappos+radius).

[source]

integer ICON_BUILDING

Expect 3 parameters in return (mappos).

[source]

integer CUSTOM

Expect with CMD_INTERNAL.

[source]

integer ICON_UNIT_OR_RECTANGLE

Expect 1 parameter in return (unitid) or 3 parameters in return (mappos) or 6 parameters in return (startpos+endpos).

[source]

integer NUMBER

Expect 1 parameter in return (number).

[source]

COB (enum)

COB constants

[source]

integer ACTIVATION
[source]
integer STANDINGMOVEORDERS
[source]
integer STANDINGFIREORDERS
[source]
integer HEALTH
[source]
integer INBUILDSTANCE
[source]
integer BUSY
[source]
integer PIECE_XZ
[source]
integer PIECE_Y
[source]
integer UNIT_XZ
[source]
integer UNIT_Y
[source]
integer UNIT_HEIGHT
[source]
integer XZ_ATAN
[source]
integer XZ_HYPOT
[source]
integer ATAN
[source]
integer HYPOT
[source]
integer GROUND_HEIGHT
[source]
integer BUILD_PERCENT_LEFT
[source]
integer YARD_OPEN
[source]
integer BUGGER_OFF
[source]
integer ARMORED
[source]
integer IN_WATER
[source]
integer CURRENT_SPEED
[source]
integer VETERAN_LEVEL
[source]
integer ON_ROAD
[source]
integer MAX_ID
[source]
integer MY_ID
[source]
integer UNIT_TEAM
[source]
integer UNIT_BUILD_PERCENT_LEFT
[source]
integer UNIT_ALLIED
[source]
integer MAX_SPEED
[source]
integer CLOAKED
[source]
integer WANT_CLOAK
[source]
integer GROUND_WATER_HEIGHT
[source]
integer UPRIGHT
[source]
integer POW
[source]
integer PRINT
[source]
integer HEADING
[source]
integer TARGET_ID
[source]
integer LAST_ATTACKER_ID
[source]
integer LOS_RADIUS
[source]
integer AIR_LOS_RADIUS
[source]
integer RADAR_RADIUS
[source]
integer JAMMER_RADIUS
[source]
integer SONAR_RADIUS
[source]
integer SONAR_JAM_RADIUS
[source]
integer SEISMIC_RADIUS
[source]
integer DO_SEISMIC_PING
[source]
integer CURRENT_FUEL
[source]
integer TRANSPORT_ID
[source]
integer SHIELD_POWER
[source]
integer STEALTH
[source]
integer CRASHING
[source]
integer CHANGE_TARGET
[source]
integer CEG_DAMAGE
[source]
integer COB_ID
[source]
integer PLAY_SOUND
[source]
integer KILL_UNIT
[source]
integer SET_WEAPON_UNIT_TARGET
[source]
integer SET_WEAPON_GROUND_TARGET
[source]
integer SONAR_STEALTH
[source]
integer REVERSING
[source]
integer FLANK_B_MODE
[source]
integer FLANK_B_DIR
[source]
integer FLANK_B_MOBILITY_ADD
[source]
integer FLANK_B_MAX_DAMAGE
[source]
integer FLANK_B_MIN_DAMAGE
[source]
integer WEAPON_RELOADSTATE
[source]
integer WEAPON_RELOADTIME
[source]
integer WEAPON_ACCURACY
[source]
integer WEAPON_SPRAY
[source]
integer WEAPON_RANGE
[source]
integer WEAPON_PROJECTILE_SPEED
[source]
integer MIN
[source]
integer MAX
[source]
integer ABS
[source]
integer GAME_FRAME
[source]

LOG (enum)

[source]
20 DEBUG
30 INFO
35 NOTICE
Engine default.
37 DEPRECATED
40 WARNING
50 ERROR
60 FATAL

RmlUi.RmlEventPhase (enum)

[source]
integer None
[source]
integer Capture
[source]
integer Target
[source]
integer Bubble
[source]

RmlUi.RmlFocusFlag (enum)

[source]
integer None
[source]
integer Document
[source]
integer Keep
[source]
integer Auto
[source]

RmlUi.RmlModalFlag (enum)

[source]
integer None
[source]
integer Modal
[source]
integer Keep
[source]

RmlUi.default_action_phase (enum)

[source]
integer Auto
[source]
integer Target
[source]
integer TargetAndBubble
[source]

RmlUi.font_weight (enum)

[source]
integer Auto
[source]
integer Normal
[source]
integer Bold
[source]

RmlUi.key_identifier (enum)

[source]
integer 0
integer 1
integer 2
integer 3
integer 4
integer 5
integer 6
integer 7
integer 8
integer 9
integer UNKNOWN
[source]
integer SPACE
[source]
integer A
[source]
integer B
[source]
integer C
[source]
integer D
[source]
integer E
[source]
integer F
[source]
integer G
[source]
integer H
[source]
integer I
[source]
integer J
[source]
integer K
[source]
integer L
[source]
integer M
[source]
integer N
[source]
integer O
[source]
integer P
[source]
integer Q
[source]
integer R
[source]
integer S
[source]
integer T
[source]
integer U
[source]
integer V
[source]
integer W
[source]
integer X
[source]
integer Y
[source]
integer Z
[source]
integer OEM_1
[source]
integer OEM_PLUS
[source]
integer OEM_COMMA
[source]
integer OEM_MINUS
[source]
integer OEM_PERIOD
[source]
integer OEM_2
[source]
integer OEM_3
[source]
integer OEM_4
[source]
integer OEM_5
[source]
integer OEM_6
[source]
integer OEM_7
[source]
integer OEM_8
[source]
integer OEM_102
[source]
integer NUMPAD0
[source]
integer NUMPAD1
[source]
integer NUMPAD2
[source]
integer NUMPAD3
[source]
integer NUMPAD4
[source]
integer NUMPAD5
[source]
integer NUMPAD6
[source]
integer NUMPAD7
[source]
integer NUMPAD8
[source]
integer NUMPAD9
[source]
integer NUMPADENTER
[source]
integer MULTIPLY
[source]
integer ADD
[source]
integer SEPARATOR
[source]
integer SUBTRACT
[source]
integer DECIMAL
[source]
integer DIVIDE
[source]
integer OEM_NEC_EQUAL
[source]
integer BACK
[source]
integer TAB
[source]
integer CLEAR
[source]
integer RETURN
[source]
integer PAUSE
[source]
integer CAPITAL
[source]
integer KANA
[source]
integer HANGUL
[source]
integer JUNJA
[source]
integer FINAL
[source]
integer HANJA
[source]
integer KANJI
[source]
integer ESCAPE
[source]
integer CONVERT
[source]
integer NONCONVERT
[source]
integer ACCEPT
[source]
integer MODECHANGE
[source]
integer PRIOR
[source]
integer NEXT
[source]
integer END
[source]
integer HOME
[source]
integer LEFT
[source]
integer UP
[source]
integer RIGHT
[source]
integer DOWN
[source]
integer SELECT
[source]
integer PRINT
[source]
integer EXECUTE
[source]
integer SNAPSHOT
[source]
integer INSERT
[source]
integer DELETE
[source]
integer HELP
[source]
integer LWIN
[source]
integer RWIN
[source]
integer APPS
[source]
integer POWER
[source]
integer SLEEP
[source]
integer WAKE
[source]
integer F1
[source]
integer F2
[source]
integer F3
[source]
integer F4
[source]
integer F5
[source]
integer F6
[source]
integer F7
[source]
integer F8
[source]
integer F9
[source]
integer F10
[source]
integer F11
[source]
integer F12
[source]
integer F13
[source]
integer F14
[source]
integer F15
[source]
integer F16
[source]
integer F17
[source]
integer F18
[source]
integer F19
[source]
integer F20
[source]
integer F21
[source]
integer F22
[source]
integer F23
[source]
integer F24
[source]
integer NUMLOCK
[source]
integer SCROLL
[source]
integer OEM_FJ_JISHO
[source]
integer OEM_FJ_MASSHOU
[source]
integer OEM_FJ_TOUROKU
[source]
integer OEM_FJ_LOYA
[source]
integer OEM_FJ_ROYA
[source]
integer LSHIFT
[source]
integer RSHIFT
[source]
integer LCONTROL
[source]
integer RCONTROL
[source]
integer LMENU
[source]
integer RMENU
[source]
integer BROWSER_BACK
[source]
integer BROWSER_FORWARD
[source]
integer BROWSER_REFRESH
[source]
integer BROWSER_STOP
[source]
integer BROWSER_SEARCH
[source]
integer BROWSER_FAVORITES
[source]
integer BROWSER_HOME
[source]
integer VOLUME_MUTE
[source]
integer VOLUME_DOWN
[source]
integer VOLUME_UP
[source]
integer MEDIA_NEXT_TRACK
[source]
integer MEDIA_PREV_TRACK
[source]
integer MEDIA_STOP
[source]
integer MEDIA_PLAY_PAUSE
[source]
integer LAUNCH_MAIL
[source]
integer LAUNCH_MEDIA_SELECT
[source]
integer LAUNCH_APP1
[source]
integer LAUNCH_APP2
[source]
integer OEM_AX
[source]
integer ICO_HELP
[source]
integer ICO_00
[source]
integer PROCESSKEY
[source]
integer ICO_CLEAR
[source]
integer ATTN
[source]
integer CRSEL
[source]
integer EXSEL
[source]
integer EREOF
[source]
integer PLAY
[source]
integer ZOOM
[source]
integer PA1
[source]
integer OEM_CLEAR
[source]

RmlUi.key_modifier (enum)

[source]
integer CTRL
[source]
integer SHIFT
[source]
integer ALT
[source]
integer META
[source]
integer CAPSLOCK
[source]
integer NUMLOCK
[source]
integer SCROLLLOCK
[source]

SFX (enum)

[source]
integer SHATTER

Piece flag for Spring.UnitScript.Explode.

[source]

integer EXPLODE

Piece flag for Spring.UnitScript.Explode.

[source]

integer EXPLODE_ON_HIT

Piece flag for Spring.UnitScript.Explode.

[source]

integer FALL

Piece flag for Spring.UnitScript.Explode.

[source]

integer SMOKE

Piece flag for Spring.UnitScript.Explode.

[source]

integer FIRE

Piece flag for Spring.UnitScript.Explode.

[source]

integer NONE

Piece flag for Spring.UnitScript.Explode.

[source]

integer NO_CEG_TRAIL

Piece flag for Spring.UnitScript.Explode.

[source]

integer NO_HEATCLOUD

Piece flag for Spring.UnitScript.Explode.

[source]

integer RECURSIVE

Piece flag for Spring.UnitScript.Explode.

[source]

integer VTOL

Piece flag for Spring.UnitScript.EmitSfx.

[source]

integer WAKE

Piece flag for Spring.UnitScript.EmitSfx.

[source]

integer REVERSE_WAKE

Piece flag for Spring.UnitScript.EmitSfx.

[source]

integer WHITE_SMOKE

Piece flag for Spring.UnitScript.EmitSfx.

[source]

integer BLACK_SMOKE

Piece flag for Spring.UnitScript.EmitSfx.

[source]

integer BUBBLE

Piece flag for Spring.UnitScript.EmitSfx.

[source]

integer CEG

Piece flag for Spring.UnitScript.EmitSfx.

[source]

integer FIRE_WEAPON

Piece flag for Spring.UnitScript.EmitSfx.

[source]

integer DETONATE_WEAPON

Piece flag for Spring.UnitScript.EmitSfx.

[source]

integer GLOBAL

Piece flag for Spring.UnitScript.EmitSfx.

[source]

CMD (field)

Command constants.

Table defining Command related constants.

  • Contains a mix of special constants like command options or move states, and the list of engine command IDs.
  • Also supports integer keys, and those perform reverse mapping of command IDs.

[source]

See Spring.GiveOrderToUnit

CMDTYPE (field)

Command type constants

Note, the CMDTYPE[] table is bidirectional. That means: CMDTYPE[CMDTYPE.ICON] := “CMDTYPE_ICON”

[source]

COB (field)

COB constants

[source]

COBSCALE (field)

[source]

LOG (field)

[source]

See Spring.Log

LuaFont (field)

Lua opengl font object.

[source]

See gl.LoadFont

SFX (field)

[source]

SYNCED (field)

Proxy table for reading synced global state in unsynced code.

Generally not recommended. Instead, listen to the same events as synced and build the table in parallel

Unsynced code can read from the synced global table (_G) using the SYNCED proxy table. e.g. _G.foo can be access from unsynced via SYNCED.foo.

This table makes a copy of the object on the other side, and only copies numbers, strings, bools and tables (recursively but with the type restriction), in particular this does not allow access to functions.

Note that this makes a copy on each access, so is very slow and will not reflect changes. Cache it, but remember to refresh.

[source]

VAO (field)

Vertex Array Object

[source]

See rts/Lua/LuaVAOImpl.cpp

Encoding (table)

Lua Encoding API

[source]

Members

Encoding.DecodeBase64 (function)

Decodes a base64 string

[source]

Decodes a base64 encoded string. If it encounters invalid data, it stops and returns whatever it parsed so far.

Encoding.DecodeBase64(string) -> string
Parameters
stringtext
Text to decode
Returns
stringdecoded
Decoded text

Encoding.EncodeBase64 (function)

Encodes a base64 string

[source]

Encoding.EncodeBase64(string, boolean?) -> string
Parameters
stringtext
Text to encode
boolean?stripPadding
Remove padding (= characters) at the end when ’true’. Defaults to true.
Returns
stringencoded
Encoded text

Encoding.IsValidBase64 (function)

Validates a base64 string

[source]

Encoding.IsValidBase64(string) -> boolean
Parameters
stringtext
Text to validate
Returns
booleanvalid
Whether the text is valid base64

Encoding.DecodeBase64Url (function)

Decodes a base64url string

[source]

Decodes a base64url encoded string. If it encounters invalid data, it stops and returns whatever it parsed so far.

Encoding.DecodeBase64Url(string) -> string
Parameters
stringtext
Text to decode
Returns
stringdecoded
Decoded text

Encoding.EncodeBase64Url (function)

Encodes a base64url string

[source]

Encoding.EncodeBase64Url(string) -> string
Parameters
stringtext
Text to encode
Returns
stringencoded
Encoded text

Encoding.IsValidBase64Url (function)

Validates a base64url string

[source]

Encoding.IsValidBase64Url(string) -> boolean
Parameters
stringtext
Text to validate
Returns
booleanvalid
Whether the text is valid base64url

Engine (table)

Engine specific information.

[source]

Fields

string version
“Major.Minor.PatchSet” for releases, “Major.Minor.PatchSet-CommitNum-gHash branch” otherwise
string versionFull
“Major.Minor.PatchSet” for releases, “Major.Minor.PatchSet-CommitNum-gHash branch” otherwise. Will also include (buildFlags), if there’re any.
string versionMajor
Major part of the named release version
string versionMinor
Minor part of the named release version
string versionPatchSet
Build number of the named release version
string commitsNumber
Number of commits after the latest named release, non-zero indicates a “dev” build
string buildFlags
Gets additional engine buildflags, e.g. “Debug” or “Sync-Debug”
FeatureSupport featureSupport
Table containing various engine features as keys; use for cross-version compat
number wordSize
Indicates the build type always 64 these days
number gameSpeed
Number of simulation gameframes per second
TextColorCode textColorCodes
Table containing keys that represent the color code operations during font rendering

Game (table)

Game specific information

[source]

Fields

number maxUnits
number maxTeams
number maxPlayers
number squareSize
Divide Game.mapSizeX or Game.mapSizeZ by this to get engine’s “mapDims” coordinates. The resolution of height, yard and type maps.
number metalMapSquareSize
The resolution of metalmap (for use in API such as Spring.GetMetalAmount etc.)
number gameSpeed
Number of simulation gameframes per second
number startPosType
boolean ghostedBuildings
string mapChecksum
string modChecksum
boolean mapDamage
string mapName
string mapDescription
= string Game.mapHumanName
number mapHardness
number mapX
number mapY
number mapSizeX
in worldspace/opengl coords. Divide by Game.squareSize to get engine’s “mapDims” coordinates
number mapSizeZ
in worldspace/opengl coords. Divide by Game.squareSize to get engine’s “mapDims” coordinates
number gravity
number tidal
number windMin
number windMax
number extractorRadius
number waterDamage
table envDamageTypes
Containing {def}IDs of environmental-damage sources
string gameName
string gameShortName
string gameVersion
string gameMutator
string gameDesc
boolean requireSonarUnderWater
number transportAir
number transportShip
number transportHover
number transportGround
number fireAtKilled
number fireAtCrashing
boolean constructionDecay
boolean reclaimAllowEnemies
boolean reclaimAllowAllies
number constructionDecayTime
number constructionDecaySpeed
number multiReclaim
number reclaimMethod
number reclaimUnitMethod
number reclaimUnitEnergyCostFactor
number reclaimUnitEfficiency
number reclaimFeatureEnergyCostFactor
number repairEnergyCostFactor
number resurrectEnergyCostFactor
number captureEnergyCostFactor
table<string,integer> springCategories
lua example: { [“vtol”] = 0, [“special”] = 1, [“noweapon”] = 2, [“notair”] = 3, [“notsub”] = 4, [“all”] = 5, [“weapon”] = 6, [“notship”] = 7, [“notland”] = 8, [“mobile”] = 9, [“kbot”] = 10, [“antigator”] = 11, [“tank”] = 12, [“plant”] = 13, [“ship”] = 14, [“antiemg”] = 15, [“antilaser”] = 16, [“antiflame”] = 17, [“underwater”] = 18, [“hover”] = 19, [“phib”] = 20, [“constr”] = 21, [“strategic”] = 22, [“commander”] = 23, [“paral”] = 24, [“jam”] = 25, [“mine”] = 26, [“kamikaze”] = 27, [“minelayer”] = 28, [“notstructure”] = 29, [“air”] = 30 }
table<(string|integer),(integer|string)> armorTypes

(bidirectional) lua example: { [1] = amphibious, [2] = anniddm, [3] = antibomber, [4] = antifighter, [5] = antiraider, [6] = atl, [7] = blackhydra, [8] = bombers, [9] = commanders, [10] = crawlingbombs, …

  ["amphibious"]   = 1, ["anniddm"]    = 2, ["antibomber"] = 3
  ["antifighter"]  = 4, ["antiraider"] = 5, ["atl"]        = 6
  ["blackhydra"]   = 7, ["bombers"]    = 8, ["commanders"] = 9
  ["crawlingbombs"]= 10, ...
}

TextColorCode textColorCodes
Table containing keys that represent the color code operations during font rendering

Platform (table)

Platform specific information

[source]

Fields

string gpu
Full GPU device name
("Nvidia"|"Intel"|"ATI"|"Mesa"|"Unknown") gpuVendor
string glVersionShort
major.minor.buildNumber
string glslVersionShort
major.minor
string glVersion
Full version
string glVendor
string glRenderer
string glslVersion
Full version
string gladVersion
string osName
full name of the OS
("Windows"|"Linux"|"MacOSX"|"FreeBSD"|"Unknown") osFamily
number numDisplays
number gpuMemorySize
Size of total GPU memory in MBs; only available for “Nvidia”, (rest are 0)
number sdlVersionCompiledMajor
number sdlVersionCompiledMinor
number sdlVersionCompiledPatch
number sdlVersionLinkedMajor
number sdlVersionLinkedMinor
number sdlVersionLinkedPatch
number totalRAM
Total physical system RAM in MBs.
boolean glSupportNonPowerOfTwoTex
boolean glSupportTextureQueryLOD
boolean glSupport24bitDepthBuffer
boolean glSupportRestartPrimitive
boolean glSupportClipSpaceControl
boolean glSupportFragDepthLayout

Script (table)

Members

Script.GetWatchUnit (function)

Query whether any callins are registered for a unitDefID.

[source]

See Script.SetWatchUnit

Script.GetWatchUnit(integer) -> boolean
Parameters
integerunitDefID
Returns
booleanwatched
Watch status.

Script.GetWatchFeature (function)

Query whether any callins are registered for a featureDefID.

[source]

See Script.SetWatchFeature

Script.GetWatchFeature(integer) -> boolean
Parameters
integerfeatureDefID
Returns
booleanwatched
true if callins are registered, otherwise false.

Script.GetWatchWeapon (function)

Query whether any callins are registered for a weaponDefID.

[source]

Same as calling: lua Script.GetWatchExplosion(weaponDefID) or Script.GetWatchProjectile(weaponDefID) or Script.GetWatchAllowTarget(weaponDefID)

See Script.SetWatchWeapon

Script.GetWatchWeapon(integer) -> boolean
Parameters
integerweaponDefID
Returns
booleanwatched
True if watch is enabled for any weaponDefID callins.

Script.GetWatchExplosion (function)

Query whether explosion callins are registered for a weaponDefID.

[source]

See Script.SetWatchExplosion

Script.GetWatchExplosion(integer) -> boolean
Parameters
integerweaponDefID
Returns
booleanwatched
true if callins are registered, otherwise false.

Script.GetWatchProjectile (function)

Query whether projectile callins are registered for a weaponDefID.

[source]

See Script.SetWatchProjectile

Script.GetWatchProjectile(integer) -> boolean
Parameters
integerweaponDefID
Returns
booleanwatched
true if callins are registered, otherwise false.

Script.GetWatchAllowTarget (function)

Query whether weapon targeting callins are registered for a weaponDefID.

[source]

See Script.SetWatchAllowTarget

Script.GetWatchAllowTarget(integer) -> boolean
Parameters
integerweaponDefID
Returns
booleanwatched
true if callins are registered, otherwise false.

Script.SetWatchUnit (function)

Register or deregister unitDefID for expensive callins.

[source]

See Callins:UnitMoveFailed

Script.SetWatchUnit(integer, boolean) -> nil
Parameters
integerunitDefID
booleanwatch
Whether to register or deregister.

Script.SetWatchFeature (function)

Register or deregister featureDefID for expensive callins.

[source]

See Callins:UnitFeatureCollision

Script.SetWatchFeature(integer, boolean) -> nil
Parameters
integerfeatureDefID
booleanwatch
Whether to register or deregister.

Script.SetWatchWeapon (function)

Register or deregister weaponDefID for all expensive callins.

[source]

Equivalent to calling:

lua Script.SetWatchExplosion(weaponDefID) Script.SetWatchProjectile(weaponDefID) Script.SetWatchAllowTarget(weaponDefID)

Generally it’s better to use those methods to avoid registering uneeded callins.

See Script.SetWatchAllowTarget

Script.SetWatchWeapon(integer, boolean) -> nil
Parameters
integerweaponDefID
booleanwatch
Whether to register or deregister.

Script.SetWatchExplosion (function)

Register or deregister weaponDefID for explosion callins.

[source]

See Callins:Explosion

Script.SetWatchExplosion(integer, boolean) -> nil
Parameters
integerweaponDefID
booleanwatch
Whether to register or deregister.

Script.SetWatchProjectile (function)

Register or deregister weaponDefID for expensive projectile callins.

[source]

See Callins:ProjectileDestroyed

Script.SetWatchProjectile(integer, boolean) -> nil
Parameters
integerweaponDefID
weaponDefID for weapons or -1 to watch for debris.
booleanwatch
Whether to register or deregister.

Script.SetWatchAllowTarget (function)

Register or deregister weaponDefID for weapon targeting callins.

[source]

See SyncedCallins:AllowWeaponInterceptTarget

Script.SetWatchAllowTarget(integer, boolean) -> nil
Parameters
integerweaponDefID
booleanwatch
Whether to register or deregister.

Script.IsEngineMinVersion (function)

[source]
Script.IsEngineMinVersion(integer, integer?, integer?) -> boolean
Parameters
integerminMajorVer
integer?minMinorVer
(Default: 0)
integer?minCommits
(Default: 0)
Returns
booleansatisfiesMin
true if the engine version is greater or equal to the specified version, otherwise false.

Script.Kill (function)

[source]
Script.Kill(string?) -> nil
Parameters
string?killMessage
Kill message.

Script.UpdateCallin (function)

[source]
Script.UpdateCallin(string) -> nil
Parameters
stringname

Script.GetName (function)

[source]
Script.GetName() -> string
Returns
stringname

Script.GetSynced (function)

[source]
Script.GetSynced() -> boolean
Returns
booleansynced

Script.GetFullCtrl (function)

[source]
Script.GetFullCtrl() -> boolean
Returns
booleanfullCtrl

Script.GetFullRead (function)

[source]
Script.GetFullRead() -> boolean
Returns
booleanfullRead

Script.GetCtrlTeam (function)

[source]
Script.GetCtrlTeam() -> integer
Returns
integerteamID

Script.GetReadTeam (function)

[source]
Script.GetReadTeam() -> integer
Returns
integerteamID

Script.GetReadAllyTeam (function)

[source]
Script.GetReadAllyTeam() -> integer
Returns
integerallyTeamID

Script.GetSelectTeam (function)

[source]
Script.GetSelectTeam() -> integer
Returns
integerteamID

Script.GetGlobal (function)

[source]
Script.GetGlobal() -> integer?
Returns
integer?global

Script.GetRegistry (function)

[source]
Script.GetRegistry() -> integer?
Returns
integer?registry

Script.DelayByFrames (function)

[source]
Script.DelayByFrames(integer, unknown) -> nil
Parameters
integerframeDelay
unknownfun

Fields

-1 NO_ACCESS_TEAM
[source]
-2 ALL_ACCESS_TEAM
[source]

VFS (table)

Unified IO for archive and filesystem

The Virtual File System is a unified layer to access (read-only) the different archives used at runtime. So you can access map, game & config files via the same interface.

Overview

Although Spring can access the filesystem directly (via os module) it is more common that you would want to access files included with your game or Spring. Trouble is, most of these files are compressed into archives (.sdz/.sd7) so random access would generally be a difficult procedure. Fortunately, the Spring Lua system automatically provides access to mod and base files via the VFS module.

As an additional caveat, synced Lua cannot use the os and io modules, so using VFS is mandatory there to have any file access at all.

The VFS module doesn’t simply open archives though. What it does is map your game files, game dependencies and Spring content onto a virtual file tree. All archives start from the ‘roots’ of the tree and share the same virtual space, meaning that if two or more archives contain the same resource file name the resources overlap and only one of the files will be retrieved. Overlapping directories on the other hand are merged so the resulting virtual directory contains the contents of both. Here is an example of how this works:

Archive 1 (games/mygame.sd7)

textures └── texture1.png models └── model1.mdl

Archive 2 (base/springcontent.sdz)

textures ├── texture1.png ├── texture2.png └── texture3.png

VFS

textures ├── texture1.png ├── texture2.png └── texture3.png models └── model1.mdl

This raises the question: If both archives have a texture1.png then which texture1.png is retreived via the VFS? The answer depends on the order the archives are loaded and the VFS mode (more on modes below). Generally however, each archive loaded overrides any archives loaded before it. The standard order of loading (from first to last) is:

  1. The automatic dependencies springcontent.sdz and maphelper.sdz.
  2. Dependencies listed in your modinfo.lua (or modinfo.tdf), in the order listed. Note that they are loaded fully and recursively, i.e. all the deeper dependencies of the 1st base-level dependency are loaded before the 2nd base-level dependency. This breaks the usual “loaded later overrides loaded earlier” priority if a dependency comes from multiple places, since only the first time an archive is loaded counts.
  3. Your mod archive.

Loose files (not within any archive) in the engine dir are also visible as if under the VFS root if loading under the VFS.RAW mode, though you can also use full FS path (i.e. C:/…/Spring/foo/bar.txt is visible both as that and as just foo/bar.txt). Note that VFS.RAW is only accessible to unsynced Lua, all synced states are limited to loaded archives.

Paths

Spring’s VFS is lowercase only. Also it is strongly recommended to use linux style path separators, e.g. “foo/bar.txt” and not “foobar.txt”.

Engine read files

The engine access a few files directly, most of them are lua files which access other files themselves. Here the list of files that must exist in the VFS (some of them don’t have to be in the game/map archive cause there are fallback solutions in springcontent.sdz & maphelper.sdz):

  • ./
  • anims/
  • cursornormal.bmp/png
  • gamedata/
  • defs.lua
  • explosions.lua
  • explosion_alias.lua
  • icontypes.lua
  • messages.lua
  • modrules.lua
  • resources.lua
  • resources_map.lua
  • sidedata.lua
  • sounds.lua
  • luagaia/
  • main.lua
  • draw.lua
  • luarules/
  • main.lua
  • draw.lua
  • luaui/
  • main.lua
  • shaders/
  • ?
  • luaai.lua
  • mapinfo.lua
  • mapoptions.lua
  • modinfo.lua
  • modoptions.lua
  • validmaps.lua

[source]

Members

VFS.GetMaps (function)

[source]
VFS.GetMaps() -> string[]
Returns
string[]mapNames

VFS.GetGames (function)

[source]
VFS.GetGames() -> string[]
Returns
string[]gameNames

VFS.GetAllArchives (function)

[source]
VFS.GetAllArchives() -> string[]
Returns
string[]archiveNames

VFS.HasArchive (function)

[source]
VFS.HasArchive() -> boolean
Returns
booleanhasArchive

VFS.GetLoadedArchives (function)

[source]
VFS.GetLoadedArchives() -> string[]
Returns
string[]archiveNames

VFS.GetArchivePath (function)

[source]
VFS.GetArchivePath(string) -> string?
Parameters
stringarchiveName
Returns
string?archivePath

VFS.GetArchiveInfo (function)

[source]
VFS.GetArchiveInfo(string) -> ArchiveInfo?
Parameters
stringarchiveName
Returns
ArchiveInfo?archiveInfo

VFS.GetArchiveDependencies (function)

[source]
VFS.GetArchiveDependencies(string) -> string[]
Parameters
stringarchiveName
Returns
string[]archiveNames

VFS.GetArchiveReplaces (function)

[source]
VFS.GetArchiveReplaces(string) -> string[]
Parameters
stringarchiveName
Returns
string[]archiveNames

VFS.GetArchiveChecksum (function)

[source]
VFS.GetArchiveChecksum(string) -> string, string
Parameters
stringarchiveName
Returns
stringsingleArchiveChecksum
stringcompleteArchiveChecksum

VFS.GetNameFromRapidTag (function)

[source]
VFS.GetNameFromRapidTag(string) -> string
Parameters
stringrapidTag
Returns
stringarchiveName

VFS.GetAvailableAIs (function)

Get a list of all Spring AIs.

The optional gameName and mapName parameters can be used to include game/map specific LuaAIs in the list.

[source]

VFS.GetAvailableAIs(string?, string?) -> AIInfo[]
Parameters
string?gameArchiveName
string?mapArichiveName
Returns
AIInfo[]ais

VFS.Include (function)

Loads and runs lua code from a file in the VFS.

[source]

The path is relative to the main Spring directory, e.g.

lua VFS.Include(‘LuaUI/includes/filename.lua’, nil, vfsmode)

VFS.Include(string, table?, string?) -> any
Parameters
stringfilename
table?environment

(Default: the current function environment)

The environment arg sets the global environment (see generic lua refs). In almost all cases, this should be left nil to preserve the current env.

If the provided, any non-local variables and functions defined in filename.lua are then accessable via env. Vise-versa, any variables defined in env prior to passing to VFS.Include are available to code in the included file. Code running in filename.lua will see the contents of env in place of the normal global environment.

string?mode
Returns
anymodule
The return value of the included file.

VFS.LoadFile (function)

Load raw text data from the VFS.

[source]

Returns file contents as a string. Unlike VFS.Include the file will not be executed. This lets you pre-process the code. Use loadstring afterwards.

VFS.LoadFile(string, string?) -> string?
Parameters
stringfilename
string?mode
Returns
string?data
The contents of the file.

VFS.FileExists (function)

Check if file exists in VFS.

[source]

Example usage:

lua if VFS.FileExists(“mapconfig/custom_lava_config.lua”, VFS.MAP) then

end

VFS.FileExists(string, string?) -> boolean
Parameters
stringfilename
string?mode
Returns
booleanexists
true if the file exists, otherwise false.

VFS.DirList (function)

List files in a directory.

[source]

Example usage:

lua local luaFiles = VFS.DirList(‘units/’, ‘*.lua’, nil, true)

VFS.DirList(string, string?, string?, boolean?) -> string[]
Parameters
stringdirectory
string?pattern
(Default: "*")
string?mode
boolean?recursive
(Default: false)
Returns
string[]filenames

VFS.SubDirs (function)

List sub-directories in a directory.

[source]

Example usage:

lua local files = VFS.SubDirs(‘sounds/voice/’ .. language, ‘*’) for _, file in ipairs(files) do # … end

VFS.SubDirs(string, string?, string?, boolean?) -> string[]
Parameters
stringdirectory
string?pattern
(Default: "*")
string?mode
boolean?recursive
(Default: false)
Returns
string[]dirnames

VFS.GetFileAbsolutePath (function)

[source]
VFS.GetFileAbsolutePath(string, string?) -> string?
Parameters
stringfilename
string?mode
Returns
string?absolutePath

VFS.GetArchiveContainingFile (function)

[source]
VFS.GetArchiveContainingFile(string, string?) -> string?
Parameters
stringfilename
string?mode
Returns
string?archiveName

VFS.UseArchive (function)

Temporarily load an archive from the VFS and run the given function, which can make usage of the files in the archive.

[source]

VFS.UseArchive(string, unknown) -> any ...
Parameters
stringarchiveName
unknownfun
Returns
any ...Results
of the given function

VFS.CompressFolder (function)

Compresses the specified folder.

[source]

VFS.CompressFolder(string, string?, string?, boolean?, string?) -> nil
Parameters
stringfolderPath
string?archiveType
(Default: “zip”)The compression type (can currently be only “zip”).
string?compressedFilePath
(Default: folderPath .. “.sdz”)
boolean?includeFolder
(Default: false) Whether the archive should have the specified folder as root.
string?mode

VFS.ZlibCompress (function)

[source]
VFS.ZlibCompress(string) -> string?
Parameters
stringuncompressed
Data to compress.
Returns
string?compressed
Compressed data, or nil on error.

VFS.ZlibDecompress (function)

[source]
VFS.ZlibDecompress(string) -> string?
Parameters
stringcompressed
Data to decompress.
Returns
string?uncompressed
Uncompressed data, or nil on error.

VFS.CalculateHash (function)

Calculates hash of a given string.

  • MD5 gets base64 encoded.
  • SHA512 gets hex encoded.

[source]

VFS.CalculateHash(string, HashType) -> string?
Parameters
stringinput
HashTypehashType
Hash type.
Returns
string?hash

VFS.PackU8 (function)

Convert unsigned 8-bit integer(s) to binary string.

[source]

VFS.PackU8([integer, ]*) -> string
Parameters
integer...
Numbers to pack.
Returns
string

VFS.PackU8 (function overload 1)

Convert unsigned 8-bit integer(s) to binary string.

[source]

VFS.PackU8(integer[]) -> string
Parameters
integer[]numbers
Numbers to pack.
Returns
string

VFS.PackU16 (function)

Convert unsigned 16-bit integer(s) to binary string.

[source]

VFS.PackU16([integer, ]*) -> string
Parameters
integer...
Numbers to pack.
Returns
string

VFS.PackU16 (function overload 1)

Convert unsigned 16-bit integer(s) to binary string.

[source]

VFS.PackU16(integer[]) -> string
Parameters
integer[]numbers
Numbers to pack.
Returns
string

VFS.PackU32 (function)

Convert unsigned 32-bit integer(s) to binary string.

[source]

VFS.PackU32([integer, ]*) -> string
Parameters
integer...
Numbers to pack.
Returns
string

VFS.PackU32 (function overload 1)

Convert unsigned 32-bit integer(s) to binary string.

[source]

VFS.PackU32(integer[]) -> string
Parameters
integer[]numbers
Numbers to pack.
Returns
string

VFS.PackS8 (function)

Convert signed 8-bit integer(s) to binary string.

[source]

VFS.PackS8([integer, ]*) -> string
Parameters
integer...
Numbers to pack.
Returns
string

VFS.PackS8 (function overload 1)

Convert signed 8-bit integer(s) to binary string.

[source]

VFS.PackS8(integer[]) -> string
Parameters
integer[]numbers
Numbers to pack.
Returns
string

VFS.PackS16 (function)

Convert signed 16-bit integer(s) to binary string.

[source]

VFS.PackS16([integer, ]*) -> string
Parameters
integer...
Numbers to pack.
Returns
string

VFS.PackS16 (function overload 1)

Convert signed 16-bit integer(s) to binary string.

[source]

VFS.PackS16(integer[]) -> string
Parameters
integer[]numbers
Numbers to pack.
Returns
string

VFS.PackS32 (function)

Convert signed 32-bit integer(s) to binary string.

[source]

VFS.PackS32([integer, ]*) -> string
Parameters
integer...
Numbers to pack.
Returns
string

VFS.PackS32 (function overload 1)

Convert signed 32-bit integer(s) to binary string.

[source]

VFS.PackS32(integer[]) -> string
Parameters
integer[]numbers
Numbers to pack.
Returns
string

VFS.PackS32 (function overload 2)

Convert signed 32-bit float(s) to binary string.

[source]

VFS.PackS32([integer, ]*) -> string
Parameters
integer...
Numbers to pack.
Returns
string

VFS.PackS32 (function overload 3)

Convert signed 32-bit float(s) to binary string.

[source]

VFS.PackS32(integer[]) -> string
Parameters
integer[]numbers
Numbers to pack.
Returns
string

VFS.UnpackU8 (function)

Convert a binary string to an unsigned 8-bit integer.

[source]

VFS.UnpackU8(string, integer?) -> integer
Parameters
stringstr
Binary string.
integer?pos
Byte offset.
Returns
integer

VFS.UnpackU16 (function)

Convert a binary string to an unsigned 16-bit integer.

[source]

VFS.UnpackU16(string, integer?) -> integer
Parameters
stringstr
Binary string.
integer?pos
Byte offset.
Returns
integer

VFS.UnpackU32 (function)

Convert a binary string to an unsigned 32-bit integer.

[source]

VFS.UnpackU32(string, integer?) -> integer
Parameters
stringstr
Binary string.
integer?pos
Byte offset.
Returns
integer

VFS.UnpackS8 (function)

Convert a binary string to a signed 8-bit integer.

[source]

VFS.UnpackS8(string, integer?) -> integer
Parameters
stringstr
Binary string.
integer?pos
Byte offset.
Returns
integer

VFS.UnpackS16 (function)

Convert a binary string to a signed 16-bit integer.

[source]

VFS.UnpackS16(string, integer?) -> integer
Parameters
stringstr
Binary string.
integer?pos
Byte offset.
Returns
integer

VFS.UnpackS32 (function)

Convert a binary string to a signed 32-bit integer.

[source]

VFS.UnpackS32(string, integer?) -> integer
Parameters
stringstr
Binary string.
integer?pos
Byte offset.
Returns
integer

VFS.UnpackF32 (function)

Convert a binary string to a signed 32-bit float.

[source]

VFS.UnpackF32(string, integer?) -> integer
Parameters
stringstr
Binary string.
integer?pos
Byte offset.
Returns
integer

Fields

"r" RAW
[source] Only select uncompressed files.
"M" GAME
[source]
"m" MAP
[source]
"b" BASE
[source]
"e" MENU
[source]
"Mmeb" ZIP
[source] Only select compressed files (.sdz, .sd7).
"rMmeb" RAW_FIRST
[source] Try uncompressed files first, then compressed.
"Mmebr" ZIP_FIRST
[source] Try compressed files first, then uncompressed.
"M" MOD
[source]
"r" RAW_ONLY
[source]
"Mmeb" ZIP_ONLY
[source]

tracy (table)

Members

tracy.LuaTracyPlotConfig (function)

Configure custom appearance for a Tracy plot for use in debugging or profiling

[source]

tracy.LuaTracyPlotConfig(string, ("Number"|"Percentage"|"Memory")?, boolean?, boolean?, integer?) -> nil
Parameters
stringplotName
name of the plot to customize
("Number"|"Percentage"|"Memory")?plotFormatType
(Default: “Number”)
boolean?stepwise
(Default: true) stepwise chart
boolean?fill
(Default: false) whether to fill color
integer?color
(Default: 0xFFFFFF) uint32 number as BGR color

tracy.LuaTracyPlot (function)

Update a Tracy plot with a value

[source]

tracy.LuaTracyPlot(string, number) -> nil
Parameters
stringplotName
Which LuaPlot should be updated
numberplotValue
the number to show on the Tracy plot

tracy.ZoneBegin (function)

tracy.ZoneBegin(string) -> nil
Parameters
stringname

tracy.ZoneBeginN (function)

tracy.ZoneBeginN(string) -> nil
Parameters
stringname

tracy.ZoneBeginS (function)

tracy.ZoneBeginS(string) -> nil
Parameters
stringname

tracy.ZoneBeginNS (function)

tracy.ZoneBeginNS(string) -> nil
Parameters
stringname

tracy.ZoneEnd (function)

tracy.ZoneEnd() -> nil

tracy.ZoneText (function)

tracy.ZoneText(string) -> nil
Parameters
stringtext

tracy.ZoneName (function)

tracy.ZoneName(string) -> nil
Parameters
stringname

tracy.Message (function)

tracy.Message(string) -> nil
Parameters
stringtext

Aliases

RmlUi.SelectOptionsProxyNode
{ element: RmlUi.Element, value: string }
HashType
(0|1)
RmlUi.EventParametersProxy.MouseButton
(0|1|2)
ResourceUsage
table<ResourceName,number>
RmlUi.ElementStyleProxy
{ [string]: string }
MatrixName
("view"|"projection"|"viewprojection"|"viewinverse"|"projectioninverse"|"viewprojectioninverse"|"billboard"|"shadow"...)
float3
xyz
CreateCommandOptions
(CommandOptionName[]|table<CommandOptionName,boolean>|CommandOptionBit|integer)
ResourceName
("metal"|"energy"|"m"|"e")
TargetType
(0|1|2|3)
ModType
(0|1|3|4)
CommandOptionName
("right"|"alt"|"ctrl"|"shift"|"meta")
float2
xy
RmlUi.MouseButton
(0|1|2)
CameraMode
(0|1|2|3|4|5|6)
BuildOrderBlockedStatus
(0|1|2|3)
RmlUi.ElementAttributesProxy
{ [string]: (string|number|boolean) }
GenericMoveTypeNumberKey
("maxSpeed"|"maxWantedSpeed"|"maneuverLeash"|"waterline")
Facing
(0|1|2|3|"s"|"e"|"n"|"w"...)
DrawFlag
(0|1|2|4|8|16|32|128)
RmlUi.EventParametersProxy.TrueFalse
(0|1)
SoundChannel
("general"|"battle"|"sfx"|"unitreply"|"voice"|"userinterface"|"ui"|0...)
RmlUi.ElementChildNodesProxy
RmlUi.Element[]
RmlUi.SelectOptionsProxy
RmlUi.SelectOptionsProxyNode[]
Heading
integer
LogLevel
(integer|"debug"|"info"|"notice"|"warning"|"deprecated"|"error"|"fatal")
DrawMask
integer
Attachment
("depth"|"stencil"|"color0"|"color1"|"color2"|"color3"|"color4"|"color5"...)
CreateCommandParams
(number[]|number)
GenericMoveTypeBooleanKey
("useWantedSpeed[0]"|"useWantedSpeed[1]")
FacingInteger
(0|1|2|3)
RmlUi.StyleProxy
{ [string]: string }
UniformArrayType
(1|2|3)
RmlUi.EventID
(0|1|2|3|4|5|6|7...)
CameraName
("ta"|"spring"|"rot"|"ov"|"free"|"fps"|"dummy")
CommandOptionBit
(4|8|16|32|64|128)
StorageName
("metalStorage"|"energyStorage"|"ms"|"es")
float4
xyzw