控制链只有硬控(眩晕、冰冻):被控方一动不能动;软控缺失——封技能但不禁走打,控制层次少一档。沉默系统封装:沉默期间禁止施法但普攻与移动不受限,持续 3 秒;同源沉默 10 秒内不重复施加——控制有了软硬层次,战斗节奏更有纵深。
施加沉默。示例代码如下:
local function applySilence(actor)
local last = tonumber(getplayvar(actor, 0, "SilenceLast")) or 0
if os.time() - last < 10 then
return
end
setplayvar(actor, 0, "SilenceUntil", os.time() + 3, 0)
setplayvar(actor, 0, "SilenceLast", os.time(), 0)
sendmsg(actor, 1, "被沉默 3 秒,无法施法!")
end
施法拦截。示例代码如下:
local function canCast(actor, skillName)
local untilTs = tonumber(getplayvar(actor, 0, "SilenceUntil")) or 0
if os.time() < untilTs then
sendmsg(actor, 1, skillName .. " 施法失败:沉默中。")
return false
end
return true
end
applySilence 施加沉默(3 秒禁施法),SilenceLast 做 10 秒同源去重——同一施法者短时间内不重复施加;canCast 挂在每个施法入口的前置校验,沉默期施法失败并提示原因;SilenceUntil 与 SilenceLast 用 isSave=0 临时变量——控制状态不出战斗。解除途径:解控技能或等待到期,硬控可解、沉默也可解,控制体系对称。
沉默控制踩过三个坑:一是沉默误伤普攻职业(把普攻也拦了),沉默只拦 canCast 施法入口、普攻入口不挂校验;二是多名法师轮番沉默打出永久禁法,施法者级去重不够,改为目标级 10 秒沉默免疫窗;三是沉默状态没有图标反馈,被沉默方不知道为什么放不出技能,状态提示同步到铭牌。
全站技术干货持续更新:996 引擎 / Lua 实战帖,语法、参数与示例一篇讲透。进入文章地图 · 查看全部 →
【语法】 一、隐蔽陷阱 打印 5 层星号金字塔,每层比上层多 2 颗星、左侧空格少 1 个——空格与星数的数量关系不清晰时,…
【游戏】 一、业务场景 帮会下午没活动,成员上线点个卯就走。狩猎场上线:每晚 8 点开门 30 分钟,场内刷固定猎物,猎杀计…
【游戏】 一、业务场景 帮战开打才发现帮会没有物资储备,临时收捐谁也不交。粮仓上线:平日捐粮入库记账,帮战期间按配给开仓领补…
【语法】 一、隐蔽陷阱 验证"任一整数的立方都能写成连续奇数之和"时,起点从 1 开始逐个试,n 稍大就长跑几百步还没对上—…
【游戏】 一、业务场景 帮会大厅一面空墙,有人提议留言,结果聊天区刷屏根本留不住。题字墙上线:花 100 帮贡刻一句题字永久…
【游戏】 一、业务场景 灯谜活动上线半小时谜底被解题工具全数搜出——谜面与谜底同放在一份客户端配置里,读表即得。服务端重构:…