传奇登陆器启动弹脚本错误根因:StdItems.DB属性异常与删装备修复法

来源: 作者: 点击:
登陆器一打开就弹“脚本错误”,多数情况不是登录器本身坏了,而是服务端 DBServer 启动时把 StdItems.DB(物品/装备数据库)读进内存,某件装备的属性字段越界、类型错乱、保留字冲突,导致后续登录链路里 NPC 列表、背包加载、角色上线脚本(QManage.txt、Login.txt)解析中断,登陆器作为客户端表现就是弹窗报错。楼上说“DBC里改属性或删装备”方向对,但要落到具体字段才有效。

一、先确认报错是不是真出在数据库层
看 Mir200\Log\ScriptError.log、DBServer.log、M2Server 控制台红字:
• 提示“物品数据库加载错误”“Field not found”“StdItems.DB Table does not exist”“未知属性参数” → 锁定 DBC / StdItems.DB

- 提示 Market_Def、QuestDiary 行号 → 那是 TXT 脚本问题,不是 DBC 的事,别去动数据库
• 登陆器弹“当前页面脚本发生错误”且服务端能正常起 → 多为登陆器与引擎不配套、Cache 损坏、路径含中文

二、用 DBC2000 / BDE Administrator 打开 StdItems.DB
路径:控制面板 → BDE Administrator → 别名 HeroDB(必须大写,部分引擎用 MirDB)→ PATH 指向 D:\MirServer\Mud2\DB → 打开 StdItems.DB
逐行检查近期手动改过或版本合并时新增的装备,重点字段:
1. IDX:必须连续唯一,跳号、重复、0 值都会让 M2 加载中断
2. Name:不能含 | & \ 等脚本分隔符,不能和“祝福油”“强效太阳水”等系统保留名重名,否则被误判类型
3. Stdmode:物品大类,武器=0/5、衣服=10/11、戒指=12 等,填错类别后后续攻击/防御字段解释全乱
4. Looks:图标编号,用 Items1.wil 素材要写 10000+编号,负数或超范围 → 显示错乱连带脚本异常
5. Dura / DuraMax:持久度为 0 或负数 → 装备无法穿戴、角色上线加载即断
6. AC/AC2/MAC/MAC2/DC/DC2/MC/MC2/SC/SC2:攻击魔法道术字段,出现负数、空值、小数、文本 → 引擎解析抛异常
7. NeedLevel / NeedJob:等级要求、职业限制(1战士 2法师 4道士 7通用),超限或代码错 → 穿戴判定脚本崩溃
8. Shape、AniCount、Price 等扩展字段:批量导入时错位、空行、乱码行必须清掉

改法:把异常行的数值修正回合理整数范围;拿不准就对照同引擎原版服务端的 StdItems.DB 抄标准行;确认无误后 Ctrl+S 保存,关 BDE。

三、实在查不出哪件装备炸 → 删装备法
1. 备份当前 StdItems.DB 到别处
2. 在 DBC 里把明显异常的新增装备整行删掉(或 Name 改回“测试装备”暂离脚本调用)
3. 同步检查 Envir 下引用该装备的脚本:Market_Def 里 GIVE 某某装备、QuestDiary 里 GiveItem、MonItems 爆率文件、MakeItem 合成表、MapQuest_def 触发项,把对应名字一起删或注释
4. 重启顺序:先关 M2 → 关 DBServer → 保存 DB → 起 DBServer → 起 LoginGate → RunGate → M2 → 开登陆器

四、DBC 环境本身要先排雷(很多人忽略)
- BDE 别名必须是 HeroDB(或引擎要求的准确名),大小写错、多空格 → 读不到表
• PATH 必须精确到 Mud2\DB,指到 MirServer 或 Mud2 上层都会加载失败

- 注册表 SHAREDMEMLOCATION 改 0x5BDE,避免 BDE 共享内存冲突
• 服务端路径纯英文,不放桌面、不放中文目录,不嵌套太深

• 杀软把 StdItems.DB、DBServer.exe、LoginGate.exe 拦了 → 加信任区

五、登陆器侧配套核对
引擎类型(GOM/GEE/Hero/LEG/Sky)和登陆器必须同套;list.txt 格式“游戏名 IP 端口”三字段;Cache、Temp 删干净;ScriptEngine.dll 未被杀软删;客户端 Mir2\Data\StdItems.def 和服务端数据库版本一致,否则服务端改完属性客户端仍显示旧值并触发校验报错 。

数据库层修完 → 重载物品数据库 → 重载全部脚本 → 清日志 → 重启全套服务端,登陆器打开即弹脚本错误的情况基本消失。