传奇M2引擎FQ脚本错误原因及修复方法

来源: 作者: 点击:
传奇M2引擎运行中出现“FQ脚本错误”通常指向脚本文件语法异常、路径缺失或触发逻辑冲突,直接影响任务、对话或功能执行。以下是具体分析与处理步骤:

一、定位FQ错误来源
FQ为“发送消息”指令(SendMsg)的内部代号,错误多发生在NPC脚本调用SendMsg时参数不合法。查看Mir200Log目录下最新GameLog.txt,搜索关键词“FQ”或“ScriptError”,可获取具体脚本路径及行号,例如:

[14:22:05]ScripterrorinD:MirServerMir200EnvirQuestDiaryLoginLogin.txtline37


二、检查SendMsg语法格式
标准SendMsg用法为:

IF
ACT
SENDMSG0你的角色等级不足!

常见错误包括:
缺少消息类型参数(0=系统提示,1=弹窗,6=顶部滚动)
消息内容含未转义的特殊字符(如|、#、%)
行首缺少#ACT或#SAY标签直接写SENDMSG
修正示例:

IF
EQUAL$LEVEL0
ACT
SENDMSG6等级不能为0!


三、验证脚本文件编码与换行符
M2引擎仅支持ANSI编码与Windows换行(CRLF)。若脚本用UTF-8或Unix换行(LF)保存,会导致指令解析错位。使用Notepad++打开报错脚本:
菜单栏选择“编码→转为ANSI”
选择“视图→显示符号→显示行尾符”,确认每行结尾为CRLF
删除行尾多余空格或不可见控制字符

四、排查变量与条件冲突
FQ错误常伴随变量未定义或条件嵌套过深。例如:

IF
CHECK[100]1
ACT
SENDMSG0你已完成任务!

若[100]未在QFunction-0.txt中声明为全局变量,引擎将中断执行。解决方法:
在QFunction-0.txt首行添加;@GlobalVar[100]
避免在#IF块内嵌套超过三层逻辑判断

五、检查脚本路径与文件名大小写
Windows虽不区分文件名大小写,但部分M2引擎版本对路径敏感。确保:
脚本调用路径与实际目录完全一致(如QuestDiaryMain而非questdiarymain)
文件名无中文或空格(推荐使用Login.txt而非登录脚本.txt)

六、禁用第三方插件干扰
某些插件(如自动喊话、防脱机模块)会挂钩SendMsg函数。临时移除PlugIn目录下所有.dll文件,重启引擎测试。若FQ错误消失,则逐个启用插件定位冲突源。

七、修复QFunction-0.txt主控脚本
该文件为所有脚本的入口,若其结构损坏将引发连锁错误。检查要点:
每个标签(如@Login、@PlayStart)必须独占一行且以@开头
标签后不可紧跟空格或注释
避免在标签段内直接写SENDMSG,必须包裹在#IF/#ACT中

八、使用脚本验证工具预检
通过M2脚本调试器(如M2ScriptChecker)批量扫描QuestDiary目录:
加载全部.txt脚本
自动标红语法错误行(如缺少#ENDIF、括号不匹配)
导出错误报告逐项修正

FQ脚本错误本质是消息发送指令执行失败,根源多在脚本书写规范性。优先从日志定位文件与行号,再依次验证语法、编码、变量及路径。保持脚本结构扁平化、消息内容简洁化,可大幅降低此类错误发生概率。
[顶部]