Lua UnsyncedRead: Difference between revisions

From Spring
Jump to navigationJump to search
Floris (talk | contribs)
Updated page with new anchorable templates
Line 3: Line 3:


== Replay/Spectating ==
== Replay/Spectating ==
'''Spring.IsReplay'''
 
  ( ) -> nil | boolean
{{LuaCallout
'''Spring.GetReplayLength''' {{new|92.0}}
|prefix = Spring.
  ( ) -> nil | number (in seconds)
|name = IsReplay
'''Spring.GetSpectatingState'''
|arg1 =
  ( ) -> boolean spectating, boolean fullView, boolean fullSelect
|arg2 =
|arg3 =
|arg4 =
|arg5 =
|arg6 =
|arg7 =
|arg8 =
|arg9 =
|return = {{type|nil}} {{pipe}} {{type|bool}} isReplay
|info =
}}
 
 
{{LuaCallout
|prefix = Spring.
|name = GetReplayLength
|arg1 =
|arg2 =
|arg3 =
|arg4 =
|arg5 =
|arg6 =
|arg7 =
|arg8 =
|arg9 =
|return = {{type|nil}} {{pipe}} {{type|number}} timeInSeconds
|info = {{new|92.0}}
}}
 
 
 
{{LuaCallout
|prefix = Spring.
|name = GetSpectatingState
|arg1 =
|arg2 =
|arg3 =
|arg4 =
|arg5 =
|arg6 =
|arg7 =
|arg8 =
|arg9 =
|return = {{type|bool}} spectating, {{type|bool}} fullView, {{type|bool}} fullSelect
|info =
}}


== Game/Menu Name ==
== Game/Menu Name ==
'''Spring.GetGameName''' {{new|104.0}}
  ( ) -> string name


Apparently returns {{xtaglink|Modinfo.lua|name}} .. {{xtaglink|Modinfo.lua|version}} from [[Modinfo.lua]]. E.g. "Spring: 1944 test-5640-ac2d15b".
{{LuaCallout
|prefix = Spring.
|name = GetGameName
|arg1 =
|arg2 =
|arg3 =
|arg4 =
|arg5 =
|arg6 =
|arg7 =
|arg8 =
|arg9 =
|return = {{type|string}} name
|info = {{new|104.0}}<br>Apparently returns {{xtaglink|Modinfo.lua|name}} .. {{xtaglink|Modinfo.lua|version}} from [[Modinfo.lua]]. E.g. "Spring: 1944 test-5640-ac2d15b".
}}
 


'''Spring.GetMenuName''' {{new|104.0}}
 
  ( ) -> string name
{{LuaCallout
|prefix = Spring.
|name = GetMenuName
|arg1 =
|arg2 =
|arg3 =
|arg4 =
|arg5 =
|arg6 =
|arg7 =
|arg8 =
|arg9 =
|return = {{type|string}} name
|info = {{new|104.0}}
}}


== ModUI ==
== ModUI ==
'''Spring.GetModUICtrl'''
 
  ( ) -> boolean
{{LuaCallout
|prefix = Spring.
|name = GetModUICtrl
|arg1 =
|arg2 =
|arg3 =
|arg4 =
|arg5 =
|arg6 =
|arg7 =
|arg8 =
|arg9 =
|return = {{type|bool}} ModUICtrl
|info =
}}


== MyInfo ==
== MyInfo ==
'''Spring.GetMyAllyTeamID'''
 
  ( ) -> number
{{LuaCallout
'''Spring.GetMyTeamID'''
|prefix = Spring.
  ( ) -> number
|name = GetMyAllyTeamID
'''Spring.GetMyPlayerID'''
|arg1 =
  ( ) -> number
|arg2 =
|arg3 =
|arg4 =
|arg5 =
|arg6 =
|arg7 =
|arg8 =
|arg9 =
|return = {{type|number}} allyTeamID
|info =
}}
 
 
{{LuaCallout
|prefix = Spring.
|name = GetMyTeamID
|arg1 =
|arg2 =
|arg3 =
|arg4 =
|arg5 =
|arg6 =
|arg7 =
|arg8 =
|arg9 =
|return = {{type|number}} teamID
|info =
}}
 
 
{{LuaCallout
|prefix = Spring.
|name = GetMyPlayerID
|arg1 =
|arg2 =
|arg3 =
|arg4 =
|arg5 =
|arg6 =
|arg7 =
|arg8 =
|arg9 =
|return = {{type|number}} playerID
|info =
}}


== Local Player,Team,Ally ==
== Local Player,Team,Ally ==
<span class="note">Redundant same as the GetMyXYZ functions!</span>
<span class="note">Redundant same as the GetMyXYZ functions!</span>


'''Spring.GetLocalPlayerID'''
{{LuaCallout
  ( ) -> number playerID
|prefix = Spring.
'''Spring.GetLocalTeamID'''
|name = GetLocalPlayerID
  ( ) -> number teamID
|arg1 =
'''Spring.GetLocalAllyTeamID'''
|arg2 =
  ( ) -> number allyID
|arg3 =
|arg4 =
|arg5 =
|arg6 =
|arg7 =
|arg8 =
|arg9 =
|return = {{type|number}} playerID
|info =
}}
 
 
{{LuaCallout
|prefix = Spring.
|name = GetLocalTeamID
|arg1 =
|arg2 =
|arg3 =
|arg4 =
|arg5 =
|arg6 =
|arg7 =
|arg8 =
|arg9 =
|return = {{type|number}} teamID
|info =
}}
 
 
{{LuaCallout
|prefix = Spring.
|name = GetLocalTeamID
|arg1 =
|arg2 =
|arg3 =
|arg4 =
|arg5 =
|arg6 =
|arg7 =
|arg8 =
|arg9 =
|return = {{type|number}} allyID
|info =
}}


== Team/Player Info ==
== Team/Player Info ==
'''Spring.GetPlayerRoster'''
 
  ( [number sortType] | [number sortType], [bool showPathingPlayers] ) ->
{{LuaCallout
    nil | playerTable = {
|prefix = Spring.
|name = GetPlayerRoster
|arg1 = {{bracket}}{{type|number}} sortType{{rbracket}} {{pipe}} {{bracket}}{{type|number}} sortType{{rbracket}}, {{bracket}}{{type|bool}} showPathingPlayers{{rbracket}}
|arg2 =
|arg3 =
|arg4 =
|arg5 =
|arg6 =
|arg7 =
|arg8 =
|arg9 =
|return = {{type|nil}} {{pipe}} {{type|table}} playerTable
|info = "playerTable" contains:
}}
<pre>playerTable = {
             [1] = {
             [1] = {
               string  name,
               string  name,
Line 56: Line 243:
             etc...
             etc...
           }
           }
   if pingTime is == -1, the player is pathfinding, in order to find the progress, use:
 
   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
   cpuUsage&0x1 if it's PC or BO, cpuUsage& 0xFE to get path res, (cpuUsage>>8)*1000
   for the progress
   for the progress
   <font color="#55ee99">  Sort codes:
   Sort codes:
     1 = Sort by allies  (the default)
     1 = Sort by allies  (the default)
     2 = Sort by teamID
     2 = Sort by teamID
     3 = Sort by playerName
     3 = Sort by playerName
     4 = Sort by CPU usage
     4 = Sort by CPU usage
     5 = Sort by ping time</font>
     5 = Sort by ping time</pre>
'''Spring.GetTeamColor'''
 
  ( number teamID ) -> nil | number r, number g, number b, number a
 
'''Spring.GetTeamOrigColor'''
{{LuaCallout
  ( number teamID ) -> nil | number r, number g, number b, number a
|prefix = Spring.
'''Spring.GetPlayerTraffic'''
|name = GetTeamColor
  ( number playerID [, number packetID] ) -> number
|arg1 = {{type|number}} teamID
|arg2 =
|arg3 =
|arg4 =
|arg5 =
|arg6 =
|arg7 =
|arg8 =
|arg9 =
|return = {{type|nil}} {{pipe}} {{type|number}} r, {{type|number}} g, {{type|number}} b, {{type|number}} a
|info =
}}
 
 
{{LuaCallout
|prefix = Spring.
|name = GetTeamOrigColor
|arg1 = {{type|number}} teamID
|arg2 =
|arg3 =
|arg4 =
|arg5 =
|arg6 =
|arg7 =
|arg8 =
|arg9 =
|return = {{type|nil}} {{pipe}} {{type|number}} r, {{type|number}} g, {{type|number}} b, {{type|number}} a
|info =
}}
 
 
{{LuaCallout
|prefix = Spring.
|name = GetPlayerTraffic
|arg1 = {{type|number}} playerID {{bracket}}
|arg2 = {{type|number}} packetID {{rbracket}}
|arg3 =
|arg4 =
|arg5 =
|arg6 =
|arg7 =
|arg8 =
|arg9 =
|return = {{type|number}} traffic
|info =
}}


== Sound ==
== Sound ==
'''Spring.GetSoundStreamTime'''
 
  ( ) -> number playedTime, number totalTime
{{LuaCallout
|prefix = Spring.
|name = GetSoundStreamTime
|arg1 =
|arg2 =
|arg3 =
|arg4 =
|arg5 =
|arg6 =
|arg7 =
|arg8 =
|arg9 =
|return = {{type|number}} playedTime, {{type|number}} totalTime,
|info =
}}


== Camera ==
== Camera ==
'''Spring.GetCameraNames'''
  ( ) -> { [camName] = number camNum, ... }
'''Spring.GetCameraState'''
  ( ) -> { "name" = string, "mode" = number camIdx, state1 = number, state2 = number, ... }


See [[Lua_camState]] for details about Spring.GetCameraState output.
{{LuaCallout
|prefix = Spring.
|name = GetCameraNames
|arg1 =
|arg2 =
|arg3 =
|arg4 =
|arg5 =
|arg6 =
|arg7 =
|arg8 =
|arg9 =
|return = { {{bracket|camName}} = {{type|number}} camNum, ... }
|info =
}}
 
 
{{LuaCallout
|prefix = Spring.
|name = GetCameraState
|arg1 =
|arg2 =
|arg3 =
|arg4 =
|arg5 =
|arg6 =
|arg7 =
|arg8 =
|arg9 =
|return = { "name" = string, "mode" = number camIdx, state1 = number, state2 = number, ... }
|info = See [[Lua_camState]] for details about Spring.GetCameraState output.
}}
 
 
{{LuaCallout
|prefix = Spring.
|name = GetCameraPosition
|arg1 =
|arg2 =
|arg3 =
|arg4 =
|arg5 =
|arg6 =
|arg7 =
|arg8 =
|arg9 =
|return = {{type|number}} x, {{type|number}} y, {{type|number}} z
|info =
}}
 
 
{{LuaCallout
|prefix = Spring.
|name = GetCameraDirection
|arg1 =
|arg2 =
|arg3 =
|arg4 =
|arg5 =
|arg6 =
|arg7 =
|arg8 =
|arg9 =
|return = {{type|number}} forward_x, {{type|number}} forward_y, {{type|number}} forward_z
|info =
}}
 


'''Spring.GetCameraPosition'''
{{LuaCallout
  ( ) -> number x, number y, number z
|prefix = Spring.
'''Spring.GetCameraDirection'''
|name = GetCameraFOV
  ( ) -> number forward_x, number forward_y, number forward_z
|arg1 =
'''Spring.GetCameraFOV'''
|arg2 =
  ( ) -> number vFov, number hFov
|arg3 =
'''Spring.GetCameraVectors'''
|arg4 =
  ( ) -> vectorTable = {
|arg5 =
|arg6 =
|arg7 =
|arg8 =
|arg9 =
|return = {{type|number}} vFov, {{type|number}} hFov
|info =
}}
 
 
{{LuaCallout
|prefix = Spring.
|name = GetCameraVectors
|arg1 =
|arg2 =
|arg3 =
|arg4 =
|arg5 =
|arg6 =
|arg7 =
|arg8 =
|arg9 =
|return = {{type|table}} vectorTable
|info = vectorTable contains:
}}
<pre>vectorTable = {
     forward  = { [1] = number x, [2] = number y, [3] = number z },
     forward  = { [1] = number x, [2] = number y, [3] = number z },
     up        = { [1] = number x, [2] = number y, [3] = number z },
     up        = { [1] = number x, [2] = number y, [3] = number z },
Line 99: Line 433:
     leftside  = { [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 }
     rightside = { [1] = number x, [2] = number y, [3] = number z }
   }
   }</pre>


=== Inview ===
=== Inview ===
'''Spring.GetVisibleUnits'''
  ( [number teamID = -1 [, number radius = 30 [, boolean Icons = true ]]] )
    -> nil | unitTable = { [1] = number unitID, ... }
'''Spring.GetVisibleFeatures'''
  ( [number allyTeamID = -1 [, number radius = 30 [, boolean Icons = true [, boolean geos = true ]]]] )
    -> nil | featureTable = { [1] = number featureID, ... }


'''Spring.IsAABBInView'''
{{LuaCallout
  ( number minX, number minY, number minZ,
|prefix = Spring.
    number maxX, number maxY, number maxZ ) -> nil | boolean
|name = GetVisibleUnits
'''Spring.IsSphereInView'''
|arg1 = {{bracket}}{{type|number}} teamID = -1 {{bracket}}
  ( number x, number y, number z [, number radius ] ) -> nil | boolean
|arg2 = {{type|number}} radius = 30 {{bracket}}
'''Spring.IsUnitIcon'''
|arg3 = {{type|bool}} Icons = true {{rbracket}}{{rbracket}}{{rbracket}}
  ( number unitID ) -> nil | boolean
|arg4 =
'''Spring.IsUnitInView'''
|arg5 =
  ( number unitID ) -> nil | boolean
|arg6 =
'''Spring.IsUnitVisible'''
|arg7 =
  ( number unitID [, number radius [, boolean checkIcons] ] ) -> nil | boolean
|arg8 =
|arg9 =
|return = {{type|nil}} {{pipe}} {{type|table}} unitTable = { {{bracket|1}} = {{type|number}} unitID, ... }
|info =
}}
 
 
{{LuaCallout
|prefix = Spring.
|name = GetVisibleFeatures
|arg1 = {{bracket}}{{type|number}} allyTeamID = -1 {{bracket}}
|arg2 = {{type|number}} radius = 30 {{bracket}}
|arg3 = {{type|bool}} Icons = true {{bracket}}
|arg4 = {{type|bool}} geos = true {{rbracket}}{{rbracket}}{{rbracket}}{{rbracket}}
|arg5 =
|arg6 =
|arg7 =
|arg8 =
|arg9 =
|return = {{type|nil}} {{pipe}} {{type|table}} featureTable = { {{bracket|1}} = {{type|number}} featureID, ... }
|info =
}}
 
 
{{LuaCallout
|prefix = Spring.
|name = IsAABBInView
|arg1 = {{type|number}} minX, {{type|number}} minY, {{type|number}} minZ
|arg2 = {{type|number}} maxX, {{type|number}} maxY, {{type|number}} maxZ
|arg3 =
|arg4 =
|arg5 =
|arg6 =
|arg7 =
|arg8 =
|arg9 =
|return = {{type|nil}} {{pipe}} {{type|bool}} isInView
|info =
}}
 
 
{{LuaCallout
|prefix = Spring.
|name = IsSphereInView
|arg1 = {{type|number}} x, {{type|number}} y, {{type|number}} z {{bracket}}
|arg2 = {{type|number}} radius {{rbracket}}
|arg3 =
|arg4 =
|arg5 =
|arg6 =
|arg7 =
|arg8 =
|arg9 =
|return = {{type|nil}} {{pipe}} {{type|bool}} isInView
|info =
}}
 
 
{{LuaCallout
|prefix = Spring.
|name = IsUnitIcon
|arg1 = {{type|number}} unitID  
|arg2 =
|arg3 =
|arg4 =
|arg5 =
|arg6 =
|arg7 =
|arg8 =
|arg9 =
|return = {{type|nil}} {{pipe}} {{type|bool}} isUnitIcon
|info =
}}
 
 
{{LuaCallout
|prefix = Spring.
|name = IsUnitInView
|arg1 = {{type|number}} unitID  
|arg2 =
|arg3 =
|arg4 =
|arg5 =
|arg6 =
|arg7 =
|arg8 =
|arg9 =
|return = {{type|nil}} {{pipe}} {{type|bool}} isUnitInView
|info =
}}
 
 
{{LuaCallout
|prefix = Spring.
|name = IsUnitVisible
|arg1 = {{type|number}} unitID {{bracket}}
|arg2 = {{type|number}} radius {{bracket}}
|arg3 = {{type|bool}} checkIcons {{rbracket}}{{rbracket}}
|arg4 =
|arg5 =
|arg6 =
|arg7 =
|arg8 =
|arg9 =
|return = {{type|nil}} {{pipe}} {{type|bool}} isVisible
|info =
}}


=== Screen Trace ===
=== Screen Trace ===
'''Spring.WorldToScreenCoords'''
  ( number x, number y, number z ) -> number x, number y, number z


'''Spring.TraceScreenRay'''


  ( number mouseX, number mouseY [, boolean onlyCoords
{{LuaCallout
  [, boolean useMinimap [, boolean includeSky [, boolean ignoreWater [, number D] ] ] ] ] )
|prefix = Spring.
    -> nil |
|name = WorldToScreenCoords
    string "unit",    number unitID    |
|arg1 = {{type|number}} x, {{type|number}} y, {{type|number}} z
    string "feature", number featureID |
|arg2 =
    string "ground",  { [1] = number x, [2] = number y, [3] = number z }
|arg3 =
|arg4 =
|arg5 =
|arg6 =
|arg7 =
|arg8 =
|arg9 =
|return = {{type|number}} x, {{type|number}} y, {{type|number}} z
|info =
}}


{{new|101.0}} Exended 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:
{{LuaCallout
|prefix = Spring.
|name = TraceScreenRay
|arg1 = {{type|number}} mouseX, {{type|number}} mouseY, {{type|number}} mouseZ {{bracket}}
|arg2 = {{type|bool}} onlyCoords {{bracket}}
|arg3 = {{type|bool}} useMinimap {{bracket}}
|arg4 = {{type|bool}} includeSky {{bracket}}
|arg5 = {{type|bool}} ignoreWater {{bracket}}
|arg6 ={{type|number}} D {{rbracket}}{{rbracket}}{{rbracket}}{{rbracket}}{{rbracket}}
|arg7 =
|arg8 =
|arg9 =
|return = {{type|nil}} {{pipe}} {{type|string}} unit, {{type|number}} unitID {{pipe}} {{type|string}} feature, {{type|number}} featureID {{pipe}} {{type|string}} ground, {{type|table}} coords = { {{bracket|1}} = {{type|number}} x, {{bracket|2}} = {{type|number}} y, {{bracket|3}} = {{type|number}} z }
|info = {{new|101.0}}
}}
<pre>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()
   local mouseX, mouseY = Spring.GetMouseState()
   print ("Mouse coordinates: (" .. mouseX .. ", " .. mouseY .. ")")
   print ("Mouse coordinates: (" .. mouseX .. ", " .. mouseY .. ")")
Line 144: Line 600:
   local y = args[2]
   local y = args[2]
   local z = args[3]
   local z = args[3]
   print ("World coordinates: (" .. x .. ", " .. y .. ", " .. z .. ")")
   print ("World coordinates: (" .. x .. ", " .. y .. ", " .. z .. ")")</pre>




'''Spring.GetPixelDir''' {{New|95.0}}
{{LuaCallout
  ( number x, number y ) -> number dirx, number diry, number dirz
|prefix = Spring.
|name = GetPixelDir
|arg1 = {{type|number}} x
|arg2 = {{type|number}} y
|arg3 =
|arg4 =
|arg5 =
|arg6 =
|arg7 =
|arg8 =
|arg9 =
|return = {{type|number}} dirX, {{type|number}} dirY, {{type|number}} dirZ
|info = {{New|95.0}}
}}


=== Screen & Window Geometry ===
=== Screen & Window Geometry ===
'''Spring.GetViewGeometry'''
 
  ( ) -> number viewSizeX, number viewSizeY, number viewPosX, number viewPosY
 
'''Spring.GetWindowGeometry'''
{{LuaCallout
  ( ) -> number winSizeX, number winSizeY, number winPosX, number winPosY
|prefix = Spring.
'''Spring.GetScreenGeometry''' (is missing multiscreen support!)
|name = GetViewGeometry
  ( ) -> number screenSizeX, number screenSizeY, number ZERO, number ZERO
|arg1 =
|arg2 =
|arg3 =
|arg4 =
|arg5 =
|arg6 =
|arg7 =
|arg8 =
|arg9 =
|return = {{type|number}} viewSizeX, {{type|number}} viewSizeY, {{type|number}} viewPosX, {{type|number}} viewPosY
|info =
}}
 
 
{{LuaCallout
|prefix = Spring.
|name = GetWindowGeometry
|arg1 =
|arg2 =
|arg3 =
|arg4 =
|arg5 =
|arg6 =
|arg7 =
|arg8 =
|arg9 =
|return = {{type|number}} winSizeX, {{type|number}} winSizeY, {{type|number}} winPosX, {{type|number}} winPosY
|info =
}}
 
 
{{LuaCallout
|prefix = Spring.
|name = GetScreenGeometry
|arg1 =
|arg2 =
|arg3 =
|arg4 =
|arg5 =
|arg6 =
|arg7 =
|arg8 =
|arg9 =
|return = {{type|number}} screenSizeX, {{type|number}} screenSizeY, {{type|number}} ZERO, {{type|number}} ZERO
|info = Is missing multiscreen support!
}}


== Unit ==
== Unit ==
'''Spring.IsUnitAllied'''
 
  ( number unitID ) -> nil | boolean
{{LuaCallout
'''Spring.GetUnitViewPosition'''
|prefix = Spring.
  ( number unitID [, boolean midPos = false ] ) -> nil | number x, number y, number z
|name = IsUnitAllied
'''Spring.GetUnitTransformMatrix'''
|arg1 = {{type|number}} unitID  
  ( number unitID [, boolean invert = false] ) -> nil | number a11, number a12 ..., number a44   <span class=note>(4x4 matrix)</span>
|arg2 =
'''Spring.GetUnitSelectionVolumeData'''
|arg3 =
  ( number unitID )
|arg4 =
  -> number scaleX, number scaleY, number scaleZ,
|arg5 =
  number offsetX, number offsetY, number offsetZ,
|arg6 =
  number volumeType, number testType, number primaryAxis, boolean disabled
|arg7 =
|arg8 =
|arg9 =
|return = {{type|nil}} {{pipe}} {{type|bool}} isAllied
|info =
}}
 
 
{{LuaCallout
|prefix = Spring.
|name = GetUnitViewPosition
|arg1 = {{type|number}} unitID {{bracket}}
|arg2 = {{type|bool}} midPos = false {{rbracket}}
|arg3 =
|arg4 =
|arg5 =
|arg6 =
|arg7 =
|arg8 =
|arg9 =
|return = {{type|nil}} {{pipe}} {{type|number}} x, {{type|number}} y, {{type|number}} z
|info =
}}
 
 
{{LuaCallout
|prefix = Spring.
|name = GetUnitTransformMatrix
|arg1 = {{type|number}} unitID {{bracket}}
|arg2 = {{type|bool}} invert = false {{rbracket}}
|arg3 =
|arg4 =
|arg5 =
|arg6 =
|arg7 =
|arg8 =
|arg9 =
|return = {{type|nil}} {{pipe}} {{type|number}} a11, {{type|number}} a12 ..., {{type|number}} a44 (4x4 matrix)
|info =
}}
 
 
{{LuaCallout
|prefix = Spring.
|name = GetUnitSelectionVolumeData
|arg1 = {{type|number}} unitID
|arg2 =
|arg3 =
|arg4 =
|arg5 =
|arg6 =
|arg7 =
|arg8 =
|arg9 =
|return = {{type|number}} scaleX, {{type|number}} scaleY, {{type|number}} scaleZ, {{type|number}} offsetX, {{type|number}} offsetY, {{type|number}} offsetZ, {{type|number}} volumeType, {{type|number}} testType, {{type|number}} primaryAxis, {{type|bool}} disabled
|info =
}}


=== Selected Units ===
=== Selected Units ===
'''Spring.GetSelectedUnits'''
 
  ( ) -> { [1] = unitID, ... }
{{LuaCallout
'''Spring.GetSelectedUnitsSorted'''
|prefix = Spring.
  ( ) -> { [number unitDefID] = { [1] = [number unitID], etc...}, ... }
|name = GetSelectedUnits
'''Spring.GetSelectedUnitsCounts'''
|arg1 =
  ( ) -> { [number unitDefID] = number count, etc... }
|arg2 =
'''Spring.GetSelectedUnitsCount'''
|arg3 =
  ( ) -> number count
|arg4 =
'''Spring.IsUnitSelected'''
|arg5 =
  ( number unitID ) -> nil | boolean
|arg6 =
|arg7 =
|arg8 =
|arg9 =
|return = { {{bracket|1}} = {{type|number}} unitID, ... }
|info =
}}
 
 
{{LuaCallout
|prefix = Spring.
|name = GetSelectedUnitsSorted
|arg1 =
|arg2 =
|arg3 =
|arg4 =
|arg5 =
|arg6 =
|arg7 =
|arg8 =
|arg9 =
|return = { {{bracket}}{{type|number}} unitDefID{{rbracket}} = { {{bracket|1}} = {{bracket}}{{type|number}} unitID{{rbracket}}, etc... }, ... }
|info =
}}
 
 
{{LuaCallout
|prefix = Spring.
|name = GetSelectedUnitsCounts
|arg1 =
|arg2 =
|arg3 =
|arg4 =
|arg5 =
|arg6 =
|arg7 =
|arg8 =
|arg9 =
|return = { {{bracket}}{{type|number}} unitDefID{{rbracket}} = {{type|number}} count, etc... }
|info =
}}
 
 
{{LuaCallout
|prefix = Spring.
|name = GetSelectedUnitsCount
|arg1 =
|arg2 =
|arg3 =
|arg4 =
|arg5 =
|arg6 =
|arg7 =
|arg8 =
|arg9 =
|return = {{type|number}} count
|info =
}}
 
 
{{LuaCallout
|prefix = Spring.
|name = IsUnitSelected
|arg1 = {{type|number}} unitID  
|arg2 =
|arg3 =
|arg4 =
|arg5 =
|arg6 =
|arg7 =
|arg8 =
|arg9 =
|return = {{type|nil}} {{pipe}} {{type|bool}} isSelected
|info =
}}


=== Unit Groups ===
=== Unit Groups ===
'''Spring.GetUnitGroup'''
  ( number unitID ) -> nil | number


'''Spring.GetGroupList'''
{{LuaCallout
  ( ) -> nil | {
|prefix = Spring.
    [number] = number unitCount,
|name = GetUnitGroup
    ...
|arg1 = {{type|number}} unitID
  }
|arg2 =
'''Spring.GetSelectedGroup'''
|arg3 =
  ( ) -> number
|arg4 =
'''Spring.GetGroupAIName'''
|arg5 =
  ( number groupID ) -> string aiName
|arg6 =
'''Spring.GetGroupAIList'''
|arg7 =
  ( ) -> {
|arg8 =
    [1] = string aiName, ...
|arg9 =
  }
|return = {{type|nil}} {{pipe}} {{type|number}} groupNumber
|info =
}}
 
 
{{LuaCallout
|prefix = Spring.
|name = GetGroupList
|arg1 =
|arg2 =
|arg3 =
|arg4 =
|arg5 =
|arg6 =
|arg7 =
|arg8 =
|arg9 =
|return = {{type|nil}} {{pipe}} { {{bracket|number}} = {{type|number}} unitCount, ... }
|info =
}}
 
 
{{LuaCallout
|prefix = Spring.
|name = GetSelectedGroup
|arg1 =
|arg2 =
|arg3 =
|arg4 =
|arg5 =
|arg6 =
|arg7 =
|arg8 =
|arg9 =
|return = {{type|number}} groupNumber
|info =
}}
 
 
{{LuaCallout
|prefix = Spring.
|name = GetGroupAIName
|arg1 = {{type|number}} groupID
|arg2 =
|arg3 =
|arg4 =
|arg5 =
|arg6 =
|arg7 =
|arg8 =
|arg9 =
|return = {{type|string}} aiName
|info =
}}
 
 
{{LuaCallout
|prefix = Spring.
|name = GetGroupAIList
|arg1 =
|arg2 =
|arg3 =
|arg4 =
|arg5 =
|arg6 =
|arg7 =
|arg8 =
|arg9 =
|return = { {{bracket|1}} = {{type|string}} aiName, ... }
|info =
}}
 
 
{{LuaCallout
|prefix = Spring.
|name = GetGroupUnits
|arg1 = {{type|number}} groupID
|arg2 =
|arg3 =
|arg4 =
|arg5 =
|arg6 =
|arg7 =
|arg8 =
|arg9 =
|return = {{type|nil}} {{pipe}} { {{bracket|1}} = {{type|number}} unitID, ... }
|info =
}}
 
 
{{LuaCallout
|prefix = Spring.
|name = GetGroupUnitsSorted
|arg1 = {{type|number}} groupID
|arg2 =
|arg3 =
|arg4 =
|arg5 =
|arg6 =
|arg7 =
|arg8 =
|arg9 =
|return = {{type|nil}} {{pipe}} { {{bracket}}{{type|number}} unitDefID{{rbracket}} = { {{type|number}} unitID, ... }, ... }
|info =
}}
 
 
{{LuaCallout
|prefix = Spring.
|name = GetGroupUnitsCounts
|arg1 = {{type|number}} groupID
|arg2 =
|arg3 =
|arg4 =
|arg5 =
|arg6 =
|arg7 =
|arg8 =
|arg9 =
|return = {{type|nil}} {{pipe}} { {{bracket}}{{type|number}} unitDefID{{rbracket}} = {{type|number}} count, ... }
|info =
}}
 


'''Spring.GetGroupUnits'''
{{LuaCallout
  ( number groupID ) -> nil | {
|prefix = Spring.
    [1] = number unitID, ...
|name = GetGroupUnitsCount
  }
|arg1 = {{type|number}} groupID
'''Spring.GetGroupUnitsSorted'''
|arg2 =
  ( number groupID ) -> nil | {
|arg3 =
    [number unitDefID] = {number unitID, ...}, ...
|arg4 =  
  }
|arg5 =
'''Spring.GetGroupUnitsCounts'''
|arg6 =
  ( number groupID ) -> nil | {
|arg7 =
    [number unitDefID] = number count, ...
|arg8 =
  }
|arg9 =
'''Spring.GetGroupUnitsCount'''
|return = {{type|nil}} {{pipe}} {{type|number}} count
  ( number groupID ) -> nil | number count
|info =
}}


== Feature ==
== Feature ==
'''Spring.GetFeatureSelectionVolumeData'''
 
  ( number unitID )
{{LuaCallout
  -> number scaleX, number scaleY, number scaleZ,
|prefix = Spring.
  number offsetX, number offsetY, number offsetZ,
|name = GetFeatureSelectionVolumeData
  number volumeType, number testType, number primaryAxis, boolean disabled
|arg1 = {{type|number}} unitID
|arg2 =
|arg3 =
|arg4 =
|arg5 =
|arg6 =
|arg7 =
|arg8 =
|arg9 =
|return = {{type|number}} scaleX, {{type|number}} scaleY, {{type|number}} scaleZ, {{type|number}} offsetX, {{type|number}} offsetY, {{type|number}} offsetZ, {{type|number}} volumeType, {{type|number}} testType, {{type|number}} primaryAxis, {{type|bool}} disabled
|info =
}}


== Projectiles ==
== Projectiles ==
'''Spring.GetVisibleProjectiles''' {{New|95.0}}
  ([ number allyTeamID = -1
  [ , boolean addSyncedProjectiles = true
  [ , boolean addWeaponProjectiles = true
  [ , boolean addPieceProjectiles = true ]]]]
  ) --> nil | {[1] = projectileID, ...}


{{LuaCallout
|prefix = Spring.
|name = GetVisibleProjectiles
|arg1 = {{bracket}} {{type|number}} allyTeamID = -1 {{bracket}}
|arg2 = {{type|bool}} addSyncedProjectiles = true {{bracket}}
|arg3 = {{type|bool}} addWeaponProjectiles = true {{bracket}}
|arg4 = {{type|bool}} addPieceProjectiles = true {{rbracket}}{{rbracket}}{{rbracket}}{{rbracket}}
|arg5 =
|arg6 =
|arg7 =
|arg8 =
|arg9 =
|return = {{type|nil}} {{pipe}} { {{bracket|1}} = {{type|number}} projectileID, ... }
|info =
}}


== UI ==
== UI ==
'''Spring.GetUICommands''' {{new|101.0}}
 
  ( ) -> nil | {
{{LuaCallout
    [1] = {
|prefix = Spring.
      command=string,
|name = GetUICommands
      description=string,
|arg1 =
      synced=bool,
|arg2 =
      cheat=bool,
|arg3 =
    }, ...
|arg4 =
  }
|arg5 =
Returns a list of available [[UI commands]].
|arg6 =
|arg7 =
|arg8 =
|arg9 =
|return = {{type|nil}} {{pipe}} { {{bracket|1}} = { command={{type|string}}, description={{type|string}}, synced={{type|bool}}, cheat={{type|bool}}}, ... }
|info = {{new|101.0}}<br>Returns a list of available [[UI commands]].
}}


=== GUI Settings ===
=== GUI Settings ===
'''Spring.IsGUIHidden'''
  ( ) -> nil | boolean
'''Spring.HaveShadows'''
  ( ) -> nil | boolean
'''Spring.HaveAdvShading'''
  ( ) -> nil | boolean
'''Spring.GetWaterMode'''
  ( ) -> nil | number mode, string "mode"


  <font color="#55ee99">  mode numbers:
{{LuaCallout
|prefix = Spring.
|name = IsGUIHidden
|arg1 =
|arg2 =
|arg3 =
|arg4 =
|arg5 =
|arg6 =
|arg7 =
|arg8 =
|arg9 =
|return = {{type|nil}} {{pipe}}  {{type|bool}} isHidden
|info =
}}
 
 
{{LuaCallout
|prefix = Spring.
|name = HaveShadows
|arg1 =
|arg2 =
|arg3 =
|arg4 =
|arg5 =
|arg6 =
|arg7 =
|arg8 =
|arg9 =
|return = {{type|nil}} {{pipe}}  {{type|bool}} haveShadows
|info =
}}
 
 
{{LuaCallout
|prefix = Spring.
|name = HaveAdvShading
|arg1 =
|arg2 =
|arg3 =
|arg4 =
|arg5 =
|arg6 =
|arg7 =
|arg8 =
|arg9 =
|return = {{type|nil}} {{pipe}} {{type|bool}} haveShading
|info =
}}
 
 
{{LuaCallout
|prefix = Spring.
|name = GetWaterMode
|arg1 =
|arg2 =
|arg3 =
|arg4 =
|arg5 =
|arg6 =
|arg7 =
|arg8 =
|arg9 =
|return = {{type|nil}} {{pipe}} {{type|number}} mode, {{type|string}} mode
|info =
}}
<pre>  mode numbers:
       0 - basic
       0 - basic
       1 - reflective
       1 - reflective
Line 260: Line 1,109:
       3 - refractive
       3 - refractive
       4 - bumpwater
       4 - bumpwater
       default - unknown</font>
       default - unknown</pre>
'''Spring.GetMapDrawMode'''
 
  ( ) -> nil | "normal" | "height" | "metal" | "pathTraversability" | "los"
 
'''Spring.GetDrawSelectionInfo''' <font color="#55ee99">Returns whether &quot;Selected units&quot; text is displayed.</font>
 
  ( ) -> boolean
{{LuaCallout
|prefix = Spring.
|name = GetMapDrawMode
|arg1 =
|arg2 =
|arg3 =
|arg4 =
|arg5 =
|arg6 =
|arg7 =
|arg8 =
|arg9 =
|return = {{type|nil}} {{pipe}} {{type|string}} "normal" {{pipe}} {{type|string}} "height" {{pipe}} {{type|string}} "metal" {{pipe}} {{type|string}} "pathTraversability" {{pipe}} {{type|string}} "los"
|info =
}}
 
 
{{LuaCallout
|prefix = Spring.
|name = GetDrawSelectionInfo
|arg1 =
|arg2 =
|arg3 =
|arg4 =
|arg5 =
|arg6 =
|arg7 =
|arg8 =
|arg9 =
|return = {{type|bool}} drawSelectInfo
|info = Returns whether &quot;Selected units&quot; text is displayed.
}}


=== Unit & Feature GUI States ===
=== Unit & Feature GUI States ===
'''Spring.GetUnitLuaDraw'''
 
  ( number unitID ) -> nil | boolean
 
'''Spring.GetUnitNoDraw'''
{{LuaCallout
  ( number unitID ) -> nil | boolean
|prefix = Spring.
'''Spring.GetUnitNoMinimap'''
|name = GetUnitLuaDraw
  ( number unitID ) -> nil | boolean
|arg1 = {{type|number}} unitID
'''Spring.GetUnitNoSelect'''
|arg2 =
  ( number unitID ) -> nil | boolean
|arg3 =
'''Spring.GetFeatureLuaDraw'''
|arg4 =
  ( number featureID ) -> nil | boolean
|arg5 =
'''Spring.GetFeatureNoDraw'''
|arg6 =
  ( number featureID ) -> nil | boolean
|arg7 =
|arg8 =
|arg9 =
|return = {{type|nil}} {{pipe}} {{type|bool}} unitDraw
|info =
}}
 
 
 
{{LuaCallout
|prefix = Spring.
|name = GetUnitNoDraw
|arg1 = {{type|number}} unitID
|arg2 =
|arg3 =
|arg4 =
|arg5 =
|arg6 =
|arg7 =
|arg8 =
|arg9 =
|return = {{type|nil}} {{pipe}} {{type|bool}} noDraw
|info =
}}
 
 
{{LuaCallout
|prefix = Spring.
|name = GetUnitNoMinimap
|arg1 = {{type|number}} unitID
|arg2 =
|arg3 =
|arg4 =
|arg5 =
|arg6 =
|arg7 =
|arg8 =
|arg9 =
|return = {{type|nil}} {{pipe}} {{type|bool}} noMinimap
|info =
}}
 
 
{{LuaCallout
|prefix = Spring.
|name = GetUnitNoSelect
|arg1 = {{type|number}} unitID
|arg2 =
|arg3 =
|arg4 =
|arg5 =
|arg6 =
|arg7 =
|arg8 =
|arg9 =
|return = {{type|nil}} {{pipe}} {{type|bool}} noSelect
|info =
}}
 
 
{{LuaCallout
|prefix = Spring.
|name = GetFeatureLuaDraw
|arg1 = {{type|number}} featureID
|arg2 =
|arg3 =
|arg4 =
|arg5 =
|arg6 =
|arg7 =
|arg8 =
|arg9 =
|return = {{type|nil}} {{pipe}} {{type|bool}} featureDraw
|info =
}}
 
 
 
{{LuaCallout
|prefix = Spring.
|name = GetFeatureNoDraw
|arg1 = {{type|number}} featureID
|arg2 =
|arg3 =
|arg4 =
|arg5 =
|arg6 =
|arg7 =
|arg8 =
|arg9 =
|return = {{type|nil}} {{pipe}} {{type|bool}} noDraw
|info =
}}


=== Minimap ===
=== Minimap ===
'''Spring.GetMiniMapGeometry'''
  ( ) -> number posX, number posY, number sizeX, number sizeY,
    boolean minimized, boolean maximized
'''Spring.GetMiniMapDualScreen'''
  ( ) -> boolean false | string "left" | string "right"
'''Spring.IsAboveMiniMap'''
  ( number x, number y ) -> nil | boolean


{{LuaCallout
|prefix = Spring.
|name = GetMiniMapGeometry
|arg1 =
|arg2 =
|arg3 =
|arg4 =
|arg5 =
|arg6 =
|arg7 =
|arg8 =
|arg9 =
|return = {{type|number}} posX, {{type|number}} posY, {{type|number}} sizeX, {{type|number}} sizeY, {{type|bool}} minimized, {{type|bool}} maximized
|info =
}}
{{LuaCallout
|prefix = Spring.
|name = GetMiniMapDualScreen
|arg1 =
|arg2 =
|arg3 =
|arg4 =
|arg5 =
|arg6 =
|arg7 =
|arg8 =
|arg9 =
|return = {{type|bool}} false {{pipe}} {{type|string}} "left" {{pipe}} {{type|string}} "right"
|info =
}}
{{LuaCallout
|prefix = Spring.
|name = IsAboveMiniMap
|arg1 = {{type|number}} x
|arg2 = {{type|number}} y
|arg3 =
|arg4 =
|arg5 =
|arg6 =
|arg7 =
|arg8 =
|arg9 =
|return = {{type|nil}} {{pipe}} {{type|bool}} isAbove
|info =
}}


=== (Build-)Menu ===
=== (Build-)Menu ===
'''Spring.GetActiveCommand'''
 
  ( ) -> nil | number index (, number cmd_id, number cmd_type, string cmd_name)
{{LuaCallout
'''Spring.GetDefaultCommand'''
|prefix = Spring.
  ( ) -> nil | number index (, number cmd_id, number cmd_type, string cmd_name)
|name = GetActiveCommand
'''Spring.GetActiveCmdDescs'''
|arg1 =
  ( ) -> nil | {
|arg2 =
|arg3 =
|arg4 =
|arg5 =
|arg6 =
|arg7 =
|arg8 =
|arg9 =
|return = {{type|nil}} {{pipe}} {{type|number}} index {{bracket}}, {{type|number}} cmd_id, {{type|number}} cmd_type, {{type|string}} cmd_name {{rbracket}}
|info =
}}
 
 
{{LuaCallout
|prefix = Spring.
|name = GetDefaultCommand
|arg1 =
|arg2 =
|arg3 =
|arg4 =
|arg5 =
|arg6 =
|arg7 =
|arg8 =
|arg9 =
|return = {{type|nil}} {{pipe}} {{type|number}} index {{bracket}}, {{type|number}} cmd_id, {{type|number}} cmd_type, {{type|string}} cmd_name {{rbracket}}
|info =
}}
 
 
{{LuaCallout
|prefix = Spring.
|name = GetActiveCmdDescs
|arg1 =
|arg2 =
|arg3 =
|arg4 =
|arg5 =
|arg6 =
|arg7 =
|arg8 =
|arg9 =
|return = {{type|nil}} {{pipe}} {{type|table}} cmdDesc
|info = cmdDesc contains:
}}
<pre>cmdDesc = {
     [1] = {
     [1] = {
       id=number,
       id=number,
Line 311: Line 1,370:
       params = { [1] = string, .. }
       params = { [1] = string, .. }
     }, ...
     }, ...
   }
   }</pre>
'''Spring.GetActiveCmdDesc'''
 
  ( number index ) -> nil | {
 
{{LuaCallout
|prefix = Spring.
|name = GetActiveCmdDesc
|arg1 =
|arg2 =
|arg3 =
|arg4 =
|arg5 =
|arg6 =
|arg7 =
|arg8 =
|arg9 =
|return = {{type|nil}} {{pipe}} {{type|table}} cmdDesc
|info = cmdDesc contains:
}}
<pre>cmdDesc = {
       id=number,
       id=number,
       type=number,
       type=number,
Line 326: Line 1,401:
       onlyTexture=boolean,
       onlyTexture=boolean,
       params = { [1] = string, .. }
       params = { [1] = string, .. }
   }
   }</pre>
'''Spring.GetCmdDescIndex'''
 
  ( number cmdID ) -> nil | number index
 
'''Spring.GetActivePage'''
{{LuaCallout
  ( ) -> nil | number pageNum, number maxPages
|prefix = Spring.
|name = GetCmdDescIndex
|arg1 = {{type|number}} cmdID
|arg2 =
|arg3 =
|arg4 =
|arg5 =
|arg6 =
|arg7 =
|arg8 =
|arg9 =
|return = {{type|nil}} {{pipe}} {{type|number}} index
|info =
}}
 
 
{{LuaCallout
|prefix = Spring.
|name = GetActivePage
|arg1 =
|arg2 =
|arg3 =
|arg4 =
|arg5 =
|arg6 =
|arg7 =
|arg8 =
|arg9 =
|return = {{type|nil}} {{pipe}} {{type|number}} pageNum, {{type|number}} maxPages
|info =
}}


=== Build Facing ===
=== Build Facing ===
'''Spring.GetBuildFacing'''
 
  ( ) -> nil | number
{{LuaCallout
'''Spring.GetBuildSpacing'''
|prefix = Spring.
  ( ) -> nil | number
|name = GetBuildFacing
|arg1 =
|arg2 =
|arg3 =
|arg4 =
|arg5 =
|arg6 =
|arg7 =
|arg8 =
|arg9 =
|return = {{type|nil}} {{pipe}} {{type|number}} facing
|info =
}}
 
 
{{LuaCallout
|prefix = Spring.
|name = GetBuildSpacing
|arg1 =
|arg2 =
|arg3 =
|arg4 =
|arg5 =
|arg6 =
|arg7 =
|arg8 =
|arg9 =
|return = {{type|nil}} {{pipe}} {{type|number}} spacing
|info =
}}


=== GatherMode & InvertQueueKey ===
=== GatherMode & InvertQueueKey ===
'''Spring.GetGatherMode'''
 
  ( ) -> nil | number
{{LuaCallout
'''Spring.GetInvertQueueKey'''
|prefix = Spring.
  ( ) -> nil | boolean
|name = GetGatherMode
|arg1 =
|arg2 =
|arg3 =
|arg4 =
|arg5 =
|arg6 =
|arg7 =
|arg8 =
|arg9 =
|return = {{type|nil}} {{pipe}} {{type|number}} gatherMode
|info =
}}
 
 
{{LuaCallout
|prefix = Spring.
|name = GetInvertQueueKey
|arg1 =
|arg2 =
|arg3 =
|arg4 =
|arg5 =
|arg6 =
|arg7 =
|arg8 =
|arg9 =
|return = {{type|nil}} {{pipe}} {{type|number}} queueKey
|info =
}}


=== Mouse States ===
=== Mouse States ===
'''Spring.GetMouseState'''


  ( ) -> number X, number Y,
{{LuaCallout
    boolean leftPressed, boolean middlePressed, boolean rightPressed,
|prefix = Spring.
    boolean offscreen
|name = GetMouseState
|arg1 =
|arg2 =
|arg3 =
|arg4 =
|arg5 =
|arg6 =
|arg7 =
|arg8 =
|arg9 =
|return = {{type|number}} x, {{type|number}} y, {{type|bool}} leftPressed, {{type|bool}} middlePressed, {{type|bool}} rightPressed, {{type|bool}} offscreen
|info = {{new|104.0}} Sixth return value offscreen.<br>X, Y are the screen coordinates, not world ones. This coordinate system starts in the lower left corner. For world coordinates see Spring.TraceScreenRay.
}}


X, Y are the screen coordinates, not world ones. This coordinate system starts in the lower left corner.


{{new|104.0}} Sixth return value offscreen
{{LuaCallout
|prefix = Spring.
|name = GetMouseCursor
|arg1 =
|arg2 =
|arg3 =
|arg4 =
|arg5 =
|arg6 =
|arg7 =
|arg8 =
|arg9 =
|return = {{type|string }} name, {{type|number}} scale
|info =
}}


For world coordinates see Spring.TraceScreenRay


'''Spring.GetMouseCursor'''
{{LuaCallout
  ( ) -> string name, number scale
|prefix = Spring.
'''Spring.GetMouseStartPosition'''
|name = GetMouseStartPosition
  ( number mouseButton ) -> nil | number pressedX, number pressedY,
|arg1 = {{type|number}} mouseButton  
    number camPosX, number camPosY, number camPosZ,
|arg2 =
    number dirX, number dirY, number dirZ
|arg3 =
|arg4 =
|arg5 =
|arg6 =
|arg7 =
|arg8 =
|arg9 =
|return = {{type|nil}} {{pipe}} {{type|number}} pressedX, {{type|number}} pressedY, {{type|number}} camPosX, {{type|number}} camPosY, {{type|number}} camPosZ, {{type|number}} dirX, {{type|number}} dirY, {{type|number}} dirZ
|info =
}}


=== (Hot-)Keys ===
=== (Hot-)Keys ===
'''Spring.GetKeyState'''
  ( number key ) -> nil | boolean
'''Spring.GetModKeyState'''
  ( ) -> boolean alt, boolean ctrl, boolean meta, boolean shift
'''Spring.GetPressedKeys'''
  ( ) -> {
    [number code] = boolean,
    [string name] = boolean, {{new|99.0}}
    ...
  }


'''Spring.GetKeyCode'''
{{LuaCallout
  ( string keysym ) -> number
|prefix = Spring.
'''Spring.GetKeySymbol'''
|name = GetKeyState
  ( number key ) -> string "keysym1", string "keysym2"
|arg1 = {{type|number}} key
'''Spring.GetKeyBindings'''
|arg2 =
  ( string keyset ) -> nil | {
|arg3 =
|arg4 =
|arg5 =
|arg6 =
|arg7 =
|arg8 =
|arg9 =
|return = {{type|nil}} {{pipe}} {{type|bool}} keyState
|info =
}}
 
 
{{LuaCallout
|prefix = Spring.
|name = GetModKeyState
|arg1 =
|arg2 =
|arg3 =
|arg4 =
|arg5 =
|arg6 =
|arg7 =
|arg8 =
|arg9 =
|return = {{type|bool}} alt, {{type|bool}} ctrl, {{type|bool}} meta, {{type|bool}} shift
|info =
}}
 
 
{{LuaCallout
|prefix = Spring.
|name = GetPressedKeys
|arg1 =
|arg2 =
|arg3 =
|arg4 =
|arg5 =
|arg6 =
|arg7 =
|arg8 =
|arg9 =
|return = { {{bracket}}{{type|number}} code{{rbracket}} = {{type|bool}}, {{bracket}}{{type|string}} name{{rbracket}} = {{type|bool}}, ... }
|info = {{new|99.0}}: {{type|string}} name
}}
 
 
 
{{LuaCallout
|prefix = Spring.
|name = GetKeyCode
|arg1 = {{type|string}} keysym
|arg2 =
|arg3 =
|arg4 =
|arg5 =
|arg6 =
|arg7 =
|arg8 =
|arg9 =
|return = {{type|number}} keyCode
|info =
}}
 
 
{{LuaCallout
|prefix = Spring.
|name = GetKeySymbol
|arg1 = {{type|number}} key
|arg2 =
|arg3 =
|arg4 =
|arg5 =
|arg6 =
|arg7 =
|arg8 =
|arg9 =
|return = {{type|string}} "keysym1", {{type|string}} "keysym2"
|info =
}}
 
 
{{LuaCallout
|prefix = Spring.
|name = GetKeyBindings
|arg1 = {{type|string}} keyset  
|arg2 =
|arg3 =
|arg4 =
|arg5 =
|arg6 =
|arg7 =
|arg8 =
|arg9 =
|return = {{type|nil}} {{pipe}} {{type|table}} keyBindings
|info = keyBindings contains:
}}
<pre>keyBindings = {
     [1] = {
     [1] = {
       [string actionCmd] = string actionExtra,
       [string actionCmd] = string actionExtra,
Line 388: Line 1,669:
       extra    = string actionExtra,  {{new|97}}
       extra    = string actionExtra,  {{new|97}}
     }, ...
     }, ...
   }
   }</pre>
'''Spring.GetActionHotKeys'''
 
  ( string action ) -> nil | { [1] = string hotKey, ... }
 
{{LuaCallout
|prefix = Spring.
|name = GetActionHotKeys
|arg1 = {{type|string}} action
|arg2 =
|arg3 =
|arg4 =
|arg5 =
|arg6 =
|arg7 =
|arg8 =
|arg9 =
|return = {{type|nil}} {{pipe}} { {{bracket|1}} = {{type|string}} hotKey, ... }
|info =
}}


=== Console ===
=== Console ===
'''Spring.GetLastMessagePositions'''
 
  ( ) -> nil | {
 
    [1] = { number X, number Y, number Z },
{{LuaCallout
    ...
|prefix = Spring.
  }
|name = GetLastMessagePositions
'''Spring.GetConsoleBuffer'''
|arg1 =
  ( [number maxLines] ) -> nil | {
|arg2 =
    [1] = {
|arg3 =
      text = string,
|arg4 =
      priority = number
|arg5 =
  }, ...
|arg6 =
  }
|arg7 =
'''Spring.GetCurrentTooltip'''
|arg8 =
  ( ) -> string
|arg9 =
|return = {{type|nil}} {{pipe}} { {{bracket|1}} = { {{type|number}} x, {{type|number}} y, {{type|number}} z }, ... }
|info =
}}
 
 
{{LuaCallout
|prefix = Spring.
|name = GetConsoleBuffer
|arg1 = {{bracket}}{{type|number}} maxLines{{rbracket}}
|arg2 =
|arg3 =
|arg4 =
|arg5 =
|arg6 =
|arg7 =
|arg8 =
|arg9 =
|return = {{type|nil}} {{pipe}} { {{bracket|1}} = { text = {{type|string}}, priority = {{type|number}} }, ... }
|info =
}}
 
 
{{LuaCallout
|prefix = Spring.
|name = GetCurrentTooltip
|arg1 =
|arg2 =
|arg3 =
|arg4 =
|arg5 =
|arg6 =
|arg7 =
|arg8 =
|arg9 =
|return = {{type|string}} tooltip
|info =
}}


=== LOS Colors ===
=== LOS Colors ===
'''Spring.GetLosViewColors'''


  ( ) -> always = {r,g,b}, LOS = {r,g,b}, radar = {r,g,b}, jam = {r,g,b}, radar2 = {r,g,b} {{new|100}}
{{LuaCallout
|prefix = Spring.
|name = GetLosViewColors
|arg1 =
|arg2 =
|arg3 =
|arg4 =
|arg5 =
|arg6 =
|arg7 =
|arg8 =
|arg9 =
|return = {{type|table}} always = {r,g,b}, {{type|table}} LOS = {r,g,b}, {{type|table}} radar = {r,g,b}, {{type|table}} jam = {r,g,b}, {{type|table}} radar2 = {r,g,b}
|info = {{new|100}}
}}


== Config ==
== Config ==
'''Spring.GetConfigParams''' <span class="note">same information as <code>spring --list-config-vars</code></span>
 
  ( ) -> table {
{{LuaCallout
|prefix = Spring.
|name = GetConfigParams
|arg1 =
|arg2 =
|arg3 =
|arg4 =
|arg5 =
|arg6 =
|arg7 =
|arg8 =
|arg9 =
|return = {{type|table}} configParams
|info = Same information as <code>spring --list-config-vars</code><br>configParams contains:
}}
<pre>configParams = {
     {
     {
       name = string,
       name = string,
Line 429: Line 1,790:
     },
     },
     ...
     ...
   }
   }</pre>
 
 
{{LuaCallout
|prefix = Spring.
|name = GetConfigInt
|arg1 = {{type|string}} name {{bracket}}
|arg2 = {{type|number}} default {{rbracket}}
|arg3 =
|arg4 =
|arg5 =
|arg6 =
|arg7 =
|arg8 =
|arg9 =
|return = {{type|nil}} {{pipe}} {{type|number}} configInt
|info =
}}
 


'''Spring.GetConfigInt'''
{{LuaCallout
  ( string name [, number default ] ) -> nil | number
|prefix = Spring.
|name = GetConfigFloat
|arg1 = {{type|string}} name {{bracket}}
|arg2 = {{type|number}} default {{rbracket}}
|arg3 =
|arg4 =
|arg5 =
|arg6 =
|arg7 =
|arg8 =
|arg9 =
|return = {{type|nil}} {{pipe}} {{type|number}} configFloat
|info = {{new|104.0}}
}}


'''Spring.GetConfigFloat''' {{new|104.0}}
  ( string name [, number default ] ) -> nil | number


'''Spring.GetConfigString'''
{{LuaCallout
  ( string name [, string default ] ) -> nil | string
|prefix = Spring.
|name = GetConfigString
|arg1 = {{type|string}} name {{bracket}}
|arg2 = {{type|number}} default {{rbracket}}
|arg3 =
|arg4 =
|arg5 =
|arg6 =
|arg7 =
|arg8 =
|arg9 =
|return = {{type|nil}} {{pipe}} {{type|string}} configString
|info =
}}


== FPS & GetDrawFrame ==
== FPS & GetDrawFrame ==
'''Spring.GetFPS'''
 
  ( ) -> number
 
'''Spring.GetDrawFrame'''
{{LuaCallout
  ( ) -> number low 16bit, number high 16bit
|prefix = Spring.
'''Spring.GetVideoCapturingMode''' {{new|104.0}}
|name = GetFPS
  ( ) -> boolean videoCaptureAllowed
|arg1 =
|arg2 =
|arg3 =
|arg4 =
|arg5 =
|arg6 =
|arg7 =
|arg8 =
|arg9 =
|return = {{type|number}} fps
|info =
}}
 
 
{{LuaCallout
|prefix = Spring.
|name = GetDrawFrame
|arg1 =
|arg2 =
|arg3 =
|arg4 =
|arg5 =
|arg6 =
|arg7 =
|arg8 =
|arg9 =
|return = {{type|number}} low_16bit, {{type|number}} high_16bit
|info =
}}
 
 
{{LuaCallout
|prefix = Spring.
|name = GetVideoCapturingMode
|arg1 =
|arg2 =
|arg3 =
|arg4 =
|arg5 =
|arg6 =
|arg7 =
|arg8 =
|arg9 =
|return = {{type|bool}} videoCaptureAllowed
|info = {{new|104.0}}
}}


== Time ==
== Time ==
'''Spring.GetGameSpeed''' {{new|98.0}}
  ( ) -> number userSpeedFactor, number speedFactor, boolean paused
'''Spring.GetGameState''' {{new|105.0}}
  ( ) -> boolean finishedLoading, boolean loadedFromSave, boolean locallyPaused, boolean laggingWrtExpectedFromSimtime
'''Spring.GetFrameTimeOffset'''
  ( ) -> nil | number
'''Spring.GetLastUpdateSeconds'''
  ( ) -> nil | number
'''Spring.GetHasLag'''
  ( ) -> boolean
'''Spring.GetTimer'''
  ( ) -> timer
'''Spring.GetFrameTimer''' {{new|102.0}}
  ( ) -> timer
<span class="note">Get a timer for the start of the frame, this should give better results for camera interpolations.</span>


'''Spring.DiffTimers'''
{{LuaCallout
  ( timer cur, timer ago, [boolean inMilliseconds]) -> number seconds
|prefix = Spring.
{{New|95.0}} optional third argument (boolean) to return dt in milliseconds
|name = GetGameSpeed
|arg1 =
|arg2 =
|arg3 =
|arg4 =
|arg5 =
|arg6 =
|arg7 =
|arg8 =
|arg9 =
|return = {{type|number}} userSpeedFactor, {{type|number}} speedFactor, {{type|bool}} paused
|info = {{new|98.0}}
}}
 
 
{{LuaCallout
|prefix = Spring.
|name = GetGameState
|arg1 =
|arg2 =
|arg3 =
|arg4 =
|arg5 =
|arg6 =
|arg7 =
|arg8 =
|arg9 =
|return = {{type|bool}} finishedLoading, {{type|bool}} loadedFromSave, {{type|bool}} locallyPaused, {{type|bool}} laggingWrtExpectedFromSimtime
|info = {{new|105.0}}
}}
 
 
{{LuaCallout
|prefix = Spring.
|name = GetFrameTimeOffset
|arg1 =
|arg2 =
|arg3 =
|arg4 =
|arg5 =
|arg6 =
|arg7 =
|arg8 =
|arg9 =
|return = {{type|nil}} {{pipe}} {{type|number}} offset
|info =
}}
 
 
{{LuaCallout
|prefix = Spring.
|name = GetLastUpdateSeconds
|arg1 =
|arg2 =
|arg3 =
|arg4 =
|arg5 =
|arg6 =
|arg7 =
|arg8 =
|arg9 =
|return = {{type|nil}} {{pipe}} {{type|number}} lastUpdateSeconds
|info =
}}
 
 
{{LuaCallout
|prefix = Spring.
|name = GetHasLag
|arg1 =
|arg2 =
|arg3 =
|arg4 =
|arg5 =
|arg6 =
|arg7 =
|arg8 =
|arg9 =
|return = {{type|bool}} hasLag
|info =
}}
 
 
 
{{LuaCallout
|prefix = Spring.
|name = GetTimer
|arg1 =
|arg2 =
|arg3 =
|arg4 =
|arg5 =
|arg6 =
|arg7 =
|arg8 =
|arg9 =
|return = {{type|timer}}
|info =
}}
 
 
{{LuaCallout
|prefix = Spring.
|name = GetFrameTimer
|arg1 =
|arg2 =
|arg3 =
|arg4 =
|arg5 =
|arg6 =
|arg7 =
|arg8 =
|arg9 =
|return = {{type|timer}}
|info = {{new|102.0}}<br>Get a timer for the start of the frame, this should give better results for camera interpolations.
}}
 
 
{{LuaCallout
|prefix = Spring.
|name = DiffTimers
|arg1 = {{type|timer}} cur
|arg2 = {{type|timer}} ago {{bracket}}
|arg3 = {{type|bool}} inMilliseconds {{rbracket}}
|arg4 =
|arg5 =
|arg6 =
|arg7 =
|arg8 =
|arg9 =
|return = {{type|number}} seconds
|info = {{New|95.0}}<br>Optional third argument (boolean) to return dt in milliseconds.
}}


== Rendering ==
== Rendering ==


'''Spring.GetMapSquareTexture'''
{{LuaCallout
  (number texSqrX, number texSqrY, number texMipLvl, string luaTexName) -> boolean success
|prefix = Spring.
|name = GetMapSquareTexture
|arg1 = {{type|number}} texSqrX, {{type|number}} texSqrY
|arg2 = {{type|number}} texMipLvl
|arg3 = {{type|string}} luaTexName
|arg4 =
|arg5 =
|arg6 =
|arg7 =
|arg8 =
|arg9 =
|return = {{type|bool}} success
|info =
}}


== Logging ==
== Logging ==
'''Spring.GetLogSections'''
 
  ( ) -> table { "KeyBindings" = LOG.INFO, "Font" = LOG.INFO, "Sound" = LOG.WARNING, ... }
{{LuaCallout
|prefix = Spring.
|name = GetLogSections
|arg1 =
|arg2 =
|arg3 =
|arg4 =
|arg5 =
|arg6 =
|arg7 =
|arg8 =
|arg9 =
|return = {{type|table}} logSections = { "KeyBindings" = LOG.INFO, "Font" = LOG.INFO, "Sound" = LOG.WARNING, ... }
|info =
}}


== Misc ==
== Misc ==
'''Spring.GetClipboard''' {{new|98.0}}
 
  ( ) -> string text
{{LuaCallout
|prefix = Spring.
|name = GetClipboard
|arg1 =
|arg2 =
|arg3 =
|arg4 =
|arg5 =
|arg6 =
|arg7 =
|arg8 =
|arg9 =
|return = {{type|string}} text
|info = {{new|98.0}}
}}


[[category: Lua]]
[[category: Lua]]

Revision as of 22:28, 19 April 2021

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.GetLocalTeamID ( )
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, number mouseZ [, 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


Spring.GetKeyCode ( string keysym )
return: number keyCode


Spring.GetKeySymbol ( number key )
return: string "keysym1", string "keysym2"


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

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


Spring.GetLastUpdateSeconds ( )
return: nil | number lastUpdateSeconds


Spring.GetHasLag ( )
return: bool hasLag


Spring.GetTimer ( )
return: timer


Spring.GetFrameTimer ( )
return: timer

New in version 102.0
Get a timer for the start of the frame, this should give better results for camera interpolations.


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