传奇游戏脚本错误怎么处理:登录器弹窗与服务端M2报错分开修

来源: 作者: 点击:
传奇游戏里说脚本错误,先别急着重装客户端或换版本。报错位置不在同一边:打开登录器就弹「当前页面的脚本发生错误」,属于玩家端/登录器环境;只有M2控制台红字、点NPC没反应、交任务不发奖励,才是服务端脚本本身写错。两边修法完全不一样,先看错误在哪出现。

一、先判断是客户端还是服务端

客户端/登录器侧表现
双击登录器直接弹脚本错误
列表刷不出来
进游戏读地图或点活动页弹窗
提示对象不支持此属性或方法

服务端侧表现
M2Server控制台刷红字
Mir200\Log\ScriptError.log 有记录
点NPC没对话没反应
GIVE、MOVEMAP、检测命令失效
穿装备不触发、回收没反应

玩家端改登录器、杀软、路径、系统组件;服务端进 Mir200\Envir 改脚本文件。

二、登录器弹脚本错误怎么处理

1. 登录器和引擎不匹配

GOM服务端套GEE登录器、Hero脚本塞别的引擎登录器,解析规则不同会直接弹窗。
处理:
删掉当前登录器
拿和服务端同引擎的配套登录器
别用精简版,精简版常缺Script目录
别拿A服登录器进B服

2. 杀软把核心文件删了

360、火绒、管家常把登录器脚本、Login.exe、script.js当成异常文件隔离。
处理:
打开杀软隔离区
恢复 Login.exe、script.js、Script目录
加信任区
关掉实时防护再解压一次
别点「永久阻止」

3. 路径带中文或空格

D:\我的传奇、D:\游戏\新建文件夹 这类路径会让脚本读配置时编码失败。
处理:
客户端挪到 D:\Mir2Client
登录器放纯英文无空格目录
快捷方式重建
旧登录器exe删掉

4. IE脚本调试弹窗

登录器内嵌网页读列表、公告、客服页,依赖系统IE解析,会弹脚本错误。
处理:
控制面板→Internet选项→高级
勾「禁用脚本调试(Internet Explorer)」
勾「禁用脚本调试(其他)」
取消「显示每个脚本错误的通知」
重启登录器

5. 系统脚本组件没注册

vbscript.dll、jscript.dll 缺失或损坏,内嵌页解析不了。
管理员CMD执行:
regsvr32 vbscript.dll
regsvr32 jscript.dll
regsvr32 scrrun.dll
提示注册成功后重启电脑

6. 列表文件配置错

单机架设 list.txt 里IP、端口不对也会触发加载失败。
处理:
单机架设填 127.0.0.1
端口和网关一致
只留一条配置
别多IP混写
浏览器贴列表地址看是不是404

7. 登录器文件本身损坏

下载中断、解压不完整、手动改过Script目录都会炸。
处理:
删掉登录器目录重新下完整包
别在压缩包里直接双击运行
手动改过脚本就用原版文件覆盖

三、服务端M2脚本错误排查流程

1. 看M2日志拿三个信息

报错格式一般是:
ScriptError: QFunction-0.txt Line 56: Command Syntax Error

记三样:
文件名
行号
错误描述

日志位置:
M2控制台日志栏
Mir200\Log\ScriptError.log

2. 找到对应脚本文件

常用路径:
NPC对话脚本:Mir200\Envir\Market_Def\
全局触发:Mir200\Envir\QuestDiary\QFunction-0.txt
登录/升级触发:QuestDiary\QManage.txt
任务脚本:QuestDiary\各功能目录\

用Notepad++打开,Ctrl+G跳行号,别用系统记事本。

3. 编码必须是ANSI

用记事本另存成UTF-8会带BOM,中文变乱码,引擎读到一半崩。
处理:
Notepad++打开
编码→转为ANSI
换行符用Windows(CRLF)
清掉行尾全角空格、制表符混用

4. 标签和语法规则

[@main]、[@Login]必须顶格
前面不能有空格、Tab
IF #ACT #SAY 大写独立成行

IF后面必须有#ACT或#SAY

GOTO目标标签必须存在
注释用 ; 不用 //
所有括号英文半角

错误示例:
IF CHECKLEVEL>30

ATC GIVE 金币 100

改成:
IF CHECKLEVEL>30

ACT GIVE 金币 100

5. 命令拼错

CHECKBAGITEM写成CHECKBITEM
GIVE写成give
MOVS写成MOV
都会报未知命令。
改完对照引擎命令表核一遍。

6. 参数缺项

GIVE 物品名 数量
缺数量直接报参数错误。
CHECKITEM 物品名 数量
MOV 变量 值
CALL [路径\文件.txt] @标签
路径、数量、标签一个不能少

