CHUAN2 DEV ENGINE
996 正版授权研发中心 · 360 授权合作教学中心 · 抖音传奇直播合作授权 · 快手推广运营商授权
OFFICIAL LICENSED ACADEMY 查验官方授权证书 →
// 威海旷世互娱教学基地 · 技术文章
数据存储

【数据存储】任务进度存储:断点续做与回退

2026-09-21 19:57 作者:996 技术组 0 阅读 数据存储

实战应用:用在哪里

屠龙刀的四环任务做了一半下线,两周后回来要接着做——任务的进度存储是断点续做的地基。任务数据的要点是进度的持久化、回退的边界与多任务并行的隔离。

进度的持久化

lua

---任务进度:按键值对持久化
function Quest.saveProgress(actor, questId, key, value)
    local player = class(actor)
    if not player then return false end
    local storeKey = "Q_" .. questId .. "_" .. key
    setplayvar(actor, "HUMAN", storeKey, value, 1)
    return true
end

---屠龙任务的进度读取
function Quest.progressOf(actor, questId, key)
    local storeKey = "Q_" .. questId .. "_" .. key
    return getplayvar(actor, 2, storeKey)
end

---屠龙刀任务第三环的进度示例
function Quest.dragonStep(actor)
    local step = Quest.progressOf(actor, "dragon", "step")
    return tonumber(step) or 1
end

进度的存储按「任务 ID 加键」的组合键持久化:屠龙任务的当前环、杀怪计数、材料的已交数量,全走 setplayvar 的落库通道——断线、重启、换设备,进度都在。键的命名规范(Q_任务_键)让任务的数据在变量的海洋里可识别、可批量清理。完成的任务进度不删档:已完成的任务标记为 done 保留进度快照,任务的重演玩法(周常化)读旧档续期。

回退的边界

lua

---任务的重置:付费重做与奖励的防刷
function Quest.reset(actor, questId)
    local player = class(actor)
    if not player then return false end
    -- 已领奖的任务重做,奖励减半
    local claimed = Quest.progressOf(actor, questId, "claimed")
    if claimed == "1" then
        setplayvar(actor, "HUMAN", "Q_" .. questId .. "_halved", 1, 1)
        sendmsg(actor, 1, "重做任务的奖励将为 50%")
    end
    -- 只清进度,不动完成标记
    for _, key in ipairs(Quest.progressKeys(questId)) do
        Quest.saveProgress(actor, questId, key, "")
    end
    sendmsg(actor, 1, "任务已重置,可重新开始")
    return true
end

任务回退的边界设计:进度可清、完成标记与奖励的账不重算——重做的任务奖励减半,刷任务的收益循环被折半的规则掐断。回退的场景两类:付费的重做(可重复的周常)与 GM 的纠错回退(数据修复把错乱的任务状态拉回正轨),两条路的入口与权限分开。多任务并行的隔离:屠龙与行会周任务的进度键互不干扰,任务 ID 的前缀隔离让并行的进度井水不犯河水。进度的一致性校验:任务的进度与任务的接取状态匹配(没接的任务不该有进度),错配的检测在任务面板打开时跑一遍。

验证与监控

进度持久化的成功率监控,落库失败的进度在下线清算里补写;任务进度的孤儿扫描,有进度无接取的错配进修复队列。

踩坑记录

进度的键曾经漏了任务 ID 的前缀,同名键的两个任务互相覆盖,前缀的规范修复。回退曾经把奖励的领取标记也清了,重做领双份奖,回退的边界清单化。断点续做的读取曾经区分大小写,进度键的大小写笔误让进度读空,键的生成统一走函数。

上线要点

任务的进度键设计进任务的接入规范:接取、进度、完成三段键的命名模板。任务的重做与奖励的减半规则公示,重做的价值玩家自己算。纠错回退的权限收口到客服主管,回退的操作留痕。

本文由 996 技术组基于 996 引擎官方知识库与浮生梦老师课程体系整理。团队长期从事传奇类引擎 Lua 后端逻辑、客户端界面与商业版本交付,内容以官方知识库与真实项目为出处,按版本持续修订。

作者履历与出处

本文由 996 技术组基于 996 引擎官方知识库与浮生梦老师课程体系整理。团队长期从事传奇类引擎 Lua 后端逻辑、客户端界面与商业版本交付,内容以官方知识库与真实项目为出处,按版本持续修订。

← 返回文章地图返回研学路径

最新技术文章 · 实战干货

LATEST ARTICLES

全站技术干货持续更新:996 引擎 / Lua 实战帖,语法、参数与示例一篇讲透。进入文章地图 · 查看全部 →

玩法策划答题行会

【玩法策划】行会篝火答题:行会社交活动的答题玩法设计

实战应用:用在哪里 行会活动集中在攻城战,日常缺乏轻量社交场景。行会篝火答题做行会固定社交活动:每周三、周日晚在行会驻地点燃…

2026-09-23 05:48 996 技术组 · 0 阅读
玩法策划答题科举

【玩法策划】科举答题:全服答题与殿试排名的玩法设计

实战应用:用在哪里 全服答题活动办过几期,参与的人不少但黏性不足,答完就散。科举答题把答题做成两段式:每天晚八点的乡试答题筛…

2026-09-23 05:48 996 技术组 · 0 阅读
界面UI短语栏聊天

【界面UI】快捷短语栏:战斗场景的快捷消息发送栏实现

n n n 实战应用:用在哪里 n战斗中打字沟通慢且危险,队伍协作靠喊话效率太低。快捷短语栏在屏幕底部提供八条可自定义的战斗…

2026-09-23 05:48 996 技术组 · 0 阅读
引擎触发宝箱龙脉

【引擎触发】龙脉宝箱:整点宝箱刷新与开启奖励的触发设计

n n n 实战应用:用在哪里 n龙脉区域的野外宝箱是散人玩家的每日福利:每逢整点在龙脉区域随机刷新十五个宝箱,分三档给不同…

2026-09-23 05:48 996 技术组 · 0 阅读
网络通信有序性包序

【网络通信】消息有序性:同一玩家的包序保证

实战应用:用在哪里 同一玩家的两条消息走了不同的处理路径,先发的后到,装备穿上的消息比脱下的消息晚处理,面板状态错乱。消息有…

2026-09-23 05:48 996 技术组 · 0 阅读
运维发布日志采样

【运维发布】日志采样:高流量日志的采样降耗设计

实战应用:用在哪里 战斗日志全量打印,一天写满一块硬盘,翻日志像大海捞针。日志采样按类别分策略:错误日志全量保留、行为日志按…

2026-09-23 05:48 996 技术组 · 0 阅读