诛仙单机里怪物掉落、宝箱、GM发奖出现 ERR,本质不是游戏崩了,而是“服务端找到了物品ID,但客户端没有对应的名字/图标定义”,或者“掉落表里的ID在物品表里根本不存在”。ERR 是客户端取不到物品名时的占位显示。
一、最常见触发原因
1. 掉落表用了不存在的物品ID
改爆率、加自定义装备时,ID 填错、多一位少一位,或者抄了别的版本ID,服务端能掉出来,但客户端不认识,直接显示 ERR。
2. 只改了服务端,没同步客户端 elements.data
物品名称、图标、类型都在 elements.data 里。服务端 gamed/config 下改了物品表,客户端 element/data 没换,两边不一致,掉出来就是 ERR。
3. 爆率文件与物品库版本不对
用 A 版本爆率修改器导出的掉落,套到 B 版本服务端;老端加了新资料片物品,老客户端读不出。
4. 自定义物品没建全字段
只写了 ID 和名字,缺图标路径、品质、类型、堆叠数,客户端解析失败,显示 ERR 或空格。
5. 数据库和 data 文件冲突
部分端物品同时走 MySQL 物品表 + elements.data,两边 ID 映射错乱,掉出来半截数据。
二、按顺序排查(最直接)
1. 先确认是不是“所有掉落都ERR”还是“只有某几个物品ERR”
- 全服都 ERR:优先查 elements.data 同步、客户端补丁、编码
• 只有新加的装备 ERR:优先查掉落ID和物品表
2. 查掉落配置里的物品ID
找到怪物掉落文件(不同端叫法不同,常见在 gamed/config 或爆率修改器导出的 txt/ini):
- 把显示 ERR 对应的怪物掉落行抄出来
• 用 EL编辑器 或 WiseEditor 打开 elements.data
• 搜这个物品ID,看能不能搜到名字
搜不到 = ID 无效,填错版本了。
3. 检查服务端/客户端 elements.data 是否同包
正确做法:
• 改完物品表后,服务端 gamed/config/elements.data 和客户端 element/data/elements.data 用同一份文件
- 连同 .data.se 校验文件一起覆盖
• 别只发服务端不发表情包
覆盖完重启 gamed 和客户端。
4. 自定义物品按原表格式建
新建物品时照抄同类型装备那一行:
- ID 不重复
• 名称、图标、模型路径存在
• 品质、等级、职业、绑定类型按原结构填
改完先在 GM 指令里直接发这个ID,能出名字再挂到掉落表。
5. 爆率修改器别混用
GS爆率修改器只管“谁掉什么ID”,不管“ID叫什么”。
物品名归 elements.data,爆率归掉落表,两个文件版本必须来自同一端。
三、快速验证流程
① 纯净端先测:不加载自改文件,原生怪物掉东西是否正常
正常 = 你改的文件有问题
也 ERR = 客户端补丁本身缺物品表
② GM 指令发物品:
/give 物品ID 1
如果发出来也是 ERR,证明客户端不认这个ID
如果发出来正常、打怪掉出来 ERR,证明掉落表写错格式(比如ID带了空格、引号、十六进制没转)
③ 比对文件:
用 Beyond Compare 比服务端和客户端 elements.data 哈希,不一致就重盖。
四、顺手避坑
• 路径别带中文,老内核读写出错
• 改之前先备份 elements.data、掉落表、数据库 SQL
- 文本配置用 Notepad++ 看编码,别用带 BOM 的 UTF-8
• 登录器要和服务端同版本,跨版本登录器会读错物品段
• 清一下客户端缓存再进游戏,避免旧 ERR 图标缓存
总结:掉落变 ERR 不是掉率问题,是“ID失效或表没同步”。先锁物品ID是否存在,再锁 elements.data 两端一致,最后锁自定义物品字段完整,基本都能修回来。
五、不同端的具体落点
• 一键端虚拟机:改完在虚拟机里把 gamed 停掉再替换 elements.data,别热替;覆盖后重启 gamed、gdeliveryd,再进客户端。
• 老版原味端:重点看 element/data 下是否缺 .se 签名文件,缺了客户端会拒读物品段。
- 带了商城扩展的端:gshop.data 和 elements.data 要同批更新,只换一个容易让商城/掉落互串。
六、日志辅助定位
服务端 gamed 日志里搜掉落ID,看是“load item fail”还是“unknown item id”:
- load item fail:物品表没加载到,查 elements.data 是否损坏
• unknown item id:掉落表ID本身写错,回掉落文件改ID
• 日志没报错但客户端ERR:典型两端 elements.data 不一致
七、回滚底线
改废了别硬调,直接拿改之前的备份:
1. 恢复服务端 gamed/config/elements.data 及 .se
2. 恢复客户端 element/data/elements.data 及 .se
3. 恢复掉落表原始文件
4. 重启服务端全部进程
确认原生掉落正常后,再小步加自定义物品,每次只加一个ID验证。
八、编码与显示层
如果物品名是乱码再变 ERR,先查:
• 系统区域设置里非 Unicode 程序语言设成中文
- elements.data 导出再导入时别转错编码
• 客户端字体文件没缺
编码层修完,再处理物品ID映射,顺序反了容易白忙。
九、数据库端校验
用 Navicat 连服务端库,查物品表:
• 看 ERR 对应的 ID 在库里有没有行
- 有行但客户端不显示:库和 elements.data 的 ID 段不一致
• 没行:掉落表引用的就是假 ID
直接按 elements.data 里真实存在的 ID 反查数据库,保证三处一致:掉落表、elements.data、数据库物品表。
十、最小复现建议
建个测试怪物,只挂一件你要测的装备:
• 掉出来正常 = 原掉落表其他行有脏数据
• 还是 ERR = 这件物品定义本身没建好
比全服改完再排错省事得多。
十一、常见误改点
• 把物品ID写成物品名
- 爆率文件里 ID 列从 Excel 粘出来带了隐藏制表符
• 十六进制 ID 没转十进制
• 复制物品时没改新 ID,两行撞 ID
• 装备类型填成消耗品,客户端找不到装备模型
十二、最终检查清单
- 物品ID在 elements.data 能搜到
• 服务端/客户端 elements.data 同哈希
• 掉落表ID为纯数字无空格
• 自定义物品字段完整
• 数据库物品表ID对齐
• gamed 重启、客户端缓存清掉
全勾上,ERR 基本消失。
十三、进阶:多世界/多GS情况
如果开了多个 GS(gs01、gs02):
• 每个 GS 的 config 都得用同一份 elements.data
• 只给 gs01 换了表,gs02 区掉出来就会 ERR
- 登录器指向哪个 GS,就用哪边加载的表
跨区传送后物品变 ERR,优先查各 GS 表不一致。
十四、模型与图标分离处理
物品名正常但图标是方块,不算纯 ERR:
• 名字错 = 物品表没同步
• 图标空 = elements.data 里图标路径指向了不存在的贴图
- 模型消失 = 客户端 elements.pck 没对应资源
这种情况要补客户端 pck 资源,光改服务端没用。
十五、版本迁移注意
把高版本物品挪到低版本单机端:
• 高版本ID段低版本没有
• 直接抄掉落必 ERR
正确做法是在低版本 elements.data 里手动追加同ID物品定义,或把掉落ID改回低版本已有物品。
十六、GM 调试小技巧
• 先 /give 原版装备ID,确认基础链路通
• 再 /give 自改ID,定位是自改数据问题还是全局同步问题
- 用 GM 工具“刷掉落”代替打怪,排除刷怪配置干扰
• 每次只改一个变量,别爆率、物品表、客户端一起动
十七、文件损坏判断
elements.data 改崩了会出现:
• 进游戏直接闪退
• 部分物品 ERR、部分正常
- 打开 EL编辑器报错“段长度异常”
用原始端自带 elements.data 先还原,能进游戏再小步迁移自定义内容。
十八、补丁覆盖顺序
正确顺序:
1. 先停服务端
2. 换服务端 gamed/config 下 elements.data 和 .se
3. 同文件覆盖客户端 element/data
4. 启动数据库→auth→gamed
5. 清客户端缓存进游戏
顺序乱了,热加载容易把脏数据写进内存。
十九、自定义物品命名规范
• 别用特殊符号、emoji、全角空格
- 名称长度和原表同列对齐
• 颜色代码按原表格式,不手写乱加
名字解析失败有时也会回退成 ERR 占位。
二十、最后兜底
实在查不出哪一行错:
• 把掉落表还原成端自带默认掉落
• 只保留原生怪物原生爆率
- 确认无 ERR 后,分批把自改物品加回去
• 每加 5 个 ID 重启验证一次
虽然慢,但能精确定位第一个出问题的物品。
二十一、典型报错对照
• 掉落 ERR + 背包无物品:ID 不存在
• 掉落 ERR + 背包有空格物品:ID 存在但名字/图标字段空
- 打怪不掉落但日志有记录:爆率格式错,不是 ERR 问题
• 只有新地图怪物 ERR:新地图爆率文件用了别的端物品库
二十二、工具链建议
常用就这几个:
• EL编辑器:改 elements.data
- GS爆率修改器:改掉落
• Navicat:查数据库物品表
• Beyond Compare:比对两端文件
• Notepad++:看掉落文本编码
别用 Word、Excel 直接存配置,容易带隐藏格式。
二十三、改档工作流(推荐)
1. 备份三处:服务端表、客户端表、数据库
2. 在 elements.data 建物品,记牢 ID
3. GM 发物品验证名字/图标
4. 再写进掉落表
5. 重启服务端和客户端
6. 打怪实测
一步跳步,就容易被 ERR 卡住。
二十四、为什么“能掉出来但显示ERR”
服务端只负责“把这个ID放进你背包”,客户端负责“把ID翻译成名字和图”。
客户端翻译失败,就显示 ERR。
所以本质永远是:客户端缺定义,或ID本身非法。
二十五、一句话定位
先问三句:
• ID 在 elements.data 里存在吗?
• 客户端 elements.data 换了吗?
• 数据库和掉落表对得上吗?
三个都过,ERR 没理由还在。
二十六、附加:常见端路径速查
• 服务端:gamed/config/elements.data
• 客户端:element/data/elements.data
• 爆率:gamed/config 下掉落相关 ini/txt
- 数据库:item 表或等同物品表
• 校验文件:elements.data.se 必须一起动
二十七、附加:自定义装备完整最小字段
至少包含:
• 物品ID
• 名称
• 类型(武器/防具/消耗)
- 图标
• 模型
• 品质
• 等级需求
• 职业限制
• 绑定规则
• 堆叠上限
缺一个都可能让客户端解析异常。
二十八、附加:多端混用红线
• 别拿 A 端 EL编辑器 改 B 端 elements.data 结构
- 别拿新端爆率器写老端掉落
• 别把手游/页游物品ID塞进端游单机
结构不同,必 ERR。
二十九、附加:缓存清理点
• 客户端根目录缓存文件夹
• 登录器临时文件
• 角色本地缓存(必要时换号测试)
有时候表对了,旧缓存还在显示 ERR。
三十、附加:验证通过标准
• 打怪掉落显示正确名字
• 背包里图标正常
• 装备能穿、属性能对
• 交易/存仓不消失
四条全中,才算真修好,不只是“不报ERR”。
三十一、附加:批量加物品防错法
先建 1 个测试物品,跑通再批量:
• 复制行改ID
• 不复制整段乱贴
• 每批不超过10个
• 每批重启验证
批量乱贴是 ERR 重灾区。
三十二、附加:服务端日志关键词
搜这些词:
• item not found
• invalid item id
• load elements failed
• drop table error
看到哪个,就对应修哪层。
三十三、附加:客户端补丁缺失表现
- 原生物品也 ERR = 客户端补丁不完整
• 只有自改物品 ERR = 自改数据问题
先分清层级再动手。
三十四、附加:版本号对齐
登录器、服务端、客户端、elements.data 四者版本要能对应。
版本号错位是隐性 ERR 来源,表面看不出,但物品段偏移了。
三十五、收尾
ERR 不是玄学,是数据链路断点。
链路是:掉落表ID → 服务端物品库 → elements.data → 客户端渲染。
哪一层对不上,就在哪一层修。先把 ID 做实,再把表同步,最后清缓存重启,基本稳。
一、最常见触发原因
1. 掉落表用了不存在的物品ID
改爆率、加自定义装备时,ID 填错、多一位少一位,或者抄了别的版本ID,服务端能掉出来,但客户端不认识,直接显示 ERR。
2. 只改了服务端,没同步客户端 elements.data
物品名称、图标、类型都在 elements.data 里。服务端 gamed/config 下改了物品表,客户端 element/data 没换,两边不一致,掉出来就是 ERR。
3. 爆率文件与物品库版本不对
用 A 版本爆率修改器导出的掉落,套到 B 版本服务端;老端加了新资料片物品,老客户端读不出。
4. 自定义物品没建全字段
只写了 ID 和名字,缺图标路径、品质、类型、堆叠数,客户端解析失败,显示 ERR 或空格。
5. 数据库和 data 文件冲突
部分端物品同时走 MySQL 物品表 + elements.data,两边 ID 映射错乱,掉出来半截数据。
二、按顺序排查(最直接)
1. 先确认是不是“所有掉落都ERR”还是“只有某几个物品ERR”
- 全服都 ERR:优先查 elements.data 同步、客户端补丁、编码
• 只有新加的装备 ERR:优先查掉落ID和物品表
2. 查掉落配置里的物品ID
找到怪物掉落文件(不同端叫法不同,常见在 gamed/config 或爆率修改器导出的 txt/ini):
- 把显示 ERR 对应的怪物掉落行抄出来
• 用 EL编辑器 或 WiseEditor 打开 elements.data
• 搜这个物品ID,看能不能搜到名字
搜不到 = ID 无效,填错版本了。
3. 检查服务端/客户端 elements.data 是否同包
正确做法:
• 改完物品表后,服务端 gamed/config/elements.data 和客户端 element/data/elements.data 用同一份文件
- 连同 .data.se 校验文件一起覆盖
• 别只发服务端不发表情包
覆盖完重启 gamed 和客户端。
4. 自定义物品按原表格式建
新建物品时照抄同类型装备那一行:
- ID 不重复
• 名称、图标、模型路径存在
• 品质、等级、职业、绑定类型按原结构填
改完先在 GM 指令里直接发这个ID,能出名字再挂到掉落表。
5. 爆率修改器别混用
GS爆率修改器只管“谁掉什么ID”,不管“ID叫什么”。
物品名归 elements.data,爆率归掉落表,两个文件版本必须来自同一端。
三、快速验证流程
① 纯净端先测:不加载自改文件,原生怪物掉东西是否正常
正常 = 你改的文件有问题
也 ERR = 客户端补丁本身缺物品表
② GM 指令发物品:
/give 物品ID 1
如果发出来也是 ERR,证明客户端不认这个ID
如果发出来正常、打怪掉出来 ERR,证明掉落表写错格式(比如ID带了空格、引号、十六进制没转)
③ 比对文件:
用 Beyond Compare 比服务端和客户端 elements.data 哈希,不一致就重盖。
四、顺手避坑
• 路径别带中文,老内核读写出错
• 改之前先备份 elements.data、掉落表、数据库 SQL
- 文本配置用 Notepad++ 看编码,别用带 BOM 的 UTF-8
• 登录器要和服务端同版本,跨版本登录器会读错物品段
• 清一下客户端缓存再进游戏,避免旧 ERR 图标缓存
总结:掉落变 ERR 不是掉率问题,是“ID失效或表没同步”。先锁物品ID是否存在,再锁 elements.data 两端一致,最后锁自定义物品字段完整,基本都能修回来。
五、不同端的具体落点
• 一键端虚拟机:改完在虚拟机里把 gamed 停掉再替换 elements.data,别热替;覆盖后重启 gamed、gdeliveryd,再进客户端。
• 老版原味端:重点看 element/data 下是否缺 .se 签名文件,缺了客户端会拒读物品段。
- 带了商城扩展的端:gshop.data 和 elements.data 要同批更新,只换一个容易让商城/掉落互串。
六、日志辅助定位
服务端 gamed 日志里搜掉落ID,看是“load item fail”还是“unknown item id”:
- load item fail:物品表没加载到,查 elements.data 是否损坏
• unknown item id:掉落表ID本身写错,回掉落文件改ID
• 日志没报错但客户端ERR:典型两端 elements.data 不一致
七、回滚底线
改废了别硬调,直接拿改之前的备份:
1. 恢复服务端 gamed/config/elements.data 及 .se
2. 恢复客户端 element/data/elements.data 及 .se
3. 恢复掉落表原始文件
4. 重启服务端全部进程
确认原生掉落正常后,再小步加自定义物品,每次只加一个ID验证。
八、编码与显示层
如果物品名是乱码再变 ERR,先查:
• 系统区域设置里非 Unicode 程序语言设成中文
- elements.data 导出再导入时别转错编码
• 客户端字体文件没缺
编码层修完,再处理物品ID映射,顺序反了容易白忙。
九、数据库端校验
用 Navicat 连服务端库,查物品表:
• 看 ERR 对应的 ID 在库里有没有行
- 有行但客户端不显示:库和 elements.data 的 ID 段不一致
• 没行:掉落表引用的就是假 ID
直接按 elements.data 里真实存在的 ID 反查数据库,保证三处一致:掉落表、elements.data、数据库物品表。
十、最小复现建议
建个测试怪物,只挂一件你要测的装备:
• 掉出来正常 = 原掉落表其他行有脏数据
• 还是 ERR = 这件物品定义本身没建好
比全服改完再排错省事得多。
十一、常见误改点
• 把物品ID写成物品名
- 爆率文件里 ID 列从 Excel 粘出来带了隐藏制表符
• 十六进制 ID 没转十进制
• 复制物品时没改新 ID,两行撞 ID
• 装备类型填成消耗品,客户端找不到装备模型
十二、最终检查清单
- 物品ID在 elements.data 能搜到
• 服务端/客户端 elements.data 同哈希
• 掉落表ID为纯数字无空格
• 自定义物品字段完整
• 数据库物品表ID对齐
• gamed 重启、客户端缓存清掉
全勾上,ERR 基本消失。
十三、进阶:多世界/多GS情况
如果开了多个 GS(gs01、gs02):
• 每个 GS 的 config 都得用同一份 elements.data
• 只给 gs01 换了表,gs02 区掉出来就会 ERR
- 登录器指向哪个 GS,就用哪边加载的表
跨区传送后物品变 ERR,优先查各 GS 表不一致。
十四、模型与图标分离处理
物品名正常但图标是方块,不算纯 ERR:
• 名字错 = 物品表没同步
• 图标空 = elements.data 里图标路径指向了不存在的贴图
- 模型消失 = 客户端 elements.pck 没对应资源
这种情况要补客户端 pck 资源,光改服务端没用。
十五、版本迁移注意
把高版本物品挪到低版本单机端:
• 高版本ID段低版本没有
• 直接抄掉落必 ERR
正确做法是在低版本 elements.data 里手动追加同ID物品定义,或把掉落ID改回低版本已有物品。
十六、GM 调试小技巧
• 先 /give 原版装备ID,确认基础链路通
• 再 /give 自改ID,定位是自改数据问题还是全局同步问题
- 用 GM 工具“刷掉落”代替打怪,排除刷怪配置干扰
• 每次只改一个变量,别爆率、物品表、客户端一起动
十七、文件损坏判断
elements.data 改崩了会出现:
• 进游戏直接闪退
• 部分物品 ERR、部分正常
- 打开 EL编辑器报错“段长度异常”
用原始端自带 elements.data 先还原,能进游戏再小步迁移自定义内容。
十八、补丁覆盖顺序
正确顺序:
1. 先停服务端
2. 换服务端 gamed/config 下 elements.data 和 .se
3. 同文件覆盖客户端 element/data
4. 启动数据库→auth→gamed
5. 清客户端缓存进游戏
顺序乱了,热加载容易把脏数据写进内存。
十九、自定义物品命名规范
• 别用特殊符号、emoji、全角空格
- 名称长度和原表同列对齐
• 颜色代码按原表格式,不手写乱加
名字解析失败有时也会回退成 ERR 占位。
二十、最后兜底
实在查不出哪一行错:
• 把掉落表还原成端自带默认掉落
• 只保留原生怪物原生爆率
- 确认无 ERR 后,分批把自改物品加回去
• 每加 5 个 ID 重启验证一次
虽然慢,但能精确定位第一个出问题的物品。
二十一、典型报错对照
• 掉落 ERR + 背包无物品:ID 不存在
• 掉落 ERR + 背包有空格物品:ID 存在但名字/图标字段空
- 打怪不掉落但日志有记录:爆率格式错,不是 ERR 问题
• 只有新地图怪物 ERR:新地图爆率文件用了别的端物品库
二十二、工具链建议
常用就这几个:
• EL编辑器:改 elements.data
- GS爆率修改器:改掉落
• Navicat:查数据库物品表
• Beyond Compare:比对两端文件
• Notepad++:看掉落文本编码
别用 Word、Excel 直接存配置,容易带隐藏格式。
二十三、改档工作流(推荐)
1. 备份三处:服务端表、客户端表、数据库
2. 在 elements.data 建物品,记牢 ID
3. GM 发物品验证名字/图标
4. 再写进掉落表
5. 重启服务端和客户端
6. 打怪实测
一步跳步,就容易被 ERR 卡住。
二十四、为什么“能掉出来但显示ERR”
服务端只负责“把这个ID放进你背包”,客户端负责“把ID翻译成名字和图”。
客户端翻译失败,就显示 ERR。
所以本质永远是:客户端缺定义,或ID本身非法。
二十五、一句话定位
先问三句:
• ID 在 elements.data 里存在吗?
• 客户端 elements.data 换了吗?
• 数据库和掉落表对得上吗?
三个都过,ERR 没理由还在。
二十六、附加:常见端路径速查
• 服务端:gamed/config/elements.data
• 客户端:element/data/elements.data
• 爆率:gamed/config 下掉落相关 ini/txt
- 数据库:item 表或等同物品表
• 校验文件:elements.data.se 必须一起动
二十七、附加:自定义装备完整最小字段
至少包含:
• 物品ID
• 名称
• 类型(武器/防具/消耗)
- 图标
• 模型
• 品质
• 等级需求
• 职业限制
• 绑定规则
• 堆叠上限
缺一个都可能让客户端解析异常。
二十八、附加:多端混用红线
• 别拿 A 端 EL编辑器 改 B 端 elements.data 结构
- 别拿新端爆率器写老端掉落
• 别把手游/页游物品ID塞进端游单机
结构不同,必 ERR。
二十九、附加:缓存清理点
• 客户端根目录缓存文件夹
• 登录器临时文件
• 角色本地缓存(必要时换号测试)
有时候表对了,旧缓存还在显示 ERR。
三十、附加:验证通过标准
• 打怪掉落显示正确名字
• 背包里图标正常
• 装备能穿、属性能对
• 交易/存仓不消失
四条全中,才算真修好,不只是“不报ERR”。
三十一、附加:批量加物品防错法
先建 1 个测试物品,跑通再批量:
• 复制行改ID
• 不复制整段乱贴
• 每批不超过10个
• 每批重启验证
批量乱贴是 ERR 重灾区。
三十二、附加:服务端日志关键词
搜这些词:
• item not found
• invalid item id
• load elements failed
• drop table error
看到哪个,就对应修哪层。
三十三、附加:客户端补丁缺失表现
- 原生物品也 ERR = 客户端补丁不完整
• 只有自改物品 ERR = 自改数据问题
先分清层级再动手。
三十四、附加:版本号对齐
登录器、服务端、客户端、elements.data 四者版本要能对应。
版本号错位是隐性 ERR 来源,表面看不出,但物品段偏移了。
三十五、收尾
ERR 不是玄学,是数据链路断点。
链路是:掉落表ID → 服务端物品库 → elements.data → 客户端渲染。
哪一层对不上,就在哪一层修。先把 ID 做实,再把表同步,最后清缓存重启,基本稳。

