这两行提示指向同一个问题:引擎在执行 QManage 启动脚本时,按相对路径去找两个 txt 数据文件,没找到。它不是引擎损坏,也不是脚本语法写错,而是文件缺失或路径解析错位。只要把文件放到引擎实际查找的位置,或者把脚本里的路径改成能对上的一种,报错就会消失。
一、先把提示读明白
第一行是 LOADVAR 命令报错。命令格式为 LOADVAR 变量类型 变量名 文件名。这里的含义是把人类变量 CWFY 从 ..QuestDiary诚意网络CWFYSave.txt 里读出来。执行主体是 NPC 名称 QManage,地图 0(0:0),说明这是服务器启动时跑的全局管理脚本,不是某个NPC对话触发的。
第二行更直接:找不到文件,完整解析路径是 D:MirServerMir200EnvirMapQuest_def..QuestDiary诚意网络军团功能神影名单.txt。
注意那个 MapQuest_def..QuestDiary。引擎对相对路径的基准目录不是固定的,它取决于当前执行的脚本文件所在文件夹。QManage 和地图事件脚本的基准目录往往是 MapQuest_def 或 Envir 根目录,而脚本作者写 ..QuestDiary 时,通常是按 Market_Def(NPC脚本目录)的层级来算的。同一个路径,在不同脚本里解析出来的绝对路径不一样。这就是为什么很多人明明在 QuestDiary 里有这个文件,启动时还是报找不到。
二、第一步:确认文件到底在不在
不要猜,直接在资源管理器地址栏粘贴这两个路径去看:
D:MirServerMir200EnvirQuestDiary诚意网络CWFYSave.txt
D:MirServerMir200EnvirQuestDiary诚意网络军团功能神影名单.txt
如果诚意网络这个文件夹根本不存在,说明整套脚本没有被完整拷进来。去你下载的服务器端压缩包、补丁包或脚本包里找“诚意网络”“军团功能”这类文件夹,整个复制到 QuestDiary 下面。很多版本把脚本和数据分开打包,只拷了 Market_Def 里的 NPC 文本,漏了 QuestDiary 里的数据文件。
如果文件夹存在但缺个别文件,可能是解压时被杀毒软件拦截了。传奇服务端的 txt 和 dll 经常被 360、Windows Defender 误判隔离。打开杀毒软件的隔离区或保护历史记录,看有没有被拦下的文件,恢复并加白名单,然后把整个 MirServer 目录加入排除项。
也可以用搜索确认文件是否在其他位置。打开 cmd,执行:
dir /s /b D:MirServer神影名单.txt
dir /s /b D:MirServerCWFYSave.txt
如果搜出来在别的子目录里,说明只是放错了位置,挪过去即可。
三、第二步:检查那些看着没问题其实有问题的细节
隐藏的双扩展名。Windows 默认隐藏已知文件扩展名,你看到的“神影名单.txt”实际可能是神影名单.txt.txt。在文件夹选项里关掉“隐藏已知文件类型的扩展名”,确认扩展名只有一个 .txt。这是最常见的低级失误之一。
中文文件夹名里的多余空格。诚意网络 前后、军团功能 中间如果多了一个空格,肉眼很难看出来,但路径一定对不上。建议直接把文件夹重命名为纯英文短名,比如 CNWL 和 JTGN,同时把脚本里对应的路径也改掉,一劳永逸地避开中文和空格带来的麻烦。
编码不对。QuestDiary 下的 txt 必须用 ANSI(GBK)编码保存,不要用 UTF-8 带 BOM。用记事本打开另存为,编码选 ANSI。UTF-8 的文件引擎能读到,但读出来的内容会带乱码,后续判断全部失效,表现为功能异常而不是报错,更难排查。
权限和路径长度。服务端放在 C 盘 Program Files、OneDrive 同步目录或深层嵌套目录里,容易遇到读取限制和路径超长。整个 MirServer 放到 D:MirServer 这种短路径,并以管理员身份运行 M2Server。Windows 对超过 260 字符的路径会直接返回找不到文件,而 MapQuest_def..QuestDiary 这种写法本身就在白白消耗路径长度。
文件被占用或只读。如果之前用编辑器开着这些 txt,或者文件属性被设成只读,部分引擎写入时会失败。关闭所有占用程序,去掉只读属性。
四、第三步:改路径,这是最彻底的解决办法
既然相对路径的基准目录不统一,那就别用 .. 这种写法。打开调用这两个文件的脚本(QManage.txt 在 Envir 根目录,地图事件脚本在 MapQuest_def,NPC 脚本在 Market_Def,用记事本或 Notepad++ 全局搜索“神影名单.txt”和“CWFYSave.txt”能找到具体在哪几行),把文件名改成以下三种之一:
写法一,绝对路径(最稳):
LOADVAR HUMAN CWFY D:MirServerMir200EnvirQuestDiary诚意网络CWFYSave.txt
写法二,去掉 .. ,写成从基准目录往下的相对路径:
LOADVAR HUMAN CWFY QuestDiary诚意网络CWFYSave.txt
写法三,保留 .. 但确保文件在解析出的位置上确实存在。
推荐写法一。绝对路径不受脚本所在目录影响,QManage、地图事件、NPC 对话里都能用同一份文件,也不会再出现“明明有文件却报找不到”的情况。改完记得保存为 ANSI 编码,并且只在需要的地方改,不要把整段脚本其他内容删掉。
五、第四步:文件真的丢了怎么办,空文件能不能顶
如果只是数据文件丢失,脚本本体还在,可以自己建一个空的顶上去,让引擎不再报错。
新建文本文档,命名严格一致(注意扩展名),用记事本另存为 ANSI 编码。
CWFYSave.txt 留空即可。LOADVAR HUMAN 读取的是按角色存储的键值,文件为空时读不到值,变量取默认空值或 0,不影响启动;玩家第一次触发 SaveVar 时会自动写入。
神影名单.txt 这类按行遍历的名单文件,留空同样不会报错,只是循环直接结束,功能相当于名单为空。如果你想让它立刻可用,可以参考同目录下其他名单文件的格式补一行示例数据。
需要提醒的是,这只是让报错消失并让功能回到初始状态。如果该文件里原本存有玩家的军团数据、名单、计数,重建空文件意味着这些数据没了,且无法恢复。正式开服前务必整包备份 Envir 目录,尤其是 QuestDiary。
六、第五步:验证是否真的修好
QManage 是启动时执行的脚本,只重载脚本不一定重新跑。正确验证顺序:
完全关闭 M2Server、LoginGate、RunGate 等所有进程。
重新启动服务端,观察控制台日志里那两行提示是否消失。
进游戏创建一个新角色登录,触发一次军团功能相关操作,看是否还有后续的脚本错误。因为文件缺失时,后面跟着的读取、判断、循环命令会连锁报错,修好第一个后可能还会冒出第二个,需要一并处理。
顺手检查 M2Server 的日志窗口或 Log 目录,看有没有同类“找不到文件”的其他条目。通常一套脚本漏拷,不会只缺一个文件。
七、几个容易误判的方向
这不是引擎版本不支持 LOADVAR。GOM、GEE、HERO、V8 等主流引擎都有这套存取变量命令,区别只在语法细节和存储位置。如果提示的是“脚本命令错误”或“未知命令”,才是版本不匹配;这里明确写“找不到文件”,就是路径或文件的问题。
也不是病毒或被人删库。服务端本地运行,这类提示 99% 是部署不完整。只有在你发现大量脚本文件同时消失、且杀毒软件没有拦截记录时,才需要考虑其他原因。
不要盲目更换引擎或重装服务端。重装一遍如果不解决路径问题,报错依旧。先按上面的步骤定位,半小时就能处理好。
八、预防以后再出同类问题
部署新版本时,先完整解压到一个临时目录,对照清单检查 Market_Def、MapQuest_def、QuestDiary、Data 四个目录是否齐全,再整体复制到 D:MirServer。
修改任何脚本前备份原文件。Notepad++ 的全局搜索替换功能比记事本可靠,改路径时一次性搜完,避免遗漏。
固定使用绝对路径引用 QuestDiary 下的数据文件,并在团队内部约定好服务端根目录,避免换一台机器就全部失效。
定期备份 QuestDiary 目录。这里是玩家数据的落地点,装备、等级丢了还能补,名单和计数丢了补不回来。
最后提醒一句版本差异。不同引擎和不同版本的脚本包,在 LOADVAR 的参数顺序、变量类型写法(HUMAN/GLOBAL)、以及是否支持绝对路径上略有差别。如果你的引擎改绝对路径后报“参数错误”,就退回去用相对路径,并把文件复制到引擎实际解析出的那个位置。照着上面步骤仍然解决不了时,优先确认你用的是 GOM、GEE 还是 HERO 引擎,再看脚本包里有没有附带的安装说明,有些作者的脚本要求必须放在特定目录或配合特定版本的 M2 才能正常读取。
传奇服务端脚本错误LOADVAR找不到QuestDiary文件的排查与修复
来源:
作者:
点击:

