结婚系统办完婚礼就没了后续,夫妻互动停在每天送花。结婚纪念日框架给婚姻加一条时间线:每月同日为纪念日,双方在线即可领取纪念日礼盒,连续纪念十二个月额外授予永久称号,让婚姻系统有了长期经营的目标。框架分日期检测与双向奖励两层,策划只需调整礼盒内容与称号门槛。
纪念日检测挂在每日登录触发里:对比当天日期与结婚登记日,同日即累计纪念月数,月数写入玩家变量作为奖励档位依据。
function onSetDay(actor)
local day = getplayvar(actor, "HUMAN", "WED_DAY") or ""
if day ~= "" and os.date("%d") == day then
local months = tonumber(getplayvar(actor, "HUMAN", "ANNIV_MONTHS") or "0") + 1
setplayvar(actor, "HUMAN", "ANNIV_MONTHS", months, 1)
sendmsg(actor, 0, "今天是二位结缘 " .. months .. " 周月的纪念日")
end
end
领奖要求双方当日都在线,各领一份与纪念月数等量的礼盒;离线一方由邮件补发,避免错过纪念日领不到。
function claimAnniv(actor)
local mate = getplayvar(actor, "HUMAN", "MATE_NAME") or ""
local months = tonumber(getplayvar(actor, "HUMAN", "ANNIV_MONTHS") or "0")
if mate == "" or months <= 0 then
sendmsg(actor, 0, "暂时没有可领取的纪念日奖励")
return
end
giveitem(actor, "纪念日礼盒", months)
local mp = getplayerbyname(mate)
if mp and isplayer(mp) then
giveitem(mp, "纪念日礼盒", months)
else
sendmail("#" .. mate, 938, "纪念日礼盒", "二位的纪念日奖励已补发", "纪念日礼盒x" .. months)
end
sendmsg(actor, 0, "纪念日奖励已发放给双方")
end
纪念日链路验证同日触发、跨日不触发、月数累计递增三条边界;双方在线与离线的两种发放路径各验一轮;连续十二个月授予的永久称号核对唯一性。监控每月纪念日领取对数与连续纪念分布,领取断档集中在某些日期就是时区或触发配置出了问题。
WED_DAY 只登记了日号没有登记月份,每逢每月同日都触发一次的设计是符合预期的,但合服后双方时区感知不一致出现了提醒错日,触发基准统一以服务器时间为准。离线补发走邮件时收件人名要加井号前缀,漏了前缀邮件发进了不存在的账号,补发对账时才发现。月数累计在离婚再复婚的场景没有清零,复婚当月就领了高月数奖励,规则补充为解除婚姻后月数清零重新累计。纪念日礼盒可以交易,被当成月度工资回收倒卖,礼盒改为绑定拾取。
全站技术干货持续更新:996 引擎 / Lua 实战帖,语法、参数与示例一篇讲透。进入文章地图 · 查看全部 →
实战应用:用在哪里 行会活动集中在攻城战,日常缺乏轻量社交场景。行会篝火答题做行会固定社交活动:每周三、周日晚在行会驻地点燃…
实战应用:用在哪里 全服答题活动办过几期,参与的人不少但黏性不足,答完就散。科举答题把答题做成两段式:每天晚八点的乡试答题筛…
n n n 实战应用:用在哪里 n战斗中打字沟通慢且危险,队伍协作靠喊话效率太低。快捷短语栏在屏幕底部提供八条可自定义的战斗…
n n n 实战应用:用在哪里 n龙脉区域的野外宝箱是散人玩家的每日福利:每逢整点在龙脉区域随机刷新十五个宝箱,分三档给不同…
实战应用:用在哪里 同一玩家的两条消息走了不同的处理路径,先发的后到,装备穿上的消息比脱下的消息晚处理,面板状态错乱。消息有…
实战应用:用在哪里 战斗日志全量打印,一天写满一块硬盘,翻日志像大海捞针。日志采样按类别分策略:错误日志全量保留、行为日志按…