传奇架设过程中遇到脚本错误,通常M2控制台或启动日志会提示"脚本加载失败""第XX行语法错误""命令未定义"等信息。绝大多数情况源于语法不规范、路径不对、编码错误、引擎版本不兼容或物品数据库不匹配。按以下步骤逐一排查即可解决。
一、先看日志锁定出错文件和行号
M2启动后在控制台(M2Server)查看红色报错信息,或打开日志文件:
• Hero/GOM引擎:MirServer\Mir200\Log\ScriptError.log 或直接看M2控制台日志面板
- GEE引擎:MirServer\GeeLog\Script.log
日志会写明是哪个脚本文件第几行出错,例如"Market_Def\屠龙商人-3.txt 第18行 语法错误"。记住这个路径和行号,用Notepad++打开对应文件直接跳转到该行开始查。
二、最常见的语法格式错误及修复
脚本命令必须用英文半角符号,中文逗号、中文括号、中文引号都会导致解析失败。检查报错行及上下3-5行:
• 符号全角问题:把所有中文,。()""'' 改为英文 , . ( ) " ',传奇脚本严格要求半角。
- 括号或引号未闭合:如 #SAY <$USERNAME你好 少了右尖括号,字符串缺结束引号也会报错。
• 命令关键字拼错:#IF 写成 #lf 或 #FI,GIVE 写成 GIV,TAKE 写成 TAK,对照引擎自带的脚本命令手册(CHM帮助文档)核实。
• 命令参数数量不足:GIVE 屠龙 少了数量参数会报参数不足,必须写成 GIVE 屠龙 1;CHECKLEVELEX > 50 条件也不能少比较符和数值。
• 结构不完整:#IF 后面必须跟条件判断,然后是 #ACT(条件满足执行)或 #ELSEACT/#ELSESAY(不满足时),不能 #IF 后直接又是 #IF 或空行,引擎无法识别。
三、脚本文件编码与隐藏字符问题
GOM、GEE、Hero引擎的TXT脚本只认 ANSI编码(GBK),如果用记事本另存为UTF-8或UTF-8 with BOM,引擎可能读成乱码或直接加载失败。
修复方法:用记事本打开脚本→文件→另存为→编码选"ANSI"→覆盖保存。另外用Notepad++开启"视图→显示符号→显示所有字符",检查行首行尾是否有不可见的全角空格或复制来的特殊控制字符,删掉重打。
四、跳转标签、变量与物品数据库关联错误
• 标签不存在:脚本写了 GOTO @买药 或 #CALL [...]\任务.txt@奖励 但文件内没有 [@买药] 或 [@奖励] 这个标签,会报标签未找到。补上对应标签或修正GOTO目标名。
• 变量未初始化:人型变量(HUMAN)和全局变量(GLOBAL)需先赋值再用,如在QManage.txt登录触发段用 MOV G507 0 初始化后再 INC G507 1,未定义直接用会功能失效或报错。
• 物品名与DB不一致:GIVE 裁决 1 但 StdItems.DB(物品数据库)里标准名称是"裁决之杖",引擎找不到"裁决"会报物品不存在。打开DB查看准确名字复制过来。
五、文件路径错误与NPC配置文件核对
NPC脚本默认放在 MirServer\Mir200\Envir\Market_Def\,任务脚本放 Envir\QuestDiary\子目录\脚本名.txt。若M2提示"找不到文件"但文件明明在:
• 检查服务端整体安装路径不能含中文或空格(推荐 D:\MirServer),含中文易导致加载异常。
• 打开 Envir\Merchant.txt(NPC列表文件),核对NPC绑定的脚本文件名和路径是否和实际文件完全一致。格式示例:3 武器店老板 330 320 武器商人 0 武器店老板-3,表示地图3坐标330,320处加载Market_Def下"武器店老板-3.txt",文件名多写.txt后缀或少写地图编号都会加载失败。
• 任务脚本若在QuestDiary子目录,QFunction-0.txt或QManage.txt中用 #CALL QuestDiary\任务\主线.txt@Label 调用时路径必须匹配。
六、引擎版本不兼容与缺少插件
不同引擎(Hero、Blue、GOM、GEE、翎风)支持的脚本命令集不同。老版本脚本用到新引擎专有命令(或反之)会提示"不是内部或外部命令"或"未知命令"。
• 查看你引擎版本配套的脚本命令说明书(通常安装目录有CHM帮助文件),将不支持的命令替换为等价兼容命令,或删除该功能段。
• 部分功能如自动回收、泡点、特殊检测需要对应 .dll 插件放入 Mir200\PlugIns\ 并在M2"插件管理"中勾选加载,缺插件调用相关命令也会报错。
七、修改后不生效或仍报错的处理
• 修改脚本保存后,在M2控制台点"控制→重新加载→NPC脚本"(或重新加载QFunction),无需每次重启整个服务端。
• 若改完M2直接闪退无法启动,把之前备份的原脚本文件覆盖回去,或进 Mir200\Envir\ 把刚改的文件换回备份版。
• 确保脚本文件没有被Windows设为"只读"(右键属性取消只读),引擎无写入权限时部分记录型脚本会异常。
• 复杂脚本可用分号 ; 注释掉一半内容逐步取消注释来二分定位出错行。
养成修改前先备份脚本文件、用Notepad++编辑、每次启动看M2日志的习惯,基本可以秒定位并修好绝大多数传奇架设时的脚本错误。

