一、先读报错信息锁定文件与行号
启动 GameSrv / M2Server / 引擎控制器时,控制台红字或 Log 目录下的 ScriptError.log、Script.log 会给出完整线索,格式通常是:
Scriptfile 'QFunction-0.txt' line 56 : Command Syntax Error (Missing ')')
记录三样东西:文件名、Line 行号、错误描述。对应路径表:
Mir200\Envir\Market_Def\ → NPC对话脚本(如 比奇老兵-0.txt)
Mir200\Envir\QuestDiary\ → QFunction-0.txt、QManage-0.txt、各功能模块脚本
Mir200\Envir\MonItems\ → 怪物爆率脚本
Mir200\Envir\Robot_def\ 或 QuestDiary\RobotManage\ → 机器人定时脚本
用 Notepad++ 打开对应文件,Ctrl+G 跳到行号,不要凭感觉全目录搜。
二、编码与文件格式错误(最高频)
所有脚本文件必须保存为 ANSI 或 GBK。用 UTF-8 尤其是带 BOM 的,中文变乱码、命令识别失败、登录触发直接断。
记事本打开 → 另存为 → 编码选 ANSI;Notepad++ 用“编码→转为ANSI编码”。
路径禁止中文、空格、全角符号,MirServer 整体放 D:\MirServer 最稳。
三、语法结构类错误
1. 条件块不完整
IF 下面必须跟条件命令,再跟 #ACT 或 #ELSEACT,缺一段就报 Syntax error。
错误:
IF
CHECKITEM 金条 1
(没有 #ACT)
正确:
IF
CHECKITEM 金条 1
ACT
GIVE 金币 1000
2. 标签与跳转
[@Main]、[@Login]、[@每日扣点] 必须独立成行,格式严格 [@标签名],GOTO @标签名 的目标必须同文件存在,大小写敏感,“@A400”写成“@A40O”直接断。
3. 括号与符号
() [] {} 成对,禁用中文括号“()”;参数之间用英文半角空格,命令尾多空格也会解析异常。
CALL 引用写法:CALL[QManage.txt]@Label,不是 CALLQ_Manage.txt@Label。
4. 注释
单行 // ,多行 / ... / ;Hero/GOM 某些版本不支持 # 开头注释,写 # 会当命令解析。
四、命令与引擎不匹配
GOM / GEE / Hero / LEG / BLUE 命令集不同,混抄必错:
- GOM 提示信息用 MSG 或 SendMsg,GEE 用 SendCenterMsg
• GOM CALLSUB 在 GEE 改 CALL
• Hero 的 TAKEITEM 在 GOM 是 TAKE
- LEG 需在头部 #DEFINE USER_CMD 1 开启辅助触发
• BLUE 怪物死亡触发文件固定命名 MonDie.txt,不能自定义
确认引擎类型(看 M2 目录图标或“关于”)→ 打开服务端自带的 脚本命令说明.txt → 逐条替换。
五、数据库与参数关联错误
GIVE / CHECKITEM / RECYCLAITEM 后的物品名必须和 StdItems.DB(Item.txt)完全一致,“强效疗伤药”写成“疗伤药(强效)”就报“道具不存在”。
MONGEN / MOBPLACE 刷怪名查 Monster.DB;MAPMOVE / MapEvent 地图号查 MapInfo.txt;NPC 编号查 Merchant.txt / Npc.txt。
爆率文件数字超范围、概率写 100% 而不是 100、坐标超出地图边界,都会让进图卡死或报错。
变量作用域:HUMAN 个人、GLOBAL 全局、S/N/A 临时;未 LOADVAR / VAR 声明直接调用报“变量未定义”;机器人脚本里 HUMAN 变量不在作用域就改 GLOBAL 或遍历在线玩家。
六、引用路径与机器人脚本特例
CALL、LOADVAR、SAVEVAR 引用外部 txt 用相对路径,如 ..\QuestDiary\数据\xxx.txt,绝对路径 D:\... 在部分引擎会被拦。
RobotManage.txt 格式:分钟 脚本文件,放 QuestDiary\RobotManage\;AutoRunRobot.txt 写法 AutoRun Robot RunOnDay 00:00 @标签名,第二个字段必须是 Robot 不是 NPC,时间 0:00 写成 00:00,多一个参数都不行。M2“选项→机器人设置”勾启用,间隔别设太死,否则整点不触发。
七、缓存与重载
改完脚本别只点“重载脚本”,部分引擎缓存 ScriptCache.dat:
关闭 M2 → 删 Mir200\Log\ScriptCache.dat(存在的话) → 重启 M2。
QFunction / QManage 改动建议整服重启,热加载容易残留旧变量。
八、分段注释法兜底
日志不指名行号时,把疑似脚本段首加 // 逐段注释,分段起 M2,哪段注释后不报错就是哪段;再在该段内二分缩小到具体行。改前先备份整个 Envir 目录,用 WinMerge 对比原始版差异。
九、常见报错速查表
• Line X: Unknown command → 命令拼错或引擎不支持,查命令手册
• Line X: Missing '#ACT' → #IF 块没闭合
• File not found → CALL/LOADVAR 路径错或文件没放
- 道具 XXX 不存在 → Item.txt 名称不一致
• 标签 @XXX not found → GOTO/CALL 目标标签缺失
• 编码乱码 → UTF-8 转 ANSI
• NPC 点开空白 → Market_Def 文件名与 Merchant.txt 配置不匹配
按“日志行号 → 编码 → 语法 → 命令引擎匹配 → 数据库参数 → 缓存重启”顺序走,绝大多数脚本错误都能在十分钟内外解决。
传奇架设遇到脚本错误如何解决:M2日志定位与NPC触发报错修复全流程
来源:
作者:
点击:

