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

传奇服务端脚本错误解决实操:M2日志定位编码修正与命令标签修复全流程

热度:
传奇服务端脚本错误解决路径固定为“看M2红字/Log日志→锁文件行号→分类修语法/编码/变量/路径→清缓存重载”。脚本全在Mir200\Envir下:Market_Def\(NPC对话)、QuestDiary\(QFunction-0.txt、QManage.txt、任务活动)、MapQuest_def\、MonItems\(爆率)。改完必须M2菜单【控制】→【重新加载】→选QFunction/Market/所有NPC,或游戏内GM输@reloadnpc、@reloadqfunction,只存文件不重载无效。

一、先读报错:三个关键信息不能漏
M2Server控制台红字或Mir200\Log\下-M2Server-日期.log、SystemLog.txt、ScriptError.log里记录格式:
[Error]Scriptfile'QFunction-0.txt'line56:Unknowncommand'MOAB'或NPC脚本加载失败:Market_Def\福利使者.txt
提取:出错文件名→Line行号→错误类型(Unknowncommand/variablenotdefined/GOTO@xxx不存在/Syntaxerror/Filenotfound)。Notepad++按Ctrl+G跳行。

二、编码与换行符(最高频隐形坑)
所有.txt脚本必须ANSI(简体即GBK),换行WindowsCRLF。UTF-8、UTF-8BOM、UnixLF会导致中文乱码、命令识别失败、NPC空白、启动ScriptError。
修:Notepad++打开→格式/编码菜单→转为ANSI→转为Windows(CRLF)→覆盖保存;删行尾全角空格、零宽字符、隐藏BOM(视图→显示所有字符核对)。严禁用Windows记事本直接改,易写进BOM。

三、语法结构错误(#IF/#ACT配对与标签)
•#IF必须配#ACT或#ELSEACT,多分支用#ELSEIF,结尾BREAK/GOTO/CLOSE终止,缺闭合会整段失效。

-[@标签]顶格独占一行;GOTO@xxx、#CALL[\QuestDiary\子目录\文件.txt]@段目标必须真实存在,同目录标签名不可重复。
•命令全大写、参数空格分隔:MOVD0100不能写MOVD0100,GIVE屠龙1不能写giveitem屠龙1,字符串带空格用英文双引号"沃玛号角"。

-符号全英文半角,中文括号、中文逗号、全角空格必报Syntaxerror。

四、变量未定义/作用域错
P0-P9临时、D0-D9/N$个人持久、G0-G9全局、S0-S9字符串。未MOV初始化直接CHECK/EQUAL/CALC报variablenotdefined;自定义HUMAN/GLOBAL变量需在QManage.txt或文件头用VARIntegerHUMANXXX声明;老引擎全局变量上限G0-G499,超了直接崩。跨会话数据别用P系临时变量。

五、资源名与数据库不一致
GIVE/CHECKITEM/TAKE物品名严格等于StdItems.DB;MAPMOVE地图号在MapInfo.txt;MONGEN怪物名在Monster.txt;MonItems\怪物.txt爆率文件存在且格式物品名数量概率(1/N分母)。多一个空格、简繁体差异都算不存在。

六、路径与#CALL引用错
!Setup.txt里QFunctionDir、脚本主目录指向正确Envir;#CALL用相对路径[\QuestDiary\活动\攻城.txt]@开始,..\\层级数对数;Market_Def里NPC文件名、Merchant.txt挂载名、脚本内[@main]三者对应。路径别用中文目录。

七、引擎命令不兼容
GOM/GEE/Hero/Blue/LEG命令集不同:#CALLSUB(GOM)≠#CALL(GEE);Hero不支持CHECKONMAP;老引擎不认#SENDMAIL。复制别版脚本先对命令表,插件命令(如945Engine.dll、Gompj.dll)要在PlugList.txt加载对应插件。

八、缓存不生效处理
改完重载仍报错:关M2→删Mir200\Log\ScriptCache.dat(存在的话)→按顺序启DBServer、LoginGate、M2Server;或直接在M2点【重新加载所有脚本】。

九、标准排查顺序(照做一遍)
1.抄M2红字:文件+行号+错误类型
2.Notepad++跳行,开“显示所有字符”
3.查编码ANSI+CRLF+隐藏符
4.查#IF/#ACT配对、BREAK/GOTO、标签唯一
5.查命令拼写、参数个数、引号、引擎支持
6.查变量是否MOV/VAR初始化、作用域
7.查物品/地图/怪物名与DB一致
8.查#CALL路径真实存在
9.M2重载对应脚本→小退角色重登测
10.仍不明:分段加;注释逐步取消定位,或删ScriptCache.dat重启M2

十、典型报错速查
•Unknowncommand'XXX'→拼错/引擎不支持/插件没挂

•variablenotdefined→变量没MOV/VAR声明

•GOTO@xxx不存在→标签漏写或拼写不一致

•NPC脚本加载失败→非ANSI/头部[@main]缺失/Merchant.txt路径错

•Filenotfound→#CALL路径错或文件没建

•Syntaxerror→缺括号、中文符号、#IF无#ACT、行尾隐藏符

•TypeMismatch→数字加引号/字符串没引号/变量类型混用
[顶部]