M2Server报脚本错误时控制台红字或 Mir200\Log\ScriptError.log 里一定会带三样东西:出错文件路径、行号、错误类型(未知命令/标签不存在/参数不足/缺#endif/编码不可读)。照着这三样去 Envir 下对应文件改,比重装服务端有用。
一、先读红字提取关键信息
典型格式:
脚本错误: Market_Def\盟重老兵-0.txt 第15行 段错误格式不对
或
Scriptfile 'QFunction-0.txt' line 56: Unknown command 'MOAB'
或
QuestDiary\QQ礼包.txt Line 18 标签[@领取]不存在
记下三件:哪个文件、第几行、什么错。M2菜单“查看→脚本错误日志”和 Log 目录下 ScriptError.log / SystemLog.txt 是兜底,弹窗一闪而过就去那里翻。
二、按错误类型对口修
1. 未知命令(Unknown command)
命令拼错(GIVE写GIV、TAKE写TAK)、用了引擎不支持的新命令(GOM跑GEE脚本、HERO跑Blue脚本)。对照所用引擎命令手册改拼写;老引擎不认的 ResetLoopCounter 之类直接删行或换等效写法。
2. 参数数量不对
GIVE 裁决之杖 少写数量、CHECKGAMEGOLD 后漏比较符(写成 CHECKGAMEGOLD100)。补参数、补符号,半角书写。
3. 标签不存在 / GOTO断链
GOTO@买药 但全文无 [@买药],或 #CALL[..\QuestDiary\礼包.txt]@领取 路径文件名对不上。补标签、改跳转目标、核对 CALL 路径反斜杠和文件夹名(Linux区分大小写)。
4. 结构不闭合
IF 没配 #ACT/#ELSEACT、缺 #ENDIF、[@段] 没终止(BREAK/GOTO/CLOSE)。逐段补闭合,条件判断成对写。
5. 中文标点/全角空格/隐藏字符
从网页复制的脚本常带中文逗号、全角括号、行尾全角空格、零宽符。Notepad++ 开“显示所有字符”,全角空格是宽点、Tab是箭头,全部替成半角空格;删行尾隐藏块。
6. 编码错误(最高频隐形坑)
QFunction-0.txt、QManage.txt、Market_Def 下 NPC、QuestDiary 任务脚本必须是 ANSI(简体即GBK),UTF-8 或 UTF-8 BOM 会让引擎把 BOM 头当脚本内容,首行就报乱码或未知命令。记事本/Notepad++ 打开→另存为→编码选 ANSI→换行符转 Windows(CRLF)→覆盖保存。禁带 BOM。
7. 插件命令未加载
脚本调了 PlugXXXX 系列命令但 Mir200\PlugList.txt 里没挂对应 dll,或 dll 被杀软删了。看 M2 启动日志“加载插件 XXX 成功”那几行,缺哪个补哪个,杀软加信任。
三、Market_Def 与 QuestDiary 分目录对照
Envir\Market_Def\ 放 NPC 对话脚本(比奇老兵-0.txt、福利使者.txt),报错多因 NPC 坐标冲突、[@Main] 段格式、GOTO 断链。
Envir\QuestDiary\ 放任务/QFunction/QManage,QQ礼包.txt、登陆触发.txt 报错多在变量未 VAR 声明、#CALL 跨文件标签丢失、登录触发段写了离线才能用的命令。
MonItems 爆率、MapQuest_def 地图事件、MapInfo.txt 地图号引用错也会间接让 M2 加载阶段报“脚本错误”,但红字会写明是 MapEvent 格式还是物品不存在。
四、改完怎么让生效
改完保存 → M2 菜单“控制→重新加载”选“重读QFunction脚本”/“重读NPC脚本”/“重载全部脚本”;或游戏内 GM 输 @reloadnpc、@reloadqfunction。GOM/GEE 有脚本缓存的删 Mir200\Log\ScriptCache.dat 再起 M2。只存文件不重载等于没改。
五、日志不指行号的兜底查法
把可疑脚本后半段用 ; 注释掉重启,正常则错在后半;再二分注释缩到具体段。或每段关键命令后插 SENDMSG 6 执行到N步,触发后看最后一条消息停在哪。M2 自带“脚本排查/漏洞检测”(GOM GEE 在选项→脚本管理,HERO 在脚本管理→漏洞检测)扫全目录,结果标文件行号。
六、新手最常踩的五个点
• 用 Win10 记事本直接存,悄悄写进 UTF-8 BOM → 全脚本转 ANSI 覆盖。
• 从论坛贴吧复制代码,全角逗号括号混进去了 → 显示所有字符清一遍。
• 把 GEE 端脚本塞进 GOM 端 → 命令集不对,按引擎重选端或改命令。
- 改了 QFunction 不重载,以为没生效其实没刷 → 重载或重启 M2。
• 标签 [@Main] 行首多了空格 → 标签必须顶格独占一行。
脚本错误不靠重装服务端解决,红字给的文件+行号+类型三件套锁死,ANSI 编码、半角符号、#IF/#ACT 配对、GOTO 标签存在这四条过完,90% 的 M2 脚本报错消失。

