当前位置 : 145z游戏站 | 魔域 | 技术教程 | 

传奇电脑脚本错误排查与修复全流程指南

热度:
传奇脚本错误分两条完全不同的线。一条是服务端M2Server控制台刷红字ScriptError,报错格式通常带具体文件名和行号;另一条是客户端登录器或游戏窗口弹出IE式脚本错误对话框,提示“当前页脚本发生错误”或“对象为null”。两条线的排查路径不交叉,先看清楚报错弹窗长什么样,再决定往哪个方向修。

## 先分清楚是客户端弹窗还是服务端报错

客户端弹窗的特征是标题带“Internet Explorer脚本错误”或“当前页的脚本发生错误”,内容是行号加字符加“对象为空”这类描述。这种报错跟游戏服务端无关,是登录器内嵌的IE内核组件在渲染公告、活动页、服务器列表时,JScript或VBScript脚本解释器读到了空对象。

服务端报错的特征是弹窗标题带“Script Execution Error”,内容里有QFunction-0.txt、QManage.txt这类文件名和具体的行号。这种报错是M2Server引擎在加载NPC脚本、任务脚本或功能脚本时,解析到了格式错误或路径不存在的代码。

只有“脚本错误”四个字、没有任何路径信息的,通常是登录器自带的login.js或script.dat损坏,或者被杀毒软件删掉了文件。

## 客户端弹窗的修复顺序

### 先屏蔽弹窗让自己能进游戏

打开控制面板,进入Internet选项,切换到“高级”选项卡,在设置列表里找到脚本调试相关的选项,勾选“禁用脚本调试(Internet Explorer)”和“禁用脚本调试(其他)”,同时取消“显示每个脚本错误的通知”的勾选。这一步不修复底层问题,但能先压住弹窗,让你能进游戏操作。

### 清理缓存和临时文件

关掉游戏和登录器,删除登录器目录下的Cache、Temp、ScriptCache、UserData这几个文件夹。然后回到Internet选项的“常规”选项卡,点击删除按钮,勾选临时Internet文件、Cookie、脱机网页内容、历史记录,全部删除,删完重启电脑。很多“登录器更新之后开始弹脚本错误”的情况,就是旧的js或html缓存没被新文件覆盖导致的。

### 重新注册脚本宿主DLL

这是Win10和Win11系统上最容易被忽略的一步。以管理员身份打开命令提示符,依次执行以下命令,每条回车后看到“DllRegisterServer成功”再执行下一条:regsvr32 actxprxy.dll、regsvr32 shdocvw.dll、regsvr32 jscript.dll、regsvr32 vbscript.dll、regsvr32 scrrun.dll、regsvr32 mshtml.dll。全部执行完重启电脑。新装的Win10和Win11默认关闭了IE功能,如果执行注册命令时报“找不到模块”,需要去“启用或关闭Windows功能”里把Internet Explorer 11勾上,WebBrowser控件才有引擎可用。

### 检查杀毒软件和路径

打开杀毒软件的隔离区,翻找login.js、script.dat、Mir.exe、Login.exe这几个文件,如果被隔离了,恢复并加入信任列表。整个登录器目录挪到纯英文无空格的路径下,比如D:\MirClient,中文路径会让脚本里的相对路径解析失败,变成null。右键登录器,兼容性里勾“以管理员身份运行”,兼容模式选Windows 7,UAC拦截写注册表也会让脚本拿不到对象。

## 服务端M2Server脚本错误的修复

服务端脚本错误的定位靠日志。打开M2Server目录下以日期命名的.log文件,或者直接看控制台实时刷出的红字,报错格式通常是“ScriptError:QuestDiary\QFunction-0.txt Line 56:CommandSyntaxError”或“QManage.txt第88行变量未定义”。拿到文件名和行号之后,进Mir200\Envir对应目录,用Notepad++按Ctrl+G跳转到指定行。

到了报错行之后,优先检查五件事。第一,#IF、#ACT、#SAY这几个段头是否独立成行,段头[@Main]必须顶格,前面有空格引擎直接当普通文本跳过。第二,括号和引号是不是英文半角,中文全角标点是最常见的隐形错误。第三,GOTO和CALL指向的@标签是否真实存在,CALL外部脚本报“文件未找到”时,检查双反斜杠、相对路径、目标文件是否在QuestDiary对应目录下。第四,变量有没有先用MOV或VAR INTEGER HUMAN声明过。第五,命令名有没有拼错,CHECKLEVELEX写成CHECKLEVEL这种错误M2不会提示具体哪个词错了。

编码问题是最隐蔽的一类。所有QuestDiary和Market_Def目录下的.txt文件必须保存为ANSI(GBK)编码。用记事本另存为UTF-8会带上BOM头,引擎读到BOM头后面的中文就变乱码,直接抛“无法获取属性”或“对象为null”。Notepad++打开报错脚本,点“编码”菜单选“转为ANSI”,然后“保存”,顺手把“显示空格与制表符”打开,把行尾的全角空格和制表符混用全部清掉。

改完服务端脚本之后,不要只点重载。复杂改动直接关掉M2,删掉Mir200\Log目录下的ScriptCache.dat,再重新启动M2。变量类报错在QManage.txt的[@Login]段头部补MOV S10空串和VAR INTEGER HUMAN的初始化声明。

如果报错提示某个NPC脚本文件不存在,去MirServer\Mir200\Envir\MerChant.txt里找到调用这个NPC的那一行,确认NPC的脚本路径配置是否正确。如果这个NPC在版本里没有实际功能,直接从MerChant.txt里删掉对应行,重启M2即可。如果NPC有功能需求,从同版本正常服务端里复制缺失的脚本文件过来,替换后不要改文件名,文件名必须与M2引擎配置中的脚本名称完全一致。

## 登录器兼容性与引擎匹配

登录器版本必须跟服务端引擎同族。GOM引擎的服务端配GOM登录器,GEE配GEE,HERO配HERO。跨引擎混用登录器,脚本里的引擎专属指令对方不认识,启动就弹脚本错误。检查客户端目录里的Login.exe、Mir.exe、Mir.dat、UI.pak、Data文件夹下的pak文件是否齐全,如果某个文件被杀毒软件删了,登录器启动时加载脚本失败,弹出的错误提示往往不带具体文件名,只写“脚本错误”四个字。

老版本传奇的登录器对Windows 10和Windows 11的兼容性普遍不理想。右键登录器程序,属性里兼容模式选Windows 7,勾上“以管理员身份运行”和“禁用全屏优化”,区域格式设成“中文(简体,中国)”,显卡驱动太旧的话在登录器属性里把全屏优化关掉。

## 如果以上都做了还是报错

以管理员身份运行命令提示符,输入sfc /scannow扫描并修复系统文件。然后安装完整的Visual C++运行库合集和.NET Framework运行库,精简版系统会默认删减部分脚本解析组件,补齐运行库能解决一部分组件缺失导致的环境类脚本错误。多开器、按键精灵、RTSS这类注入DLL的程序先全部关掉,干净启动只开登录器测一次,第三方注入程序会和登录器的脚本宿主抢占资源。

服务端脚本错误的修复需要一定的技术基础,如果对脚本语法和引擎命令不熟悉,优先找服主或GM要一份同版本的完整脚本包,直接替换Script和Envir目录,比逐行排查快得多。客户端弹窗类的脚本错误,按“屏蔽弹窗→清缓存→注册DLL→查杀软和路径→换登录器”这个顺序走,八成以上的情况能解决。
[顶部]