限时时装、限时坐骑、增益卡、活动兑换券——限时道具的到期处理直接影响付费体验:到期无提醒会引发客诉,到期不回收会被无限白嫖。到期系统需要三个组件:到期检测(惰性比对加定时扫描双通道)、到期前提醒(24 小时与 1 小时两档通知)、到期处理(失效加图标置灰)。
local function checkExpired(item)
if not item.expireAt then return false end
if os.time() >= item.expireAt then
item.expired = true
onItemExpired(item) -- 触发回收与通知
return true
end
return false
end
-- 背包读取入口统一调用,玩家打开背包即触发过期检查
惰性比对把过期判定分散到每次读取,不需要后台扫描全部玩家的背包。配合每日定时扫描兜底(覆盖长期不登录玩家的道具),两层通道互补。
24 小时与 1 小时各推一条提醒(走邮件与客户端飘字双通道),提醒的标志位记录在道具数据上防止重复推送。限时道具的来源(商城购买、活动兑换)记录在道具属性里,到期回收时按来源区分处理:付费购买的限时道具到期后保留外观收藏(不可用但可见),活动兑换的直接清除。
到期道具的三步处理:第一步标记 expired 置位(图标置灰、tooltip 显示已过期);第二步从生效计算中剔除(属性加成、外观挂载全部移除);第三步写流水记录(道具 id、玩家、到期时间、处理方式)。三步走完,限时道具的生命周期闭环,客诉的每一个问题都有日志可查。限时道具的提醒与回收逻辑是付费体验的守门员,这套流程配置化后(提醒档位、回收策略可配),不同类型的限时道具可以有不同的到期策略。
本文由 996 技术组基于 996 引擎官方知识库与浮生梦老师课程体系整理。团队长期从事传奇类引擎 Lua 后端逻辑、客户端界面与商业版本交付,内容以官方知识库与真实项目为出处,按版本持续修订。
全站技术干货持续更新:996 引擎 / Lua 实战帖,语法、参数与示例一篇讲透。进入文章地图 · 查看全部 →
实战应用:用在哪里 脚本的规范靠人盯盯不过来:命名风格漂移、全局变量乱用、缩进混着来——风格检查器把这些规则的执行自动化。提…
实战应用:用在哪里 拍卖行的出价是一场与时间的博弈:出价的按钮、倒计时的紧迫、截拍瞬间的悬念——拍卖界面的要点是出价的流程、…
实战应用:用在哪里 强化连败七次是什么体验?幸运值机制给失败的玩家一个隐性的承诺:每次失败累加幸运值,幸运值越高下一次的成功…
实战应用:用在哪里 审计日志的价值在于不可抵赖:被改过的日志比没有日志更危险——纠纷的追溯、内部的追责都建立在「日志没被动过…
实战应用:用在哪里 活动结束给 3 万玩家发奖励:一次性群发让邮件表瞬间多 3 万行、投递的队列堵塞正常的通信。批量邮件的分…
实战应用:用在哪里 面对面的交易是传奇最经典的交互:两人面对面、各自放入物品与金币、双方确认后成交。交易的协议要点是会话的建…