Lua SyncedCtrl: Difference between revisions

From Spring
Jump to navigationJump to search
Zwzsg (talk | contribs)
No edit summary
Lurker (talk | contribs)
No edit summary
Line 42: Line 42:
     [number attackerID] ) -> nil
     [number attackerID] ) -> nil
<font color="#55ee99">
<font color="#55ee99">
  selfd let you make the destruction be as if the unit had self-d
  selfd makes the unit act like it self-destructed
  reclaimed let you make the destruction be as if the unit had been reclaimed
  reclaimed makes the unit act like it was reclaimed
setting them both at true would make no sense (but reclaimed wins)
</font>
</font>



Revision as of 01:18, 15 May 2009

Resources

Spring.AddTeamResource

 ( number teamID, string "m" | "e", number amount ) -> nil

Spring.UseTeamResource

 ( number teamID, 
   string "m" | "e", number amount |
   { m = number amount, e = number amount}
 ) -> nil | boolean hadEnough

Spring.SetTeamResource

 ( number teamID, string res, number amount ) -> nil

 possible values for res are:
   "m"  = metal
   "e"  = energy
   "ms"  = metal storage
   "es"  = energy storage

Spring.SetTeamShareLevel

 ( number teamID, string "m" | "e", number amount ) -> nil


Unit Handling

Spring.CreateUnit note: offmap positions are clamped! (you still can use MoveCtrl todo so)

 ( string "defName" | number unitDefID,
   number x, number y, number z,
   (number facing | string "facing"),
   number teamID ) -> number unitID

 possible values for facing are:
   "south" | "s" | 0
   "east"  | "e" | 1
   "north" | "n" | 2
   "west"  | "w" | 3

Spring.DestroyUnit

 ( number unitID,
   [boolean selfd = false,]
   [boolean reclaimed = false,]
   [number attackerID] ) -> nil

selfd makes the unit act like it self-destructed
reclaimed makes the unit act like it was reclaimed

Spring.TransferUnit

 ( number unitID,
   numer newTeamID,
   [boolean given = true] ) -> nil

if given=false, the unit is captured


Unit Control

Spring.SetUnitCosts

 ( number unitID, { 
    [ buildTime  = number amount ],
    [ metalCost  = number amount ],
    [ energyCost = number amount ]
  } ) -> nil

Spring.SetUnitTooltip

 ( number unitID, string "tooltip" ) -> nil

Spring.SetUnitHealth

 ( number unitID,
   number health |
   { [ health   = number health ],
     [ capture  = number capture ],
     [ paralyze = number paralyze ],
     [ build    = number build ] }
 ) -> nil

Spring.SetUnitMaxHealth

 ( number unitID, number maxHealth ) -> nil

Spring.AddUnitDamage

 ( number unitID, number damage
   [, number paralyze = 0 [, number attackerID = -1 [, number weaponID = -1
     [, number impulse_x [, number impulse_y [, number impulse_z ]]] ]]] ) -> nil

Spring.SetUnitStockpile

 ( number unitID [, number stockpile [, number buildPercent ]]) -> nil

Spring.SetUnitExperience

 ( number unitID, number experience ) -> nil

Spring.SetUnitFuel

 ( number unitID, number fuel ) -> nil

Spring.SetUnitLineage

 ( number unitID, number teamID [, boolean isRoot] ) -> nil

Spring.SetUnitNeutral

 ( number unitID, boolean neutral ) -> nil

Spring.SetUnitTarget

 ( number unitID,
   number enemyUnitID | number x, number y, number z,
   [ boolean dgun = false ] ) -> nil

Spring.SetUnitBlocking

 ( number unitID, boolean noBlock [, boolean collide ] ) -> nil

Spring.SetUnitMetalExtraction

 ( number unitID, number depth [,number range] ) -> nil

Spring.SetUnitBuildSpeed

 ( number builderID,
   number buildSpeed, [ number repairSpeed [, number reclaimSpeed
 [,number resurrectSpeed [, number captureSpeed [, number terraformSpeed ]] ]]] ) -> nil

Spring.SetUnitArmored

 ( number unitID, boolean armored ) -> nil

Spring.SetUnitShieldState

 ( number unitID, boolean enabled [, number power] ) -> nil

Spring.SetUnitFlanking

 ( number unitID, string "mode", number mode ) -> nil
 ( number unitID, string "moveFactor", number factor) -> nil
 ( number unitID, string "minDamage", number minDamage ) -> nil
 ( number unitID, string "mazDamage", number maxDamage ) -> nil
 ( number unitID, string "dir", number x, number y, number z) -> nil

Spring.SetUnitWeaponState

 ( number unitID, number weaponNum, table states ) -> nil
 format of the states table:
   {
     ["reloadState" = number value,]
     ["reloadTime"  = number value,]
     ["accuracy"    = number value,]
     ["sprayAngle"  = number value,]
     ["range"       = number value,]
     ["projectileSpeed" = number value,]
     ["burst" = number value,]
     ["burstRate" = number value,]
     ["projectiles" = number value,]
   }
 

