传奇服务端脚本错误排查与修复实操指南

来源: 作者: 点击:
一、锁定错误源头:查看M2日志

脚本错误绝非盲猜能解决,必须依据日志定位。打开服务端主控程序 M2Server,点击顶部菜单栏的【查看】→【脚本错误日志】(部分引擎为【日志】→【查看日志】)。

日志中会明确记录:
• 错误文件:如 QuestDiary\QQ礼包.txt,直接锁定你提到的“qq礼包脚本”。

- 错误行号:如 Line 15,精确到具体哪一行代码出错。
• 错误原因:如 未知命令 或 缺少结束标签。

若日志被清空,可进入服务端 Log 文件夹查看 ScriptError.log 历史记录。

二、QQ礼包脚本高频错误与修复

针对“qq礼包”类脚本,90%的问题集中在以下三类,请对照日志行号修改:

1. 变量或命令拼写错误

日志提示“未知命令”或“变量未定义”。
• 原因:脚本中使用了引擎不支持的函数,或复制粘贴时命令缺字(如 CHECKTEXTLIST 写成了 CHECKTEXT)。

- 修复:打开 QuestDiary\QQ礼包.txt,找到报错行,对照引擎说明书或正常脚本修正命令拼写。特别注意检查 $QQ、$PARAM(1) 等变量名是否写错。

2. 逻辑结构不完整(缺标签/括号)

日志提示“缺少 endif”或“标签未找到”。
• 原因:脚本中的条件判断没有闭合,或 #CALL 调用的外部标签不存在。

- 修复:检查 #IF 是否对应 #ACT,{ 是否有 } 闭合。若调用了 #CALL[..\QQ\礼包.txt]@领取,需确认 礼包.txt 文件中确实存在 [@领取] 标签。

3. 文件路径或编码错误

点击NPC无反应或报路径错误。
• 原因:脚本文件保存为了 UTF-8 编码(引擎仅认 ANSI),或 #CALL 路径中的文件夹不存在。

- 修复:用记事本打开脚本,【另存为】时编码选择 ANSI。检查路径中是否有中文空格或多余斜杠(如 \\ 应改为 \)。

三、通用排查流程(无具体日志时)

若日志无报错但功能异常,按以下顺序排查:

1. 检查文件位置:确认 QQ礼包.txt 是否放在 Mir200\Envir\QuestDiary 目录下,且文件名无多余空格。
2. 重载脚本:修改脚本后,必须在 M2Server 中点击【重新加载】→【重读QF脚本】或【重读NPC脚本】,重启服务端是最彻底的生效方式。
3. 基础语法核验:
◦ 符号:所有逗号、分号、括号必须为英文半角,中文符号必报错。

- 空格:命令与参数间通常用一个空格分隔,勿多勿少(如 GIVE 金币 1000)。
- 物品名:GIVE、CHECKITEM 后的物品名称必须与 StdItems.DB 数据库中的名称完全一致(包括括号和空格)。

四、紧急止损方案

如果无法快速定位错误,可采用“隔离法”恢复游戏:
1. 将 QQ礼包.txt 重命名为 QQ礼包.txt.bak(禁用该脚本)。
2. 在 M2 中重载脚本,测试是否还报错。
3. 若报错消失,说明问题就在此文件;若仍报错,则问题在 QFunction-0.txt 等全局脚本中,需分段注释排查。

最后建议:修改脚本前务必备份原文件。对于复杂的逻辑错误,建议在简单脚本(如只给金币)上测试通过后,再逐步添加复杂功能。