结婚是社交系统的深水区:求婚被拒怎么算、戒指给了不认账怎么办、仪式没办成算不算结婚。结婚流程接口把三个阶段串成一条链:求婚扣戒指创建婚约申请、对方确认后婚约生效、比奇教堂办仪式解锁夫妻称号。每一环都有状态与超时,责任清晰。
求婚入口校验双方单身、等级三十以上、背包有求婚戒指;戒指提交后进入待确认状态,二十四小时未响应自动退回戒指并关闭申请。示例代码如下:
-- 结婚流程:求婚与申请
local player = class(actor)
local function propose(player, mateName)
local mateStatus = getplayvar(class(mateName), "HUMAN", "MarryStatus")
if getplayvar(player, "HUMAN", "MarryStatus") ~= "" or mateStatus ~= "" then
sendmsg(player, 1, 0, "双方必须都是单身状态。")
return
end
if not checkitemw(player, "求婚戒指", 1) then
sendmsg(player, 1, 0, "需要一枚求婚戒指。")
return
end
takeitem(player, "求婚戒指", 1)
setplayvar(player, "HUMAN", "ProposeTo", mateName, true)
setplayvar(player, "HUMAN", "ProposeExpire", os.time() + 86400, true)
sendmail("#" .. mateName, 8802, "收到一份求婚",
"有人向您求婚,请在 24 小时内到比奇教堂回应。", "")
sendmsg(player, 1, 0, "求婚已送达,等待回应。")
end
对方确认后婚约生效但不算礼成;双方同到比奇教堂由神父 NPC 主持仪式,仪式完成写入结婚日期并解锁夫妻称号与同心技能位。示例代码如下:
-- 结婚流程:仪式与称号
local player = class(actor)
local function holdCeremony(player, mateName)
if getplayvar(player, "HUMAN", "ProposeTo") ~= mateName then
sendmsg(player, 1, 0, "婚约状态不匹配,无法举办仪式。")
return
end
if getbaseinfo(player, 10) ~= "0151" then
sendmsg(player, 1, 0, "请与伴侣一同到比奇教堂举办仪式。")
return
end
local mate = class(mateName)
setplayvar(player, "HUMAN", "MarryStatus", mateName, true)
setplayvar(mate, "HUMAN", "MarryStatus", getbaseinfo(player, 3), true)
setplayvar(player, "HUMAN", "MarryDate", os.date("%Y-%m-%d"), true)
setplayvar(mate, "HUMAN", "MarryDate", os.date("%Y-%m-%d"), true)
addskill(player, 77, 1)
addskill(mate, 77, 1)
sendcentermsg(player, 255, 0, "恭祝新人结为夫妻,比奇教堂见证二人组的幸福!", 0, 10)
end
全流程测试覆盖:求婚超时戒指退回、双方非单身拒绝、仪式地点不符拒绝、礼成后双方状态与技能同步;分手与复婚的边界由婚姻纪念日框架兜底。线上监控三个漏斗:求婚发出量、确认率、仪式完成率,确认率低于五成检查邮件是否进垃圾箱提示;仪式完成率低就把教堂坐标做成一键传送,流程的每一环都要顺畅。
求婚戒指曾先发后扣,被恶意连续求婚刷戒指副本,扣减与申请同请求原子完成。确认状态曾存在申请方变量里,申请人掉线后对方无法确认,状态双写双方变量并加超时回收。仪式曾不校验同图,两地远程礼成被玩家质疑合法性,仪式必须同城同图,社交仪式的严肃性要用位置校验来背书。
全站技术干货持续更新:996 引擎 / Lua 实战帖,语法、参数与示例一篇讲透。进入文章地图 · 查看全部 →
实战应用:用在哪里 行会日常任务十年如一日是同三件事,老成员做麻了,新人做懵了。行会任务大厅改成自选池:每天刷出八个任务,成…
实战应用:用在哪里 为了冲季度在线峰值,一周内同时开了双倍经验、掉落翻倍、充值返利三场活动,结果金币产出是平日六倍,裁决之杖…
实战应用:用在哪里 师徒系统的奖励散在多个环节,徒弟不知道出师还差什么,师傅不知道带徒收益几何。师徒面板把出师进度、五项师门…
实战应用:用在哪里 法师的终极愿景是流星火雨:天空落下火雨,范围内所有敌人同时受击,视觉与数值都是全服焦点。触发设计要处理三…
实战应用:用在哪里 攻城战两个月才一次,新会长连城门在哪都要找半天。城战演习把攻城流程拆成每周一次的无奖励演练:地图、门禁、…
实战应用:用在哪里 角色变量是隐形的存储:每个系统都往里塞数据,没人记得清场,一年后单个角色的变量膨胀到上万字符,存档变慢、…