当前位置 : 145z游戏站 | 热血传奇 | 技术教程 | 

传奇服务端QManage加载变量报错找不到txt文件脚本错误排查修复教程

热度:
服务端弹出脚本错误提示,脚本命令LOADVAR,NPC名称QManage,报错核心内容为找不到指定txt文本文件,该报错出现在M2启动阶段,属于变量读取脚本缺失类故障。LOADVAR命令作用是读取文本内保存的玩家变量数据,脚本指向路径D:\MirServer\Mir200\Envir\MapQuest_def\..\QuestDiary\诚意网络\军团功能\神影名单.txt,程序按照这个路径检索文件,文件夹或者txt文件不存在,就直接抛出脚本错误弹窗。

先拆解报错里的路径逻辑,MapQuest_def后面的两点斜杠代表返回上一级目录,从MapQuest_def文件夹退回Envir目录,再进入QuestDiary文件夹,后续子目录依次是诚意网络、军团功能,最后读取神影名单.txt。出现报错分为两种情况,第一种是QuestDiary下面诚意网络文件夹内,军团功能子文件夹没有创建;第二种是文件夹目录存在,但是目录里面缺少神影名单.txt这个文本文件。路径里面的中文文件夹名称需要注意,部分服务端内核对中文目录敏感,文件夹名称存在多余空格、全角字符也会识别失败,触发找不到文件提示。

打开D盘MirServer目录,逐层打开Mir200,进入Envir文件夹,找到QuestDiary文件夹,打开QuestDiary查看内部目录,确认是否存在名为诚意网络的文件夹。如果诚意网络文件夹不存在,新建文件夹命名为诚意网络,进入该文件夹,新建子文件夹命名军团功能。进入军团功能文件夹,在空白位置右键新建文本文档,重命名为神影名单.txt,新建的空白txt文件无需写入任何内容,保存即可,保存完成重新启动M2,该报错大概率直接消失。新建文本文件的时候,需要关闭系统文件扩展名隐藏,防止文件名变成神影名单.txt.txt,这种双重后缀会导致服务端无法识别文件。

文件创建完成依旧报错,需要核对QManage脚本内的LOADVAR代码段,打开Envir\MapQuest_def目录,找到QManage.txt,用文本编辑器打开,检索包含CWFY和神影名单.txt的LOADVAR那一行。核对代码内写的文件路径名称,检查文字有没有错别字,文字大小写差异、多打空格都会造成读取失败。代码里面文件夹名称、txt文件名必须和磁盘内实际文件夹、文件名完全一致,一个字符都不能有差别。

除了文件缺失之外,还有路径引用写法错误的情况。LOADVAR调用文件使用相对路径,两点斜杠跳转目录的写法,部分内核版本识别不稳定,可以修改脚本为完整绝对路径。把脚本内文件参数替换成D:\MirServer\Mir200\Envir\QuestDiary\诚意网络\军团功能\神影名单.txt,修改完成保存脚本,重启M2加载测试。修改脚本文件后,需要完全关闭M2引擎,重新启动服务端,只重载NPC脚本不会重新执行QManage里面的LOADVAR加载命令。

还有文件权限引发的读取失败,系统阻止服务端程序读取txt文件。右键神影名单.txt,打开属性,查看安全选项,确认当前用户拥有读取权限,取消勾选只读属性。部分系统安全软件会拦截引擎读取本地文本,将整个MirServer目录加入信任列表,防止安全软件隔离或者锁定新建的txt文件。

同类LOADVAR报错的通用逻辑,QManage属于全局启动脚本,M2引擎启动时会自动执行QManage内部所有LOADVAR加载命令,读取各类保存玩家数据的文本,只要其中任意一个目标文件缺失,就会在启动瞬间弹出脚本错误提示,不会中断服务端启动,但是对应的变量数据无法加载,对应的军团相关功能失效,名单数据无法读取,相关NPC功能点击无响应。

排查过程不要遗漏其他连带LOADVAR语句,本次报错只提示神影名单.txt缺失,QManage脚本内还有其他LOADVAR行调用CWFY相关文件CWFYSave.txt,对应路径是QuestDiary\诚意网络\CWFYSave.txt,需要顺带检查这个文件,避免修复完当前报错之后,再次弹出CWFYSave.txt找不到文件的同类提示,同样的方式,找到对应目录,新建空白CWFYSave.txt文本。

目录层级错乱也是常见诱因,QuestDiary文件夹位置不能放错,QuestDiary文件夹必须放在Envir目录下,不能放到Mir200根目录或者其他文件夹。如果QuestDiary被移动,所有LOADVAR引用的相对路径全部失效,批量触发大量找不到文件类脚本报错。完成文件创建和脚本核对,关闭M2引擎,关闭游戏网关,完整重启整套服务端,重新查看M2日志窗口,确认该脚本错误提示不再出现。
[顶部]