传奇服务端CheckItemList.txt加载错误与装备回收失效修复

来源: 作者: 点击:
CheckItemList.txt是服务端核心的物品规则配置文件,存储装备道具的基础参数与校验规则。装备回收系统在运行时必须读取该文件中的装备数据来判定回收价值,两者是上下游依赖关系。文件加载失败直接导致回收系统无法识别装备,进而瘫痪。问题根源集中在文件缺失损坏、编码格式、路径配置、内容语法、权限设置和引擎兼容性六个方面,按顺序排查即可解决。

**一、定位文件并确认是否缺失或损坏**

打开服务端根目录,进入Mir200\Envir文件夹。正常配置下CheckItemList.txt应与ItemList.txt、Monster.txt等文件并列存放。部分引擎的路径可能略有差异,GOM、GEE、HERO引擎通常都在Envir目录下。如果文件夹内找不到该文件,说明已被误删或解压不完整。如果文件存在但大小异常,比如仅0KB或1KB,说明文件已损坏。杀毒软件在解压时拦截删除该文件也是常见原因,检查杀毒软件的隔离区记录,有拦截则恢复并加入信任白名单。

解决方法是从服务端原始压缩包或备份包中提取同名文件覆盖到Envir文件夹。注意版本匹配,1.76版本的服务端必须用1.76版本的CheckItemList.txt,不同引擎的文件不可混用。复制完成后右键文件选择属性,取消只读勾选,避免后续无法编辑。

**二、编码格式改为ANSI**

这是CheckItemList.txt加载错误最高频的原因。传奇引擎对文本文件的编码格式要求极严,GOM、GEE等主流引擎只识别ANSI编码,而现代Windows系统记事本默认保存为UTF-8,导致引擎读取时出现乱码而无法解析。用记事本打开CheckItemList.txt,点击文件菜单中的另存为,在保存对话框右下角找到编码选项,从UTF-8改为ANSI,覆盖保存。修改后关闭M2Server和所有相关进程,重新启动服务端。

**三、检查文件内容格式**

用记事本或Notepad++打开CheckItemList.txt,检查内部内容是否存在乱码或非标准字符。该文件通常采用纯文本列表格式,每一行代表一个物品或一类物品的校验规则。常见错误包括使用中文逗号或句号代替英文标点、行尾有多余空格或空行、物品编号重复、属性值缺失。用Notepad++的“视图-显示符号-显示所有字符”功能可以直观看到行尾空格和不可见字符,逐一清理。确保文件内容整洁,没有非法字符,保存时编码仍为ANSI。

**四、核对路径配置**

服务端通过Mir200文件夹下的!Setup.txt配置文件定位CheckItemList.txt的加载路径。打开!Setup.txt,搜索CheckItemList关键词,找到对应的路径参数。正常配置应为相对路径“.\Envir\CheckItemList.txt”。如果路径被改为绝对路径但文件已被移动,或者路径中包含中文目录,引擎就会找不到文件而报错。将路径参数修改为默认的相对路径“.\Envir\CheckItemList.txt”,确保文件实际位置与配置一致。

**五、检查文件夹与文件权限**

Windows系统账户权限不足或服务端文件夹被设置为只读时,引擎进程无法读取CheckItemList.txt,同样触发加载错误。右键点击服务端根目录,选择属性,进入安全选项卡,查看当前登录账户是否拥有完全控制或读取和写入权限。如果权限栏显示拒绝或部分缺失,点击编辑,选中当前账户,勾选完全控制、读取、写入等所有权限选项,点击应用确认。同时取消文件夹的只读属性,在属性窗口中去掉只读勾选,弹出提示时选择应用到所有文件和文件夹。如果服务端放在C盘或Program Files目录下,建议整体移动到D盘根目录,并以管理员身份运行M2Server.exe。

**六、检查引擎版本兼容性**

不同引擎对CheckItemList.txt的文件格式要求存在差异。如果以上步骤全部完成后仍然报错,说明文件与当前引擎版本不兼容。从对应引擎的官方包或同版本服务端中提取CheckItemList.txt模板文件进行替换,不要从其他引擎的版本中复制。替换后重启服务端,观察M2引擎启动日志中是否还有异常提示。

**七、装备回收系统失效的关联排查**

修复CheckItemList.txt加载错误后,装备回收功能多数情况下会同步恢复,因为回收脚本依赖该文件中的物品数据进行CHECKITEM判断。重启M2Server后观察启动日志,确认是否有物品数据库加载完成的提示信息。如果物品库加载不完整,回收脚本中的物品检查指令无法通过,脚本流程会直接中断。

如果回收功能仍然失效,检查回收NPC的脚本文件。进入Mir200\Envir\Market_Def目录,找到对应的回收员脚本,检查脚本中的CHECKITEM指令是否正确调用了物品名称,以及物品名称是否与CheckItemList.txt中定义的名称一致。名称不匹配时,CHECKITEM判断失败,回收脚本不会执行后续的奖励动作。带有自动回收或一键回收功能的版本还需要检查QManage.txt或QFunction.txt等全局脚本,确保这些文件的编码同样为ANSI格式,且没有被杀毒软件拦截或损坏。

另外检查!Setup.txt中ItemListPath字段是否指向了正确的位置。部分服务端的物品列表路径指向Mud2\DB下的数据库文件而非Envir目录下的文本文件,路径配置错误会导致回收脚本读取不到物品信息。确认路径指向的是服务端实际存放物品列表文件的位置。