Lua MoveCtrl: Difference between revisions
No edit summary |
Pepeampere (talk | contribs) →MoveType-Controlling: adding the repeated values to be listed in all commands docu |
||
| (28 intermediate revisions by 8 users not shown) | |||
| Line 1: | Line 1: | ||
[[Engine_Development|Development]] < [[Lua_Scripting|Lua Scripting]] < {{FULLPAGENAME}} | [[Engine_Development|Development]] < [[Lua_Scripting|Lua Scripting]] < {{FULLPAGENAME}} | ||
= ScriptMoveType = | |||
== Enable/Disable == | == Enable/Disable == | ||
'''Spring.MoveCtrl.Enable''' | '''Spring.MoveCtrl.Enable''' | ||
| Line 19: | Line 20: | ||
== Physics == | == Physics == | ||
'''Spring.MoveCtrl.SetGravity''' | '''Spring.MoveCtrl.SetGravity''' | ||
( number unitID, number gravity ) -> nil | ( number unitID, number gravity ) -> nil | ||
<span class=note>N.B. gravity here is a multiplier to Game.gravity</span> | |||
'''Spring.MoveCtrl.SetDrag''' | '''Spring.MoveCtrl.SetDrag''' | ||
( number unitID, number | ( number unitID, number drag ) -> nil | ||
'''Spring.MoveCtrl.SetGroundOffset''' | '''Spring.MoveCtrl.SetGroundOffset''' | ||
| Line 78: | Line 80: | ||
'''Spring.MoveCtrl.SetTrackGround''' | '''Spring.MoveCtrl.SetTrackGround''' | ||
( number unitID, boolean noblock ) -> nil | ( number unitID, boolean noblock ) -> nil | ||
'''Spring.MoveCtrl.SetExtrapolate''' | '''Spring.MoveCtrl.SetExtrapolate''' | ||
( number unitID, boolean on ) -> nil | ( number unitID, boolean on ) -> nil | ||
'''Spring.MoveCtrl.SetShotStop''' | '''Spring.MoveCtrl.SetShotStop''' <span class="warning">Currently a no-op</span> | ||
( number unitID, boolean shotstop ) -> nil | ( number unitID, boolean shotstop ) -> nil | ||
'''Spring.MoveCtrl.SetSlopeStop''' | '''Spring.MoveCtrl.SetSlopeStop''' <span class="warning">Currently a no-op</span> | ||
( number unitID, boolean slopestop ) -> nil | ( number unitID, boolean slopestop ) -> nil | ||
'''Spring.MoveCtrl.SetCollideStop''' | '''Spring.MoveCtrl.SetCollideStop''' | ||
( number unitID, boolean collidestop ) -> nil | ( number unitID, boolean collidestop ) -> nil | ||
<span class=note>Enable both SetCollideStop and SetTrackGround to enable MoveCtrlNotify(unitID, unitDefID, unitTeam, data) call-in, data was supposed to indicate the type of notification but currently never has a value other than 1 (where 1 means "unit hit the ground")</span> | |||
= MoveType-Controlling = | |||
'''Spring.MoveCtrl.SetMoveDef''' {{new|94.0}} | |||
( number unitID, number moveDefID | string moveDefName ) -> boolean success | |||
<span class=note>NOTE: string moveDefName needs to be in '''lowercase''', notwithstanding the fact that it may be in another case in the movedef table. | |||
</span> | |||
<span class=note>NOTE: all Set*MoveTypeData functions support the following number keys: | |||
maxSpeed | |||
maxWantedSpeed | |||
repairBelowHealth | |||
</span> | |||
'''Spring.MoveCtrl.SetAirMoveTypeData''' | '''Spring.MoveCtrl.SetAirMoveTypeData''' {{new|0.81}} | ||
( number unitID, string key, value ) -> nil | ( number unitID, string key, value ) -> nil | ||
( number unitID, table values ) -> nil | ( number unitID, table values ) -> nil | ||
<span class=note>supported keys: | |||
numbers: | |||
maxSpeed | |||
maxWantedSpeed | |||
repairBelowHealth | |||
wantedHeight | |||
myGravity | |||
maxBank | |||
maxPitch | |||
turnRadius | |||
maxAcc | |||
maxAileron | |||
maxElevator | |||
maxRudder | |||
waterline | |||
attackSafetyDistance -- since 100.0 : fighters abort dive toward target if within attackSafetyDistance and try to climb back to normal altitude while still moving toward target | |||
maneuverBlockTime -- since 104.0.1+(FIXME) : number of frames aircraft will try to keep flying straight past the target after firing | |||
booleans: | |||
collide | |||
useSmoothMesh | |||
NOTE: not all keys and not all values may work correctly. | |||
[[SetMoveTypeDataExample|Example usage]]</span> | |||
'''Spring.MoveCtrl.SetGroundMoveTypeData''' {{new|0.81}} | |||
( number unitID, string key, value ) -> nil | |||
( number unitID, table values ) -> nil | |||
<span class=note>supported keys: | |||
numbers: | |||
baseTurnRate | |||
turnRate | |||
accRate | |||
decRate | |||
maxSpeed | |||
maxWantedSpeed | |||
repairBelowHealth | |||
maxReverseDist | |||
maxReverseSpeed | |||
minReverseAngle | |||
requestedSpeed | |||
requestedTurnRate | |||
sqSkidSpeedMult | |||
waterline | |||
booleans: | |||
floatOnWater | |||
pushResistant | |||
NOTE: not all keys and not all values may work correctly. | |||
[[SetMoveTypeDataExample|Example usage]]</span> | |||
{{new|101.0}} {{var|maxReverseDist}} & {{var|minReverseAngle}} keys | |||
{{new|104.0}} {{var|sqSkidSpeedMult}}, {{var|pushResistant}} & {{var|waterline}} keys | |||
'''Spring.MoveCtrl.SetGunshipMoveTypeData''' {{new|0.81}} | |||
( number unitID, string key, value ) -> nil | |||
( number unitID, table values ) -> nil | |||
<span class=note>supported keys: | |||
numbers: | |||
maxSpeed | |||
maxWantedSpeed | |||
repairBelowHealth | |||
wantedHeight | |||
turnRate | |||
accRate | |||
decRate | |||
altitudeRate | |||
currentBank | |||
currentPitch | |||
waterline | |||
booleans: | |||
collide | |||
useSmoothMesh | |||
bankingAllowed | |||
dontLand | |||
airStrafe | |||
NOTE: not all keys and not all values may work correctly. | |||
[[SetMoveTypeDataExample|Example usage]]</span> | |||
[[category: Lua]] | |||
Latest revision as of 00:34, 17 August 2021
Development < Lua Scripting < Lua MoveCtrl
ScriptMoveType
Enable/Disable
Spring.MoveCtrl.Enable
( number unitID ) -> nil
Spring.MoveCtrl.Disable
( number unitID ) -> nil
Tags
Spring.MoveCtrl.SetTag
( number unitID, number tag ) -> nil
Spring.MoveCtrl.GetTag
( number unitID ) -> nil
Spring.MoveCtrl.SetProgressState
( number unitID, number state | "done" | "active" | "failed" ) -> nil
Physics
Spring.MoveCtrl.SetGravity
( number unitID, number gravity ) -> nil
N.B. gravity here is a multiplier to Game.gravity
Spring.MoveCtrl.SetDrag
( number unitID, number drag ) -> nil
Spring.MoveCtrl.SetGroundOffset
( number unitID, number offset ) -> nil
Spring.MoveCtrl.SetWindFactor
( number unitID, number windFactor ) -> nil
Spring.MoveCtrl.SetPhysics
( number unitID, number posX, number posY, number posZ, number velX, number velY, number velZ, number rotX, number rotY, number rotZ ) -> nil
Spring.MoveCtrl.SetPosition
( number unitID, number posX, number posY, number posZ ) -> nil
Spring.MoveCtrl.SetVelocity
( number unitID, number velX, number velY, number velZ ) -> nil
Spring.MoveCtrl.SetRelativeVelocity
( number unitID, number relvelX, number relvelY, number relvelZ ) -> nil
Spring.MoveCtrl.SetRotation
( number unitID, number rotX, number rotY, number rotZ ) -> nil
Spring.MoveCtrl.SetRotationVelocity
( number unitID, number rotVelX, number rotVelY, number rotVelZ ) -> nil
Spring.MoveCtrl.SetRotationOffset
( number unitID, number rotOffX, number rotOffY, number rotOffZ ) -> nil
Spring.MoveCtrl.SetHeading
( number unitID, number heading ) -> nil
Options
Spring.MoveCtrl.SetNoBlocking
( number unitID, boolean noblock ) -> nil
Spring.MoveCtrl.SetLimits
( number unitID, number minX, number minY, number minZ, number maxX, number maxY, number maxZ ) -> nil
Spring.MoveCtrl.SetTrackSlope
( number unitID, boolean trackslope ) -> nil
Spring.MoveCtrl.SetTrackGround
( number unitID, boolean noblock ) -> nil
Spring.MoveCtrl.SetExtrapolate
( number unitID, boolean on ) -> nil
Spring.MoveCtrl.SetShotStop Currently a no-op
( number unitID, boolean shotstop ) -> nil
Spring.MoveCtrl.SetSlopeStop Currently a no-op
( number unitID, boolean slopestop ) -> nil
Spring.MoveCtrl.SetCollideStop
( number unitID, boolean collidestop ) -> nil
Enable both SetCollideStop and SetTrackGround to enable MoveCtrlNotify(unitID, unitDefID, unitTeam, data) call-in, data was supposed to indicate the type of notification but currently never has a value other than 1 (where 1 means "unit hit the ground")
MoveType-Controlling
Spring.MoveCtrl.SetMoveDef New in version 94.0
( number unitID, number moveDefID | string moveDefName ) -> boolean success
NOTE: string moveDefName needs to be in lowercase, notwithstanding the fact that it may be in another case in the movedef table.
NOTE: all Set*MoveTypeData functions support the following number keys:
maxSpeed
maxWantedSpeed
repairBelowHealth
Spring.MoveCtrl.SetAirMoveTypeData New in version 0.81
( number unitID, string key, value ) -> nil
( number unitID, table values ) -> nil
supported keys:
numbers:
maxSpeed
maxWantedSpeed
repairBelowHealth
wantedHeight
myGravity
maxBank
maxPitch
turnRadius
maxAcc
maxAileron
maxElevator
maxRudder
waterline
attackSafetyDistance -- since 100.0 : fighters abort dive toward target if within attackSafetyDistance and try to climb back to normal altitude while still moving toward target
maneuverBlockTime -- since 104.0.1+(FIXME) : number of frames aircraft will try to keep flying straight past the target after firing
booleans:
collide
useSmoothMesh
NOTE: not all keys and not all values may work correctly.
Example usage
Spring.MoveCtrl.SetGroundMoveTypeData New in version 0.81
( number unitID, string key, value ) -> nil
( number unitID, table values ) -> nil
supported keys:
numbers:
baseTurnRate
turnRate
accRate
decRate
maxSpeed
maxWantedSpeed
repairBelowHealth
maxReverseDist
maxReverseSpeed
minReverseAngle
requestedSpeed
requestedTurnRate
sqSkidSpeedMult
waterline
booleans:
floatOnWater
pushResistant
NOTE: not all keys and not all values may work correctly.
Example usage
New in version 101.0 maxReverseDist & minReverseAngle keys
New in version 104.0 sqSkidSpeedMult, pushResistant & waterline keys
Spring.MoveCtrl.SetGunshipMoveTypeData New in version 0.81
( number unitID, string key, value ) -> nil
( number unitID, table values ) -> nil
supported keys:
numbers:
maxSpeed
maxWantedSpeed
repairBelowHealth
wantedHeight
turnRate
accRate
decRate
altitudeRate
currentBank
currentPitch
waterline
booleans:
collide
useSmoothMesh
bankingAllowed
dontLand
airStrafe
NOTE: not all keys and not all values may work correctly.
Example usage