把塔防的布防思路搬进行会活动:守卫矿脉战开放十二个炮台基座,会长用公会资金在基座上布设三种守卫塔,怪物按固定路线进攻,布防策略决定守卫成败,会长从指挥官变成工程师。
基座可布设箭塔、毒塔、冰塔三种守卫塔,资金不足提示差额,同基座重复布设先拆后建。actor是字符串,转对象后扣公会资金。
local TOWERS = { arrow = 500, poison = 800, ice = 1200 }
function buildTower(actor, baseId, kind)
local player = class(actor)
local cost = TOWERS[kind]
if cost == nil then
sendmsg(actor, 0, "未知塔型")
return
end
local fund = tonumber(getplayvar(actor, 2, "GUILD_FUND") or "0")
if fund < cost then
sendmsg(actor, 0, "公会资金不足,还差" .. cost - fund)
return
end
setplayvar(actor, "HUMAN", "GUILD_FUND", fund - cost, 1)
genmon("mine_defense", baseId * 3, 20, kind .. "守卫塔", 1)
sendmsg(actor, 0, kind .. "守卫塔布设成功")
end
箭塔单体高伤、毒塔范围减疗、冰塔减速聚怪,三塔配合的覆盖设计是布防的核心策略。
local function towerFire(kind, targets)
if kind == "arrow" then
humanhp(targets[1], "-", 300)
elseif kind == "poison" then
for _, t in ipairs(targets) do makeposion(t, 5, 30) end
elseif kind == "ice" then
for _, t in ipairs(targets) do
makeposion(t, 0, 20)
end
end
end
三塔的攻击范围与效果逐塔验证;资金扣减与布设状态一致性核对。上线后统计三塔的布设比例,毒塔冷门就调减疗强度,配装多样性是塔防玩法健康的标志。
makeposion的参数含义以引擎文档为准,中毒伤害与减速是两种效果形态,参数写错冰塔会变毒塔。genmon生成的守卫塔本质是怪物,敌我识别靠阵营标记,攻城方技能误伤自家塔的判定要排除。GUILD_FUND是行会资金镜像,与行会金库主账的同步时机要对齐,双账漂移是资金类玩法的通病。十二基座全满时的同屏怪物与塔攻击结算量要压测,塔防的负载在结算不在渲染。
全站技术干货持续更新:996 引擎 / Lua 实战帖,语法、参数与示例一篇讲透。进入文章地图 · 查看全部 →
设计初衷 强化是装备养成的主消耗口:黑铁矿石、金币、幸运后续材料都从这里回收。数值目标三条:前期强化爽感足(+1 到 +3 …
设计初衷 沙巴克是全服经济的枢纽:占领它要有真金白银的回报,但回报过丰会让大行会永久垄断、新区行会干脆躺平。数值目标三条:城…
设计初衷 红名系统要同时吓住恶意PK、又不扼杀正常摩擦:惩罚过轻,恶人会蹲新手村门口屠杀;惩罚过重,行会战误伤没人敢动手。数…
底层原理 Lua 的写入规则:给表中一个不存在的键赋值时,引擎先查元表的 __newindex;__newindex 若是函…
底层原理 引擎的 Lua 脚本跑在协作式调度里:一段脚本能跑多久,取决于它自己何时返回。祖玛阁开门要补 2000 只祖玛卫士…
底层原理 Lua 字符串不可变:每次 .. 都新建一个字符串对象,旧的变成垃圾。沙巴克战报高峰,200 名参战玩家每秒产生约…