排行榜是全服的竞技场公告栏:等级榜、战力榜、行会榜的排名是玩家的社交货币。榜单界面的要点是分页的加载、我的排名的常驻与刷新的节奏——看榜的人最关心的两件事:第一名是谁、我排第几。
---排行榜的界面:分页加载
RankUI.page = 1
RankUI.perPage = 20
function RankUI.show(rankKey)
RankUI.key = rankKey
RankUI.page = 1
RankUI.request(1)
end
function RankUI.request(page)
SL:SendNetMsg(MSGID.RANK_QUERY, RankUI.keyOf(RankUI.key),
page, RankUI.perPage, "")
end
---榜单数据的渲染:名次与数值
SL:RegisterLuaNetMsg("RANKDATA", function(data)
local d = SL:JsonDecode(data)
if not d then return end
RankUI.clear()
for i, row in ipairs(d.list) do
local color = row.rank <= 3 and "#FFD700" or "#DDDDDD"
local line = GUI:Text_Create(RankUI.list, "r" .. i,
0, 0, 12, color,
row.rank .. ". " .. row.name .. " " .. row.value)
end
RankUI.showMine(d.mine)
end)
榜单按页请求:每页 20 名,翻页按需拉取——万人的榜单一次全拉是带宽的浪费,分页把流量摊到玩家的浏览路径上。前三名的金色标注,榜眼的荣耀在颜色上拉开。数据的渲染按名次排列,数值的格式(等级、战力、贡献)按榜单的类型走格式化模板。
---我的排名:常驻底栏
function RankUI.showMine(mine)
if not mine then
GUI:Text_setString(RankUI.mineBar, "暂未上榜,继续努力!")
return
end
GUI:Text_setString(RankUI.mineBar,
"我的排名:" .. mine.rank .. "(" .. mine.value .. ")")
end
---排名变化的即时推送
SL:RegisterLuaNetMsg("RANKCHANGE", function(data)
local d = SL:JsonDecode(data)
if not d or d.key ~= RankUI.key then return end
SL:ShowSystemTips("排名变化:当前第 " .. d.rank .. " 名")
end)
我的排名常驻底栏:翻到任何一页,自己的名次都钉在屏幕下方——找自己的名字翻十页是榜单界面的经典反人类,常驻栏一劳永逸。未上榜的提示不空着:暂未上榜的文案带激励,榜单的门槛值(上榜需要多少分)顺带展示,追赶的目标可视化。排名变化的即时推送:名次的升降在变化发生的当下提醒,上榜与掉榜的关键节点推送,刷榜的玩家有正反馈的回路。刷新的节奏按榜单的类型分级:等级榜 5 分钟一刷、行会榜 1 小时一刷,实时性按玩法的敏感度定。
榜单数据与服务器结算的一致性抽检,名次与数值的错位即结算的缺陷;分页的请求量与翻页页数的分布监控,翻页超 10 页的占比提示默认页容量的调整。
我的排名曾经单独查询接口,榜单页与底栏的数据不一致(差一次刷新),同源的数据包合并。名次的渲染曾经没有格式化,百万的战力显示成 1000000 的长串,数值的千分位格式化。翻页的边界曾经越界请求,第 0 页与空页的请求打给服务器白跑,边界的客户端钳制。
榜单的类型进配置:键、数值格式、刷新周期三要素登记。冲榜活动的截止时刻在榜单页倒计时,冲刺的紧迫感可视。榜单的前三名在全服公告轮播,榜首的荣耀是榜单的生命力。
本文由 996 技术组基于 996 引擎官方知识库与浮生梦老师课程体系整理。团队长期从事传奇类引擎 Lua 后端逻辑、客户端界面与商业版本交付,内容以官方知识库与真实项目为出处,按版本持续修订。
全站技术干货持续更新:996 引擎 / Lua 实战帖,语法、参数与示例一篇讲透。进入文章地图 · 查看全部 →
实战应用:用在哪里 行会活动集中在攻城战,日常缺乏轻量社交场景。行会篝火答题做行会固定社交活动:每周三、周日晚在行会驻地点燃…
实战应用:用在哪里 全服答题活动办过几期,参与的人不少但黏性不足,答完就散。科举答题把答题做成两段式:每天晚八点的乡试答题筛…
n n n 实战应用:用在哪里 n战斗中打字沟通慢且危险,队伍协作靠喊话效率太低。快捷短语栏在屏幕底部提供八条可自定义的战斗…
n n n 实战应用:用在哪里 n龙脉区域的野外宝箱是散人玩家的每日福利:每逢整点在龙脉区域随机刷新十五个宝箱,分三档给不同…
实战应用:用在哪里 同一玩家的两条消息走了不同的处理路径,先发的后到,装备穿上的消息比脱下的消息晚处理,面板状态错乱。消息有…
实战应用:用在哪里 战斗日志全量打印,一天写满一块硬盘,翻日志像大海捞针。日志采样按类别分策略:错误日志全量保留、行为日志按…