< Lua in SpringRTS

Callouts are just functions defined in Spring that you can run at any point. The difference between callins and callouts is that callins are practically event invokers while callouts are functions that are ready to be used by you. The nature of callous is exactly the same with any function. They can return values, they can change values or both. Keep in mind that the synced/unsynced theory should still be taken in consideration.
Trying for example to change the value of a game parameter via a callout in a widget is not permitted.

Example of callout:

teamID=Spring.GetUnitTeam(unitID)

In the above example we pass unitID as an argument to function GetUnitTeam(). GetUnitTeam returns the ID of the team which we store to our variable(teamID).


Callout nameDescriptionSynced modeUnsynced modeArgumentsReturn values
Spring.AddGrassx, y, znil
Spring.AddHeightMapcan only be called in SetHeightMapFuncx, z, heightnil
number newHeight
Spring.AddSmoothMeshcan only be called in SetSmoothMeshFuncx, z, heightnil
number newHeight
Spring.AddTeamResourceteamID, resourceName, resourceAmountnil
Spring.AddUnitDamageunitID, damageAmount [, number paralyze = 0 [, attackerID = -1 [, weaponID = -1[, impulse_x [, impulse_y [, impulse_z ]]] ]]]nil
Spring.AddUnitImpulseunitID, x, y, znil
Spring.AddUnitResourceunitID, resourceName, resourceAmountnil
Spring.AddUnitSeismicPingunitID, pingSizenil
Spring.AdjustHeightMapx1, z1 [, x2, z2], heightnil
Spring.AdjustSmoothMeshx1, z1 [, x2, z2], heightnil
Spring.CallCOBScriptunitID, funcID
string funcName, number retArgs, COBArg1, COBArg2, ...
number returnValue, number retArg1, number retArg2, ...
Spring.CallCOBScriptCBbroken in 0.78.2.1; will be removed with the introduction of Lua as COB replacementfuncName, number retArgs, COBArg1, COBArg2, ...number returnValue, number CallbackData, number retArg1, number retArg2, ...
Spring.CreateFeaturedefName
featureID, x, y, z[,number heading [, allyTeamID ]]
featureID
Spring.CreateUnitoffmap positions are clamped! you still can use MoveCtrl todo sonumber unitDefID, x, y, z, number facing string "facing", teamID, [boolean build = false]unitID,
Spring.DestroyFeaturefeatureIDnil
Spring.DestroyUnitunitID, [boolean selfd = false,], [boolean reclaimed = false,], [number attackerID]nil
Spring.EditUnitCmdDescYesNounitID, number cmdDescID, table cmdArraynil
Spring.GameOverWill declare game over. New in version 0.83.x[ [1] = allyTeamID1, [2] = allyTeamID2, .. ]nil
Spring.GetCOBScriptIDunitID, funcNamefuncID
Spring.GetUnitCOBValueunitID, [, boolean splitData=false], number COBValue[, number param1 [,number param2 [, number param3 [, number param4 ] ] ] ]number result1, number result2
Spring.GiveOrderArrayToUnitArrayunitArray = { [1] = unitID, etc... },orderArray = {{ number cmdID,{number, etc...}, params{"alt", "ctrl", "shift", "right"} options}, ..}nil
Spring.GiveOrderArrayToUnitMapunitMap = { [unitID] = dontCare, etc... }, orderArray = {{ number cmdID,{number, etc...}, params{"alt", "ctrl", "shift", "right"} options}, ..}nil
Spring.GiveOrderToUnitunitID, number cmdID, params = {number, etc...}, options = {"alt", "ctrl", "shift", "right"}nil
Spring.GiveOrderToUnitArrayunitArray = { [1] = unitID, etc... },number cmdID,params = {number, etc...},options = {"alt", "ctrl", "shift", "right"}nil
Spring.GiveOrderToUnitMapunitMap = { [unitID] = dontCare, etc... },number cmdID,params = {number, etc...},options = {"alt", "ctrl", "shift", "right"}nil
Spring.InsertUnitCmdDescunitID, [, number cmdDescID ] , table cmdArraynil
Spring.KillTeamWill declare a team to be dead. New in version 0.83.xteamIDnil
Spring.LevelHeightMapx1, z1 [, x2, z2], heightnil
Spring.LevelSmoothMeshx1, z1 [, x2, z2], heightnil
Spring.RemoveBuildingDecalunitID,nil
Spring.RemoveGrassx, y, znil
Spring.RemoveUnitCmdDescunitID, [, number cmdDescID ]nil
Spring.RevertHeightMapx1, z1 [, x2, z2], number origFactornil
Spring.RevertSmoothMeshx1, z1 [, x2, z2], number origFactornil
Spring.SetExperienceGradenumber expGrade[, number ExpPowerScale [, number ExpHealthScale [, number ExpReloadScale ]]]nil
Spring.SetFeatureAlwaysVisiblefeatureID, boolean enablenil
Spring.SetFeatureCollisionVolumeDatafeatureID, number scaleX, number scaleY, number scaleZ, number offsetX, number offsetY, number offsetX, number vType, number tType, number Axisnil
Spring.SetFeatureDirectionfeatureID, x, y, znil
Spring.SetFeatureHealthfeatureID, number healthnil
Spring.SetFeatureNoSelectfeatureID, boolean noSelectnil
Spring.SetFeaturePositionfeatureID, x, y, z [, boolean snapToGround]nil
Spring.SetFeatureReclaimfeatureID, number reclaimLeftnil
Spring.SetFeatureResurrectstring facing ]nil
Spring.SetHeightMapcan only be called in SetHeightMapFuncx, z, number height [,number terraform = 1]number absHeightDiff
Spring.SetHeightMapFunclua_function [, arg1 ,[ arg2 [, ... ] ]number absTotalHeightMapAmountChanged
Spring.SetMapSquareTerrainTypex, z, int newTypeint oldType
Spring.SetNoPauseboolean noPausenil
Spring.SetProjectileCEGnumber projID, string ceg_namenil
Spring.SetProjectileCollisionnumber projIDnil
Spring.SetProjectileGravitynumber projID [, number grav = 0]nil
Spring.SetProjectileMoveControldisables engine movecontrol, so lua can fully control the physicsnumber projID, boolean enablenil
Spring.SetProjectilePositionnumber projID [, number x = 0 [, number y = 0 [, number z = 0 ]]]nil
Spring.SetProjectileSpinAnglenumber projID [, number spinAngle = 0]nil
Spring.SetProjectileSpinSpeednumber projID [, number speed = 0]nil
Spring.SetProjectileSpinVecnumber projID [, number x = 0 [, number y = 0 [, number z = 0]]]nil
Spring.SetProjectileVelocitynumber projID [, number x = 0 [, number y = 0 [, number z = 0 ]]]nil
Spring.SetSmoothMesh can only be called in SetSmoothMeshFuncx, z, number height [,number terraform = 1]number absHeightDiff
Spring.SetSmoothMeshFunclua_function [, arg1 ,[ arg2 [, ... ] ]number absTotalHeightMapAmountChanged
Spring.SetTeamResourceteamID, string resource, number amountnil
Spring.SetTeamShareLevel"energy", number amountnil
Spring.SetTerrainTypeDataint typeIndex[, number speedTanks = nil ][, number speedKBOTs = nil ][, number speedHovers = nil ][, number speedShips = nil ]boolean true
Spring.SetUnitAlwaysVisibleunitID, boolean alwaysVisiblenil
Spring.SetUnitArmoredunitID, boolean armorednil
Spring.SetUnitBlockingunitID, boolean blocking [, boolean collide ]nil
Spring.SetUnitBuildSpeednumber builderID, number buildSpeed, [ number repairSpeed [, number reclaimSpeed [,number resurrectSpeed [, number captureSpeed [, number terraformSpeed ]] ]]]nil
Spring.SetUnitCOBValueunitID, number COBValue, number param1 [,number param2]nil
Spring.SetUnitCloaknumber scriptCloak, [ number decloakDistance | boolean decloakAbs ]nil
Spring.SetUnitCollisionVolumeDataunitID, number scaleX, number scaleY, number scaleZ, number offsetX, number offsetY, number offsetX, number vType, number tType, number Axisnil
Spring.SetUnitCostsunitID, { [ buildTime = number amount ], [ metalCost = number amount ], [ energyCost = number amount ]}nil
Spring.SetUnitExperienceunitID, number experiencenil
Spring.SetUnitFlankingunitID, string "mode", number modenil
Spring.SetUnitFuelunitID, number fuelnil
Spring.SetUnitHealth{ [ health = number health ],[ capture = number capture ],[ paralyze = number paralyze ],[ build = number build ] }nil
Spring.SetUnitLineageRemoved from version 0.83.xunitID, number teamID [, boolean isRoot]nil
Spring.SetUnitLosMasktable losTypesnil
Spring.SetUnitLosStatetable losTypesnil
Spring.SetUnitMaxHealthunitID, number maxHealthnil
Spring.SetUnitMetalExtractionunitID, number depth [,number range]nil
Spring.SetUnitMoveGoalused by default commands to get in build-,attackrange etc.unitID, x, y, z, [, number radius = 0 [, number speed = unit] ]nil
Spring.SetUnitNeutralunitID, boolean neutralnil
Spring.SetUnitPhysicsunitIDnumber posx, number posy, number posz,number velx, number vely, number velz,number rotx, number roty, number rotz,nil
Spring.SetUnitPieceCollisionVolumeDataunitID, number pieceIndex, boolean affectLocal, boolean affectGlobal, boolean enableLocal, boolean enableGlobal, number scaleX, number scaleY, number scaleZ, number offsetX, number offsetY, number offsetZ, number vType, number Axisnil
Spring.SetUnitPositionunitID, x, number z [, boolean alwaysAboveSea]nil
Spring.SetUnitResourcingunitID, resourceName, resourceAmount
unitID, resourceName=resourceAmount
nil
Spring.SetUnitRotationunitID, number rotx, number roty, number rotznil
Spring.SetUnitSensorRadiusunitID, string type, number radiusnumber newRadius
Spring.SetUnitShieldStateunitID, [, number weaponID = -1] [, boolean enabled] [, number power]nil
Spring.SetUnitSonarStealthunitID, boolean sonarStealthnil
Spring.SetUnitStealthunitID, boolean stealthnil
Spring.SetUnitStockpileunitID, [, number stockpile [, number buildPercent ]]nil
Spring.SetUnitTargetx, y, z, [ boolean dgun = false ]nil
Spring.SetUnitToFeatureboolean tofeaturenil
Spring.SetUnitTooltipunitID, string "tooltip"nil
Spring.SetUnitTravelunitID, number travel [, number travelPeriod]nil
Spring.SetUnitVelocityunitID, number velx, number vely, number velznil
Spring.SetUnitWeaponStatetable statesnil
Spring.ShareTeamResource0.82 and laternumber teamID_src, number teamID_recv, resource, number amountnil
Spring.SpawnCEGstring "cegname", number posX = 0, number posY = 0, number posZ = 0, number dirX = 0, number dirY = 0, number dirZ = 0, number radius = 0, number damage = 0nil
Spring.TransferFeaturefeatureID number teamIDnil
Spring.TransferUnitunitID, numer newTeamID,[boolean given = true]nil
Spring.UseTeamResource{ metal = number amount, energy = number amount}boolean hadEnough
Spring.UseUnitResourceunitID, resourceName, resourceAmount
unitID, resourceName = resourceAmount}
boolean success
Spring.GetAllyTeamList{ [1] = number allyTeamID, etc... }
This article is issued from Wikibooks. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.