Lua_SyncedCtrl - beyond-all-reason/springrts_engine_wiki_mirror GitHub Wiki

Development < Lua Scripting <

Game End

RulesParams

String values are new since 95.0. Attention: Numeric paramValues in quotes will be converted to number.

Resources

Teams

Unit Handling

Unit Control

or

or

or

or

or

or

Format of the states table:

   {      ["reloadState"     = number value,]      ["reloadFrame"     = number value,] (synonym for reloadState!)      ["reloadTime"      = number value,]      ["accuracy"        = number value,]      ["sprayAngle"      = number value,]      ["range"           = number value,] (*)      ["projectileSpeed" = number value,]      ["burst"           = number value,]      ["burstRate"       = number value,]      ["projectiles"     = number value,]      ["salvoLeft"       = number value,]      ["nextSalvo"       = number value,]      ["aimReady"        = number value,] (<>0.0f := true)    }  (*) if you change the range of a weapon with dynamic damage  make sure you use SetUnitWeaponDamages to change dynDamageRange as well.  

or

Format of the damages table:

  {      ["paralyzeDamageTime" = number value,]        ["impulseFactor"      = number value,]      ["impulseBoost"       = number value,]      ["craterMult"         = number value,]      ["craterBoost"        = number value,]      ["dynDamageExp"       = number value,]      ["dynDamageMin"       = number value,]      ["dynDamageRange"     = number value,]      ["dynDamageInverted"  = number value,] (<>0.0f := true)      ["craterAreaOfEffect" = number value,]      ["damageAreaOfEffect" = number value,]      ["edgeEffectiveness"  = number value,]      ["explosionSpeed"     = number value,]      [number armorType     = number value,] (changes the damage against this armor type)    }  

 enum COLVOL_TYPES {      COLVOL_TYPE_DISABLED = -1,      COLVOL_TYPE_ELLIPSOID = 0,      COLVOL_TYPE_CYLINDER,      COLVOL_TYPE_BOX,      COLVOL_TYPE_SPHERE,      COLVOL_NUM_TYPES       // number of non-disabled collision volume types    };    enum COLVOL_TESTS {      COLVOL_TEST_DISC = 0,      COLVOL_TEST_CONT = 1,      COLVOL_NUM_TESTS = 2   // number of tests    };    enum COLVOL_AXES {      COLVOL_AXIS_X   = 0,      COLVOL_AXIS_Y   = 1,      COLVOL_AXIS_Z   = 2,      COLVOL_NUM_AXES = 3    // number of collision volume axes    };  

Unit LOS

Unit Resourcing

or

or

Feature Handling

Feature Control

|arg6 = |arg7 = |arg8 = |arg9 = |return = |info = }}

Lua to COB

Give Order

Options can also be a bitmask; e.g. 0 instead of an empty table (can avoid performance hit on table creation) See Lua CMDs for relevant constants.

Ground

Grass

Heightmap

Note that x & z coords are in worldspace (Game.mapSizeX/Z), still the heightmap resolution is Game.squareSize.

Example code:

Spring.SetHeightMapFunc(function()
    for z=0,Game.mapSizeZ, Game.squareSize do
        for x=0,Game.mapSizeX, Game.squareSize do
            Spring.SetHeightMap( x, z, 200 + 20 * math.cos((x + z) / 90) )
        end
    end
end)

TerrainTypes

See also unitdef tag.

MetalAmount

Command Descriptions

Doesn't work in unsynced code!

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

is and allows custom commands to be non-queueing (handy for state toggles).

Other

Possible keys of explosionParams are:
    weaponDef = number,
    owner = number,
    hitUnit = number,
    hitFeature = number,
    craterAreaOfEffect = number,
    damageAreaOfEffect = number,
    edgeEffectiveness = number,
    explosionSpeed = number,
    gfxMod = number,
    impactOnly = boolean,
    ignoreOwner = boolean,
    damageGround = boolean

Please note the explosion defaults to 1 damage regardless of what it's defined in the weaponDef.
The weapondefID is only used for visuals and for passing into callins like UnitDamaged.

Equal to the UnitScript versions of EmitSFX, but takes position and direction arguments (in either unit- or piece-space) instead of a piece index.

Projectiles

Possible keys of projectileParams are:
    pos = {number x, number y, number z},
    end = {number x, number y, number z},
    speed = {number x, number y, number z},
    spread = {number x, number y, number z},
    error = {number x, number y, number z},
    owner = number,
    team = number,
    ttl = number,
    gravity = number,
    tracking = number,
    maxRange = number,
    startAlpha = number,
    endAlpha = number,
    model = string,
    cegTag = string

Pre 95.0:

Post 95.0:

targetTypeStr can be one of:
    'u' - unit
    'f' - feature
    'p' - projectile
  while targetTypeInt is one of:
    string.byte('g') := GROUND
    string.byte('u') := UNIT
    string.byte('f') := FEATURE
    string.byte('p') := PROJECTILE

or

Format of the damages table:
   {
      ["paralyzeDamageTime" = number value,]
      ["impulseFactor"      = number value,]
      ["impulseBoost"       = number value,]
      ["craterMult"         = number value,]
      ["craterBoost"        = number value,]
      ["dynDamageExp"       = number value,]
      ["dynDamageMin"       = number value,]
      ["dynDamageRange"     = number value,]
      ["dynDamageInverted"  = number value,] (<>0.0f := true)
      ["craterAreaOfEffect" = number value,]
      ["damageAreaOfEffect" = number value,]
      ["edgeEffectiveness"  = number value,]
      ["explosionSpeed"     = number value,]
      [number armorType     = number value,] (changes the damage against this armor type)
    }

category: Lua

⚠️ **GitHub.com Fallback** ⚠️