角色界面弹出的脚本错误,绝大多数发生在客户端侧,根因在登录器内嵌的IE内核组件或角色选择列表的缓存文件,而不是游戏服务端崩溃。少数情况下报错会指向服务端角色登录触发段,需要分开判断。
先看弹窗标题和正文。标题带“当前页的脚本发生错误”“Internet Explorer 脚本错误”,正文给出行号和“对象为空”“缺少对象”,问题在登录器渲染角色列表、公告栏、区服信息时,JScript或VBScript解释器读到了空对象。如果标题只有“脚本错误”四个字、没有任何路径,多半是登录器目录下的login.js或script.dat被损坏或被杀软隔离。只有在M2Server控制台同时刷出红字、并明确写出QManage.txt或QFunction-0.txt的某一行时,才需要转入服务端排查。
进游戏之前先把弹窗压住。Win+R输入inetcpl.cpl调出Internet属性,切到高级选项卡,勾选“禁用脚本调试(Internet Explorer)”和“禁用脚本调试(其他)”,同时取消“显示每个脚本错误的通知”,确定后重启登录器。这一步不修复任何文件,只让系统静默忽略脚本解析异常,先拿到进入角色界面的操作窗口。如果弹窗在角色列表加载过程中反复阻断,任务管理器结束登录器进程下残留的脚本错误提示子进程,再重新启动。
弹窗压住之后,处理客户端侧最频繁的断点。彻底关闭登录器和游戏进程,进入登录器安装目录,删除Cache、Temp、ScriptCache、UserData四个文件夹里的内容,文件夹本身保留;再回到Internet属性的常规页,删除临时Internet文件、Cookie、脱机内容和历史记录,删完重启电脑。角色选择界面的列表数据、职业预览图、服务器状态文字都缓存在这些目录里,旧版本的角色列表脚本与新登录器文件混在一起,渲染到角色栏位时就会报“对象为空”。清完缓存仍然弹,以管理员身份打开命令提示符,依次执行regsvr32 jscript.dll、regsvr32 vbscript.dll、regsvr32 actxprxy.dll、regsvr32 shdocvw.dll、regsvr32 mshtml.dll,每条看到“DllRegisterServer 成功”再执行下一条,全部完成后重启机器。Win10和Win11在系统升级或清理工具运行后,jscript与vbscript的注册项容易失效,角色界面所有依赖WebBrowser控件的列表渲染会一起报错,重注册DLL是止住反复弹窗最直接的手段。接着进“启用或关闭Windows功能”,确认Internet Explorer 11处于勾选状态,哪怕日常只用Edge,登录器的角色列表控件仍然需要这个组件在位。
检查杀软隔离区和安装路径。打开360、火绒或Windows Defender的隔离区,翻找login.js、script.dat、Mir.exe、Login.exe,被隔离的恢复并加入信任列表。整个登录器目录挪到纯英文无空格的路径下,中文路径会让脚本里的相对路径解析失败,角色列表的条目全部变成空对象。右键登录器,兼容性里勾选“以管理员身份运行”,兼容模式选Windows 7,UAC拦截写注册表也会让角色界面的脚本拿不到列表数据。
如果清缓存、注册DLL之后角色界面仍然弹窗,并且弹窗正文里出现了QManage.txt或QFunction-0.txt的行号,问题转入服务端角色登录触发段。打开Mir200\Envir\QuestDiary\QManage.txt,找到[@Login]段,检查角色登录时读取的变量是否已经在段头声明。变量类报错在角色界面集中爆发,通常是因为QManage在[@Login]段执行时调用了未初始化的变量,而角色选择界面恰好触发了这段逻辑。在[@Login]段头部补上MOVS10空串、MOVN10或VARINTEGERHUMAN的初始化声明,把角色登录时用到的字符串变量和数值变量先赋初值,再重新加载QFunction或QManage。如果报错指向Market_Def下某个NPC脚本,但错误只在进入角色界面时出现、点击NPC反而正常,检查该NPC文件在[@main]之前是否有MAP、CHECKMAP或GetParent调用,[@main]之前读取地图环境或父对象在角色界面加载阶段可能为空,把这类调用全部移到[@main]段内第一行之后。修改完成后在M2Server上使用“重新加载”而不是重启整个引擎,观察控制台红字是否消失。
角色界面脚本错误还有一个容易被忽略的来源:登录器与服务端引擎不配套。GOM引擎配了GEE的登录器,或者登录器版本落后于服务端更新,角色列表的字段数量和顺序对不上,客户端解析到不存在的字段就弹“对象未定义”。回到发布页下载与服务端引擎同族的完整登录器包,用WinRAR解压后整体替换,不要只覆盖单个exe。替换前把旧登录器目录改名备份,新包解压到纯英文路径,首次启动时让登录器重新生成角色列表缓存。
排查顺序固定为:先看弹窗标题有没有“Internet Explorer”或“当前页”,有就按客户端处理,关脚本调试压住弹窗,清登录器和IE缓存,重注册jscript、vbscript、mshtml,确认IE11组件在位,检查杀软隔离和纯英文路径。客户端层处理完仍然报错,再看M2Server控制台有没有给出QManage.txt或QFunction-0.txt的行号,有就补变量声明、移[@main]前的环境调用、重新加载脚本。弹窗被压住不等于角色界面恢复正常,真正让报错不再复发的是把损坏的列表缓存、失效的脚本宿主注册项或写错的服务端登录触发段修回来。
传奇进入角色界面弹出脚本错误的修复方法
来源:
作者:
点击:

