传奇服务端CheckItemList加载错误与装备回收失效排查

来源: 作者: 点击:
一、[Exception] CheckItemList.txt 加载错误的原因

这个报错的意思是:服务端在启动或加载配置时,读取 CheckItemList.txt 失败。

CheckItemList.txt 一般属于禁止物品、检查物品、物品校验相关的配置文件,常见路径在服务端配置目录中,例如:

MirServerMir200EnvirCheckItemList.txt

出现这个错误,通常不是单独一个原因,常见原因有以下几种。

CheckItemList.txt 文件不存在

如果服务端配置中开启了物品检查功能,但目录里找不到 CheckItemList.txt,就会提示加载错误。

排查方法:

打开服务端目录。
进入 Mir200Envir 或对应配置目录。
查看是否存在 CheckItemList.txt。
如果没有,可以先新建一个空的 CheckItemList.txt。
重启服务端或重新加载配置,观察是否还报错。

新建文件时不要随便写内容,先保持空白或按照版本原有格式填写。

文件路径不对

有些版本的服务端路径不是默认路径,或者服务端被移动过目录,导致引擎找不到文件。

常见情况:

服务端从其他盘复制过来后路径变化。
Mir200 目录不完整。
Envir 目录被改名或移动。
引擎读取路径和实际文件位置不一致。

排查方法:

确认服务端根目录是否正确。
确认 Mir200Envir 目录是否存在。
确认 CheckItemList.txt 是否放在正确目录下。
如果版本有自定义路径配置,检查对应配置文件中的路径是否正确。

文件编码格式错误

传奇服务端的很多 txt 配置文件对编码比较敏感。如果 CheckItemList.txt 被保存成 UTF-8、UTF-8 BOM 或其他编码,服务端可能无法正确读取。

建议处理方式:

用记事本打开 CheckItemList.txt。
点击“文件”。
选择“另存为”。
在编码选项中选择 ANSI。
覆盖保存。
重启服务端测试。

如果原来文件内容出现乱码,说明编码已经错乱,需要重新整理内容后再保存。

文件内容格式错误

CheckItemList.txt 如果里面有错误格式、多余符号、乱码、空行异常、物品编号错误,也可能导致加载失败。

需要检查:

是否有乱码。
是否有中文标点。
是否有不认识的符号。
是否有多余空格。
是否物品编号写错。
是否复制内容时带入了网页格式。
是否每行格式不符合版本要求。

如果不确定格式,可以先清空文件内容,只保留空文件,再启动服务端。如果空文件不报错,说明就是文件内容格式问题。

文件名大小写或后缀名异常

部分引擎或系统环境对文件名比较敏感。

需要确认:

文件名是否真的是 CheckItemList.txt。
是否被改成 CheckItemList.txt.txt。
是否大小写不一致。
是否文件名前后有空格。
是否后缀名被隐藏导致实际文件名错误。

可以打开文件夹,开启“显示文件扩展名”,确认文件真实名称。

文件被杀毒软件拦截或删除

部分杀毒软件、电脑管家、防火墙可能会误删或拦截服务端中的 txt、ini、exe 等文件。

排查方法:

检查文件是否还在目录中。
查看杀毒软件隔离区。
临时关闭杀毒软件测试。
把服务端目录加入白名单。
重新放入 CheckItemList.txt 后重启服务端。

版本文件不完整

如果版本本身是压缩、传输、解压后不完整,可能缺少 CheckItemList.txt,或者文件被损坏。

这种情况建议:

重新解压版本。
对比原始版本目录。
确认 Mir200Envir 下文件是否齐全。
如果原始版本有这个文件,直接补回来。
不要只复制单个文件覆盖整个目录,避免配置混乱。

二、CheckItemList.txt 加载错误的处理顺序

可以按下面顺序排查,效率更高:

查看报错时服务端目录是否缺少 CheckItemList.txt。
确认文件是否放在正确路径。
确认文件名和后缀是否正确。
用记事本打开文件,检查是否有乱码。
将文件另存为 ANSI 编码。
清空文件内容后重启服务端测试。
检查杀毒软件是否删除或拦截文件。
检查版本是否完整,必要时补回原始文件。
重启服务端或重新加载配置。
如果还报错,查看 M2Server 或引擎日志中的详细错误行。

多数情况下,这个报错只要补回文件、修正编码、清理错误内容,就能解决。

三、装备回收系统不能用的常见原因

装备回收系统不能用,通常分为两种情况:

玩家点击回收没有反应。
回收后没有给元宝、金币、积分或道具。

这两种情况原因不同,需要分开排查。

NPC脚本错误

装备回收功能很多是通过 NPC 脚本实现的。如果脚本出错,玩家点击回收按钮就会没有反应。

常见原因:

回收按钮对应的跳转标签不存在。
GOTO 指向了错误标签。
#IF、#ACT、#SAY 结构不完整。
脚本里有拼写错误。
回收命令参数写错。
缺少 BREAK 或 GOTO,导致脚本中断。
条件判断不满足,但没有写 ELSESAY 或 ELSEACT。

排查方法:

找到回收装备对应的 NPC。
根据 NPC 名称,在 MirServerMir200EnvirMarket_Def 目录下找对应脚本文件。
打开脚本文件,找到回收按钮对应的标签。
检查按钮跳转是否正确。
检查回收逻辑是否完整。
修改后重载脚本或重启服务端。

如果 M2Server 控制台有脚本错误提示,要优先看错误提示中的 NPC 名称、地图坐标和行号。

回收脚本标签不存在

有些版本回收按钮写的是类似:

[@高价回收]

[@装备回收]

[@回收装备]

如果脚本里没有这个标签,或者标签名写错,玩家点击后就会没有反应。

需要确认:

按钮跳转名称和脚本标签名称是否完全一致。
标签前后是否有空格。
是否大小写不一致。
是否被其他脚本覆盖。
是否标签位置放错段落。

回收条件不满足

装备回收脚本通常会加条件判断,例如:

是否拥有指定物品。
角色等级是否满足。
背包是否满。
是否绑定装备。
是否可回收装备。
是否达到回收时间限制。
是否满足游戏币、元宝、积分条件。

如果条件不满足,脚本可能不会执行回收动作。

排查方法:

查看回收脚本中的 IF 条件。
确认当前角色是否满足条件。
确认装备是否符合回收规则。
确认背包是否有空位。
确认奖励道具、元宝、金币是否能正常发放。

如果条件不满足但没有提示,玩家就会感觉回收系统坏了。

奖励发放失败

有些情况是装备被回收了,但元宝、金币、积分没有到账。

常见原因:

奖励命令写错。
奖励物品编号不存在。
元宝、金币、积分变量名错误。
奖励数量格式错误。
数据库或脚本变量异常。
服务端没有正确保存角色数据。
回收脚本执行到一半中断。

需要检查回收成功后的奖励段落,确认奖励命令是否正确,并且对应物品或货币存在。

物品数据库配置异常

如果装备回收依赖物品数据库,而物品数据库异常,也可能导致回收失败。

常见表现:

回收界面打不开。
回收后装备消失但奖励不到账。
某些装备可以回收,某些装备不能回收。
回收提示错误。
服务端日志提示物品加载失败。

需要检查:

物品数据库是否完整。
回收装备的物品编号是否正确。
物品名称是否异常。
物品属性是否被修改。
数据库字段是否缺失。
数据库名称是否为英文。

如果数据库名称使用中文,或者手动创建数据库时字段不完整,也可能引发服务端异常。建议让引擎自动初始化数据库,或更换为纯英文数据库名称。

插件或功能模块冲突

如果版本使用了第三方插件、回收插件、商城插件、功能脚本插件,插件冲突也可能导致回收系统失效。

排查方法:

暂时关闭回收相关插件。
使用版本自带脚本测试回收。
如果自带脚本正常,说明是插件问题。
检查插件配置文件。
检查插件是否和当前引擎版本匹配。
查看插件日志是否有报错。

服务端没有正常加载配置

如果服务端启动时已经有报错,例如 CheckItemList.txt 加载错误,说明配置加载可能不完整。配置加载异常时,部分功能可能无法正常生效。

建议:

先解决所有启动报错。
重启服务端。
重新测试装备回收。
查看 M2Server 控制台是否有新的错误。
如果回收功能依赖某些配置文件,确认这些文件是否被正常读取。

四、装备回收系统排查顺序

装备回收系统不能用时,可以按这个顺序处理:

确认是点击没反应,还是回收后奖励不到账。
查看 M2Server 控制台是否有脚本错误。
找到回收 NPC 对应的脚本文件。
检查回收按钮跳转标签是否正确。
检查 #IF、#ACT、#SAY 结构是否完整。
检查回收条件是否满足。
检查奖励命令是否正确。
检查物品数据库和装备编号是否正常。
检查是否有插件干扰。
修改后重载脚本或重启服务端。
用不同装备、不同角色测试回收功能。

五、两个问题可能有关联

CheckItemList.txt 加载错误和装备回收系统不能用,可能不是完全独立的问题。

如果服务端启动时配置文件加载失败,可能影响物品校验、脚本执行、插件加载或功能模块初始化。装备回收系统如果依赖物品检查、物品列表、回收脚本或插件,就可能一起失效。

建议先处理 CheckItemList.txt 加载错误,再测试装备回收系统。如果文件报错消失后回收仍然不能用,再单独排查 NPC 脚本、回收条件、奖励发放和插件配置。