传奇服务端脚本主要由QFunction-0.txt、QManage.txt、NPC脚本及自定义触发文件组成。脚本漏洞通常表现为对话无响应、任务无法完成、物品异常复制或命令执行失败。排查需结合日志分析、语法校验与逻辑验证三步进行。
第一步:启用脚本日志记录。在M2Server.exe同目录下找到!RunAddr.txt或Config.ini,确认LogScriptError=1已开启。重启服务端后,所有脚本执行错误将写入MirServerMir200LogScriptLog.txt。常见错误包括“Label not found”(标签缺失)、“Invalid command”(指令无效)、“Variable undefined”(变量未声明)。
第二步:使用专用脚本查看器加载脚本文件。推荐工具如MirScriptViewer或HeroScriptEditor,支持语法高亮与跳转。打开QFunction-0.txt后,重点检查以下结构:
条件判断是否闭合:每个[@Main]必须有对应处理段;
变量调用格式:、等系统变量是否拼写正确;
跳转标签一致性:#IF后@Call指向的标签是否存在,如[@BuyItem10]需在文件中明确定义;
物品操作指令:Give、Take、Mob等命令参数数量是否匹配,例如Give 天尊剑 1 需三个参数,缺一即报错。
第三步:人工逐段验证逻辑漏洞。常见问题包括:
无限循环:某段脚本无退出条件,导致玩家卡死。例如#SAY后未提供选项,直接跳回[@Main];
变量覆盖:多个NPC共用但未清空,造成数据污染;
权限绕过:未加#IF CHECKITEM或CHECKLEVEL判断,允许低级角色领取高级装备;
坐标越界:传送指令MoveTo目标地图未加载,或X/Y超出地图范围,引发角色消失。
第四步:模拟测试。创建测试角色,按脚本路径逐步操作。若某步骤无反应,立即查看ScriptLog.txt最新记录,定位具体行号。例如日志显示“Line 1428: Unknown command ‘Gvie’”,即可知是拼写错误(应为Give)。
对于复杂任务链,建议在关键节点插入临时日志输出。在脚本中加入:
ACT
SENDMSG 0 调试:已进入任务阶段2
通过游戏内消息确认执行位置,快速缩小问题范围。
所有修改必须保存为ANSI编码,UTF-8或带BOM格式会导致服务端无法识别。完成修复后,使用@ReloadScript命令热加载,无需重启服务器。脚本漏洞本质是逻辑或语法缺陷,通过系统化排查可高效解决。

