跳轉到內容

SpringRTS/Callouts 中的 Lua

來自華夏公益教科書,開放的書籍,為開放的世界

Callouts 只是在 Spring 中定義的函式,您可以在任何時候執行它們。callinscallouts 之間的區別在於,callins 實際上是事件呼叫器,而 callouts 是您可以使用的函式。Callouts 的性質與任何函式完全相同。它們可以返回值,可以更改值,也可以同時進行這兩項操作。請記住,同步/非同步理論仍然需要考慮。
例如,嘗試透過小部件中的 callout 更改遊戲引數的值是不允許的。

callout 示例

teamID=Spring.GetUnitTeam(unitID)

在上面的示例中,我們將 unitID 作為引數傳遞給 GetUnitTeam() 函式。GetUnitTeam 返回團隊的 ID,我們將該 ID 儲存到我們的變數 (teamID) 中。


Callout 名稱 描述 同步模式 非同步模式 引數 返回值
Spring.AddGrass x, y, z nil
Spring.AddHeightMap 只能在 SetHeightMapFunc 中呼叫 x, z, height nil
number newHeight
Spring.AddSmoothMesh 只能在 SetSmoothMeshFunc 中呼叫 x, z, height nil
number newHeight
Spring.AddTeamResource teamID, resourceName, resourceAmount nil
Spring.AddUnitDamage unitID, damageAmount [, number paralyze = 0 [, attackerID = -1 [, weaponID = -1[, impulse_x [, impulse_y [, impulse_z ]]] ]]] nil
Spring.AddUnitImpulse unitID, x, y, z nil
Spring.AddUnitResource unitID, resourceName, resourceAmount nil
Spring.AddUnitSeismicPing unitID, pingSize nil
Spring.AdjustHeightMap x1, z1 [, x2, z2], height nil
Spring.AdjustSmoothMesh x1, z1 [, x2, z2], height nil
Spring.CallCOBScript unitID, funcID
string funcName, number retArgs, COBArg1, COBArg2, ...
number returnValue, number retArg1, number retArg2, ...
Spring.CallCOBScriptCB 在 0.78.2.1 中已損壞;將隨著 Lua 作為 COB 替換的引入而被移除 funcName, number retArgs, COBArg1, COBArg2, ... number returnValue, number CallbackData, number retArg1, number retArg2, ...
Spring.CreateFeature defName
featureID, x, y, z[,number heading [, allyTeamID ]]
featureID
Spring.CreateUnit 地圖外的位置將被限制!您仍然可以使用 MoveCtrl 來實現這一點 number unitDefID, x, y, z, number facing string "facing", teamID, [boolean build = false] unitID,
Spring.DestroyFeature featureID nil
Spring.DestroyUnit unitID, [boolean selfd = false,], [boolean reclaimed = false,], [number attackerID] nil
Spring.EditUnitCmdDesc unitID, number cmdDescID, table cmdArray nil
Spring.GameOver 將宣佈遊戲結束。在 0.83.x 版本中新增 [ [1] = allyTeamID1, [2] = allyTeamID2, .. ] nil
Spring.GetCOBScriptID unitID, funcName funcID
Spring.GetUnitCOBValue unitID, [, boolean splitData=false], number COBValue[, number param1 [,number param2 [, number param3 [, number param4 ] ] ] ] number result1, number result2
Spring.GiveOrderArrayToUnitArray unitArray = { [1] = unitID, etc... },orderArray = {{ number cmdID,{number, etc...}, params{"alt", "ctrl", "shift", "right"} options}, ..} nil
Spring.GiveOrderArrayToUnitMap unitMap = { [unitID] = dontCare, etc... }, orderArray = {{ number cmdID,{number, etc...}, params{"alt", "ctrl", "shift", "right"} options}, ..} nil
Spring.GiveOrderToUnit unitID, 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.GiveOrderToUnitMap unitMap = { [unitID] = dontCare, etc... },number cmdID,params = {number, etc...},options = {"alt", "ctrl", "shift", "right"} nil
Spring.InsertUnitCmdDesc unitID, [, number cmdDescID ] , table cmdArray nil
Spring.KillTeam 將宣佈一個團隊死亡。在 0.83.x 版本中新增 teamID nil
Spring.LevelHeightMap x1, z1 [, x2, z2], height nil
Spring.LevelSmoothMesh x1, z1 [, x2, z2], height nil
Spring.RemoveBuildingDecal unitID, nil
Spring.RemoveGrass x, y, z nil
Spring.RemoveUnitCmdDesc unitID, [, number cmdDescID ] nil
Spring.RevertHeightMap x1, z1 [, x2, z2], number origFactor nil
Spring.RevertSmoothMesh x1, z1 [, x2, z2], number origFactor nil
Spring.SetExperienceGrade number expGrade[, number ExpPowerScale [, number ExpHealthScale [, number ExpReloadScale ]]] nil
Spring.SetFeatureAlwaysVisible featureID, boolean enable nil
Spring.SetFeatureCollisionVolumeData featureID, number scaleX, number scaleY, number scaleZ, number offsetX, number offsetY, number offsetX, number vType, number tType, number Axis nil
Spring.SetFeatureDirection featureID, x, y, z nil
Spring.SetFeatureHealth featureID, number health nil
Spring.SetFeatureNoSelect featureID, boolean noSelect nil
Spring.SetFeaturePosition featureID, x, y, z [, boolean snapToGround] nil
Spring.SetFeatureReclaim featureID, number reclaimLeft nil
Spring.SetFeatureResurrect string facing ] nil
Spring.SetHeightMap 只能在 SetHeightMapFunc 中呼叫 x, z, number height [,number terraform = 1] number absHeightDiff
Spring.SetHeightMapFunc lua_function [, arg1 ,[ arg2 [, ... ] ] number absTotalHeightMapAmountChanged
Spring.SetMapSquareTerrainType x, z, int newType int oldType
Spring.SetNoPause boolean noPause nil
Spring.SetProjectileCEG number projID, string ceg_name nil
Spring.SetProjectileCollision number projID nil
Spring.SetProjectileGravity number projID [, number grav = 0] nil
Spring.SetProjectileMoveControl 停用引擎移動控制,以便 Lua 可以完全控制物理 number projID, boolean enable nil
Spring.SetProjectilePosition number projID [, number x = 0 [, number y = 0 [, number z = 0 ]]] nil
Spring.SetProjectileSpinAngle number projID [, number spinAngle = 0] nil
Spring.SetProjectileSpinSpeed number projID [, number speed = 0] nil
Spring.SetProjectileSpinVec 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.SetSmoothMesh 只能在 SetSmoothMeshFunc 中呼叫 x, z, number height [,number terraform = 1] number absHeightDiff
Spring.SetSmoothMeshFunc lua_function [, arg1 ,[ arg2 [, ... ] ] number absTotalHeightMapAmountChanged
Spring.SetTeamResource teamID, string resource, number amount nil
Spring.SetTeamShareLevel "energy", number amount nil
Spring.SetTerrainTypeData int typeIndex[, number speedTanks = nil ][, number speedKBOTs = nil ][, number speedHovers = nil ][, number speedShips = nil ] boolean true
Spring.SetUnitAlwaysVisible unitID, boolean alwaysVisible nil
Spring.SetUnitArmored unitID, boolean armored nil
Spring.SetUnitBlocking unitID, boolean blocking [, boolean collide ] nil
Spring.SetUnitBuildSpeed number builderID, number buildSpeed, [ number repairSpeed [, number reclaimSpeed [,number resurrectSpeed [, number captureSpeed [, number terraformSpeed ]] ]]] nil
Spring.SetUnitCOBValue unitID, number COBValue, number param1 [,number param2] nil
Spring.SetUnitCloak number scriptCloak, [ number decloakDistance | boolean decloakAbs ] nil
Spring.SetUnitCollisionVolumeData unitID, number scaleX, number scaleY, number scaleZ, number offsetX, number offsetY, number offsetX, number vType, number tType, number Axis nil
Spring.SetUnitCosts unitID, { [ buildTime = number amount ], [ metalCost = number amount ], [ energyCost = number amount ]} nil
Spring.SetUnitExperience unitID, number experience nil
Spring.SetUnitFlanking unitID, string "mode", number mode nil
Spring.SetUnitFuel unitID, number fuel nil
Spring.SetUnitHealth { [ health = number health ],[ capture = number capture ],[ paralyze = number paralyze ],[ build = number build ] } nil
Spring.SetUnitLineage 從 0.83.x 版本中移除 unitID, number teamID [, boolean isRoot] nil
Spring.SetUnitLosMask table losTypes nil
Spring.SetUnitLosState table losTypes nil
Spring.SetUnitMaxHealth unitID, number maxHealth nil
Spring.SetUnitMetalExtraction unitID, number depth [,number range] nil
Spring.SetUnitMoveGoal 預設命令使用,用於進入建造範圍、攻擊範圍等 unitID, x, y, z, [, number radius = 0 [, number speed = unit] ] nil
Spring.SetUnitNeutral unitID, boolean neutral nil
Spring.SetUnitPhysics unitIDnumber posx, number posy, number posz,number velx, number vely, number velz,number rotx, number roty, number rotz, nil
Spring.SetUnitPieceCollisionVolumeData unitID, 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 Axis nil
Spring.SetUnitPosition unitID, x, number z [, boolean alwaysAboveSea] nil
Spring.SetUnitResourcing unitID, resourceName, resourceAmount
unitID, resourceName=resourceAmount
nil
Spring.SetUnitRotation unitID, number rotx, number roty, number rotz nil
Spring.SetUnitSensorRadius unitID, string type, number radius number newRadius
Spring.SetUnitShieldState unitID, [, number weaponID = -1] [, boolean enabled] [, number power] nil
Spring.SetUnitSonarStealth unitID, boolean sonarStealth nil
Spring.SetUnitStealth unitID, boolean stealth nil
Spring.SetUnitStockpile unitID, [, number stockpile [, number buildPercent ]] nil
Spring.SetUnitTarget x, y, z, [ boolean dgun = false ] nil
Spring.SetUnitToFeature boolean tofeature nil
Spring.SetUnitTooltip unitID, string "tooltip" nil
Spring.SetUnitTravel unitID, number travel [, number travelPeriod] nil
Spring.SetUnitVelocity unitID, number velx, number vely, number velz nil
Spring.SetUnitWeaponState table states nil
Spring.ShareTeamResource 0.82 及更高版本 number teamID_src, number teamID_recv, resource, number amount nil
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
Spring.TransferFeature featureID number teamID nil
Spring.TransferUnit unitID, numer newTeamID,[boolean given = true] nil
Spring.UseTeamResource { metal = number amount, energy = number amount} boolean hadEnough
Spring.UseUnitResource unitID, resourceName, resourceAmount
unitID, resourceName = resourceAmount}
boolean success
Spring.GetAllyTeamList { [1] = number allyTeamID, etc... }
華夏公益教科書