7. 物品名/地图名对不上数据库

脚本写「金疮药」,库里是「小瓶金疮药」,CHECKITEM和GIVE就失效。
处理:
物品名对照 StdItems.DB / Item.txt
地图名对照 MapInfo.txt
技能名对照 Magic.DB
NPC名对照 Merchant.txt
复制数据库里的原名字进脚本,别手打

8. 跨引擎命令不兼容

GOM脚本塞Hero、Blue塞GEE最常出这问题。
MapMove在别引擎可能要ChangeMap
变量前缀P/G/S规则不同
插件命令没加载会报未知命令

处理:
确认M2主程序是哪种引擎
查该引擎命令手册
逐条替换不兼容命令
用到的插件在PlugList.txt里开着

四、NPC点了没反应但不是红字

这种情况不是没报错,是脚本没加载或路径错。

检查项:
Merchant.txt里NPC绑的文件名对不对
Market_Def下文件名带不带地图编号后缀
文件是不是被改名成 xxx备份.txt
脚本开头有没有 [@main]
IF条件不满足有没有#ELSEACT提示

文件是否只读,改了没保存
M2没重载脚本

Market_Def命名规则:
盟重省_传送员-3.txt
前面NPC名,后面地图编号,别只写「传送员.txt」。

五、装备脚本报错

穿装备弹错、属性不加、回收无响应,走这条线。
检查:
Envir里装备触发脚本(如EquipCheck类)
物品DB字段和脚本检测字段是否一致
OnEquip触发命令拼错没
参数缺不缺
跳转标签存不存在
客户端补丁编号对不对

很多情况是扣了材料没发属性,不是引擎坏,是脚本只写了前半段。

六、改脚本标准动作

改前备份
复制原文件命名 QFunction-0_bak.txt
别把备份留原目录,引擎会一起读

用Notepad++
别用记事本
编码ANSI
显示空格和制表符

一次改一处
别批量改完再测
改一行重载一次

重载方式
M2里脚本管理→重新加载脚本
复杂改动直接重启M2

测试账号走一遍
接任务→打怪→交任务→领奖励
看计数和发放对不对

七、常见报错对应修法

脚本文件不存在
路径写错,Market_Def或QuestDiary里没这个文件,核对Merchant.txt调用路径。

未知命令 Unknown command
拼错或引擎不支持,查命令表换写法。

未定义标签
GOTO @奖励 但文件里没 [@奖励],补标签。

参数数量错误
GIVE没写数量、CHECKITEM格式错,补参数。

数据库读取失败
物品/怪物/地图名和DB不一致,复制库里原名。

变量未初始化
S/G/P$变量没赋值先用,开头先MOV或MOVS初始值。

NPC无反应
缺[@main]、路径错、文件只读、没重载。

穿装备不生效
触发脚本缺命令、字段错、补丁没盖。

八、玩家端排查顺序

1 登录器是不是同引擎配套
2 杀软隔离区恢复文件加信任
3 客户端挪纯英文路径
4 关IE脚本调试弹窗
5 注册vbscript/jscript
6 管理员+兼容模式运行
7 list.txt的IP端口核对
8 还弹就换完整版登录器

九、服务端排查顺序

1 看M2红字和ScriptError.log
2 拿文件名+行号
3 Notepad++打开对应脚本
4 查[@标签]是否顶格
5 查#IF/#ACT是否成对
6 查GOTO标签存在否
7 查编码是不是ANSI
8 查物品名地图名和DB一致
9 查命令当前引擎认不认
10 改一处重载一次测一次

十、几个容易踩的坑

用记事本存成UTF-8
中文变乱码,行号对不上,引擎半路崩。

备份文件留原目录
Envir里放 QFunction-0_bak.txt 会被当脚本加载,报重复或未知标签。

中文标点混进脚本
逗号、括号、冒号用了全角,直接语法错。

物品名手打
「屠龙」「屠龙剑」差一字就不发物品,复制数据库最稳。

跨引擎直接抄脚本
GOM的FQ命令Hero不认,Blue的变量GEE不认,先确认引擎再改。

只改脚本不重载
M2没重载就等于没改,测试前先重载或重启。

传奇游戏脚本错误不是一类问题,登录器弹窗优先查引擎匹配、杀软拦截、路径、IE组件;M2红字才进Envir改脚本。大多数情况不用换整个版本,看日志拿到「文件名+行号」,转ANSI、查标签、对物品名、换不兼容命令,改完重载一次就能过。改前备份原文件,一次改一行,别批量动,基本能消掉大部分脚本错误。