Spring.SetUnitCollisionVolumeData

 ( number unitID, number scaleX, number scaleY, number scaleZ,
   number offsetX, number offsetY, number offsetX,
   number vType, number tType, number Axis
 ) -> nil

Spring.SetUnitTravel

 ( number unitID, number travel [, number travelPeriod] ) -> nil

Spring.SetUnitMoveGoal used by default commands to get in build-,attackrange etc.

 ( number unitID, number x, number y, number z,
   [, number radius = 0 [, number speed = unit->maxSpeed * 2 ] ] ) -> nil

Spring.SetUnitPhysics

 ( number unitID,
   number posx, number posy, number posz,
   number velx, number vely, number velz,
   number rotx, number roty, number rotz,
 ) -> nil

Spring.SetUnitPosition

 ( number unitID, number x, number z [, boolean alwaysAboveSea] ) -> nil

Spring.SetUnitVelocity

 ( number unitID, number velx, number vely, number velz ) -> nil

Spring.SetUnitRotation

 ( number unitID, number rotx, number roty, number rotz ) -> nil

Spring.AddUnitImpulse

 ( number unitID, number x, number y, number z ) -> nil

Spring.AddUnitSeismicPing

 ( number unitID, number pingSize ) -> nil

Unit LOS

Spring.SetUnitCloak

 ( number unitID,
   boolean cloaked | number scriptCloak,
   [ number decloakDistance | boolean decloakAbs ] ) -> nil
 
 If the 2nd argument is a number, the value works like this:
  1:=normal cloak
  2:=for free cloak (cost no E)
  3:=for free + no decloaking (except the unit is stunned)
  4>=ultimative cloak (no ecost, no decloaking, no stunned decloak)
 The decloak distance is only changed if the 3th argument is a number or a boolean.
  If the boolean is false it takes the default decloak distance for that unitdef,
  if the boolean is true it takes the absolute value of it.

Spring.SetUnitSonarStealth

 ( number unitID, boolean sonarStealth ) -> nil

Spring.SetUnitStealth

 ( number unitID, boolean stealth ) -> nil

Spring.SetUnitAlwaysVisible

 ( number unitID, boolean alwaysVisible ) -> nil

Spring.SetUnitLosMask

 ( number unitID, number allyTeam, number los | table losTypes ) -> nil

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

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

or a table of the following form:

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

Spring.SetUnitLosState

 ( number unitID, number allyTeam, number los | table losTypes ) -> nil
 see above for more info on the arguments

Spring.SetUnitSensorRadius

 ( number unitID, string type, number radius ) -> nil | number newRadius
 type can be:
 "los","airLos","radar","sonar","seismic","radarJammer","sonarJammer"

Unit Ressourcing

Spring.SetUnitResourcing

 ( number unitID,
   string res, number amount |
   { res = number amount, ... }
 ) -> nil

 possible values for res are: "[u|c][u|m][m|e]"
      unconditional | conditional
                use | make
              metal | energy

Spring.AddUnitResource

 ( number unitID, string "m" | "e", number amount ) -> nil

Spring.UseUnitResource

 ( number unitID, string "m" | "e", number amount ) -> nil

Feature Handling

Spring.CreateFeature

 ( string "defName" | number featureID, number x, number y, number z
  [,number heading [, number AllyTeamID ]] ) -> number featureID

Spring.DestroyFeature

 ( number featureID ) -> nil

Spring.TransferFeature

 ( number featureID, number AllyTeamID ) -> nil


Feature Control

Spring.SetFeatureHealth

 ( number featureID, number health) -> nil

Spring.SetFeatureReclaim

 ( number featureID, number reclaimLeft) -> nil

Spring.SetFeatureResurrect

 ( number featureID, string "UnitDefName?" [, number facing | string "facing" ] ) -> nil

 possible values for facing are:
   "south" | "s" | 0
   "east"  | "e" | 1
   "north" | "n" | 2
   "west"  | "w" | 3

Spring.SetFeaturePosition

 ( number featureID, number x, number y, number z ) -> nil

Spring.SetFeatureDirection

 ( number featureID, number x, number y, number z ) -> nil

Spring.SetFeatureNoSelect

 ( number featureID, boolean noSelect ) -> nil

Spring.SetFeatureCollisionVolumeData

 ( number featureID, number scaleX, number scaleY, number scaleZ,
   number offsetX, number offsetY, number offsetX,
   number vType, number tType, number Axis
 ) -> nil


Spring.RemoveBuildingDecal

 ( number unitID ) -> nil


Lua to COB

Spring.CallCOBScript

 ( number unitID, number funcID | string funcName, number retArgs, COBArg1, COBArg2, ... )
   -> nil | number returnValue, number retArg1, number retArg2, ...

