排行榜的上榜奖励是排行的物质回报:按名次分档发放,前 10 名高档、前 50 名中档、参与奖保底。奖励的发放与补发机制确保每个上榜玩家都能收到奖励,补发的触发条件与幂等的标记防止重复发放。
---排行榜奖励的发放
function BoardReward.distribute(boardName, rankList)
local rewards = BOARD_REWARDS[boardName]
for i, rec in ipairs(rankList) do
if i <= rewards.maxRank then
local tier = math.ceil(i / rewards.tierSize)
local reward = rewards.tiers[tier]
sendmail(rec.id, 9001, boardName .. " 第" .. i .. "名奖励", "", reward.items)
rec.claimed = true
end
end
end
奖励的发放按名次分档:前 10 名一档、前 30 名二档、前 50 名三档,每档的奖励内容在配置表定义。发放的记录写入榜单快照,已发放的标记防止重复发放。奖励的发放走邮件通道,离线的玩家也能收到。
---补发:漏发的奖励自动补发
function BoardReward.checkMissed(boardName)
local snapshot = QF_LoadJson("board_archive_" .. boardName)
for _, rec in ipairs(snapshot.top50) do
local claimed = rewardClaims[rec.id]
if not claimed then
local tier = math.ceil(rec.rank / rewards.tierSize)
sendmail(rec.id, rewards.tiers[tier].items, "排行榜补发")
rewardClaims[rec.id] = true
end
end
end
补发的扫描每 5 分钟执行一次:对照快照与已发放标记,漏发的自动补发。补发的记录与原发放日志关联,同一玩家不会被重复补发。补发的优先级按名次排序,前 10 名的补发优先处理。
发放与补发的覆盖率对账:快照中每个上榜玩家的奖励状态(已发/已补/待查)三态标记。
奖励的补发曾经按快照的全量扫描,扫描的时间在榜单人数多时超过 5 分钟,增量扫描(只扫新增的)优化后可控。补发的邮件曾经缺失名次信息,玩家不知道自己排了第几,补发的邮件附上完整排名。
奖励的发放与补发的日志进排行榜的审计链,每一笔奖励都有发放记录与时间戳。奖励的配置与排行榜的结算联动:结算后自动触发发放与补发的流程。发放的失败重试机制:邮件发送失败的重试三次后转人工处理。
本文由 996 技术组基于 996 引擎官方知识库与浮生梦老师课程体系整理。团队长期从事传奇类引擎 Lua 后端逻辑、客户端界面与商业版本交付,内容以官方知识库与真实项目为出处,按版本持续修订。
全站技术干货持续更新:996 引擎 / Lua 实战帖,语法、参数与示例一篇讲透。进入文章地图 · 查看全部 →
实战应用:用在哪里 跨服远征分先锋、主力、后勤三队独立推进,三线全通合围BOSS。不同战力成员都有参与感。 策划要点与配置 …
实战应用:用在哪里 副本限时挑战加入超时血量惩罚:超时后BOSS攻击递增。上线后BOSS攻击叠到十倍秒杀全队。 事故还原与补…
实战应用:用在哪里 混沌麒麟召唤是全服高光时刻:暗幕聚合、裂缝展开、麒麟着陆三段演出各1.3秒。 三段式入场演出编排 围观镜…
实战应用:用在哪里 任务对话一闪而过玩家想回顾。回看接口把对话按节点存档,面板翻阅全部对话记录。 对话存档与查询渲染 当前章…
实战应用:用在哪里 服务器承载六十张地图,空闲地图白耗资源。按需激活,末人离开后六十秒休眠。 激活与休眠触发 休眠回收 验证…
实战应用:用在哪里 坐骑资质洗炼随机重滚五条属性,锁定满意的条目不再重滚,锁定越多消耗越大。 洗炼与锁定 锁定消耗递增 验证…