常见报错形式与含义
在 M2Server(M2控制台)或 GameGate 窗口看到类似提示:
• [Error] Script file not found : Mir200\Envir\QuestDiary\某某\礼包.txt
- [Error] Line 15 in 礼包.txt : Invalid command or parameter
• [Error] LoadQuestDiary fail : 礼包.txt
- NPC对话框点"领取礼包"弹窗"脚本错误"或空白——通常对应脚本命令拼错、条件不满足、物品名不符或汉字乱码。
一、脚本文件路径与结构错误
Hero/Blue 引擎的 QuestDipty(任务脚本)必须成对被识别:
- 检查 \Mir200\Envir\QuestDiary\ 下是否有对应分类文件夹(如 \礼包系统\ 或 \QQ活动\)。
• 该文件夹内必须同时存在两个文件:
• 礼包.txt(或你设的名字)——脚本内容
- Quest.txt 或同名 .txt 在 \Mir200\Envir\QuestDefine\ 有对应引用(部分端只需 QuestDiary 里有同名段落在 Quest.txt 声明)
- 如果只有脚本文件没有对应分类文件夹或 Quest.txt 未声明,M2 启动会报 Script file not found,补建文件夹或把脚本移入已有分类目录(如 \系统设置\ 并在 Quest.txt 加段声明)即可。
二、脚本命令拼写与格式错误(最常见)
打开报错指向的 .txt,重点查以下几项:
• 命令关键字必须英文大写或半角:@IF、@ELSE、@Break、#IF、#ACT、#SAY、#ELSE、GIVE、TAKE、CHECKITEM、CHECKGOLD 等全用英文半角写,不能混全角括号或中文空格。
- 物品名必须与 StdItems.DB 完全一致:GIVE 屠龙 1 ——数据库物品名如果是"屠龙刀"写"屠龙"会判定失败弹脚本错误,打开 \Mir200\Envir\StdItems.xls 或 DBC 查看器核对。
- 变量引用格式:CHECK [001] 1、MOV [001] 1、SMALL [001] 5 等,中括号和数字间不能有空格异常,变量编号范围 0-999(Hero 引擎)。
• 换行与分段:每段以 #IF #ACT #SAY 开头,段与段间空一行,文件末尾建议留一个回车。混用 Tab 和空格一般没事,但复制网页源码常带入不可见字符导致解析失败——全选重新用空格缩进替换。
- GOTO 标签存在:脚本里写了 GOTO @NEXT 必须在同文件中有 @NEXT 标签段,缺标签会报 Invalid jump。
示例最小礼包脚本模板(可直接对照改):
[@Main]
#IF
CHECKLEVEL 1
#ACT
GIVE 沃玛头盔 1
GIVE 沃玛项链 1
GIVE 金币 50000
#SAY
领取成功,已发放新手礼包!
#ELSE
#SAY
等级不足无法领取!
将此内容存为 \Mir200\Envir\QuestDiary\系统设置\礼包.txt,NPC 调用 @礼包 指向 [@Main]。
三、中文乱码导致的脚本不识别
Windows 记事本默认存为 UTF-8 带 BOM,Hero 引擎脚本须为 ANSI(GBK)编码:
1. 右键脚本 .txt → 打开方式选记事本 → 文件→另存为→编码选 ANSI → 保存覆盖。
2. 重启 M2Server 或点 M2→"重新加载任务脚本(QuestDiary)"看是否还报行错误。
3. 若脚本内含中文 NPC 对话文字变问号或方块,也是编码问题,统一转 ANSI 解决。
四、QQ礼包/NPC 调用关联错误
NPC 脚本(在 \Mir200\Envir\MerChant.txt 定义)里调用格式:
;文件名 地图 X Y 方向 名称 面部 点费率 0 0 脚本名(@标签)
礼包使者 3 330 330 5 礼包使者 0 0 0 0 礼包(@Main)
• 最后一个字段 礼包(@Main) 表示调用 QuestDiary 中某文件名为"礼包.txt"里的 [@Main] 段。文件名、标签名拼写必须与 QuestDiary 内一致。
• MerChant.txt 中脚本文件路径写错或多了空格也会点 NPC 弹"脚本错误"。
五、条件不满足致看似"脚本错误"
有时 M2 不报错但点 NPC 只出 #ELSE 分支文字或空白——其实是 #IF 条件未通过:
• CHECKITEM 礼包券 1 身上没礼包券当然不执行 #ACT,改测试时先注释掉 #IF 下一行(加 ; 或删掉条件行)看能否正常 GIVE,能发说明是条件物品名或数量不对。
- CHECKLEVEL 30 等级不够不触发属正常逻辑。
六、快速排错步骤汇总
1. M2 报哪行错→打开对应 .txt 跳到该行查命令拼写/全角字符/变量格式。
2. 确认物品名与 StdItems.DB 一字不差。
3. 另存为 ANSI 编码,M2 点重新加载 QuestDiary 看报错是否消失。
4. 检查 QuestDiary 下分类文件夹成对存在(脚本文件+Quest.txt 声明或归入已有分类)。
5. MerChant.txt 里 NPC 调用文件名(@标签) 与 QuestDiary 实际文件名和 [@标签] 完全一致。
6. 临时注释 #IF 下条件行测 GIVE 能否发放,排除是条件不满足而非脚本语法错。
按以上逐条核对,90% 的"礼包脚本错误"是 ANSI 编码问题或物品名/命令拼写出错导致,修正后 M2 重新加载即恢复正常。
传奇服务端与QQ礼包NPC脚本错误排查解决方法 MIR200脚本行报错与汉字乱码修复详解
来源:
作者:
点击:

