传奇M2脚本发生错误时的定位与修正处理流程

来源: 作者: 点击:
传奇服务端弹出“脚本发生错误”或M2控制台刷红字,不要点掉重开游戏,先读日志里的文件名、行号、错误描述,再回对应文件改。Hero、GOM、GEE、Blue 引擎路径大同小异,处理顺序一致。

一、先读日志锁文件行号
M2启动或玩家触发功能时报错,日志位置分三处:
• Hero 引擎:MirServer\Mir200\Log\ScriptError.log,同时 M2 控制台也会滚红字

• GOM 引擎:直接看 M2Server 底部“日志”面板或控制台

- GEE 引擎:MirServer\GeeLog\Script.log
报错格式通常是 Scriptfile 'QuestDiary\QFunction-0.txt' line 56: Syntax error 或 Market_Def\屠龙商人-3.txt 第18行 语法错误。记三样东西:文件路径、Line 行号、后面跟着的 Command/Syntax/Field 描述。用 Notepad++ 打开那个文件,Ctrl+G 跳行,别全局搜。

二、按错误描述对号入座
1. Syntax error / 缺少 ')' / Invalid command
九成是半角全角混用。#IF、#ACT、GIVE、CHECKITEM 这些必须英文半角,中文逗号句号括号引号全部替换成英文。参数缺漏也归这类,比如 CHECKGAMEGOLD 100 少了比较符应写 CHECKGAMEGOLD < 100,GIVE 屠龙 没写数量,括号 () [] 不成对。
2. 未知命令 / 命令未定义
脚本用了当前引擎不认的指令。把 GOM 新脚本丢进 Hero 老引擎、或反过来都会这样,比如 ThroughHum 与 AllowThrough 跨引擎不通用。对照所用引擎的命令手册改写法,或升级引擎版本;插件提供的命令(大背包、自动拾取)要确认 PlugList.txt 里 DLL 已加载且没被杀软隔离。
3. 标签未找到 / Label not found
GOTO @back、#CALL[任务.txt]@奖励 指向的 [@back] [@奖励] 在目标文件里不存在,或者标签名大小写、空格不对。补标签或改跳转名,标签必须顶格写、[@xxx] 格式、前面不能有空格制表符。
4. Field 'xxx' not found
不是 txt 脚本错,是 StdItems.DB 或角色库缺字段,常伴随装备触发脚本一起崩。用 DBC2000 给数据库补对应字段(Integer 默认 0),不是改 txt 能解决的。
5. 编码乱码导致整文件加载失败
记事本另存成 UTF-8 或 UTF-8 BOM 后,中文变乱码、命令断行。Notepad++ 转 ANSI(GBK)覆盖保存;若引擎明确要 UTF-8 无 BOM 才选那个。顺手开“显示所有字符”,删掉行首行尾从网页复制来的不可见控制符。
6. #IF 后没 #ACT / 结构断层
#IF 必须跟条件,下一行起 #ACT 或 #ELSEACT/#SAY,中间夹普通文本、注释错位、连续两个 #IF 都会让解析器中断。按“#IF→条件→#ACT→执行”重排段落。

三、NPC 与任务脚本专属检查点
• NPC 脚本在 Mir200\Envir\Market_Def\,文件名要和 MapQuest_def 里调用的完全一致,带空格都不行。

• 任务脚本在 Envir\QuestDiary\,QFunction-0.txt 管穿戴/使用/死亡触发,QManage.txt 管登录/升级/转生,入口标签 [@Main] [@Login] 不能拼错。

- 脚本里 GIVE 的物品名、地图编号,必须能在 StdItems.DB、MapInfo.txt 查到,名字多一个空格就识别不到。

四、改完怎么重载才生效
• 只改了 txt 脚本:M2 菜单“管理→脚本管理→重载 NPC 脚本”或“重读 QF/QManage”,Hero/GOM 热重载就行;GEE 点“重新加载所有脚本”。

- 改了 StdItems.DB / 数据库:必须关 M2 → 存盘 → 重开 M2,热重载读不到 DB 变动。
• 改了客户端外观(StdItems.def):客户端补丁同步换,不然服务端对、客户端显示问号。

- 反复莫名报错:关 M2,删 Mir200\Log 下 ScriptError.log 历史、删 Cache 文件夹,重启让引擎重读。

五、没有行号时的笨办法
日志被清或只提示“脚本错误”不带头:把疑似文件分段用 ; 注释(传奇脚本单行注释是 ;,不是 //),每次留一段取消注释,重启 M2 看哪段一放开就红,缩小到具体十几行再逐行对半角、标签、命令拼写。

按“日志行号 → 文件跳转 → 半角/编码/标签/命令四件套 → 按类型重载”走,大部分脚本发生错误都不用动版本和引擎,改 txt 就能消红。