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

传奇电脑脚本错误修复实用技巧:从弹窗到M2日志全链路排查

热度:
电脑上跑传奇碰到脚本错误,先别急着重装系统,也别盲目换登录器。报错分两条线:一条是服务端M2Server控制台刷红字ScriptError,一条是客户端登录器或游戏窗口弹IE式脚本错误对话框。两端分开查,效率最高。

服务端侧先看M2Server-日期.log和控制台实时输出,报错格式通常是“ScriptError:QuestDiary\QFunction-0.txtLine56:CommandSyntaxError”或“QManage.txt第88行变量未定义”。拿到文件名+行号,进Mir200\Envir对应目录,用Notepad++按Ctrl+G跳行。到了那一行优先看五件事:#IF/#ACT/#SAY是否独立成行、括号和引号是不是英文半角、GOTO/CALL指向的@标签存不存在、变量有没有先用MOV/VARINTEGERHUMAN声明、命令名拼错没有(CHECKLEVELEX写成CHECKLEVEL这种)。段头[@Main]必须顶格,前面有空格引擎直接当普通文本跳过,后面逻辑全乱。

编码问题是隐形杀手。所有QuestDiary、Market_Def下的.txt必须ANSI(GBK)保存,用记事本另存为UTF-8会带BOM头,中文变乱码,引擎读到乱码段就抛“无法获取属性/对象为null”。Notepad++打开→编码→转为ANSI→保存覆盖,顺手开“显示空格与制表符”,把行尾黄色全角空格、制表符混用全清掉。

CALL外部脚本报“文件未找到”或“标签未找到”,查#CALL[..\登陆\登陆脚本.txt]@领取这种语句:双反斜杠、相对路径基于QuestDiary、目标文件真在那个文件夹、目标文件里确实有[@领取]。中文文件夹“登陆”和“登录”不是同一个,复制粘贴最容易出现这坑。

客户端登录器弹“当前页脚本发生错误/对象不支持此属性或方法/缺少对象”,是内嵌IE网页(公告、活动、客服)调JScript/VBScript时系统组件没注册。管理员CMD依次执行:
regsvr32jscript.dll
regsvr32vbscript.dll
regsvr32mshtml.dll
regsvr32scrrun.dll
回车看到“注册成功”再继续,全跑完重启机器。Win10/Win11进“控制面板→Internet选项→高级”勾“禁用脚本调试”、取消“显示每个脚本错误的通知”,能压住弹窗;IE11组件被关了的去“启用或关闭Windows功能”里重新勾上。客户端根目录的Cache、Temp、ScriptCache删掉,老缓存JS和新脚本抢对象也会报null。

登录器本身损坏或杀软误删也会一开窗口就错。检查目录里Login.exe、Mir.exe、Mir.dat、UI.pak、Data\*.pak是否齐全,360/火绒隔离区恢复被删文件加信任,整个客户端挪到纯英文无空格路径(D:\MirClient),右键登录器选管理员身份+Win7兼容模式。登录器版本必须跟服务端引擎同族,GOM配GOM、GEE配GEE、HERO配HERO,跨引擎抄脚本必弹窗。

进游戏点NPC才报错而M2启动不报,多半是Market_Def里那个NPC的.txt在[@main]前过早读了地图环境(PEnvirnil)或parent指向已删除的父NPC。把NPC文件里[@main]之前的MAP、CHECKMAP、GetParent类调用全移到[@main]段内第一行之后,确认被引用的父NPC文件在Market_Def对应地图子目录里没被改名。

改完服务端脚本别只点重载,复杂改动直接关M2删Mir200\Log下的ScriptCache.dat(有就删)再起M2;客户端那边删缓存后重开登录器。变量类报错在QManage.txt的[@Login]段头部补MOVS10空串、MOVN10、VARINTEGERHUMAN消费积分这种初始化,比逐处改调用省事。

系统层实在查不出,管理员CMD跑sfc/scannow修系统文件,chkdskC:/f查盘,新建一个本地管理员账户开登录器能进就是原账户配置损坏。IPv6在老引擎下偶尔干扰列表读取,网卡属性里取消IPv6勾选只留IPv4也能消掉一类诡异脚本超时。
[顶部]