⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 unit_factory_guard.lua

📁 这是整套横扫千军3D版游戏的源码
💻 LUA
字号:
--------------------------------------------------------------------------------------------------------------------------------------------------------------------  file:    unit_factory_guard.lua--  brief:   assigns new builder units to guard their source factory--  author:  Dave Rodgers----  Copyright (C) 2007.--  Licensed under the terms of the GNU GPL, v2 or later.------------------------------------------------------------------------------------------------------------------------------------------------------------------function widget:GetInfo()  return {    name      = "FactoryGuard",    desc      = "Assigns new builders to assist their source factory",    author    = "trepan",    date      = "Jan 8, 2007",    license   = "GNU GPL, v2 or later",    layer     = 0,    enabled   = false  --  loaded by default?  }end------------------------------------------------------------------------------------------------------------------------------------------------------------------ Automatically generated local definitionslocal CMD_GUARD            = CMD.GUARDlocal CMD_MOVE             = CMD.MOVElocal spGetMyTeamID        = Spring.GetMyTeamIDlocal spGetUnitBuildFacing = Spring.GetUnitBuildFacinglocal spGetUnitGroup       = Spring.GetUnitGrouplocal spGetUnitPosition    = Spring.GetUnitPositionlocal spGetUnitRadius      = Spring.GetUnitRadiuslocal spGiveOrderToUnit    = Spring.GiveOrderToUnitlocal spSetUnitGroup       = Spring.SetUnitGroup----------------------------------------------------------------------------------------------------------------------------------------------------------------local function ClearGroup(unitID, factID)  -- clear the unit's group if it's the same as the factory's  local unitGroup = spGetUnitGroup(unitID)  if (not unitGroup) then    return  end  local factGroup = spGetUnitGroup(factID)  if (not factGroup) then    return  end  if (unitGroup == factGroup) then    spSetUnitGroup(unitID, -1)  endendlocal function GuardFactory(unitID, unitDefID, factID, factDefID)  -- is this a factory?  local fd = UnitDefs[factDefID]  if (not (fd and fd.isFactory)) then    return   end  -- can this unit assist?  local ud = UnitDefs[unitDefID]  if (not (ud and ud.builder and ud.canAssist)) then    return  end  local x, y, z = spGetUnitPosition(factID)  if (not x) then    return  end  local radius = spGetUnitRadius(factID)  if (not radius) then    return  end  local dist = radius * 2  local facing = spGetUnitBuildFacing(factID)  if (not facing) then    return  end  -- facing values { S = 0, E = 1, N = 2, W = 3 }    local dx, dz -- down vector  local rx, rz -- right vector  if (facing == 0) then    -- south    dx, dz =  0,  dist    rx, rz =  dist,  0  elseif (facing == 1) then    -- east    dx, dz =  dist,  0    rx, rz =  0, -dist  elseif (facing == 2) then    -- north    dx, dz =  0, -dist    rx, rz = -dist,  0  else    -- west    dx, dz = -dist,  0    rx, rz =  0,  dist  end    local OrderUnit = spGiveOrderToUnit  OrderUnit(unitID, CMD_MOVE,  { x + dx, y, z + dz }, { "" })  OrderUnit(unitID, CMD_MOVE,  { x + rx, y, z + rz }, { "shift" })  OrderUnit(unitID, CMD_GUARD, { factID },            { "shift" })end--------------------------------------------------------------------------------function widget:UnitFromFactory(unitID, unitDefID, unitTeam,                                factID, factDefID, userOrders)  if (unitTeam ~= spGetMyTeamID()) then    return -- not my unit  end    ClearGroup(unitID, factID)  if (userOrders) then    return -- already has user assigned orders  end  GuardFactory(unitID, unitDefID, factID, factDefID)end--------------------------------------------------------------------------------

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -