Lua SyncedCtrl: Difference between revisions
Added projectile controls, SpawnCEG |
77b |
||
| Line 24: | Line 24: | ||
= Unit Handling = | = Unit Handling = | ||
'''Spring.CreateUnit''' | '''Spring.CreateUnit''' | ||
( string "defName", | ( string "defName" | number unitDefID, | ||
number x, number y, number z, | number x, number y, number z, | ||
(number facing | string "facing"), | (number facing | string "facing"), | ||
| Line 30: | Line 30: | ||
<font color="#55ee99"> | <font color="#55ee99"> | ||
possible values for facing are: | possible values for facing are: | ||
"s" | 0 | "south" | "s" | 0 | ||
"e" | 1 | "east" | "e" | 1 | ||
"n" | 2 | "north" | "n" | 2 | ||
"w" | 3 | "west" | "w" | 3 | ||
</font> | </font> | ||
| Line 82: | Line 82: | ||
( number unitID, number experience ) -> nil | ( number unitID, number experience ) -> nil | ||
'''Spring. | '''Spring.SetUnitFuel''' | ||
( number unitID, | ( number unitID, number fuel ) -> nil | ||
'''Spring.SetUnitLineage''' | '''Spring.SetUnitLineage''' | ||
| Line 111: | Line 95: | ||
number enemyUnitID | number x, number y, number z, | number enemyUnitID | number x, number y, number z, | ||
[ boolean dgun = false ] ) -> nil | [ boolean dgun = false ] ) -> nil | ||
'''Spring.SetUnitBlocking''' | '''Spring.SetUnitBlocking''' | ||
( number unitID, boolean noBlock) -> nil | ( number unitID, boolean noBlock [, boolean collide ] ) -> nil | ||
'''Spring.SetUnitMetalExtraction''' | '''Spring.SetUnitMetalExtraction''' | ||
| Line 125: | Line 106: | ||
number buildSpeed, [ number repairSpeed [, number reclaimSpeed | number buildSpeed, [ number repairSpeed [, number reclaimSpeed | ||
[,number resurrectSpeed [, number captureSpeed [, number terraformSpeed ]] ]]] ) -> nil | [,number resurrectSpeed [, number captureSpeed [, number terraformSpeed ]] ]]] ) -> nil | ||
'''Spring.SetUnitArmored''' | |||
( number unitID, boolean armored ) -> nil | |||
'''Spring.SetUnitShieldState''' | '''Spring.SetUnitShieldState''' | ||
( number unitID, boolean enabled [, number power] ) -> nil | ( 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''' | '''Spring.SetUnitWeaponState''' | ||
( number unitID, number weaponNum, table states ) -> nil | ( number unitID, number weaponNum, table states ) -> nil | ||
<font color="#55ee99">format of the states table: | <font color="#55ee99">format of the states table: | ||
{ | { | ||
[" | ["reloadState" = number value,] | ||
[" | ["reloadTime" = number value,] | ||
["accuracy" = number value,] | ["accuracy" = number value,] | ||
[" | ["sprayAngle" = number value,] | ||
["range" = number value,] | ["range" = number value,] | ||
[" | ["projectileSpeed" = number value,] | ||
["burst" = number value,] | |||
["burstRate" = number value,] | |||
["projectiles" = number value,] | |||
} | } | ||
</font> | </font> | ||
'''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''' | '''Spring.SetUnitTravel''' | ||
( number unitID, number travel [, number travelPeriod] ) -> nil | ( number unitID, number travel [, number travelPeriod] ) -> nil | ||
| Line 167: | Line 166: | ||
'''Spring.AddUnitImpulse''' | '''Spring.AddUnitImpulse''' | ||
( number unitID, number x, number y, number z ) -> nil | ( 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 | |||
<font color="#55ee99"> | |||
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.</font> | |||
'''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 | |||
<font color="#55ee99">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 | |||
</font><font color="#55ee99">or a table of the following form: | |||
losTypes = { | |||
[los = boolean,] | |||
[radar = boolean,] | |||
[prevLos = boolean,] | |||
[contRadar = boolean,] | |||
}</font> | |||
'''Spring.SetUnitLosState''' | |||
( number unitID, number allyTeam, number los | table losTypes ) -> nil | |||
<font color="#55ee99">see above for more info on the arguments</font> | |||
'''Spring.SetUnitSensorRadius''' | |||
( number unitID, string type, number radius ) -> nil | number newRadius | |||
<font color="#55ee99">type can be: | |||
"los","airLos","radar","sonar","seismic","radarJammer","sonarJammer"</font> | |||
== Unit Ressourcing == | == Unit Ressourcing == | ||
| Line 189: | Line 241: | ||
= Feature Handling = | = Feature Handling = | ||
'''Spring.CreateFeature''' | '''Spring.CreateFeature''' | ||
( | ( string "defName" | number featureID, number x, number y, number z | ||
[,number heading [, number AllyTeamID ]] ) -> number featureID | [,number heading [, number AllyTeamID ]] ) -> number featureID | ||
| Line 209: | Line 261: | ||
( number featureID, string "UnitDefName?" [, number facing | string "facing" ] ) -> nil | ( number featureID, string "UnitDefName?" [, number facing | string "facing" ] ) -> nil | ||
<font color="#55ee99"> | <font color="#55ee99"> | ||
possible | possible values for facing are: | ||
"s" | "south" | "s" | 0 | ||
"e" | "east" | "e" | 1 | ||
"n" | "north" | "n" | 2 | ||
"w" | "west" | "w" | 3 | ||
</font> | </font> | ||
| Line 224: | Line 276: | ||
'''Spring.SetFeatureNoSelect''' | '''Spring.SetFeatureNoSelect''' | ||
( number featureID, boolean noSelect ) -> nil | ( 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 | |||
| Line 297: | Line 355: | ||
'''Spring.RevertHeightMap''' | '''Spring.RevertHeightMap''' | ||
( number x1, number z1 [, number x2, number z2], number origFactor ) -> nil | ( number x1, number z1 [, number x2, number z2], number origFactor ) -> nil | ||
'''Spring.SetHeightMapFunc''' | |||
( lua_function ) -> nil | number absTotalHeightMapAmountChanged | |||
'''Spring.AddHeightMap''' <font style="color:red;font-weight:600">can only be called in SetHeightMapFunc()</font> | |||
( number x, number z, number height ) -> nil | number newHeight | |||
'''Spring.SetHeightMap''' <font style="color:red;font-weight:600">can only be called in SetHeightMapFunc()</font> | |||
( number x, number z, number height [,number terraform = 1] ) -> nil | number absHeightDiff | |||
<font color="#55ee99">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.</font> | |||
= Command Descriptions = | = Command Descriptions = | ||
<font color="red" style="font-size:120%">Doesn't work in unsynced code!</font><br><br> | <font color="red" style="font-size:120%; font-weight:600">Doesn't work in unsynced code!</font><br><br> | ||
'''Spring.EditUnitCmdDesc''' | '''Spring.EditUnitCmdDesc''' | ||
| Line 326: | Line 396: | ||
'''Spring.RemoveUnitCmdDesc''' | '''Spring.RemoveUnitCmdDesc''' | ||
( number unitID [, number cmdDescID ] ) -> nil | ( number unitID [, number cmdDescID ] ) -> nil | ||
= Other = | = Other = | ||
| Line 357: | Line 417: | ||
'''Spring.SpawnCEG''' | '''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 | |||
Revision as of 07:39, 31 December 2008
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
( 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,] [boolean reclaimWreckage,] [number attackerID] ) -> nil
Spring.TransferUnit
( number unitID, numer newTeamID, boolean given ) -> nil
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
( 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,
params = {number, etc...},
options = {"alt", "ctrl", "shift", "right"}
}, ..
}
) -> nil
Spring.GiveOrderArrayToUnitArray
( unitArray = { [1] = number unitID, etc... },
orderArray = {
{ number cmdID,
params = {number, etc...},
options = {"alt", "ctrl", "shift", "right"}
}, ..
}
) -> 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 ) -> 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