传奇的结婚不止是关系绑定:教堂婚礼是一场全服围观的仪式,宾客观礼拿喜糖,新人获得婚戒与专属称号。婚礼流程的状态机——预约、迎宾、宣誓、礼成——是仪式型活动的完整范本。
---预约:校验单身与信物,占用时段
function Wedding.book(actor, partnerName, slotId)
local spouse = getplayvar(actor, 2, "SpouseId")
if spouse and spouse ~= "" then
sendmsg(actor, 1, "已有婚姻")
return false
end
local slot = Wedding.slots[slotId]
if not slot or slot.bookedBy then
sendmsg(actor, 1, "该时段已被预约")
return false
end
if not checkitemw(actor, "结婚戒指", 1) then
sendmsg(actor, 1, "缺少结婚戒指")
return false
end
slot.bookedBy = actor:GetUserId()
slot.at = os.time()
QF_Broadcast(actor:GetName() .. " 预定了婚礼,欢迎届时光临观礼")
return true
end
教堂每天三个时段的预约制,预约成功全服播报揽客。结婚戒指是求婚的信物,商店与活动双渠道获取。预约时校验双方的配偶变量,重婚在玛法大陆同样不被祝福。爽约的时段引入禁令:爽约一次记录在案,一周内不得再预约,时段的利用率因此有保障。
---礼成:传送、发糖、结缘、授称号
function Wedding.ceremony(slot, partnerA, partnerB)
mapmove(partnerA, "church", 12, 20, 0)
mapmove(partnerB, "church", 14, 20, 0)
for _, guest in ipairs(Wedding.guests) do
giveitem(guest, "喜糖", 3)
end
setplayvar(partnerA, "HUMAN", "SpouseId", partnerB:GetUserId(), 1)
setplayvar(partnerB, "HUMAN", "SpouseId", partnerA:GetUserId(), 1)
setranklevelname(partnerA, partnerB:GetName() .. " 的爱人")
setranklevelname(partnerB, partnerA:GetName() .. " 的爱人")
QF_Broadcast(partnerA:GetName() .. " 与 " .. partnerB:GetName() .. " 礼成!百年好合!")
end
仪式开始双方传送进教堂,礼成瞬间对在场宾客每人发 3 颗喜糖——观礼有礼是婚礼人气的秘密,围观的玩家挤满教堂。宣誓礼成后互写配偶变量并落库,专属称号挂在双方名字旁,婚戒的属性随关系激活。婚礼的烟花与教堂钟声由客户端渲染,服务端只负责流程的推进与关系的落库。
婚礼时段的预约率与观礼人数统计,预约率低提示时段配置需要贴近玩家在线高峰;喜糖的发放数与在场人数的对账防止多 发。
预约之后放鸽子的场景没考虑,爽约的时段白占,引入爽约记录与一周禁令后利用率回升。喜糖曾经以进入教堂为准发放,围观的人挤在门口领糖就跑,改为礼成瞬间对在场者发放,观礼到底才有糖。配偶变量的写入曾经只写了一方,单方面已婚的半婚状态引发数据混乱,双方写入放进同一流程。
婚礼的时段数与糖量进配置,节假日加开午夜场。离婚的流程与再婚的冷却期写明规则,社交关系的进出都要有章法。婚礼的录像截图功能交给客户端,教堂的场景贴图是游戏里最适合合影的地方。
本文由 996 技术组基于 996 引擎官方知识库与浮生梦老师课程体系整理。团队长期从事传奇类引擎 Lua 后端逻辑、客户端界面与商业版本交付,内容以官方知识库与真实项目为出处,按版本持续修订。
全站技术干货持续更新:996 引擎 / Lua 实战帖,语法、参数与示例一篇讲透。进入文章地图 · 查看全部 →
实战应用:用在哪里 全服 400 多个 NPC 脚本在开服瞬间集中加载,引擎进程启动耗时 47 秒,值班期间重启就是 47 …
实战应用:用在哪里 行会跨图集合靠世界喊话,从比奇赶到沙巴克动辄三分钟,集合效率低。行会驿站给每个行会一个专属传送网络:驿站…
实战应用:用在哪里 跨服战场周日结算夜出了双事故:30 名玩家积分凭空翻倍,随后 12 名玩家积分变成负数。两条线索指向同一…
实战应用:用在哪里 烈火剑法点到一半想换逐日剑法,没有遗忘功能只能养小号,新手加点点废的投诉长期霸榜。技能遗忘与重修框架管三…
实战应用:用在哪里 战斗日志全量滚动,烈火剑法暴击、治疗、拾取一场下来上千条,列表越长滑动越卡。改造分两件事:内存里只留最近…
实战应用:用在哪里 夏季活动缺一个全服参与的轻竞速,选定龙舟:五人一队从白日门河道上游划向盟重码头,河道布设障碍与顺流带,全…