DBC2000作为配套数据库工具,本身不支持直接新增数据表原生字段,DBC的db文件结构固定,原生字段数量已经写死,想要扩展存储数据,只能利用数据库预留备用字段,或是借助引擎自定义Cvalue系列字段来实现数据读写。很多使用者会混淆新增数据库物理字段和引擎识别自定义字段,DBC无法修改db表结构添加全新物理列,只能使用预留备用字段承载自定义数据,这是操作前需要明确的基础前提。
打开DBC2000软件,选择对应的物品数据库文件,文件后缀为db,在DBC界面加载数据库,点击顶部菜单打开表结构查看面板,可以看到全部原生字段列表,包含Idx、Name、StdMode、Shape、Weight、Looks、DC、DC2、AC、AC2、MAC、MAC2、DuraMax、Dura、Price、Need、NeedLevel等固定列,这些列无法删除,也不能直接点击添加按钮插入新的字段。DBC自带的表编辑功能只允许修改字段名称,不能新增字段类型,强行修改字段名称不会让引擎识别,还会造成数据库读取报错,引擎读取数据库是依靠固定字段索引,不是字段显示名称。
备用字段Cvalue0到Cvalue10是引擎预留的扩展列,在DBC列表里可以直接找到,这些字段原生存在于db文件,属于预留空列,用来存放自定义数字参数,相当于扩展字段使用。选中Cvalue字段列,直接在对应物品行填写数字,支持整数数值存储,部分引擎支持读取浮点数,大部分场景仅支持整数。每一个Cvalue字段相互独立,Cvalue1用来存放第一组自定义参数,Cvalue2存放第二组,以此类推,不同功能的数据分开存放,避免参数互相覆盖。
在DBC内编辑备用字段数据,找到需要添加自定义属性的物品条目,横向定位到Cvalue对应列,双击单元格输入目标数字,完成单条物品参数填写。批量添加数据可以使用DBC导出功能,点击导出,将全部数据导出为txt文本,使用文本编辑器批量查找替换填写Cvalue数值,保存后再导入回DBC数据库。导入完成之后核对每行数据,检查导入后是否出现空行、数据错位,数据错位会导致物品读取异常,出现刷出物品属性错乱。全部参数填写完毕,点击保存数据库文件,关闭DBC软件。
完成DBC端参数填写之后,需要在引擎内配置字段读取规则,引擎默认不会主动读取Cvalue字段,需要在对应功能脚本中调用读取命令。脚本内读取语法可以直接读取Cvalue对应序号的值,读取之后存入人物临时变量,再执行逻辑判断,比如读取Cvalue1数值作为装备暴击概率,Cvalue2作为伤害加成数值。写入操作同样通过脚本命令,在穿戴、双击等触发标签内修改Cvalue字段内的数值,修改后会永久保存到数据库物品记录,部分引擎仅支持读取,不支持运行时写入,需要提前核对引擎指令手册。
字段数据类型需要统一,Cvalue系列字段只支持数字,不能写入中文、长字符串,写入文字会直接转为0,无法正常识别。如果需要存放文本类自定义内容,Cvalue字段无法满足,这类场景不能依靠DBC物品库,需要单独建立txt文本存储文本信息,用脚本读取文本内容。数字参数存在取值范围,超出引擎支持的最大整数范围,会出现数值溢出,读取后变成负数或者0,配置时控制数值区间。
数据库保存之后,进入M2引擎执行物品数据库重载,不执行重载操作,引擎依旧读取内存中旧的数据库数据,Cvalue内新填写的参数不会生效。重载完成后使用指令刷取物品,调用脚本读取该物品Cvalue字段,打印输出数值,核对读取出来的数字和DBC内填写的数字保持一致。测试穿戴物品、双击物品等触发场景,验证脚本读取字段后的逻辑正常执行,属性可以正常生效。
区分Cvalue字段的使用限制,Cvalue属于物品实例字段,每一件刷出来的物品独立保存Cvalue数值,同名称的物品,不同个体可以存放不同参数。如果想要同名称物品统一固定参数,直接在DBC模板填写Cvalue,刷出物品时自动继承模板内的Cvalue数值。部分引擎区分模板Cvalue和实例Cvalue,脚本修改仅改变当前这件物品实例,不会修改DBC数据库模板,重新刷出新物品依旧读取DBC模板里的原始数值。
常见问题排查,脚本读取Cvalue数值始终为0,优先检查DBC数据库是否保存,M2是否执行数据库重载,确认脚本读取的字段序号和DBC填写的Cvalue序号一致,序号写错会读取空值。导入txt批量编辑后,大量物品属性错乱,是导出导入时分隔符错误,DBC导出导入默认使用固定分隔标记,修改文本时不要改动分隔符号,不要手动增减分隔符。重载数据库时报数据库损坏,是DBC保存异常,使用之前备份的db文件恢复,重新编辑数据。部分Cvalue字段修改后脚本无法写入,是引擎限制,仅支持读取模板数据,不支持动态修改实例参数,更换其他Cvalue序号测试。
批量维护多组自定义参数,规划好Cvalue字段用途,固定Cvalue1用于伤害比例,Cvalue2用于暴击,Cvalue3用于持续时间,统一规范,后续新增装备沿用这套分配规则,防止多个功能混用同一个Cvalue序号造成参数覆盖。每次编辑db文件前,复制一份db文件作为备份,编辑出错可以直接替换恢复。不要随意修改DBC原生字段的字段类型,改动原生字段会直接导致引擎无法加载整个物品数据库,服务端启动失败。
如果项目需要更多扩展参数,Cvalue0到Cvalue10数量不足,可以使用多组自定义变量搭配物品标识,脚本读取物品名称或者物品编号,去外部txt配置文件读取更多参数,不再依赖DBC的预留字段。外部文本方案优势是不受DBC字段数量限制,缺点是数据不在db数据库内,需要脚本额外读取文件,修改参数不需要打开DBC工具。两种方案按需选用,少量数字参数直接使用DBC内Cvalue预留字段,大量多类型参数采用外部文本配套脚本读取。
传奇DBC2000物品数据库新增自定义字段与字段读写完整操作步骤
来源:
作者:
点击:

