脚本报错先别重装程序,按“看日志→锁文件行号→分类修→重载验证”四步走,覆盖传奇服务端、网页JS、浏览器扩展、自动化脚本通用场景。
一、先抓错误源头(最关键一步)
1. 传奇/M2服务端:看 M2Server 控制台红字或 Mir200\Log\ScriptError.log,记录三要素——文件名(如 QFunction-0.txt / QManage.txt / Market_Def 下 NPC 脚本)、行号(Line xx)、错误类型(Syntax Error / Unknown command / File not found)
2. 网页/游戏页面脚本:浏览器 F12 → Console 面板,看报错文件、行号、错误类型(SyntaxError / ReferenceError / TypeError)
3. 自动化/外挂脚本:看运行器日志或控制台输出,确认是本地脚本(file:///、scripts/ 路径)还是目标程序自身报错
二、高频错误分类与对症修法
1. 语法结构错误(占比最高)
• 括号/引号不闭合、中文全角符号(,();)混用 → 全改英文半角
• #IF/#ACT/#SAY 未独立成行、标签 [@main] 缺失或 GOTO 指向不存在 @标签 → 补全结构
- 命令拼错(GIVE 写 GIV、CHECKGAMEGOLD 写错)或参数数量不对 → 对照引擎命令表改
• 传奇脚本路径:Mir200\Envir\QuestDiary\(全局触发)、Market_Def\(NPC对话)、MonItems\(爆率)
2. 编码格式错误
• 记事本编辑后存成 UTF-8 带 BOM / Unicode → 引擎解析乱码报“未知符号/加载失败”
• 修法:Notepad++ 或记事本“另存为”选 ANSI(或 UTF-8 无 BOM),覆盖原文件,重启 M2
3. 路径与引用错误
• #CALL / LOADVAR / 引用子脚本路径错、文件夹名大小写不一致、用了中文路径 → 改相对路径(如 ..\QuestDiary\礼包\兑换.txt)核对实际目录
- 物品/怪物/地图名与 StdItems.db / Monster.DB / MapInfo.txt 不一致 → 用数字 ID 或严格对齐库内 Name 字段
4. 引擎/版本不兼容
• GOM 脚本塞进 HERO、旧端命令新端废弃(ADDBLOOD → HP +)、插件 DLL 缺失 → 查当前引擎说明书,补插件或改写命令
- 跨引擎复制 NPC 脚本直接崩 → 按本引擎重写字号与触发格式
5. 逻辑错误与死循环
• 条件嵌套错、变量未初始化(EQUAL M1 但没 MOV M1 0)、无限循环吃满内存 → 分段注释(行首加 ;)缩窄范围,补终止条件
- 传奇变量命名违规(以 P/D/M/N/S/I/G/A 开头冲突) → 改用合规 Human/Global 变量声明
6. 浏览器侧脚本错误
• 扩展冲突 → 无痕窗口(Ctrl+Shift+N)测是否恢复,逐个禁用扩展定位
- 缓存旧脚本 → 清 Cache/Cookie,强制刷新;@run-at 过早致 DOM 未加载 → 改 document.readyState 判断或 @run-at document-idle
- 内核不支持 ES6+ → 降语法或加 polyfill
三、标准修复流程(改完必做)
1. 备份原脚本文件(别直接覆盖无法回滚)
2. 按日志行号改对应文件 → 编码转 ANSI/UTF-8无BOM → 保存
3. 传奇端:关 M2 → 删 Mir200\Log\ScriptCache.dat(有缓存时) → 重启控制器;或 M2 内“重载脚本/Reload NPC”
4. 网页端:硬刷新 Ctrl+F5,Console 再确认无红字
5. 仍报错 → 把 QFunction-0.txt / 对应 JS 分段注释一半测一半,二分定位到具体行
四、防复发底线
• 脚本文件统一 ANSI 编码、英文半角符号、标签唯一前缀(@Warrior_Main 而非通用 @Main)
- 改版前 Git/压缩包备份 Envir 目录,动一个 NPC 重启验一次,别批量改完一起启
• 跨引擎搬脚本先过一遍命令对照表,别直接覆盖
日志行号是最准的指针,编码和全角符号是隐藏雷区,死循环和变量未初始化是运行时突发中断主因,按上面顺序处理 90% 脚本错误可定点消除。
一、先抓错误源头(最关键一步)
1. 传奇/M2服务端:看 M2Server 控制台红字或 Mir200\Log\ScriptError.log,记录三要素——文件名(如 QFunction-0.txt / QManage.txt / Market_Def 下 NPC 脚本)、行号(Line xx)、错误类型(Syntax Error / Unknown command / File not found)
2. 网页/游戏页面脚本:浏览器 F12 → Console 面板,看报错文件、行号、错误类型(SyntaxError / ReferenceError / TypeError)
3. 自动化/外挂脚本:看运行器日志或控制台输出,确认是本地脚本(file:///、scripts/ 路径)还是目标程序自身报错
二、高频错误分类与对症修法
1. 语法结构错误(占比最高)
• 括号/引号不闭合、中文全角符号(,();)混用 → 全改英文半角
• #IF/#ACT/#SAY 未独立成行、标签 [@main] 缺失或 GOTO 指向不存在 @标签 → 补全结构
- 命令拼错(GIVE 写 GIV、CHECKGAMEGOLD 写错)或参数数量不对 → 对照引擎命令表改
• 传奇脚本路径:Mir200\Envir\QuestDiary\(全局触发)、Market_Def\(NPC对话)、MonItems\(爆率)
2. 编码格式错误
• 记事本编辑后存成 UTF-8 带 BOM / Unicode → 引擎解析乱码报“未知符号/加载失败”
• 修法:Notepad++ 或记事本“另存为”选 ANSI(或 UTF-8 无 BOM),覆盖原文件,重启 M2
3. 路径与引用错误
• #CALL / LOADVAR / 引用子脚本路径错、文件夹名大小写不一致、用了中文路径 → 改相对路径(如 ..\QuestDiary\礼包\兑换.txt)核对实际目录
- 物品/怪物/地图名与 StdItems.db / Monster.DB / MapInfo.txt 不一致 → 用数字 ID 或严格对齐库内 Name 字段
4. 引擎/版本不兼容
• GOM 脚本塞进 HERO、旧端命令新端废弃(ADDBLOOD → HP +)、插件 DLL 缺失 → 查当前引擎说明书,补插件或改写命令
- 跨引擎复制 NPC 脚本直接崩 → 按本引擎重写字号与触发格式
5. 逻辑错误与死循环
• 条件嵌套错、变量未初始化(EQUAL M1 但没 MOV M1 0)、无限循环吃满内存 → 分段注释(行首加 ;)缩窄范围,补终止条件
- 传奇变量命名违规(以 P/D/M/N/S/I/G/A 开头冲突) → 改用合规 Human/Global 变量声明
6. 浏览器侧脚本错误
• 扩展冲突 → 无痕窗口(Ctrl+Shift+N)测是否恢复,逐个禁用扩展定位
- 缓存旧脚本 → 清 Cache/Cookie,强制刷新;@run-at 过早致 DOM 未加载 → 改 document.readyState 判断或 @run-at document-idle
- 内核不支持 ES6+ → 降语法或加 polyfill
三、标准修复流程(改完必做)
1. 备份原脚本文件(别直接覆盖无法回滚)
2. 按日志行号改对应文件 → 编码转 ANSI/UTF-8无BOM → 保存
3. 传奇端:关 M2 → 删 Mir200\Log\ScriptCache.dat(有缓存时) → 重启控制器;或 M2 内“重载脚本/Reload NPC”
4. 网页端:硬刷新 Ctrl+F5,Console 再确认无红字
5. 仍报错 → 把 QFunction-0.txt / 对应 JS 分段注释一半测一半,二分定位到具体行
四、防复发底线
• 脚本文件统一 ANSI 编码、英文半角符号、标签唯一前缀(@Warrior_Main 而非通用 @Main)
- 改版前 Git/压缩包备份 Envir 目录,动一个 NPC 重启验一次,别批量改完一起启
• 跨引擎搬脚本先过一遍命令对照表,别直接覆盖
日志行号是最准的指针,编码和全角符号是隐藏雷区,死循环和变量未初始化是运行时突发中断主因,按上面顺序处理 90% 脚本错误可定点消除。

