脚本报错别瞎重下服务端,老引擎(GOM/GEE/HERO/SKY/LEG)报错格式基本固定:Scriptfile 'QFunction-0.txt' line 105 : Syntax error / Unknown command / GOTO@xxx不存在 / NPC脚本加载失败。照下面顺序查,十分钟能定位。
一、先抓日志,别凭感觉改
• M2控制台点【查看】→【脚本错误日志】
• 或打开 Mir200\Log\ 下 -M2Server-日期.log、ScriptError.log
• 记下三样:文件名、Line行号、标签名([@Main]/[@领取])
- Notepad++ 按 Ctrl+G 跳行,只看那几行附近,别全文重写
二、编码错了(占一半以上)
老引擎只认 ANSI/GBK,UTF-8、UTF-8-BOM、Unicode 全乱。
• 记事本打开报错脚本 → 另存为 → 编码选 ANSI 覆盖
- Notepad++:编码 → 转为 ANSI 编码 → 保存
• 批量修:把 Envir\Market_Def、QuestDiary、QFunction-0.txt、QManage.txt 全转一遍
- 改完关 M2,删 Mir200\Log\ScriptCache.dat,再启
三、语法结构没闭合
IF 必须配 #ACT/#SAY,结尾 #ENDIF;[@标签] 顶格写,前面别加空格。
常见死法:
- #IF CHECKLEVEL 40 换行直接写 GIVE 裁决 → 必须 #IF 同行或标准块
• GOTO@MAIN 但文件里没 [@MAIN] 段
• #CALL[..\QuestDiary\充值.txt]@领取,目标文件没 [@领取]
- 中文逗号、全角括号、行尾隐藏空格(Notepad++ 开“显示所有字符”清掉)
• 命令没大写:give 屠龙 1 → 改 GIVE 屠龙 1
四、命令不兼容(换引擎后必踩)
HERO 的 ThroughHum、GOM 的 AllowThrough、GEE 的 MOVS/CALC 互相不认。
- 看 M2 右上角引擎名(GOMM2 / HeroM2 / GeeM2)
• 对照该引擎命令手册改,或升级引擎包
• 新脚本扔老 M2,报 Unknown command 就是这原因
五、路径和文件不存在
- Merchant.txt 里 NPC 写的 福利使者.txt 必须真实在 Market_Def\ 下
• !Setup.txt 里 QFunctionDir=.QuestDiary\ 路径要对
• #CALL[..\QuestDiary\数据\xxx.txt] 相对层级别写错
- 文件名别带中文、别 double 后缀(福利使者.txt.txt)
• 地图事件 MapEvent.txt 里地图号必须在 MapInfo.txt 存在且 Mir200\Map 有 .map
六、变量和数据库对不上
- HUMAN/GLOBAL/GUILD 变量先用 VAR 声明,重复 VAR 同名会报“变量已存在”
• GIVE 物品名必须和 StdItems.DB 一字不差(含空格)
• 怪物名对 MonGen、爆率文件放 MonItems\
- 技能等级别超过 Skill.txt 里 MaxLevel
七、GOTO 死循环
复杂跳转把 !Setup.txt 里 ScriptGotoCountLimit 默认 10 改 5000,但根治是用 #CALL 替多层 GOTO。
八、改完必须重载
• M2 控制台:【重新加载】→【重读QF脚本】/【重读NPC脚本】
• 或 GM 命令 @重读QF
• 还不行就关 M2 → 删 ScriptCache.dat → 重启全套(DB→Login→M2→Gate)
- 改前把 Envir 整个文件夹备份,改坏了一键还原
九、分段注释法(日志没行号时用)
把 QManage.txt / QFunction-0.txt 从中间按功能切段,每段前加 ; 注释掉,一段段放开,哪段一亮红就是哪段出问题。
十、高频报错速查表
• ScriptError line xx Syntax error → 符号/括号/编码/命令拼写
• Unknown command → 命令名错或引擎不支持
• GOTO@xxx不存在 → 标签没写
- NPC脚本加载失败 → 文件放错目录/Merchant映射错/编码UTF-8
• 点击NPC无反应 → 缺 [@main] 或 Merchant.txt 文件名不一致
• 进地图卡死 → MapEvent.txt 地图号错或标签未定义
- 变量错误 → 没 VAR 声明或类型混用
十一、防复发规矩
1. 所有脚本 ANSI 保存,不从网页直接复制代码(带隐形格式符)
2. 改脚本用 Notepad++,别用 Word/IDE
3. 每改一个功能备份一份,命名 充值.txt.bak
4. 同引擎同版本脚本复用,别 A 引擎脚本塞 B 引擎 M2
5. M2 右键“以管理员身份运行”,权限不够也报诡异错
一句话收尾:脚本错误 = 看日志拿行号 → 转 ANSI → 查 #IF/#ENDIF 和标签 → 查命令兼容 → 查物品/地图/变量库 → 重载/删缓存。日志比百度准,行号比猜靠谱。下次再弹红字,先别关 M2,把那行截图下来对着改,比重装服务端省事十倍。

