**脚本错误来源与定位方法**
架设过程中碰到的脚本错误,九成以上集中在`D:\Mirserver\Mir200\Envir\Market_Def`和`QuestDiary`这两个目录里。报错弹窗通常会给出具体文件名和行号,比如`QFunction-0.txtLine156`,这就是定位问题位置的直接线索。没有明确行号的报错,可以看M2Server控制台的红色字体输出,那里会记录脚本加载失败的准确段落。拿到错误位置之后,用Notepad++或VSCode打开对应文件,找到报错行开始排查。
**变量冲突和未声明变量错误**
脚本里使用变量之前必须先声明,常见的P、D、U、T这些私人变量和G、A这类全局变量,在调用前必须有赋值语句。如果直接写`GOMOV`或`CHECKVAR`引用了一个从来没定义过的变量,引擎加载脚本的时候直接报错不启动。解决方法是找到报错行,在前面的段落里加上声明语句,比如`VARINTEGERGLOBAL变量名`或者直接用`MOV变量名0`给个初始值。还有一种情况是变量名拼写错了,`CHECKGAMEGOLD`写成`CHECKGAMEGOID`这种,肉眼仔细对照标准命令拼写。
**标签跳转和目标不存在错误**
脚本里的GOTO、CALL命令必须指向真实存在的标签段。如果写了`GOTO@合成装备`,但整个文件里找不到`[@合成装备]`这个标签,M2加载时就会报标签不存在。同样,DELAYGOTO这种延迟跳转命令也要求目标标签有效。修复方法是检查报错文件里的所有GOTO和CALL语句,核对目标标签的名称和位置,漏了标签就补上,标签名写错了就改回正确的。注意标签里的中括号必须是英文半角,中文括号引擎不认。
**物品和怪物名称引用错误**
脚本里调用物品名称或怪物名字的时候,必须和数据库里`StdItems.DB`和`Monster.DB`的记录完全一致,包括空格、标点和大小写。比如数据库里装备叫“圣战戒指(极品)”,脚本里写成了“圣战戒指”,引擎就报物品不存在。拿`CHECKITEM`、`GIVE`、`MONRECALL`这些命令举例,后面的参数必须是数据库里的原始名称。检查报错行涉及的所有物品和怪物名称,挨个跟数据库核对,标点符号、空格、括号都不能错。
**命令格式和参数数量不对**
每个脚本命令都有固定的参数个数和格式要求。`CHECKLEVEL`应该跟一个数字参数,写成`CHECKLEVEL50`是对的,写成`CHECKLEVEL>50`在某些引擎里就报错。`GIVE`命令需要物品名和数量两个参数,只写物品名不写数量在某些版本里也能加载,但会在运行时出错。遇到命令格式错误,去说明书里查该命令的标准语法,按照官方格式重写报错行。参数之间的空格要用英文空格,全角空格引擎解析会乱码。
**文件路径调用错误**
脚本里调用外部文件的时候,路径写法必须正确。比如`#CALL[\装备系统\强化.txt]@强化主界面`,实际文件必须放在`D:\Mirserver\Mir200\Envir\QuestDiary\装备系统\强化.txt`这个位置。路径多一层少一层、文件名写错一个字,引擎就报文件找不到。检查报错信息里提示的文件路径,对照`QuestDiary`目录里的实际文件结构,补全缺失的文件夹,把写错的文件名改对。
**排查工具的使用技巧**
M2Server控制台本身是排查脚本错误的主要工具,错误信息会实时滚动显示。把控制台的日志窗口拉大,或者点击“查看日志”按钮把详细记录导出成文本文件,便于逐行对照。文本编辑器带行号显示功能,打开报错文件后直接跳到指定行号查看上下文,会比肉眼翻找快得多。如果错误太多看不清楚,先关闭M2Server,用脚本检测工具对整个`Envir`目录做一次语法检查,这类工具能一次性列出所有错误,不用等M2加载到一半才报错。修正完所有错误之后再重新启动服务端,直到控制台日志里只显示“脚本加载成功”的提示。
架设过程中碰到的脚本错误,九成以上集中在`D:\Mirserver\Mir200\Envir\Market_Def`和`QuestDiary`这两个目录里。报错弹窗通常会给出具体文件名和行号,比如`QFunction-0.txtLine156`,这就是定位问题位置的直接线索。没有明确行号的报错,可以看M2Server控制台的红色字体输出,那里会记录脚本加载失败的准确段落。拿到错误位置之后,用Notepad++或VSCode打开对应文件,找到报错行开始排查。
**变量冲突和未声明变量错误**
脚本里使用变量之前必须先声明,常见的P、D、U、T这些私人变量和G、A这类全局变量,在调用前必须有赋值语句。如果直接写`GOMOV`或`CHECKVAR`引用了一个从来没定义过的变量,引擎加载脚本的时候直接报错不启动。解决方法是找到报错行,在前面的段落里加上声明语句,比如`VARINTEGERGLOBAL变量名`或者直接用`MOV变量名0`给个初始值。还有一种情况是变量名拼写错了,`CHECKGAMEGOLD`写成`CHECKGAMEGOID`这种,肉眼仔细对照标准命令拼写。
**标签跳转和目标不存在错误**
脚本里的GOTO、CALL命令必须指向真实存在的标签段。如果写了`GOTO@合成装备`,但整个文件里找不到`[@合成装备]`这个标签,M2加载时就会报标签不存在。同样,DELAYGOTO这种延迟跳转命令也要求目标标签有效。修复方法是检查报错文件里的所有GOTO和CALL语句,核对目标标签的名称和位置,漏了标签就补上,标签名写错了就改回正确的。注意标签里的中括号必须是英文半角,中文括号引擎不认。
**物品和怪物名称引用错误**
脚本里调用物品名称或怪物名字的时候,必须和数据库里`StdItems.DB`和`Monster.DB`的记录完全一致,包括空格、标点和大小写。比如数据库里装备叫“圣战戒指(极品)”,脚本里写成了“圣战戒指”,引擎就报物品不存在。拿`CHECKITEM`、`GIVE`、`MONRECALL`这些命令举例,后面的参数必须是数据库里的原始名称。检查报错行涉及的所有物品和怪物名称,挨个跟数据库核对,标点符号、空格、括号都不能错。
**命令格式和参数数量不对**
每个脚本命令都有固定的参数个数和格式要求。`CHECKLEVEL`应该跟一个数字参数,写成`CHECKLEVEL50`是对的,写成`CHECKLEVEL>50`在某些引擎里就报错。`GIVE`命令需要物品名和数量两个参数,只写物品名不写数量在某些版本里也能加载,但会在运行时出错。遇到命令格式错误,去说明书里查该命令的标准语法,按照官方格式重写报错行。参数之间的空格要用英文空格,全角空格引擎解析会乱码。
**文件路径调用错误**
脚本里调用外部文件的时候,路径写法必须正确。比如`#CALL[\装备系统\强化.txt]@强化主界面`,实际文件必须放在`D:\Mirserver\Mir200\Envir\QuestDiary\装备系统\强化.txt`这个位置。路径多一层少一层、文件名写错一个字,引擎就报文件找不到。检查报错信息里提示的文件路径,对照`QuestDiary`目录里的实际文件结构,补全缺失的文件夹,把写错的文件名改对。
**排查工具的使用技巧**
M2Server控制台本身是排查脚本错误的主要工具,错误信息会实时滚动显示。把控制台的日志窗口拉大,或者点击“查看日志”按钮把详细记录导出成文本文件,便于逐行对照。文本编辑器带行号显示功能,打开报错文件后直接跳到指定行号查看上下文,会比肉眼翻找快得多。如果错误太多看不清楚,先关闭M2Server,用脚本检测工具对整个`Envir`目录做一次语法检查,这类工具能一次性列出所有错误,不用等M2加载到一半才报错。修正完所有错误之后再重新启动服务端,直到控制台日志里只显示“脚本加载成功”的提示。

