Lua UnsyncedRead
Development < Lua Scripting < Lua UnsyncedRead
Unsynced Read
Replay/Spectating
Spring.IsReplay
( )
return: nil | bool isReplay
Spring.GetReplayLength
( )
return: nil | number timeInSeconds
- New in version 92.0
Spring.GetSpectatingState
( )
return: bool spectating, bool fullView, bool fullSelect
Game/Menu Name
Spring.GetGameName
( )
return: string name
- New in version 104.0
Apparently returns name .. version from Modinfo.lua. E.g. "Spring: 1944 test-5640-ac2d15b".
Spring.GetMenuName
( )
return: string name
- New in version 104.0
ModUI
Spring.GetModUICtrl
( )
return: bool ModUICtrl
MyInfo
Spring.GetMyAllyTeamID
( )
return: number allyTeamID
Spring.GetMyTeamID
( )
return: number teamID
Spring.GetMyPlayerID
( )
return: number playerID
Local Player,Team,Ally
Redundant same as the GetMyXYZ functions!
Spring.GetLocalPlayerID
( )
return: number playerID
Spring.GetLocalTeamID
( )
return: number teamID
Spring.GetLocalAllyTeamID
( )
return: number allyID
Team/Player Info
Spring.GetPlayerRoster
( [number sortType] | [number sortType], [bool showPathingPlayers] )
return: nil | table playerTable
- "playerTable" contains:
playerTable = { [1] = { string name, number playerID, number teamID, number allyTeamID, boolean spectator, number cpuUsage, number pingTime }, etc... } if pingTime == -1, the player is pathfinding, 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 Sort codes: 1 = Sort by allies (the default) 2 = Sort by teamID 3 = Sort by playerName 4 = Sort by CPU usage 5 = Sort by ping time
Spring.GetTeamColor
( number teamID )
return: nil | number r, number g, number b, number a
Spring.GetTeamOrigColor
( number teamID )
return: nil | number r, number g, number b, number a
Spring.GetPlayerTraffic
( number playerID [,
number packetID ] )
return: number traffic
Sound
Spring.GetSoundStreamTime
( )
return: number playedTime, number totalTime,
Camera
Spring.GetCameraNames
( )
return: { [camName] = number camNum, ... }
Spring.GetCameraState
( )
return: { "name" = string, "mode" = number camIdx, state1 = number, state2 = number, ... }
- See Lua_camState for details about Spring.GetCameraState output.
Spring.GetCameraPosition
( )
return: number x, number y, number z
Spring.GetCameraDirection
( )
return: number forward_x, number forward_y, number forward_z
Spring.GetCameraFOV
( )
return: number vFov, number hFov
Spring.GetCameraVectors
( )
return: table vectorTable
- vectorTable contains:
vectorTable = { forward = { [1] = number x, [2] = number y, [3] = number z }, up = { [1] = number x, [2] = number y, [3] = number z }, right = { [1] = number x, [2] = number y, [3] = number z }, top = { [1] = number x, [2] = number y, [3] = number z }, bottom = { [1] = number x, [2] = number y, [3] = number z }, leftside = { [1] = number x, [2] = number y, [3] = number z }, rightside = { [1] = number x, [2] = number y, [3] = number z } }
Inview
Spring.GetVisibleUnits
( [number teamID = -1 [,
number radius = 30 [,
bool Icons = true ]]] )
return: nil | table unitTable = { [1] = number unitID, ... }
Spring.GetVisibleFeatures
( [number allyTeamID = -1 [,
number radius = 30 [,
bool Icons = true [,
bool geos = true ]]]] )
return: nil | table featureTable = { [1] = number featureID, ... }
Spring.IsAABBInView
( number minX, number minY, number minZ,
number maxX, number maxY, number maxZ )
return: nil | bool isInView
Spring.IsSphereInView
( number x, number y, number z [,
number radius ] )
return: nil | bool isInView
Spring.IsUnitIcon
( number unitID )
return: nil | bool isUnitIcon
Spring.IsUnitInView
( number unitID )
return: nil | bool isUnitInView
Spring.IsUnitVisible
( number unitID [,
number radius [,
bool checkIcons ]] )
return: nil | bool isVisible
Screen Trace
Spring.WorldToScreenCoords
( number x, number y, number z )
return: number x, number y, number z
Spring.TraceScreenRay
( number mouseX, number mouseY, [,
bool onlyCoords [,
bool useMinimap [,
bool includeSky [,
bool ignoreWater [,
number D ]]]]] )
return: nil | string unit, number unitID | string feature, number featureID | string ground, table coords = { [1] = number x, [2] = number y, [3] = number z }
- New in version 101.0
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 collission sphere. Per Piece collission and custom collission objects are not supported. The unit must be selectable, to appear to a screen trace ray. To get map coordinates under mouse cursor: input mouse coordinates obtained via GetMouseState() and pass true for the onlyCoords parameter. Be careful as going off map will result in nil: local mouseX, mouseY = Spring.GetMouseState() print ("Mouse coordinates: (" .. mouseX .. ", " .. mouseY .. ")") local desc, args = Spring.TraceScreenRay(mouseX, mouseY, true) if nil == desc then return end -- off map local x = args[1] local y = args[2] local z = args[3] print ("World coordinates: (" .. x .. ", " .. y .. ", " .. z .. ")")
Spring.GetPixelDir
( number x,
number y )
return: number dirX, number dirY, number dirZ
- New in version 95.0
Screen & Window Geometry
Spring.GetViewGeometry
( )
return: number viewSizeX, number viewSizeY, number viewPosX, number viewPosY
Spring.GetWindowGeometry
( )
return: number winSizeX, number winSizeY, number winPosX, number winPosY
Spring.GetScreenGeometry
( )
return: number screenSizeX, number screenSizeY, number ZERO, number ZERO
- Is missing multiscreen support!
Unit
Spring.IsUnitAllied
( number unitID )
return: nil | bool isAllied
Spring.GetUnitViewPosition
( number unitID [,
bool midPos = false ] )
return: nil | number x, number y, number z
Spring.GetUnitTransformMatrix
( number unitID [,
bool invert = false ] )
return: nil | number a11, number a12 ..., number a44 (4x4 matrix)
Spring.GetUnitSelectionVolumeData
( number unitID )
return: number scaleX, number scaleY, number scaleZ, number offsetX, number offsetY, number offsetZ, number volumeType, number testType, number primaryAxis, bool disabled
Selected Units
Spring.GetSelectedUnits
( )
return: { [1] = number unitID, ... }
Spring.GetSelectedUnitsSorted
( )
return: { [number unitDefID] = { [1] = [number unitID], etc... }, ... }
Spring.GetSelectedUnitsCounts
( )
return: { [number unitDefID] = number count, etc... }
Spring.GetSelectedUnitsCount
( )
return: number count
Spring.IsUnitSelected
( number unitID )
return: nil | bool isSelected
Unit Groups
Spring.GetUnitGroup
( number unitID )
return: nil | number groupNumber
Spring.GetGroupList
( )
return: nil | { [number] = number unitCount, ... }
Spring.GetSelectedGroup
( )
return: number groupNumber
Spring.GetGroupAIName
( number groupID )
return: string aiName
Spring.GetGroupAIList
( )
return: { [1] = string aiName, ... }
Spring.GetGroupUnits
( number groupID )
return: nil | { [1] = number unitID, ... }
Spring.GetGroupUnitsSorted
( number groupID )
return: nil | { [number unitDefID] = { number unitID, ... }, ... }
Spring.GetGroupUnitsCounts
( number groupID )
return: nil | { [number unitDefID] = number count, ... }
Spring.GetGroupUnitsCount
( number groupID )
return: nil | number count
Feature
Spring.GetFeatureSelectionVolumeData
( number unitID )
return: number scaleX, number scaleY, number scaleZ, number offsetX, number offsetY, number offsetZ, number volumeType, number testType, number primaryAxis, bool disabled
Projectiles
Spring.GetVisibleProjectiles
( [ number allyTeamID = -1 [,
bool addSyncedProjectiles = true [,
bool addWeaponProjectiles = true [,
bool addPieceProjectiles = true ]]]] )
return: nil | { [1] = number projectileID, ... }
UI
Spring.GetUICommands
( )
return: nil | { [1] = { command=string, description=string, synced=bool, cheat=bool}, ... }
- New in version 101.0
Returns a list of available UI commands.
GUI Settings
Spring.IsGUIHidden
( )
return: nil | bool isHidden
Spring.HaveShadows
( )
return: nil | bool haveShadows
Spring.HaveAdvShading
( )
return: nil | bool haveShading
Spring.GetWaterMode
( )
return: nil | number mode, string mode
mode numbers: 0 - basic 1 - reflective 2 - dynamic 3 - refractive 4 - bumpwater default - unknown
Spring.GetMapDrawMode
( )
return: nil | string "normal" | string "height" | string "metal" | string "pathTraversability" | string "los"
Spring.GetDrawSelectionInfo
( )
return: bool drawSelectInfo
- Returns whether "Selected units" text is displayed.
Unit & Feature GUI States
Spring.GetUnitLuaDraw
( number unitID )
return: nil | bool unitDraw
Spring.GetUnitNoDraw
( number unitID )
return: nil | bool noDraw
Spring.GetUnitNoMinimap
( number unitID )
return: nil | bool noMinimap
Spring.GetUnitNoSelect
( number unitID )
return: nil | bool noSelect
Spring.GetFeatureLuaDraw
( number featureID )
return: nil | bool featureDraw
Spring.GetFeatureNoDraw
( number featureID )
return: nil | bool noDraw
Minimap
Spring.GetMiniMapGeometry
( )
return: number posX, number posY, number sizeX, number sizeY, bool minimized, bool maximized
Spring.GetMiniMapDualScreen
( )
return: bool false | string "left" | string "right"
Spring.IsAboveMiniMap
( number x,
number y )
return: nil | bool isAbove
(Build-)Menu
Spring.GetActiveCommand
( )
return: nil | number index [, number cmd_id, number cmd_type, string cmd_name ]
Spring.GetDefaultCommand
( )
return: nil | number index [, number cmd_id, number cmd_type, string cmd_name ]
Spring.GetActiveCmdDescs
( )
return: nil | table cmdDesc
- cmdDesc contains:
cmdDesc = { [1] = { id=number, type=number, name=string, action=string, tooltip=string, texture=string, cursor=string, hidden=boolean, disabled=boolean, showUnique=boolean, onlyTexture=boolean, params = { [1] = string, .. } }, ... }
Spring.GetActiveCmdDesc
( )
return: nil | table cmdDesc
- cmdDesc contains:
cmdDesc = { id=number, type=number, name=string, action=string, tooltip=string, texture=string, cursor=string, hidden=boolean, disabled=boolean, showUnique=boolean, onlyTexture=boolean, params = { [1] = string, .. } }
Spring.GetCmdDescIndex
( number cmdID )
return: nil | number index
Spring.GetActivePage
( )
return: nil | number pageNum, number maxPages
Build Facing
Spring.GetBuildFacing
( )
return: nil | number facing
Spring.GetBuildSpacing
( )
return: nil | number spacing
GatherMode & InvertQueueKey
Spring.GetGatherMode
( )
return: nil | number gatherMode
Spring.GetInvertQueueKey
( )
return: nil | number queueKey
Mouse States
Spring.GetMouseState
( )
return: number x, number y, bool leftPressed, bool middlePressed, bool rightPressed, bool offscreen
- New in version 104.0 Sixth return value offscreen.
X, Y are the screen coordinates, not world ones. This coordinate system starts in the lower left corner. For world coordinates see Spring.TraceScreenRay.
Spring.GetMouseCursor
( )
return: string name, number scale
Spring.GetMouseStartPosition
( number mouseButton )
return: nil | number pressedX, number pressedY, number camPosX, number camPosY, number camPosZ, number dirX, number dirY, number dirZ
(Hot-)Keys
Spring.GetKeyState
( number key )
return: nil | bool keyState
Spring.GetModKeyState
( )
return: bool alt, bool ctrl, bool meta, bool shift
Spring.GetPressedKeys
( )
return: { [number code] = bool, [string name] = bool, ... }
- New in version 99.0: string name
Returns the SDL1 codes for the pressed keys, first as an integer, a string containing the hex representation.
Use Spring.GetKeySymbol to convert to an SDL2 symbol.
Spring.GetKeyCode
( string keysym )
return: number keyCode
- Returns the SDL1 code for the SDL2 symbol
Spring.GetKeySymbol
( number key )
return: string "keysym1", string "keysym2"
- Converts an SDL1 keycode into an SDL2 keycode, represented as a hexadecimal string. For most cases, these values will be the same.
Spring.GetKeyBindings
( string keyset )
return: nil | table keyBindings
- keyBindings contains:
keyBindings = { [1] = { [string actionCmd] = string actionExtra, command = string actionCmd, {{new|97}} boundWith = string boundWith, {{new|97}} extra = string actionExtra, {{new|97}} }, ... }
Spring.GetActionHotKeys
( string action )
return: nil | { [1] = string hotKey, ... }
Console
Spring.GetLastMessagePositions
( )
return: nil | { [1] = { number x, number y, number z }, ... }
Spring.GetConsoleBuffer
( [number maxLines] )
return: nil | { [1] = { text = string, priority = number }, ... }
Spring.GetCurrentTooltip
( )
return: string tooltip
LOS Colors
Spring.GetLosViewColors
( )
return: table always = {r,g,b}, table LOS = {r,g,b}, table radar = {r,g,b}, table jam = {r,g,b}, table radar2 = {r,g,b}
- New in version 100
Config
Spring.GetConfigParams
( )
return: table configParams
- Same information as
spring --list-config-vars
configParams contains:
configParams = { { name = string, type = string, [ description = string, ] [ defaultValue = string, ] [ minimumValue = string, ] [ maximumValue = string, ] [ safemodeValue = string, ] [ declarationFile = string, ] [ declarationLine = number, ] [ readOnly = bool, ] }, ... }
Spring.GetConfigInt
( string name [,
number default ] )
return: nil | number configInt
Spring.GetConfigFloat
( string name [,
number default ] )
return: nil | number configFloat
- New in version 104.0
Spring.GetConfigString
( string name [,
number default ] )
return: nil | string configString
FPS & GetDrawFrame
Spring.GetFPS
( )
return: number fps
Spring.GetDrawFrame
( )
return: number low_16bit, number high_16bit
Spring.GetVideoCapturingMode
( )
return: bool videoCaptureAllowed
- New in version 104.0
Time
Spring.GetGameSpeed
( )
return: number userSpeedFactor, number speedFactor, bool paused
- Speed factors are by default 1.0, (the default simulation gamespeed) but are not 0 when the game is paused. Factor at 10x gamespeed is 10.0. New in version 98.0
Spring.GetGameState
( )
return: bool finishedLoading, bool loadedFromSave, bool locallyPaused, bool laggingWrtExpectedFromSimtime
- New in version 105.0
Spring.GetFrameTimeOffset
( )
return: nil | number offset
- Gets globalRendering->timeOffset, which contains the offset of the current draw frame from the last sim frame, expressed in fractions of a frame. 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.GetLastUpdateSeconds
( )
return: nil | number lastUpdateSeconds
Spring.GetHasLag
( )
return: bool hasLag
Spring.GetTimer
( )
return: timer
- This function returns a timer type object, which we can use a pair of to calculate the time difference between two timer objects with DiffTimers. However, this time is at best millisecond resolution.
Spring.GetFrameTimer
( [ bool lastFrameTime ] )
return: timer
- New in version 102.0
Get a timer for the start of the frame, this should give better results for camera interpolations. If given an optional boolean true, then it returns the game->lastFrameTime instead of the lastFrameStart
Spring.DiffTimers
( timer cur,
timer ago [,
bool inMilliseconds ] )
return: number seconds
- New in version 95.0
Optional third argument (boolean) to return dt in milliseconds.
Rendering
Spring.GetMapSquareTexture
( number texSqrX, number texSqrY,
number texMipLvl,
string luaTexName )
return: bool success
Logging
Spring.GetLogSections
( )
return: table logSections = { "KeyBindings" = LOG.INFO, "Font" = LOG.INFO, "Sound" = LOG.WARNING, ... }
Misc
Spring.GetClipboard
( )
return: string text
- New in version 98.0