传奇之家 - 传奇开区一条龙服务网站

当前位置:传奇之家 > 传奇引擎 > KSD引擎 > > 详细页面

KSD引擎中如何实现玩家数据的持久化保存?

KSD引擎中如何实现玩家数据的持久化保存?

KSD引擎中如何实现玩家数据的持久化保存?

作者:传奇之家类别: KSD引擎

更新:2026-06-06查看次数:162

ksd引擎(基于Hero/Blue体系)中玩家数据的持久化分为引擎底层自动存档(角色基础数据)和脚本层自定义变量持久化(扩展业务数据如签到次数、累计充值等)两层,具体如下:

一、引擎底层自动持久化(角色核心数据)

KSD引擎的角色核心数据由 DBServer + DBC2000(或内置DB)? 负责持久化,不需要脚本干预:

存储文件:MirServer\DBServer\FDB\Hum.DB(角色基础属性:等级/职业/金币/背包物品/技能等)、Mir.DB(详细纪录/索引),英雄版另有 Humhero.DB、Heromir.DB。

保存触发时机:

玩家正常下线 → M2通知DBServer执行 SaveHumanRcd写入DB

定时自动存盘 → M2选项"人物数据→自动保存间隔"(建议设1~5分钟)

GM手动存盘 → 游戏内输入 @Save(部分版本支持)或M2控制台"保存所有人物"

配置要点:确保 DBServer.ini中 AutoSave=1,服务端目录有写入权限,关闭服务端须先关M2再关DBServer,避免缓冲区未刷盘导致丢档。

? 等级、装备、金币、背包、仓库、技能等均由引擎自动持久化到Hum.DB,无需额外处理。

二、脚本层自定义变量持久化(扩展业务数据)

引擎内置的 N(数字型私人变量)、S(字符型私人变量)小退/下线不保存,要做持久化需用自定义HUMAN变量 + SAVEVAR/LOADVAR。

1. 声明与读取/保存

在 QManage.txt → [@Login]? 段初始化:

#IF

#ACT

VAR Integer HUMAN 击杀BOSS次数     ;;声明整数型私人自定义变量

VAR String  HUMAN 专属称号         ;;声明字符型私人自定义变量

LOADVAR HUMAN 击杀BOSS次数 ..\QuestDiary\自定义变量\玩家数据.txt

LOADVAR HUMAN 专属称号 ..\QuestDiary\自定义变量\玩家数据.txt

在需要修改的地方(如击杀BOSS后):

#ACT

CALCVAR HUMAN 击杀BOSS次数 + 1

SAVEVAR HUMAN 击杀BOSS次数 ..\QuestDiary\自定义变量\玩家数据.txt

LOADVAR HUMAN 变量名 路径— 从文件/数据库读入自定义变量

SAVEVAR HUMAN 变量名 路径— 写入持久化存储

指定路径存为TXT文件(按角色名分开存),不指定路径时部分新版引擎可存入数据库支持合区合并

2. 行会与全局变量持久化

行会变量:VAR Integer GUILD 行会等级+ SAVEGuildVAR 行会名 行会等级

全局变量:VAR Integer GLOBAL 开服天数+ 在QM定时保存(全局变量通常只在重启时需注意持久化)

三、防数据丢失注意事项

项目

 

说明

 

 

DBC2000别名

 

BDE Administrator中HeroDB路径须指向 MirServer\Mud2\DB,否则无法写入

 

 

关闭顺序

 

先关M2Server → LoginSrv → DBServer,强制杀进程会丢未同步数据

 

 

自动存盘间隔

 

M2 → 选项 → 参数设置 → 人物数据保存间隔,建议≤5分钟

 

 

备份

 

定期冷备 DBServer\FDB\*.DB及自定义变量TXT目录,合区前务必备份