Lua SyncedRead: Difference between revisions
No edit summary |
sorted |
||
| Line 1: | Line 1: | ||
== Special Teams Variables == | |||
'''Spring.ALL_UNITS''' -> number | '''Spring.ALL_UNITS''' -> number | ||
| Line 6: | Line 7: | ||
'''Spring.ENEMY_UNITS''' -> number | '''Spring.ENEMY_UNITS''' -> number | ||
'''Spring.GetGaiaTeamID''' | |||
( ) -> number teamID | |||
== GameStates == | |||
'''Spring.IsCheatingEnabled''' | '''Spring.IsCheatingEnabled''' | ||
( ) -> boolean | ( ) -> boolean | ||
| Line 20: | Line 25: | ||
( ) -> boolean | ( ) -> boolean | ||
== Rules == | |||
'''Spring.GetRulesInfoMap''' | '''Spring.GetRulesInfoMap''' | ||
( ) -> { [key1] = string value1, [key2] = string value2, ... } | ( ) -> { [key1] = string value1, [key2] = string value2, ... } | ||
( string "key" ) -> string | |||
'''Spring.GetGameRulesParam''' | |||
( number index | string ruleName ) -> number value | |||
'''Spring.GetGameRulesParams''' | |||
( ) -> { [rule1] = number value1, [rule2] = number value2, ... } | |||
'''Spring.GetTeamRulesParam''' | |||
( number teamID, number index | string ruleName ) -> nil | number value | |||
'''Spring.GetTeamRulesParams''' | |||
( number teamID ) -> nil | { [rule1] = number value1, [rule2] = number value2, ... } | |||
'''Spring.GetUnitRulesParam''' | |||
( number unitID, number index | string ruleName ) -> nil | number value | |||
'''Spring.GetUnitRulesParams''' | |||
( number unitID ) -> nil | { [rule1] = number value1, [rule2] = number value2, ... } | |||
== Speed/Time == | |||
'''Spring.GetGameSpeed''' | '''Spring.GetGameSpeed''' | ||
( ) -> number userSpeedFactor, number speedFactor, boolean paused | ( ) -> number userSpeedFactor, number speedFactor, boolean paused | ||
| Line 33: | Line 56: | ||
( ) -> number seconds | ( ) -> number seconds | ||
== Vectors == | |||
'''Spring.GetWind''' | '''Spring.GetWind''' | ||
( ) -> number dirX, number dirY, number dirZ, | ( ) -> number dirX, number dirY, number dirZ, | ||
| Line 47: | Line 67: | ||
( number heading ) -> number x, number z | ( number heading ) -> number x, number z | ||
== StartBoxes/StartPositions == | |||
'''Spring.GetAllyTeamStartBox''' | '''Spring.GetAllyTeamStartBox''' | ||
( number allyID ) -> number xmin, number zmin, number xmax, number zmax | ( number allyID ) -> number xmin, number zmin, number xmax, number zmax | ||
| Line 52: | Line 74: | ||
( number teamID ) -> number x, number y, number z | ( number teamID ) -> number x, number y, number z | ||
== Player,Team,Ally Lists/Info == | |||
'''Spring.GetPlayerList''' | '''Spring.GetPlayerList''' | ||
( [number teamID, boolean onlyActive] ) -> nil | { [1] = number playerID, etc... } | ( [number teamID, boolean onlyActive] ) -> nil | { [1] = number playerID, etc... } | ||
| Line 100: | Line 124: | ||
number received, | number received, | ||
number sent | number sent | ||
'''Spring.GetTeamStatsHistory''' | '''Spring.GetTeamStatsHistory''' | ||
( number teamID, number startTime, number endTime ) -> | ( number teamID, number startTime, number endTime ) -> | ||
| Line 128: | Line 148: | ||
"unitsOutCaptured" = number, | "unitsOutCaptured" = number, | ||
"unitsKilled" = number | "unitsKilled" = number | ||
}, ... | |||
} | } | ||
| Line 138: | Line 157: | ||
( number playerID1, number playerID2 ) -> nil | boolean | ( number playerID1, number playerID2 ) -> nil | boolean | ||
== GetUnits == | |||
'''Spring.GetAllUnits''' | '''Spring.GetAllUnits''' | ||
( ) -> nil | unitTable = { [1] = number unitID, ... } | ( ) -> nil | unitTable = { [1] = number unitID, ... } | ||
| Line 151: | Line 173: | ||
( number teamID ) -> nil | countTable = { [number unitDefID] = count, etc... } | ( number teamID ) -> nil | countTable = { [number unitDefID] = count, etc... } | ||
'''Spring.GetTeamUnitsByDefs''' | '''Spring.GetTeamUnitsByDefs''' | ||
( number teamID, number unitDefID | { number unitDefID1, ... } ) -> | ( number teamID, number unitDefID | { number unitDefID1, ... } ) | ||
-> nil | unitTable = { [1] = number unitID, etc... } | |||
'''Spring.GetTeamUnitDefCount''' | '''Spring.GetTeamUnitDefCount''' | ||
( number teamID, number unitDefID ) -> nil | number count | ( number teamID, number unitDefID ) -> nil | number count | ||
| Line 159: | Line 181: | ||
'''Spring.GetUnitsInRectangle''' | '''Spring.GetUnitsInRectangle''' | ||
( number xmin, number zmin, number xmax, number zmax [,number teamID] ) -> | ( number xmin, number zmin, number xmax, number zmax [,number teamID] ) | ||
-> nil | unitTable = { [1] = number unitID, etc... } | |||
'''Spring.GetUnitsInBox''' | '''Spring.GetUnitsInBox''' | ||
( number xmin, number ymin, number zmin, | ( number xmin, number ymin, number zmin, | ||
number xmax, number ymax, number zmax [,number teamID] ) -> | number xmax, number ymax, number zmax [,number teamID] ) | ||
-> nil | unitTable = { [1] = number unitID, etc... } | |||
'''Spring.GetUnitsInSphere''' | '''Spring.GetUnitsInSphere''' | ||
( number x, number y, number z, number radius [,number teamID] ) -> | ( number x, number y, number z, number radius [,number teamID] ) | ||
-> nil | unitTable = { [1] = number unitID, etc... } | |||
'''Spring.GetUnitsInCylinder''' | '''Spring.GetUnitsInCylinder''' | ||
( number x, number z, number radius [,number teamID] ) -> | ( number x, number z, number radius [,number teamID] ) | ||
-> nil | unitTable = { [1] = number unitID, etc... } | |||
'''Spring.GetUnitsInPlanes''' | '''Spring.GetUnitsInPlanes''' | ||
( planes = { [1] = { number nx, number ny, number nz, number d }, etc... } ) -> | ( planes = { [1] = { number nx, number ny, number nz, number d }, etc... } ) | ||
-> nil | unitTable = { [1] = number unitID, etc... } | |||
<font color="darkgreen"> | <font color="darkgreen"> | ||
plane normals point towards accepted space, | plane normals point towards accepted space, | ||
| Line 182: | Line 204: | ||
</font> | </font> | ||
== GetNearest == | |||
'''Spring.GetUnitNearestAlly''' | '''Spring.GetUnitNearestAlly''' | ||
( number unitID [, number range ] ) -> nil | number unitID | ( number unitID [, number range ] ) -> nil | number unitID | ||
| Line 191: | Line 210: | ||
( number unitID [, number range ] ) -> nil | number unitID | ( number unitID [, number range ] ) -> nil | number unitID | ||
== Unit Informations == | |||
'''Spring.GetUnitTooltip''' | '''Spring.GetUnitTooltip''' | ||
( number unitID ) -> nil | string tooltip | ( number unitID ) -> nil | string tooltip | ||
| Line 232: | Line 252: | ||
( number unitID ) -> nil | number | ( number unitID ) -> nil | number | ||
'''Spring.GetUnitStockpile''' | '''Spring.GetUnitStockpile''' | ||
( number unitID ) -> nil | number numStockpiled, number numStockpileQued, number buildPercent | ( number unitID ) -> nil | number numStockpiled, number numStockpileQued, | ||
number buildPercent | |||
'''Spring.GetUnitHeight''' | '''Spring.GetUnitHeight''' | ||
( number unitID ) -> nil | number | ( number unitID ) -> nil | number | ||
| Line 265: | Line 286: | ||
( number unitID [, number allyTeamID ] ) -> nil | | ( number unitID [, number allyTeamID ] ) -> nil | | ||
{ ["los" = true] [, "radar" = true] [, "typed" = true] } | { ["los" = true] [, "radar" = true] [, "typed" = true] } | ||
'''Spring.GetUnitSeparation''' <font color="darkgreen">returns the distance of 2 units</font> | '''Spring.GetUnitSeparation''' <font color="darkgreen">(returns the distance of 2 units)</font> | ||
( number unitID1, number unitID2 [, boolean 2D ] ) -> nil | number | ( number unitID1, number unitID2 [, boolean 2D ] ) -> nil | number distance | ||
'''Spring.GetUnitDefDimensions''' | '''Spring.GetUnitDefDimensions''' | ||
( number unitDefID ) -> nil | | ( number unitDefID ) -> nil | | ||
| Line 283: | Line 304: | ||
} | } | ||
== CommandQueues == | |||
'''Spring.GetUnitCommands''' | '''Spring.GetUnitCommands''' | ||
( number unitID [, number count] ) -> nil | commandQueueTable = { | ( number unitID [, number count] ) -> nil | commandQueueTable = { | ||
| Line 341: | Line 364: | ||
} | } | ||
== Command Descriptions/Buttons == | |||
'''Spring.GetUnitCmdDescs''' | '''Spring.GetUnitCmdDescs''' | ||
( number unitID [, number startIndex [, number endIndex ] ] ) -> nil | { | ( number unitID [, number startIndex [, number endIndex ] ] ) -> nil | { | ||
| Line 362: | Line 386: | ||
( number unitID, number cmdID ) -> nil | number index | ( number unitID, number cmdID ) -> nil | number index | ||
== GetFeatures == | |||
'''Spring.GetFeaturesInRectangle''' | |||
( number xmin, number zmin, number xmax, number zmax [,number teamID] ) | |||
-> nil | featureTable = { [1] = number featureID, etc... } | |||
'''Spring.GetAllFeatures''' | '''Spring.GetAllFeatures''' | ||
( ) -> nil | { [1] = number featureID, ... } | ( ) -> nil | { [1] = number featureID, ... } | ||
'''Spring.GetFeatureList''' // NOTE: this is not really required now the all FeatureDefs are pre-loaded | '''Spring.GetFeatureList''' // NOTE: this is not really required now the all FeatureDefs are pre-loaded | ||
== Feature Information == | |||
'''Spring.GetFeatureDefID''' | '''Spring.GetFeatureDefID''' | ||
( number featureID ) -> nil | number featureDefID | ( number featureID ) -> nil | number featureDefID | ||
| Line 397: | Line 423: | ||
( number featureID ) -> nil | boolean createdFromUnit, number buildFacing | ( number featureID ) -> nil | boolean createdFromUnit, number buildFacing | ||
== Ground Informations == | |||
'''Spring.GetGroundHeight''' | '''Spring.GetGroundHeight''' | ||
( number x, number y ) -> number z | ( number x, number y ) -> number z | ||
| Line 407: | Line 435: | ||
'''Spring.GetGroundBlocked''' | '''Spring.GetGroundBlocked''' | ||
( number x, number y | | ( number x, number y | | ||
number x1, number y1, number x2, number y2 ) -> nil | | number x1, number y1, number x2, number y2 ) | ||
-> nil | string "feature", number featureID | string "unit", number unitID | |||
'''Spring.GetGroundExtremes''' | '''Spring.GetGroundExtremes''' | ||
( ) -> nil | number minHeight, number maxHeight | ( ) -> nil | number minHeight, number maxHeight | ||
== Test Building == | |||
'''Spring.TestBuildOrder''' | '''Spring.TestBuildOrder''' | ||
( number unitDefID, number x, number y, number z, number facing) | ( number unitDefID, number x, number y, number z, number facing) | ||
| Line 424: | Line 452: | ||
( number unitDefID, number x, number y, number z ) -> nil | number x, number y, number z | ( number unitDefID, number x, number y, number z ) -> nil | number x, number y, number z | ||
== LOS == | |||
'''Spring.GetPositionLosState''' | '''Spring.GetPositionLosState''' | ||
( number x, number y, number z [, number teamID] ) | ( number x, number y, number z [, number teamID] ) | ||
| Line 430: | Line 459: | ||
( number unitDefID, number x, number z, number r ) -> nil | ( number unitDefID, number x, number z, number r ) -> nil | ||
== Unit Pieces == | |||
'''Spring.GetUnitPiecePosition''' | '''Spring.GetUnitPiecePosition''' | ||
( number unitID, number piece ) -> number posx, number posy, number posz | ( number unitID, number piece ) -> number posx, number posy, number posz | ||
Revision as of 17:33, 28 September 2007
Special Teams Variables
Spring.ALL_UNITS -> number
Spring.MY_UNITS -> number
Spring.ALLY_UNITS -> number
Spring.ENEMY_UNITS -> number
Spring.GetGaiaTeamID
( ) -> number teamID
GameStates
Spring.IsCheatingEnabled
( ) -> boolean
Spring.IsDevLuaEnabled
( ) -> boolean
Spring.IsEditDefsEnabled
( ) -> boolean
Spring.AreHelperAIsEnabled
( ) -> boolean
Spring.IsGameOver
( ) -> boolean
Rules
Spring.GetRulesInfoMap
( ) -> { [key1] = string value1, [key2] = string value2, ... }
( string "key" ) -> string
Spring.GetGameRulesParam
( number index | string ruleName ) -> number value
Spring.GetGameRulesParams
( ) -> { [rule1] = number value1, [rule2] = number value2, ... }
Spring.GetTeamRulesParam
( number teamID, number index | string ruleName ) -> nil | number value
Spring.GetTeamRulesParams
( number teamID ) -> nil | { [rule1] = number value1, [rule2] = number value2, ... }
Spring.GetUnitRulesParam
( number unitID, number index | string ruleName ) -> nil | number value
Spring.GetUnitRulesParams
( number unitID ) -> nil | { [rule1] = number value1, [rule2] = number value2, ... }
Speed/Time
Spring.GetGameSpeed
( ) -> number userSpeedFactor, number speedFactor, boolean paused
Spring.GetGameFrame
( ) -> number frameNum%dayFrames, number frameNum/dayFrames
Spring.GetGameSeconds
( ) -> number seconds
Vectors
Spring.GetWind
( ) -> number dirX, number dirY, number dirZ,
number strength, number normDirX, number normDirY, number normDirZ
Spring.GetHeadingFromVector
( number x, number z ) -> number heading
Spring.GetVectorFromHeading
( number heading ) -> number x, number z
StartBoxes/StartPositions
Spring.GetAllyTeamStartBox
( number allyID ) -> number xmin, number zmin, number xmax, number zmax
Spring.GetTeamStartPosition
( number teamID ) -> number x, number y, number z
Player,Team,Ally Lists/Info
Spring.GetPlayerList
( [number teamID, boolean onlyActive] ) -> nil | { [1] = number playerID, etc... }
Spring.GetTeamList
( [number allyTeamID] ) -> nil | { [1] = number teamID, etc... }
Spring.GetAllyTeamList
( ) -> { [1] = number allyTeamID, etc... }
Spring.GetPlayerInfo
( number playerID ) ->
nil | string "name",
boolean active,
boolean spectator,
number teamID,
number allyTeamID,
number pingTime,
number cpuUsage,
string country,
number rank
Spring.GetPlayerControlledUnit
( number playerID ) -> nil | number unitID
Spring.GetTeamInfo
( number teamID ) ->
nil | number teamNum,
number leader,
boolean active,
boolean isDead,
boolean isAiTeam,
string "side",
number allyTeam
Spring.GetTeamResources
( number teamID, string "metal" | "energy" ) ->
nil | number currentLevel,
number storage,
number pull,
number income,
number expense,
number share,
number sent,
number received
Spring.GetTeamUnitStats
( number teamID ) ->
nil | number killed,
number died,
number capturedBy,
number capturedFrom,
number received,
number sent
Spring.GetTeamStatsHistory
( number teamID, number startTime, number endTime ) ->
{
[1] = {
"frame" = number,
"metalUsed" = number,
"metalProduced" = number,
"metalExcess" = number,
"metalReceived" = number,
"metalSent" = number,
"energyUsed" = number,
"energyProduced" = number,
"energyExcess" = number,
"energyReceived" = number,
"energySent" = number,
"damageDealt" = number,
"damageReceived" = number,
"unitsProduced" = number,
"unitsDied" = number,
"unitsReceived" = number,
"unitsSent" = number,
"unitsCaptured" = number,
"unitsOutCaptured" = number,
"unitsKilled" = number
}, ...
}
Spring.AreTeamsAllied
( number teamID1, number teamID2 ) -> nil | boolean
Spring.ArePlayersAllied
( number playerID1, number playerID2 ) -> nil | boolean
GetUnits
Spring.GetAllUnits
( ) -> nil | unitTable = { [1] = number unitID, ... }
Spring.GetTeamUnits
( number teamID ) -> nil | unitTable = { [1] = number unitID, etc... }
Spring.GetTeamUnitsSorted
( number teamID ) -> nil |
unitDefTable = {
[number unitDefID] = { [1] = [number unitID], etc... },
etc...
}
Spring.GetTeamUnitsCounts
( number teamID ) -> nil | countTable = { [number unitDefID] = count, etc... }
Spring.GetTeamUnitsByDefs
( number teamID, number unitDefID | { number unitDefID1, ... } )
-> nil | unitTable = { [1] = number unitID, etc... }
Spring.GetTeamUnitDefCount
( number teamID, number unitDefID ) -> nil | number count
Spring.GetTeamUnitCount
( number teamID ) -> nil | number count
Spring.GetUnitsInRectangle
( number xmin, number zmin, number xmax, number zmax [,number teamID] )
-> nil | unitTable = { [1] = number unitID, etc... }
Spring.GetUnitsInBox
( number xmin, number ymin, number zmin,
number xmax, number ymax, number zmax [,number teamID] )
-> nil | unitTable = { [1] = number unitID, etc... }
Spring.GetUnitsInSphere
( number x, number y, number z, number radius [,number teamID] )
-> nil | unitTable = { [1] = number unitID, etc... }
Spring.GetUnitsInCylinder
( number x, number z, number radius [,number teamID] )
-> nil | unitTable = { [1] = number unitID, etc... }
Spring.GetUnitsInPlanes
( planes = { [1] = { number nx, number ny, number nz, number d }, etc... } )
-> nil | unitTable = { [1] = number unitID, etc... }
plane normals point towards accepted space, so the acceptance criteria for each plane is: radius = unit radius px, py, pz = unit position [(nx * px) + (ny * py) + (nz * pz) + (d - radius)] <= 0
GetNearest
Spring.GetUnitNearestAlly
( number unitID [, number range ] ) -> nil | number unitID
Spring.GetUnitNearestEnemy
( number unitID [, number range ] ) -> nil | number unitID
Unit Informations
Spring.GetUnitTooltip
( number unitID ) -> nil | string tooltip
Spring.GetUnitDefID
( number unitID ) -> nil | number unitDefID
Spring.GetUnitTeam
( number unitID ) -> nil | number teamID
Spring.GetUnitAllyTeam
( number unitID ) -> nil | number allyID
Spring.GetUnitLineage
( number unitID ) -> nil | number lineage, boolean lineageRoot
Spring.GetUnitNeutral
( number unitID ) -> nil | boolean neutral
Spring.GetUnitHealth
( number unitID ) -> nil | number health, number maxHealth, number paralyzeDamage,
number captureProgress, number buildProgress
Spring.GetUnitIsStunned
( number unitID ) -> nil | boolean stunned_or_inbuild, boolean stunned, boolean inbuild
Spring.GetUnitResources
( number unitID ) -> nil | number metalMake, number metalUse,
number energyMake, number energyUse
Spring.GetUnitExperience
( number unitID ) -> nil | number experience
Spring.GetUnitStates
( number unitID ) -> nil | {
"firestate" = number,
"movestate" = number,
"repeat" = boolean,
"cloak" = boolean,
"active" = boolean,
"trajectory" = boolean,
["autoland" = boolean,]
["autorepairlevel" = number,]
["loopbackattack" = boolean]
}
Spring.GetUnitIsActive
( number unitID ) -> nil | boolean
Spring.GetUnitIsCloaked
( number unitID ) -> nil | boolean
Spring.GetUnitSelfDTime
( number unitID ) -> nil | number
Spring.GetUnitStockpile
( number unitID ) -> nil | number numStockpiled, number numStockpileQued,
number buildPercent
Spring.GetUnitHeight
( number unitID ) -> nil | number
Spring.GetUnitRadius
( number unitID ) -> nil | number
Spring.GetUnitPosition
( number unitID ) -> nil | number x, number y, number z
Spring.GetUnitBasePosition
( number unitID ) -> nil | number x, number y, number z
Spring.GetUnitDirection
( number unitID ) -> nil | number dx, number dy, number dz
Spring.GetUnitHeading
( number unitID ) -> nil | number heading
Spring.GetUnitVelocity
( number unitID ) -> nil | number velx, number vely, number velz
Spring.GetUnitBuildFacing
( number unitID ) -> nil | number
Spring.GetUnitIsBuilding
( number unitID ) -> nil | number unitID
Spring.GetUnitTransporter
( number unitID ) -> nil | number unitID
Spring.GetUnitIsTransporting
( number unitID ) -> nil | { [1] = number unitID, etc... }
Spring.GetUnitShieldState
( number unitID ) -> nil | number isEnabled, number curPower
Spring.GetUnitWeaponState
( number unitID ) -> nil | boolean angleGood, boolean loaded, number reloadFrame,
number salvoLeft, number numStockpiled
Spring.GetUnitTravel
( number unitID ) -> nil | number travel, number travelPeriod
Spring.GetUnitLosState
( number unitID [, number allyTeamID ] ) -> nil |
{ ["los" = true] [, "radar" = true] [, "typed" = true] }
Spring.GetUnitSeparation (returns the distance of 2 units)
( number unitID1, number unitID2 [, boolean 2D ] ) -> nil | number distance
Spring.GetUnitDefDimensions
( number unitDefID ) -> nil |
{
"height" = number,
"radius" = number,
"midx" = number,
"minx" = number,
"maxx" = number,
"midy" = number,
"miny" = number,
"maxy" = number,
"midz" = number,
"minz" = number,
"maxz" = number
}
CommandQueues
Spring.GetUnitCommands
( number unitID [, number count] ) -> nil | commandQueueTable = {
[1] = {
"id" = number,
"params" = { [1] = number, ...},
"options" = {
"coded" = number,
"alt" = boolean,
"ctrl" = boolean,
"shift" = boolean,
"right" = boolean,
"internal" = boolean
}
}, ...
}
Spring.GetCommandQueue
( number unitID [, number count] ) -> nil | commandQueueTable = {
[1] = {
"id" = number,
"params" = { [1] = number, ...},
"options" = {
"coded" = number,
"alt" = boolean,
"ctrl" = boolean,
"shift" = boolean,
"right" = boolean,
"internal" = boolean
}
}, ...
}
Spring.GetFullBuildQueue
nil | buildOrders = {
[1] = { [number unitDefID] = number count }, etc...
}
Spring.GetRealBuildQueue (cleans the buildqueue of things the unit can't build itself)
nil | buildOrders = {
[1] = { [number unitDefID] = number count }, etc...
}
Spring.GetFactoryCommands
( number unitID [, number count] ) -> nil | commandQueueTable = {
[1] = {
"id" = number,
"params" = { [1] = number, ...},
"options" = {
"coded" = number,
"alt" = boolean,
"ctrl" = boolean,
"shift" = boolean,
"right" = boolean,
"internal" = boolean
}
}, ...
}
Spring.GetFactoryCounts (used to get the buildqueue of a factory)
( number unitID [, number count [, boolean noCMDs ] ] ) -> nil | commandQueueTable = {
[number unitDefID | number -cmdID] = number count, ...
}
Command Descriptions/Buttons
Spring.GetUnitCmdDescs
( number unitID [, number startIndex [, number endIndex ] ] ) -> 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.FindUnitCmdDesc
( number unitID, number cmdID ) -> nil | number index
GetFeatures
Spring.GetFeaturesInRectangle
( number xmin, number zmin, number xmax, number zmax [,number teamID] )
-> nil | featureTable = { [1] = number featureID, etc... }
Spring.GetAllFeatures
( ) -> nil | { [1] = number featureID, ... }
Spring.GetFeatureList // NOTE: this is not really required now the all FeatureDefs are pre-loaded
Feature Information
Spring.GetFeatureDefID
( number featureID ) -> nil | number featureDefID
Spring.GetFeatureTeam
( number featureID ) -> nil | number teamID
Spring.GetFeatureAllyTeam
( number featureID ) -> nil | number allyID
Spring.GetFeatureHealth
( number featureID ) -> nil | number health, number maxHealth, number resurrectProgress
Spring.GetFeatureHeight
( number featureID ) -> nil | number
Spring.GetFeatureRadius
( number featureID ) -> nil | number
Spring.GetFeaturePosition
( number featureID ) -> nil | number x, number y, number z
Spring.GetFeatureDirection
( number featureID ) -> nil | number dirx, number diry, number dirz
Spring.GetFeatureHeading
( number featureID ) -> nil | number heading
Spring.GetFeatureResources
( number featureID ) -> nil | number RemainingMetal, number maxMetal,
number RemainingEnergy, number maxEnergy, number reclaimLeft
Spring.GetFeatureNoSelect
( number featureID ) -> nil | boolean noSelect
Spring.GetFeatureResurrect
( number featureID ) -> nil | boolean createdFromUnit, number buildFacing
Ground Informations
Spring.GetGroundHeight
( number x, number y ) -> number z
Spring.GetGroundNormal
( number x, number y ) -> number x, number y, number z
Spring.GetGroundInfo
( number x, number y ) -> string "Type", number metal, number hardness,
number tankSpeed, number kbotSpeed, number hoverSpeed,
number shipSpeed, boolean noTracks
Spring.GetGroundBlocked
( number x, number y | number x1, number y1, number x2, number y2 ) -> nil | string "feature", number featureID | string "unit", number unitID
Spring.GetGroundExtremes
( ) -> nil | number minHeight, number maxHeight
Test Building
Spring.TestBuildOrder
( number unitDefID, number x, number y, number z, number facing)
-> number blocking [,number featureID]
blocking can be:
0 - blocked
1 - mobile unit in the way
2 - free (or if featureID is != 0 then with a
blocking feature that can be reclaimed)
Spring.Pos2BuildPos
( number unitDefID, number x, number y, number z ) -> nil | number x, number y, number z
LOS
Spring.GetPositionLosState
( number x, number y, number z [, number teamID] ) -> boolean visible, boolean inLos, boolean inRadar
Spring.GetClosestValidPosition //NOT FINISHED YET
( number unitDefID, number x, number z, number r ) -> nil
Unit Pieces
Spring.GetUnitPiecePosition
( number unitID, number piece ) -> number posx, number posy, number posz
Spring.GetUnitPieceDirection
( number unitID, number piece ) -> number dirx, number diry, number dirz
Spring.GetUnitPieceMatrix
( number unitID, number piece ) -> { [1] = number, ... , [16] = number }