humanhp 是血量操作的唯一正门:中毒掉血、火墙灼烧、演出扣血、恢复术回血全部走它。八个参数把数值、飘字素材、归属、广播一次性配齐,是这个接口比直接改内存字段高明的地方。
---修改人物当前HP operate:[+][-][=] effid:飘字素材ID hiter:伤害来源 isRob:归属
function humanhp(actor, operate, nvalue, effid, delay, hiter, isSend, isRob) end
-- 火墙灼烧:每 2 秒扣 60 点,归属火墙主人
humanhp(actor, "-", 60, 5, 0, wallOwner, 1, 1)
operate 三种操作符覆盖加减等值:- 扣血、+ 回血、= 直接置位。effid 指向 cfg_damage_number 表的飘字素材,不同的伤害类型配不同的飘字颜色与字号。hiter 参数登记伤害来源,毒杀、烧杀的击杀归属凭这个字段结算,isRob 决定归属是否被强制改写,争夺玩法里归属判定的一切争议都能在这两个参数里找到答案。
-- 治疗术:回血 120 点,绿色飘字延迟 0.2 秒
humanhp(actor, "+", 120, 8, 0.2, healer, 1, 0)
-- 演出扣血:boss 战剧情,无归属不广播
humanhp(actor, "-", 500, 0, 0, "", 0, 0)
回血方向同样走 humanhp,effid 换成治疗素材后飘字变绿色。剧情演出类的扣血把 isSend 置 0 不广播、hiter 传空字符串无归属,观感有了而战斗结算不受污染。同一接口通过参数组合覆盖三类场景,接口的收敛设计让血量变更的流水只有一个出口,审计与回放都从这一条流里取数。
血量变更流水按 hiter 归属统计,毒杀与烧杀的 credited 击杀数与流水对齐即为健康。
isRob 参数的语义曾经理解反了:0 是强制改归属、1 是不抢归属,写反后毒死的 BOSS 归属全归道士,队长的申诉推动了参数注释的补全。effid 引用的素材 ID 被美术删除后 humanhp 静默不飘字,数值在扣但看不到表现,素材引用的完整性校验随后进了启动自检。
humanhp 的扣血不走防御公式,它是绕过战斗系统的直调通道,业务用它之前先确认是否应该走战斗结算。-=与=的操作语义差异要在团队内统一认知:- 是相对量、= 是绝对置位,用错方向的事故一次就够记一辈子。血量流水配合 hiter 归属可以完整回放一场战斗的血量曲线,战斗回放功能的数据源就是这条流水。
本文由 996 技术组基于 996 引擎官方知识库与浮生梦老师课程体系整理。团队长期从事传奇类引擎 Lua 后端逻辑、客户端界面与商业版本交付,内容以官方知识库与真实项目为出处,按版本持续修订。
全站技术干货持续更新:996 引擎 / Lua 实战帖,语法、参数与示例一篇讲透。进入文章地图 · 查看全部 →
设计初衷 新手的第一个 30 级决定留存:被红名追杀一次、被高级玩家抢一次 BOSS,新号当周流失率直接翻倍。新手走廊是 1…
设计初衷 拍卖行的恶意挂拍有两种:挂天价试探市场、批量挂垃圾物刷屏——挂拍零成本,恶意就没有代价。保证金机制让挂拍押上真金白…
设计初衷 家园系统回答的是长线玩家"下线之后游戏还在为我工作"的情感需求:种下去的种子在离线时生长,上线收割即是回馈。产出设…
底层原理 缓存防的是重复查询,但有一类查询永远查不到:恶意玩家批量请求不存在的物品名,每次都绕过缓存直击底层查询——缓存对"…
底层原理 金币、功勋这类关键数值,单账本一旦被静默改坏(bug 写错、内存篡改),没有任何报警——账本自己不会喊冤。双写校验…
底层原理 内存涨了不回落,十有八九是有张该死的表被谁攥着不放。Lua 的回收按可达性判定:只要还存在一条从全局表、活跃闭包或…