称号承载成就展示与属性加成两个功能:外观上标识玩家身份(全服第一战力、首杀 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 实战帖,语法、参数与示例一篇讲透。进入文章地图 · 查看全部 →
设计初衷 技术侧的多开检测永远在猫鼠追逐(检测升级、绕过再升级),经济侧的治理换个思路:不禁止多开,让多开不划算。多开的收益…
底层原理 "全服今日击杀最高的 10 名玩家"用精确算法要维护全量玩家的分数再排序,万人在线就是万级数据的持续更新。近似 T…
设计初衷 宠物融合是宠物线的赌场出口:两只宠物合成一只新宠,玩家赌的是资质跃升。没有保底的融合是纯赌博,五连黑直接劝退;保底…
设计初衷 悬赏系统的病是"一口价":击杀 5 天恶值的惯犯与刚红名的新恶人赏金一样,猎人全挤向软柿子,硬骨头没人碰。赏金分级…
底层原理 全量存档把 80 个变量每次都写一遍,其中 95% 与上次一模一样——存档 I/O 的大头是重复。差分存档只写"变…
底层原理 跨服玩法里每台服务器的 os.time 都可能有几秒漂移:NTP 校准周期、机器负载、时区配置,任何一环都能造成偏…