脚本报错别瞎重下服务端,老引擎(GOM/GEE/HERO/SKY/LEG)报错格式基本固定:Scriptfile'QFunction-0.txt'line105:Syntaxerror/Unknowncommand/GOTO@xxx不存在/NPC脚本加载失败。照下面顺序查,十分钟能定位。
一、先抓日志,别凭感觉改
•M2控制台点【查看】→【脚本错误日志】
•或打开Mir200\Log\下-M2Server-日期.log、ScriptError.log
•记下三样:文件名、Line行号、标签名([@Main]/[@领取])
-Notepad++按Ctrl+G跳行,只看那几行附近,别全文重写
二、编码错了(占一半以上)
老引擎只认ANSI/GBK,UTF-8、UTF-8-BOM、Unicode全乱。
•记事本打开报错脚本→另存为→编码选ANSI覆盖
-Notepad++:编码→转为ANSI编码→保存
•批量修:把Envir\Market_Def、QuestDiary、QFunction-0.txt、QManage.txt全转一遍
-改完关M2,删Mir200\Log\ScriptCache.dat,再启
三、语法结构没闭合
IF必须配#ACT/#SAY,结尾#ENDIF;[@标签]顶格写,前面别加空格。
常见死法:
-#IFCHECKLEVEL40换行直接写GIVE裁决→必须#IF同行或标准块
•GOTO@MAIN但文件里没[@MAIN]段
•#CALL[..\QuestDiary\充值.txt]@领取,目标文件没[@领取]
-中文逗号、全角括号、行尾隐藏空格(Notepad++开“显示所有字符”清掉)
•命令没大写:give屠龙1→改GIVE屠龙1
四、命令不兼容(换引擎后必踩)
HERO的ThroughHum、GOM的AllowThrough、GEE的MOVS/CALC互相不认。
-看M2右上角引擎名(GOMM2/HeroM2/GeeM2)
•对照该引擎命令手册改,或升级引擎包
•新脚本扔老M2,报Unknowncommand就是这原因
五、路径和文件不存在
-Merchant.txt里NPC写的福利使者.txt必须真实在Market_Def\下
•!Setup.txt里QFunctionDir=.QuestDiary\路径要对
•#CALL[..\QuestDiary\数据\xxx.txt]相对层级别写错
-文件名别带中文、别double后缀(福利使者.txt.txt)
•地图事件MapEvent.txt里地图号必须在MapInfo.txt存在且Mir200\Map有.map
六、变量和数据库对不上
-HUMAN/GLOBAL/GUILD变量先用VAR声明,重复VAR同名会报“变量已存在”
•GIVE物品名必须和StdItems.DB一字不差(含空格)
•怪物名对MonGen、爆率文件放MonItems\
-技能等级别超过Skill.txt里MaxLevel
七、GOTO死循环
复杂跳转把!Setup.txt里ScriptGotoCountLimit默认10改5000,但根治是用#CALL替多层GOTO。
八、改完必须重载
•M2控制台:【重新加载】→【重读QF脚本】/【重读NPC脚本】
•或GM命令@重读QF
•还不行就关M2→删ScriptCache.dat→重启全套(DB→Login→M2→Gate)
-改前把Envir整个文件夹备份,改坏了一键还原
九、分段注释法(日志没行号时用)
把QManage.txt/QFunction-0.txt从中间按功能切段,每段前加;注释掉,一段段放开,哪段一亮红就是哪段出问题。
十、高频报错速查表
•ScriptErrorlinexxSyntaxerror→符号/括号/编码/命令拼写
•Unknowncommand→命令名错或引擎不支持
•GOTO@xxx不存在→标签没写
-NPC脚本加载失败→文件放错目录/Merchant映射错/编码UTF-8
•点击NPC无反应→缺[@main]或Merchant.txt文件名不一致
•进地图卡死→MapEvent.txt地图号错或标签未定义
-变量错误→没VAR声明或类型混用
十一、防复发规矩
1.所有脚本ANSI保存,不从网页直接复制代码(带隐形格式符)
2.改脚本用Notepad++,别用Word/IDE
3.每改一个功能备份一份,命名充值.txt.bak
4.同引擎同版本脚本复用,别A引擎脚本塞B引擎M2
5.M2右键“以管理员身份运行”,权限不够也报诡异错
一句话收尾:脚本错误=看日志拿行号→转ANSI→查#IF/#ENDIF和标签→查命令兼容→查物品/地图/变量库→重载/删缓存。日志比百度准,行号比猜靠谱。下次再弹红字,先别关M2,把那行截图下来对着改,比重装服务端省事十倍。
一、先抓日志,别凭感觉改
•M2控制台点【查看】→【脚本错误日志】
•或打开Mir200\Log\下-M2Server-日期.log、ScriptError.log
•记下三样:文件名、Line行号、标签名([@Main]/[@领取])
-Notepad++按Ctrl+G跳行,只看那几行附近,别全文重写
二、编码错了(占一半以上)
老引擎只认ANSI/GBK,UTF-8、UTF-8-BOM、Unicode全乱。
•记事本打开报错脚本→另存为→编码选ANSI覆盖
-Notepad++:编码→转为ANSI编码→保存
•批量修:把Envir\Market_Def、QuestDiary、QFunction-0.txt、QManage.txt全转一遍
-改完关M2,删Mir200\Log\ScriptCache.dat,再启
三、语法结构没闭合
IF必须配#ACT/#SAY,结尾#ENDIF;[@标签]顶格写,前面别加空格。
常见死法:
-#IFCHECKLEVEL40换行直接写GIVE裁决→必须#IF同行或标准块
•GOTO@MAIN但文件里没[@MAIN]段
•#CALL[..\QuestDiary\充值.txt]@领取,目标文件没[@领取]
-中文逗号、全角括号、行尾隐藏空格(Notepad++开“显示所有字符”清掉)
•命令没大写:give屠龙1→改GIVE屠龙1
四、命令不兼容(换引擎后必踩)
HERO的ThroughHum、GOM的AllowThrough、GEE的MOVS/CALC互相不认。
-看M2右上角引擎名(GOMM2/HeroM2/GeeM2)
•对照该引擎命令手册改,或升级引擎包
•新脚本扔老M2,报Unknowncommand就是这原因
五、路径和文件不存在
-Merchant.txt里NPC写的福利使者.txt必须真实在Market_Def\下
•!Setup.txt里QFunctionDir=.QuestDiary\路径要对
•#CALL[..\QuestDiary\数据\xxx.txt]相对层级别写错
-文件名别带中文、别double后缀(福利使者.txt.txt)
•地图事件MapEvent.txt里地图号必须在MapInfo.txt存在且Mir200\Map有.map
六、变量和数据库对不上
-HUMAN/GLOBAL/GUILD变量先用VAR声明,重复VAR同名会报“变量已存在”
•GIVE物品名必须和StdItems.DB一字不差(含空格)
•怪物名对MonGen、爆率文件放MonItems\
-技能等级别超过Skill.txt里MaxLevel
七、GOTO死循环
复杂跳转把!Setup.txt里ScriptGotoCountLimit默认10改5000,但根治是用#CALL替多层GOTO。
八、改完必须重载
•M2控制台:【重新加载】→【重读QF脚本】/【重读NPC脚本】
•或GM命令@重读QF
•还不行就关M2→删ScriptCache.dat→重启全套(DB→Login→M2→Gate)
-改前把Envir整个文件夹备份,改坏了一键还原
九、分段注释法(日志没行号时用)
把QManage.txt/QFunction-0.txt从中间按功能切段,每段前加;注释掉,一段段放开,哪段一亮红就是哪段出问题。
十、高频报错速查表
•ScriptErrorlinexxSyntaxerror→符号/括号/编码/命令拼写
•Unknowncommand→命令名错或引擎不支持
•GOTO@xxx不存在→标签没写
-NPC脚本加载失败→文件放错目录/Merchant映射错/编码UTF-8
•点击NPC无反应→缺[@main]或Merchant.txt文件名不一致
•进地图卡死→MapEvent.txt地图号错或标签未定义
-变量错误→没VAR声明或类型混用
十一、防复发规矩
1.所有脚本ANSI保存,不从网页直接复制代码(带隐形格式符)
2.改脚本用Notepad++,别用Word/IDE
3.每改一个功能备份一份,命名充值.txt.bak
4.同引擎同版本脚本复用,别A引擎脚本塞B引擎M2
5.M2右键“以管理员身份运行”,权限不够也报诡异错
一句话收尾:脚本错误=看日志拿行号→转ANSI→查#IF/#ENDIF和标签→查命令兼容→查物品/地图/变量库→重载/删缓存。日志比百度准,行号比猜靠谱。下次再弹红字,先别关M2,把那行截图下来对着改,比重装服务端省事十倍。

