当前位置 : 145z游戏站 | 热血传奇 | 技术教程 | 

传奇架设脚本错误排查与修复实战手册

热度:
一、锁定报错源头:M2日志精准定位

脚本错误的排查核心在于解读M2控制台日志。启动服务端后,若M2报红字(ScriptError),需立即记录三个关键信息:文件名、行号(Line)、错误描述。

1.日志解读与文件定位
•示例报错:ScriptError:QFunction-0.txtLine56:CommandSyntaxError(Missing')')

-文件名:QFunction-0.txt(位于Mir200\Envir\QuestDiary)
•行号:Line56

-错误:语法错误,缺少右括号。
•文件路径对应表

脚本类型默认路径(Mir200\Envir下)
NPC对话脚本Market_Def\
全局触发脚本QuestDiary\QFunction-0.txt
登录/升级脚本QuestDiary\QManage.txt
怪物爆率MonItems\

2.工具准备
推荐使用Notepad++或VSCode打开脚本文件。在编辑器中按Ctrl+G输入报错行号,可直接跳转至问题代码行进行修改。

二、高频错误分类与修复方案

1.语法结构错误(最常见)

表现:M2启动报错,提示“CommandSyntaxError”、“Missing')'”或“Invalidcommand”。

错误类型错误示例(❌)修正写法(✅)解决要点

括号不匹配#IFCheckItem金条1<br>#ACTGIVE金币1000#IFCheckItem金条1<br>#ACTGIVE金币1000检查()、[]是否成对,严禁使用中文括号。

标签缺失#IF<br>CheckLevel35#IFCheckLevel35#IF、#ACT、#SAY必须独立成行,参数用空格分隔。

跳转标签不存在#ACTGOTO@back在脚本中补全[@back]标签。所有GOTO指向的@标签必须实际存在。

2.路径与文件引用错误

表现:提示“Filenotfound”或NPC对话空白。

•文件不存在:检查#CALL或LOADVAR引用的.txt文件路径是否正确。路径中避免使用中文,推荐使用相对路径(如..\QuestDiary\数据\xxx.txt)。

•编码问题:脚本文件必须保存为ANSI编码。若使用记事本保存为UTF-8,会导致M2读取乱码。用Notepad++打开,选择“编码”->“转为ANSI”后保存。

3.变量与命令冲突

表现:提示“变量已存在”或“参数不正确”。

•变量重复定义:若报错“变量XXX已存在”,说明在QManage.txt等脚本中多次使用VAR命令定义了同名变量。全局搜索该变量名,保留首次定义,删除后续重复定义。

•命令参数错误:检查命令参数数量。例如GIVE命令格式为GIVE物品名数量,若漏写数量参数会导致报错。对照引擎说明书核对命令格式。

三、实战修复流程(以“QFunction-0.txtLine56”报错为例)

步骤1:定位代码
打开Mir200\Envir\QuestDiary\QFunction-0.txt,跳转到第56行。假设该行代码为:
#IFCheckItem屠龙刀1
#ACTTake屠龙刀1

步骤2:分析修正
上述代码错误在于#IF和条件判断未写在同一行。修正为:
#IFCheckItem屠龙刀1
#ACT
Take屠龙刀1

步骤3:验证生效
保存文件后,在M2控制台点击“重新加载”->“重读QF脚本”,或输入命令@重读QF。观察控制台是否还有红色报错。

四、特殊场景:NPC脚本不生效排查

若NPC对话无反应或点击按钮无响应,检查以下三点:
1.标签完整性:NPC脚本必须包含[@main]入口标签。按钮跳转如<点我/@next>,必须在脚本中有对应的[@next]段落。
2.文件映射:Merchant.txt中配置的NPC脚本文件名必须与Market_Def目录下的.txt文件名严格一致(注意大小写)。
3.权限检查:部分命令(如GM命令)需要检测玩家权限(CHECKGAMEGOLD或ISADMIN),条件不满足时脚本会静默失败。

五、防错规范与重载指令

1.修改前备份:修改任何脚本前,复制整个Envir文件夹备份。
2.重载指令速查(在M2控制台或GM命令输入):
◦@重读QF:重载QFunction-0.txt

◦@重读NPC:重载所有NPC脚本

◦@重读商人:重载商店NPC

◦@重读怪物:重载怪物爆率

3.引擎兼容:GOM/GEE引擎与HERO引擎的命令集不同,切勿混用。若更换引擎版本,需使用官方转换工具批量替换命令。

总结:遇到脚本错误,首要动作是截图M2报错日志,按“文件->行号->语法”的顺序逐一排查,90%的问题可通过修正括号、空格和标签解决。
[顶部]