错误信息精准定位
1. M2弹窗解读:当M2Server弹出错误提示(如“脚本参数不正确”),完整截图或记录弹窗内容。重点提取“脚本路径”(如\QuestDiary\QQ礼包\新手.txt)、“触发NPC/地图坐标”及“错误命令”(如CHECKBONUSPOINT)。
2. 日志追踪:进入服务端Mir200\Log目录,打开M2Error.log或ScriptError.log,按时间戳查找对应错误记录。日志通常会详细标注错误脚本的绝对路径及导致卡死的具体行号。
3. 触发场景还原:记录玩家报错时的操作(如点击“领取QQ会员礼包”、输入特定命令),锁定问题脚本范围(通常集中在QFunction-0.txt、QManage.txt或QuestDiary\QQ礼包目录)。
QQ礼包类脚本专项修复
1. 变量与命令兼容性:检查礼包脚本中的检测命令。旧版本常用的CHECKBONUSPOINT(检测灵符)等命令若在新引擎中报错,需替换为当前引擎支持的变量格式(如GAMEGOLD检测元宝)。确认#CALL调用的外部脚本路径是否存在中文或空格。
2. 文件编码与格式:用Notepad++打开礼包脚本文件(如QQ礼包.txt),检查文件编码。部分引擎仅支持ANSI编码,若保存为UTF-8会导致中文乱码或命令无法识别。同时检查脚本标签(如[@领取])后是否缺少空格或分号。
3. 插件依赖排查:部分QQ礼包功能依赖特定插件(如945Engine.dll)。检查Mir200\PlugList.txt是否加载了对应插件,若未加载或版本不匹配,会导致M.AddhpPer等插件命令报错。
服务端通用脚本排错流程
1. 语法结构校验:针对报错行号,检查脚本的#IF、#ACT、#SAY结构是否完整。常见错误包括:括号不匹配(如#IF后无对应#ACT)、GOTO跳转标签(如@MAIN)未定义、命令拼写错误(如SENDMSG写成SENDMESG)。
2. 路径与文件存在性:若错误提示“找不到脚本文件”,检查#CALL命令中的相对路径(如\QuestDiary\充值系统.txt)是否与实际文件存放路径一致。注意Linux服务器对路径大小写敏感。
3. 死循环防护:若M2报“脚本死循环”,打开Mir200\setup.txt,修改ScriptGotoCountLimit参数(默认10)为100-1000,限制GOTO循环次数,避免服务器资源耗尽。
数据库与全局配置修正
1. 变量冲突排查:检查QManage.txt中的变量初始化。若多个脚本混用同一全局变量(如G10),可能导致礼包领取状态错乱。建议为QQ礼包分配独立的变量区间。
2. 数据库字段核对:若礼包涉及读取玩家QQ号或积分,检查Mir200\Envir\QuestDiary下的积分文件是否存在,或数据库字段名是否与脚本中的CHECKTEXTLIST、ADDTextList命令匹配。
3. NPC配置同步:确认MerChant.txt中负责发放礼包的NPC配置行未丢失,且Script字段指向的脚本文件名与Market_Def目录下的实际文件一致。
紧急修复步骤:
1. 备份原脚本后,将报错脚本文件另存为ANSI编码。
2. 注释掉(在行首加;)报错行附近的复杂逻辑,改用简单命令(如#SAY)测试。
3. 重启M2Server前,清理Log目录下的旧日志,便于观察新错误信息。

