属性系统的引擎接口搭档:changehumability 做带时效的属性修正(药水、buff 的属性部分),recalcabilitys 做全量属性重算(装备变更、转生后的面板重建)。修正接口管过程,重算接口管基准,属性的正确性是两者协作的结果。
---修改人物属性 id:属性ID value:数值 time:持续秒(0=永久)
function changehumability(actor, id, value, time) end
-- 力量药剂:攻击 +30,持续 30 分钟
changehumability(actor, ATK_ID, 30, 1800)
sendmsg(actor, 1, "力量药剂生效:攻击 +30")
修正接口的三参数:属性 ID 定位到具体属性位,数值是修正量,时长是生效窗口,到时自动回收修正。时效修正的登记让属性系统知道每一份修正的来源与期限,药水叠加规则(同 ID 刷新时长)由引擎按修正记录处理。修正与重算的分工:修正的加减作用于当前面板,重算从基础值重建整个面板。
---全量重算属性 actor:玩家
function recalcabilitys(actor) end
-- 装备穿戴后的面板重建
function QF_EquipChanged(actor)
recalcabilitys(actor)
sendmsg(actor, 1, "属性已刷新")
end
重算接口在装备变更、转生、觉醒这类基准变化的时机调用,重算的耗时与装备数量线性相关,穿戴的高频操作要关注重算的耗时水位。属性面板的正确性验证:基础值加全部来源的修正与重算后的面板一致,对账的脚本在测试环境长期运行。属性的来源分类(基础、装备、BUFF、临时修正、转生)在重算的结算里各有优先级。
属性重算的耗时监控与修正记录的存量监控,修正记录的泄漏(到期未回收)是面板漂移的常见根因。
修正的时长参数传 0 曾经被当作永久生效,与文档的注释冲突,时效参数的语义在接口封装里显式注释。重算的时机遗漏:卸下装备没有触发重算,面板显示的攻击比实际高,穿卸的统一重算入口在封装层强制。
属性的修正与重算的调用顺序:先改基准(装备)再重算,过程修正独立于基准存在。修正的并存上限与同 ID 刷新的语义要在封装层明确,药水的无限叠加是经济与平衡的双重事故。属性流水(每次修正与重算的前后差值)是属性客诉的对账单,流水的时间粒度到毫秒能还原任何时刻的面板。
本文由 996 技术组基于 996 引擎官方知识库与浮生梦老师课程体系整理。团队长期从事传奇类引擎 Lua 后端逻辑、客户端界面与商业版本交付,内容以官方知识库与真实项目为出处,按版本持续修订。
全站技术干货持续更新:996 引擎 / Lua 实战帖,语法、参数与示例一篇讲透。进入文章地图 · 查看全部 →
实战应用:用在哪里 脚本的规范靠人盯盯不过来:命名风格漂移、全局变量乱用、缩进混着来——风格检查器把这些规则的执行自动化。提…
实战应用:用在哪里 拍卖行的出价是一场与时间的博弈:出价的按钮、倒计时的紧迫、截拍瞬间的悬念——拍卖界面的要点是出价的流程、…
实战应用:用在哪里 强化连败七次是什么体验?幸运值机制给失败的玩家一个隐性的承诺:每次失败累加幸运值,幸运值越高下一次的成功…
实战应用:用在哪里 审计日志的价值在于不可抵赖:被改过的日志比没有日志更危险——纠纷的追溯、内部的追责都建立在「日志没被动过…
实战应用:用在哪里 活动结束给 3 万玩家发奖励:一次性群发让邮件表瞬间多 3 万行、投递的队列堵塞正常的通信。批量邮件的分…
实战应用:用在哪里 面对面的交易是传奇最经典的交互:两人面对面、各自放入物品与金币、双方确认后成交。交易的协议要点是会话的建…