Lua_UnsyncedCtrl - beyond-all-reason/springrts_engine_wiki_mirror GitHub Wiki

Development < Lua Scripting <

NOTE: Prior to 102.0, entries below marked (needs ModUICtrl) require the setting ModUICtrl to be enabled in the users springrc, if you want to use them in unsynced LuaRules/LuaGaia. It is enabled by default in previous versions and removed in 102.0 so you generally don't need to care.

UI

Ingame Console

Possible values for logLevel are:
    "debug"   | LOG.DEBUG
    "info"    | LOG.INFO
    "notice"  | LOG.NOTICE (engine default) (new in Version 97)
    "warning" | LOG.WARNING
    "error"   | LOG.ERROR
    "fatal"   | LOG.FATAL

or

GUI

or

Mouse

LOS Colors

( table reds = { number always, number LOS, number radar, number jam },
    table greens = { number always, number LOS, number radar, number jam },
    table blues = { number always, number LOS, number radar, number jam } ) -> nil

SendMessage

Markers

Sounds

    "general" || 0 || nil (default)
    "battle" || "sfx" | 1
    "unitreply" || "voice" || 2
    "userinterface" || "ui" || 3

SendLuaMessage

Very important! (allows synced inter-lua-enviroment communications)

AI

Units

Unit Selection

Unit Group

Give Order

Unit NoDraw,NoSelect,NoMinimap

Features

Developers

  params = {
    absorb = {number r, number g, number b},
    baseColor = {number r, number g, number b},
    minColor = {number r, number g, number b},
    surfaceColor = {number r, number g, number b},
    diffuseColor = {number r, number g, number b},
    specularColor = {number r, number g, number b},
    planeColor = {number r, number g, number b},
    texture = string file,
    foamTexture = string file,
    normalTexture = string file,
    damage = number value,
    repeatX = number value,
    repeatY = number value,
    surfaceAlpha = number value,
    ambientFactor = number value,
    diffuseFactor = number value,
    specularFactor = number value,
    specularPower = number value,
    fresnelMin = number value,
    fresnelMax = number value,
    fresnelPower = number value,
    reflectionDistortion = number value,
    blurBase = number value,
    blurExponent = number value,
    perlinStartFreq = number value,
    perlinLacunarity = number value,
    perlinAmplitude = number value,
    numTiles = number value,
    shoreWaves = boolean value,
    forceRendering = boolean value,
    hasWaterPlane = boolean value,
  }
  params = {
    splatTexMults = {number r, number g, number b, number a},
    splatTexScales = {number r, number g, number b, number a},
    voidWater = boolean value,
    voidGround = boolean value,
    splatDetailNormalDiffuseAlpha = boolean value,
  }

GUI

or

or

|arg5 = |arg6 = |arg7 = |arg8 = |arg9 = |return = assigned |info = Changes/creates the cursor of a single CursorCmd. Note, that iconFileName is not the full filename instead it is like this: Wanted filename: Anims/cursorattack_0.bmp => iconFileName: cursorattack }}

or

Sharing

or

UnitDef RadarIcons & BuildPics

Camera

(Virtual-)FileSystem

The full VFS API is available at link.

Engine Config

The following functions read the engine configs saved in Springsettings.cfg, a version-ed instance of these or a custom file supplied on the command line. If *Overlay is true, the value will only be set in memory, and not be restored for the next game.

World Primitives

outdated! use opengl api instead!

Sun

The dynamic Sun must be invoked via /dynamicsun (Dynamic sun was removed in 104.0, use SetSunDirection, SetSunLighting & SetAtmosphere instead).

     {ground,unit}{Ambient,Diffuse,Specular}Color and specularExponent
     All Colourvalues have to in the Range from 0.0 to 1.0 for all colors and the alpha
     Example usage: Spring.SetSunLighting({groundAmbientColor = {1, 0.1, 1}, groundDiffuseColor = {1, 0.1, 1} })
     fog{Start,End}, {sun,sky,cloud}Color
     Example usage: Spring.SetAtmosphere({ fogStart = 0, fogEnd   = 0.5, fogColor = { 0.7, 0.2, 0.2, 1 }})

Misc

Rendering

Preload

Allow the engine to load the unit's model (and texture) in a background thread. Wreckages and buildOptions of a unit are automatically preloaded.

Lighting

NOTE: these (0.83+) lighting callouts only work when called from unsynced gadgets!

lightParams is a table that should contain at least one of the following recognized key/value pairs:

   lightParams = {        position = {px, py, pz},        direction = {dx, dy, dz},        ambientColor = {red, green, blue},        diffuseColor = {red, green, blue},        specularColor = {red, green, blue},        intensityWeight = {ambientWeight, diffuseWeight, specularWeight},

       -- per-frame decay of ambientColor (spread over TTL frames)        ambientDecayRate = {ambientRedDecay, ambientGreenDecay, ambientBlueDecay},        -- per-frame decay of diffuseColor (spread over TTL frames)        diffuseDecayRate = {diffuseRedDecay, diffuseGreenDecay, diffuseBlueDecay},        -- per-frame decay of specularColor (spread over TTL frames)        specularDecayRate = {specularRedDecay, specularGreenDecay, specularBlueDecay},        -- *DecayType = 0.0 -> interpret *DecayRate values as linear, else as exponential        decayFunctionType = {ambientDecayType, diffuseDecayType, specularDecayType},

       radius = number elmos,        fov = number degrees,        ttl = number frames,        priority = number,        ignoreLOS = boolean,    }

Map

Example usage: Spring.SetMapShadingTexture("$ssmf_specular", "name_of_my_shiny_texture")

The ID's must refer to valid programs returned by gl.CreateShader. Passing in a value of 0 will cause the respective shader to revert back to its engine default. Custom map shaders that declare a uniform ivec2 named "texSquare" can sample from the default diffuse texture(s), which are always bound to TU 0.

category: Lua

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