称号承载成就展示与属性加成两个功能:外观上标识玩家身份(全服第一战力、首杀 Boss),数值上提供加成激励收集。称号系统的设计要点是条件检测自动化与佩戴互斥管理,新增称号变成一条配置。
local TITLES = {
slayer_1000 = { name = "千人斩", cond = function(p)
return p.counters["kill:player"] >= 1000 end,
attrs = { atk = 30 } },
first_rich = { name = "首富", cond = function(p)
return p.gold >= 10000000 end,
attrs = { hp = 500 } },
}
function Title.checkAll(player)
for id, def in pairs(TITLES) do
if not player.titles[id] and def.cond(player) then
player.titles[id] = { grantedAt = os.time() }
notifyGrant(player, id)
end
end
end
检测挂在定时任务(每 5 分钟全量轮询)加事件即时触发(关键事件发生即检测相关称号)双通道,保证达成不被延迟太久,又不增加常态开销。
佩戴互斥:同一时刻只能佩戴一个称号,属性只结算佩戴中的称号。切换佩戴走统一接口(卸下旧称号属性、应用新称号属性),属性结算走汇总函数(基础 + 装备 + 称号 + BUFF),来源分离让数值问题可定位。
称号定义三要素进配置表:达成条件(引用计数器或判定函数名)、属性加成、展示样式(颜色、动效标志)。展示端支持两种形态:名字前后缀(前缀称号)与独立徽章(后缀称号),前端按样式标志渲染。过期称号(限时活动称号)到期自动收回,收回前 3 天给续期提示。称号系统与成就系统共享条件检测设施(判定函数复用),两套展示各自独立——设施复用加展示分离,是这类"条件达成型"系统的通用设计。
称号的展示优先级:佩戴中的称号在名字前后缀与查看面板同时显示,多个称号可收藏但只佩戴一个。收藏册展示全部已达成称号与达成条件,收集欲是称号系统驱动活跃的核心设计。
本文由 996 技术组基于 996 引擎官方知识库与浮生梦老师课程体系整理。团队长期从事传奇类引擎 Lua 后端逻辑、客户端界面与商业版本交付,内容以官方知识库与真实项目为出处,按版本持续修订。
全站技术干货持续更新:996 引擎 / Lua 实战帖,语法、参数与示例一篇讲透。进入文章地图 · 查看全部 →
实战应用:用在哪里 脚本的规范靠人盯盯不过来:命名风格漂移、全局变量乱用、缩进混着来——风格检查器把这些规则的执行自动化。提…
实战应用:用在哪里 拍卖行的出价是一场与时间的博弈:出价的按钮、倒计时的紧迫、截拍瞬间的悬念——拍卖界面的要点是出价的流程、…
实战应用:用在哪里 强化连败七次是什么体验?幸运值机制给失败的玩家一个隐性的承诺:每次失败累加幸运值,幸运值越高下一次的成功…
实战应用:用在哪里 审计日志的价值在于不可抵赖:被改过的日志比没有日志更危险——纠纷的追溯、内部的追责都建立在「日志没被动过…
实战应用:用在哪里 活动结束给 3 万玩家发奖励:一次性群发让邮件表瞬间多 3 万行、投递的队列堵塞正常的通信。批量邮件的分…
实战应用:用在哪里 面对面的交易是传奇最经典的交互:两人面对面、各自放入物品与金币、双方确认后成交。交易的协议要点是会话的建…