CHUAN2 DEV ENGINE
996 正版授权研发中心 · 360 授权合作教学中心 · 抖音传奇直播合作授权 · 快手推广运营商授权
OFFICIAL LICENSED ACADEMY 查验官方授权证书 →
// 威海旷世互娱教学基地 · 技术文章
框架设计

【框架设计】称号系统:称号获取与属性叠加

2026-09-21 18:44 作者:996 技术组 框架设计

实战应用:用在哪里

称号是荣誉的徽章:沙巴克城主、科举状元、等级巅峰的第一人,称号挂在名字旁全服可见。称号系统的实现要点是称号的获取登记、展示位的切换与属性叠加的规则。

称号的登记

lua

---称号的授予:登记进玩家的称号簿
function Title.grant(actor, titleId)
    local player = getplayerbyname(actor)
    if not player then return false end
    local owned = getplayvar(player, 2, "Titles") or ""
    -- 幂等:已有称号不重复授予
    if ("," .. owned .. ","):find("," .. titleId .. ",", 1, true) then
        return false
    end
    setplayvar(player, "HUMAN", "Titles",
        owned .. (owned ~= "" and "," or "") .. titleId, 1)
    local def = TITLE_DEF[titleId]
    sendmsg(player, 1, "获得称号:" .. def.name)
    return true
end

称号簿用逗号分隔的 ID 串存进持久变量,授予的幂等靠串内的查找——同一个称号两次授予只有第一次生效。称号的定义表管三件事:显示文本、获取条件、属性加成。沙巴克城主的称号由攻城的占领触发授予,科举状元由答题活动发放,等级冲榜的称号每周由排行榜任务结算,来源的多样性让每个玩法都有荣誉的出口。

展示与叠加

lua

---佩戴切换与属性叠加
function Title.wear(actor, titleId)
    local player = getplayerbyname(actor)
    if not player then return false end
    local owned = "," .. (getplayvar(player, 2, "Titles") or "") .. ","
    if not owned:find("," .. titleId .. ",", 1, true) then
        sendmsg(player, 1, "尚未获得该称号")
        return false
    end
    setplayvar(player, "HUMAN", "WornTitle", titleId, 1)
    setranklevelname(player, TITLE_DEF[titleId].name)
    Title.recalc(player)
    return true
end

---属性叠加:全部已获称号的加成生效
function Title.recalc(player)
    local atk = 0
    local owned = getplayvar(player, 2, "Titles") or ""
    for id in owned:gmatch("%d+") do
        atk = atk + (TITLE_DEF[tonumber(id)].atk or 0)
    end
    setplayvar(player, "HUMAN", "TitleAtk", atk, 1)
    sendmsg(player, 1, "称号攻击加成合计 +" .. atk)
end

展示位与属性的分工:佩戴的称号决定名字旁显示什么(setranklevelname 一行切换),属性的叠加按全部已获得的称号累计——收藏的每一枚称号都有战斗价值,佩戴的选择是外观的决策而非数值的取舍。称号的时效分两类:永久的荣誉(城主、状元)与限时的活动称号(节日登录),限时的到期自动失效并邮件告知,荣誉的稀缺不被通胀稀释。称号的排序在称号簿里按稀有度分层展示,收集的进度与未获得的获取途径灰色提示,收集欲的导航让玩家知道下一枚去哪拿。

验证与监控

称号的持有分布与佩戴率的统计,佩戴率低的称号是设计失效的信号;属性叠加的合计与面板的一致性抽检,数值的账当面算清。

踩坑记录

称号簿的串曾经超长,两百枚称号的玩家的存取变慢,串的上限与归档机制补上。佩戴的切换曾经不同步属性,只换了名字没换加成,切换后的重算调用补上。限时的到期曾经不通知,玩家的称号悄悄消失引发客诉,到期前的邮件预告补齐。

上线要点

称号的获取途径在图鉴页全量公示,未获得的灰色条目是收集的路线图。称号的命名规范:活动的临时称号带年月份,荣誉的永久称号不带时效词。称号的稀有度分层(普通、稀有、传说)用颜色区分,名字旁的底色就是身份的语言。

本文由 996 技术组基于 996 引擎官方知识库与浮生梦老师课程体系整理。团队长期从事传奇类引擎 Lua 后端逻辑、客户端界面与商业版本交付,内容以官方知识库与真实项目为出处,按版本持续修订。

作者履历与出处

本文由 996 技术组基于 996 引擎官方知识库与浮生梦老师课程体系整理。团队长期从事传奇类引擎 Lua 后端逻辑、客户端界面与商业版本交付,内容以官方知识库与真实项目为出处,按版本持续修订。

← 返回文章地图返回研学路径

幂尔框架 · 实战干货 · 接口调用

LATEST ARTICLES

全站技术干货持续更新:996 引擎 / Lua 实战帖,语法、参数与示例一篇讲透。进入文章地图 · 查看全部 →

玩法策划沙巴克税收

【玩法策划】沙城税务官:税收分配与廉政度的玩法设计

实战应用:用在哪里 沙巴克占领行会坐收税收却只进不出,非占领行会的玩家心里不平衡。税务官玩法把税收做成明账:占领行会对摆摊与…

2026-09-23 01:24 996 技术组
玩法策划比武社交

【玩法策划】比武招亲:比武切磋与社交绑定的玩法设计

实战应用:用在哪里 高端玩家婚姻系统只有仪式没有过程,社交绑定缺一个高光事件。比武招亲做成擂台玩法:擂主设擂摆彩头,攻擂者报…

2026-09-23 01:24 996 技术组
案例复盘限时礼包日期

【案例复盘】限时礼包少发一天的事故复盘

实战应用:用在哪里 开服七日限时礼包发到第六天断了粮,9 月 1 日当天领奖按钮灰的,投诉当天破千。事故根因是一条数字日期循…

2026-09-23 01:24 996 技术组
网络通信心跳假在线

【网络通信】心跳探测:半开连接的主动识别

实战应用:用在哪里 玩家拔线不退游戏,连接半开着,人不在指令也没有,在线数虚高,容量预案被假数据带着跑。心跳探测给每个在线玩…

2026-09-23 01:24 996 技术组
运维发布发布日历

【运维发布】发布日历:全月变更的集中排期

实战应用:用在哪里 周三发了合成系统补丁,周四又改强化概率,两条变更叠加后玩家分不清是哪个改出来的。发布日历把全月变更集中排…

2026-09-23 01:24 996 技术组
Lua实战滑动窗口计数

【Lua实战】时间窗口计数:滑动窗口的环形数组实现

实战应用:用在哪里 容量预案需要知道滚动一小时的副本进入峰值,而不是全天累计。滑动窗口用 60 个槽位每槽记一分钟的进入数,…

2026-09-23 01:24 996 技术组