沙巴克城门是攻城战的第一道关卡:城门血量百万级,攻方的攻城锤与法师团轰门,守方的箭塔与城墙守军反击。城门作为可破坏建筑单位的实现,是攻城战机关系统的第一课。
local GATE_HP = 1000000
function Siege.spawnGate()
local gate = QF_SpawnBuilding("shabake_gate", 210, 188)
gate.hp = GATE_HP
gate:SetAttackable(true)
gate:SetRepairable(true)
gate.onDestroyed = Siege.gateBroken
return gate
end
function Siege.gateBroken(gate, attackerGuild)
gate:SetAttackable(false)
QF_OpenDoor("shabake_gate")
QF_Broadcast(attackerGuild .. " 攻破了沙巴克城门!")
Siege.unlockPhase("palace")
end
城门以建筑单位实例化:百万血量、可攻击、可修理,摧毁触发回调解锁皇宫阶段。城门的攻击判定只接受攻方阵营,守方打自家城门无效。城门破碎的全服播报是攻城战的第一波高潮,皇宫大门随之开启。
function Siege.repairGate(gate, defender)
if gate.hp >= GATE_HP then return false, "城门完好无损" end
if not defender:HasItemByName("木材") then return false, "需要木材" end
defender:TakeItemByName("木材", 1)
gate.hp = math.min(gate.hp + 50000, GATE_HP)
return true
end
守方玩家消耗木材修理城门,每次修复 5 万血量,攻守围绕城门的攻防战是资源消耗战。修理动作有 3 秒施法时间,期间被攻击则中断,修理者的站位安全是守方分工的一部分。城门血量条在攻城地图界面上实时显示,攻守双方对城门的血量共识让战术沟通高效。
城门血量的变化流水记录每次伤害来源与修理事件,门破时刻与阶段解锁的时刻一致性校验。
城门的修理曾经不限制木材距离,守方在皇宫远程修门,修理改为接触式交互后攻防才有接触点。攻方阵营的误伤判定曾经让攻城锤的溅射打到己方城门组,阵营伤害过滤在建筑单位上与玩家单位统一。
城门的血量百万级在攻城战开场就是攻方指挥的第一道算术题:输出多少分钟破门、箭塔的压制损耗多少、修理的反制节奏如何对冲,攻门的 math 是攻城战术的起点。城门的视觉随血量变化:完好、裂纹、将破三个阶段的贴图递进,门板的破损程度是攻守双方共享的战场信息。城门破碎的碎屑特效与音效是攻城战音画的第一个高潮点。
全站技术干货持续更新:996 引擎 / Lua 实战帖,语法、参数与示例一篇讲透。进入文章地图 · 查看全部 →
实战应用:用在哪里 把接口串成功能:一个 BOSS 血条窗口覆盖前端的大半接口面——窗口的打开、控件的创建、网络消息的接收、…
实战应用:用在哪里 控件会动才有生命: GUI:ActionMoveTo 、 ActionFadeIn 、 ActionSc…
实战应用:用在哪里 活动图标、在线奖励按钮、红点提示这些常驻元素要钉在主界面的固定区域: GUI:Attach_MainTo…
实战应用:用在哪里 玩家的每个操作都要有回声: SL:ShowSystemTips 是屏幕中央的系统提示(操作失败、领取成功…
实战应用:用在哪里 前端拿到的大量数据是"字符串形态"的:服务端 sendluamsg 的字符串参数、配置表的行文本、本地缓…
实战应用:用在哪里 界面的炫彩体验有一半来自特效: GUI:Effect_Create 把引擎特效挂到界面控件上,按钮的流光…