User:Master-athmos: Difference between revisions

From Spring
Jump to navigationJump to search
No edit summary
No edit summary
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 =
}}
 
 
{{LuaCallout
|prefix = Spring.
|name = GetCameraFOV
|arg1 =
|arg2 =
|arg3 =
|arg4 =
|arg5 =
|arg6 =
|arg7 =
|arg8 =
|arg9 =
|return = {{type|number}} vFov, {{type|number}} hFov
|info =
}}
 


'''Spring.GetCameraPosition'''
{{LuaCallout
  ( ) -> number x, number y, number z
|prefix = Spring.
'''Spring.GetCameraDirection'''
|name = GetCameraVectors
  ( ) -> 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|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 =
}}


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

Revision as of 19:13, 19 April 2021

Development < Lua Scripting < User:Master-athmos

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

 ( ) -> nil | boolean

Spring.HaveShadows

 ( ) -> nil | boolean

Spring.HaveAdvShading

 ( ) -> nil | boolean

Spring.GetWaterMode

 ( ) -> nil | number mode, string "mode"
   mode numbers:
     0 - basic
     1 - reflective
     2 - dynamic
     3 - refractive
     4 - bumpwater
     default - unknown

Spring.GetMapDrawMode

 ( ) -> nil | "normal" | "height" | "metal" | "pathTraversability" | "los"

Spring.GetDrawSelectionInfo Returns whether "Selected units" text is displayed.

 ( ) -> boolean

Unit & Feature GUI States

Spring.GetUnitLuaDraw

 ( number unitID ) -> nil | boolean

Spring.GetUnitNoDraw

 ( number unitID ) -> nil | boolean

Spring.GetUnitNoMinimap

 ( number unitID ) -> nil | boolean

Spring.GetUnitNoSelect

 ( number unitID ) -> nil | boolean

Spring.GetFeatureLuaDraw

 ( number featureID ) -> nil | boolean

Spring.GetFeatureNoDraw

 ( number featureID ) -> nil | boolean

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


(Build-)Menu

Spring.GetActiveCommand

 ( ) -> nil | number index (, number cmd_id, number cmd_type, string cmd_name)

Spring.GetDefaultCommand

 ( ) -> nil | number index (, number cmd_id, number cmd_type, string cmd_name)

Spring.GetActiveCmdDescs

 ( ) -> nil | {
   [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

 ( number index ) -> nil | {
     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 ) -> nil | number index

Spring.GetActivePage

 ( ) -> nil | number pageNum, number maxPages

Build Facing

Spring.GetBuildFacing

 ( ) -> nil | number

Spring.GetBuildSpacing

 ( ) -> nil | number

GatherMode & InvertQueueKey

Spring.GetGatherMode

 ( ) -> nil | number

Spring.GetInvertQueueKey

 ( ) -> nil | boolean

Mouse States

Spring.GetMouseState

 ( ) -> number X, number Y,
   boolean leftPressed, boolean middlePressed, boolean rightPressed,
   boolean offscreen

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

New in version 104.0 Sixth return value offscreen

For world coordinates see Spring.TraceScreenRay

Spring.GetMouseCursor

 ( ) -> string name, number scale

Spring.GetMouseStartPosition

 ( number mouseButton ) -> nil | number pressedX, number pressedY,
   number camPosX, number camPosY, number camPosZ,
   number dirX, number dirY, number dirZ

(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 in version 99.0
   ...
 }

Spring.GetKeyCode

 ( string keysym ) -> number

Spring.GetKeySymbol

 ( number key ) -> string "keysym1", string "keysym2"

Spring.GetKeyBindings

 ( string keyset ) -> nil | {
   [1] = {
     [string actionCmd] = string actionExtra,
     command   = string actionCmd,    New in version 97
     boundWith = string boundWith,    New in version 97
     extra     = string actionExtra,  New in version 97
   }, ...
 }

Spring.GetActionHotKeys

 ( string action ) -> nil | { [1] = string hotKey, ... }

Console

Spring.GetLastMessagePositions

 ( ) -> nil | {
   [1] = { number X, number Y, number Z },
   ...
 }

Spring.GetConsoleBuffer

 ( [number maxLines] ) -> nil | {
   [1] = {
     text = string,
     priority = number
  }, ...
 }

Spring.GetCurrentTooltip

 ( ) -> string

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 in version 100

Config

Spring.GetConfigParams same information as spring --list-config-vars

 ( ) -> table {
   {
     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 ] ) -> nil | number

Spring.GetConfigFloat New in version 104.0

 ( string name [, number default ] ) -> nil | number

Spring.GetConfigString

 ( string name [, string default ] ) -> nil | string

FPS & GetDrawFrame

Spring.GetFPS

 ( ) -> number

Spring.GetDrawFrame

 ( ) -> number low 16bit, number high 16bit

Spring.GetVideoCapturingMode New in version 104.0

 ( ) -> boolean videoCaptureAllowed

Time

Spring.GetGameSpeed New in version 98.0

 ( ) -> number userSpeedFactor, number speedFactor, boolean paused

Spring.GetGameState New in version 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 in version 102.0

 ( ) -> timer

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

Spring.DiffTimers

 ( timer cur, timer ago, [boolean inMilliseconds]) -> 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) -> boolean success

Logging

Spring.GetLogSections

 ( ) -> table { "KeyBindings" = LOG.INFO, "Font" = LOG.INFO, "Sound" = LOG.WARNING, ... }

Misc

Spring.GetClipboard New in version 98.0

 ( ) -> string text