传奇架设脚本错误排查与修复方法

来源: 作者: 点击:
脚本错误多出现在NPC对话、任务触发、物品使用或地图事件中,表现为点击无反应、弹出“脚本错误”提示或服务端日志报错。按以下步骤定位并修复。

1. 查看M2实时日志定位错误源
运行GameSrv(M2)时,观察控制台输出。当触发脚本错误,通常会显示:
[Error] Script file 'QManage.txt' line 105: Syntax error

记录文件名与行号,直接定位问题位置。

2. 检查脚本文件编码格式
所有QFunction.txt、QManage.txt、NPC脚本必须保存为ANSI或GBK编码。若用UTF-8(尤其带BOM),会导致中文乱码或指令识别失败。用记事本打开 → 另存为 → 编码选ANSI。

3. 验证标签与括号匹配
常见语法错误包括:
[@Main] 后缺少冒号或换行;
IF语句未闭合:

#IF
CHECKITEM 金币 100
#ACT
GIVE 金条 1

缺少#ELSE或后续逻辑导致中断;
脚本末尾多出无效字符(如全角空格、特殊符号)。

4. 核对命令拼写与参数
内置命令必须大写且参数数量正确。例如:
错误:giveitem 金条 1(应为GIVE);
错误:MOV D0 100(应为MOV D0 100);
错误:CALL Q_Manage.txt @Label(应为CALL [QManage.txt] @Label)。

5. 检查文件路径与引用
在!Setup.txt中确认脚本主目录:
[Share]
QFunctionDir=.QuestDiary\

确保QManage.txt、QFunction.txt位于MirServerMir200QuestDiary下。若引用子目录脚本,路径需相对主目录,如:
CALL [LevelUpWarrior.txt] @Start

6. 修复地图事件脚本
MapEvent.txt错误常导致进入地图卡死。检查格式:
; 地图号 X Y 范围 事件类型 脚本标签
3 123 125 1 1 @Map3_Event

地图号必须存在(Map3.map);
坐标不能超出地图边界;
标签@Map3_Event需在QManage.txt中定义。

7. 清除缓存重载脚本
部分引擎会缓存脚本。修改后需:
关闭M2;
删除MirServerMir200LogScriptCache.dat(如有);
重新启动M2。

8. 使用分段注释法排查
若日志未指明具体行,将QManage.txt内容分段注释(每段前加;),逐步取消注释测试,直至错误重现,即可锁定问题区块。

9. 引擎特有命令兼容性
GOM、Hero等引擎扩展了自定义命令(如CHECKGOLD、GIVEGOLD)。若脚本含此类命令但服务端不支持,会报错。替换为通用指令:
CHECKGOLD 100 → CHECKITEM 金币 100
GIVEGOLD 50 → GIVE 金币 50

完成上述步骤后,90%以上的脚本错误可解决。重点在于日志定位、编码统一与语法规范。修改后务必逐项测试触发条件,确保逻辑完整。