Spring.CallCOBScriptCB
broken in 0.78.2.1; will be removed with the introduction of Lua as COB replacement

 ( number unitID, number funcID | string funcName, number retArgs, COBArg1, COBArg2, ... )
   -> nil | number returnValue, number CallbackData, number retArg1, number retArg2, ...

Spring.GetCOBScriptID

 ( number unitID, string funcName ) -> nil | number funcID

Spring.GetUnitCOBValue

 ( number unitID [, boolean splitData=false], number COBValue
   [, number param1 [,number param2 [, number param3 [, number param4 ] ] ] ] )
 -> number result | number result1, number result2

Spring.SetUnitCOBValue

 ( number unitID, number COBValue, number param1 [,number param2] ) -> nil

Give Order

Spring.GiveOrderToUnit

 ( number unitID,
   number cmdID,
   params = {number, etc...},
   options = {"alt", "ctrl", "shift", "right"} ) -> nil

Spring.GiveOrderToUnitMap

 ( unitMap = { [unitID] = dontCare, etc... },
   number cmdID,
   params = {number, etc...},
   options = {"alt", "ctrl", "shift", "right"} ) -> nil

Spring.GiveOrderToUnitArray

 ( unitArray = { [1] = unitID, etc... },
   number cmdID,
   params = {number, etc...},
   options = {"alt", "ctrl", "shift", "right"} ) -> nil

Spring.GiveOrderArrayToUnitMap

 ( unitMap = { [number unitID] = dontCare, etc... },
   orderArray = {
     { number cmdID,
       {number, etc...},     params
       {"alt", "ctrl", "shift", "right"}   options
     }, ..
   }
 ) -> nil

Spring.GiveOrderArrayToUnitArray

 ( unitArray = { [1] = number unitID, etc... },
   orderArray = {
     { number cmdID,
       {number, etc...},    params
       {"alt", "ctrl", "shift", "right"}   options
     }, ..
   }
 ) -> nil

Heightmap

Spring.LevelHeightMap

 ( number x1, number z1 [, number x2, number z2], number height ) -> nil

Spring.AdjustHeightMap (heightmap[x][z] += height;)

 ( number x1, number z1 [, number x2, number z2], number height ) -> nil

Spring.RevertHeightMap

 ( number x1, number z1 [, number x2, number z2], number origFactor ) -> nil


Spring.SetHeightMapFunc

 ( lua_function [, arg1 ,[ arg2 [, ... ] ] ) -> nil | number absTotalHeightMapAmountChanged

Spring.AddHeightMap can only be called in SetHeightMapFunc()

 ( number x, number z, number height ) -> nil | number newHeight

Spring.SetHeightMap can only be called in SetHeightMapFunc()

 ( number x, number z, number height [,number terraform = 1] ) -> nil | number absHeightDiff

the terraform argument is a scaling factor: so if 0 nothing will be changed (the terraform starts) and if it is 1 the terraform will be finished.


Command Descriptions

Doesn't work in unsynced code!

Spring.EditUnitCmdDesc

 ( number unitID, number cmdDescID, table cmdArray ) -> nil

 structure of cmdArray:
 {
   [ id          = int ],
   [ type        = int ],
   [ name        = string ],
   [ action      = string ],
   [ tooltip     = string ],
   [ texture     = string ],
   [ cursor      = string ],
   [ hidden      = boolean ],
   [ disabled    = boolean ],
   [ showUnique  = boolean ],
   [ onlyTexture = boolean ],
   [ params      = { string = string, ... } ]
 }

Spring.InsertUnitCmdDesc

 ( number unitID [, number cmdDescID ] , table cmdArray ) -> nil

Spring.RemoveUnitCmdDesc

 ( number unitID [, number cmdDescID ] ) -> nil

Other

Spring.SetNoPause

 ( boolean noPause ) -> nil

Spring.SetUnitToFeature

 ( boolean tofeature ) -> nil

Spring.SetExperienceGrade

 ( number expGrade
  [, number ExpPowerScale [, number ExpHealthScale [, number ExpReloadScale ]]] ) -> nil
 expGrade defines how often UnitExperience() will be called,
  it is based on the following equation:
    (int) [exp/(exp+1)] / expGrade
  If this integer differs from the one before the experience change
  it will call UnitExperience().
 Also those 3 last params are only available in .cheat
 

Spring.SpawnCEG

 ( string "cegname",
   [, number posX = 0 [, number posY = 0 [, number posZ = 0
   [, number dirX = 0 [, number dirY = 0 [, number dirZ = 0
   [, number radius = 0 [, number damage = 0 ]] ]]] ]]]
 ) -> nil

Projectiles

Spring.SetProjectilePosition

 ( number projID [, number x = 0 [, number y = 0 [, number z = 0 ]]] ) -> nil

Spring.SetProjectileVelocity

 ( number projID [, number x = 0 [, number y = 0 [, number z = 0 ]]] ) -> nil

Spring.SetProjectileCollision

 ( number projID ) -> nil