月卡玩家每天领 100 点券,30 天循环,是付费率最稳的长线商品,性价比标签让它成为小额付费的第一站。签到日历允许用补签券补 2 天,超出部分不追,宽容的规则设计让玩家感知到诚意而不是套路。月度重置在每月一号零点,重置逻辑必须幂等,重复执行不重复扣补签券。
function MonthCard.sign(plr)
local today = os.date("%Y%m%d")
local mc = plr.monthCard
if not mc or mc.expireAt < os.time() then return false, "月卡未激活" end
if mc.lastSignDate == today then return false end
mc.lastSignDate = today
mc.signedDays = mc.signedDays + 1
QF_AddVoucher(plr, 100)
return true
end
每天首次登录触发,点券直接入账,断签当天不扣权益,签到日历上留空格等待补签。月卡剩余天数在面板常驻展示,到期前 3 天续费享九折,续费叠加周期顺延不重置补签状态。
function MonthCard.repair(plr, dateStr)
local mc = plr.monthCard
if mc.repairs >= 2 then return false, "本月补签次数已用完" end
if mc.repaired[dateStr] then return false end
mc.repairs = mc.repairs + 1
mc.repaired[dateStr] = true
QF_CostItem(plr, REPAIR_TICKET, 1)
QF_AddVoucher(plr, 100)
return true
end
每月最多补 2 天,消耗补签券,补签券在商城与活动两渠道获取,稀缺但可得。月度重置时清空签到与补签状态,expireAt 未到的月卡自动续新周期,重置脚本幂等可重放。签到日历用 GUI:MonthView 渲染,已领打勾、可补高亮、未来置灰三种状态清晰区分,补签按钮置灰逻辑与服务器判定同源,界面状态即真实状态。
补签券消耗与点券发放每日核对,月度重置的执行日志保留 12 个月备查。
补签券的获取渠道早期只有商城,定价 10 点券的道具承担了挽回月卡体验的重任,活动渠道补上后补签的使用率从四成涨到八成,宽容设计只有配上易得的工具才成立。月度重置脚本的幂等键设计在重放测试里验证过,同一天跑三遍状态只变一次。签到日历的三态渲染在低端机型上有闪炼,补签高亮的呼吸动画降级成静态描边,性能兜底的降级路径是界面开发的收尾动作。
本文由 996 技术组基于 996 引擎官方知识库与浮生梦老师课程体系整理。团队长期从事传奇类引擎 Lua 后端逻辑、客户端界面与商业版本交付,内容以官方知识库与真实项目为出处,按版本持续修订。
全站技术干货持续更新:996 引擎 / Lua 实战帖,语法、参数与示例一篇讲透。进入文章地图 · 查看全部 →
设计初衷 回流玩家的第一痛是"追不上":离开 90 天,昔日同侪战力翻番,自己一身旧装备站在城里像个游客。回归走廊是一条限时…
设计初衷 单一月卡的问题:玩家买完 30 天就进入"无牵挂期",续购意愿全靠到期提醒。双通证让付费节奏错峰:月卡管"当下的每…
设计初衷 富矿点位固定是采集玩法的死穴:坐标一旦泄露,脚本 24 小时蹲守,散人永远慢一步。资源轮换让富矿每日换位:全图 1…
底层原理 Lua 用 nil 表达三种截然不同的意思:字段不存在、字段存在但值为空、查询被拒绝。三种 nil 混在一起,调用…
底层原理 Lua 没有 switch,多分支处理惯用 elseif 连缀——每加一种命令就多一个分支,分支越长入口函数越肿,…
底层原理 全服补发 3 万封邮件,一次循环跑完会把当帧拖进秒级卡顿。配额推进把大批量任务切成带配额的小片:每轮只处理固定条数…