当前位置 : 145z游戏站 | 魔域 | 技术教程 | 

传奇服务端脚本错误排查与解决方法

热度:
M2Server报错脚本错误的类型区分

服务端启动过程中M2Server窗口出现红色或黄色字体提示脚本错误,这是最常见的故障现象。错误大体分两种:一种是M2Server启动时直接报错,引擎无法正常加载所有功能;另一种是游戏内触发某个NPC或怪物时出现功能无效或弹窗提示。

启动时报错通常涉及全局脚本,内含有严重语法错误导致引擎初始化中断。游戏内报错往往是特定NPC的局部脚本问题,不影响整体运行,但那个NPC的功能用不了。

脚本文件基础结构与存放位置

Mirserver\Mir200\Envir目录是脚本文件的存放根目录。Market_Def文件夹存放NPC脚本,文件名格式为NPC名字-地图代码.txt。QuestDiary文件夹存放功能脚本,管理系统活动、每日奖励等。MapQuest_def文件夹存放触发脚本,比如进入某个地图自动执行的事件。QFunction-0.txt和QManage.txt是两个全局脚本文件,前者管功能触发,后者管登录触发。

脚本语法错误的逐行排查

用Notepad++或VS Code这类带语法高亮的编辑器打开报错的脚本文件,搜索行号跳到对应位置,检查命令拼写是否正确,#IF、#ACT、#SAY、#ELSESAY这些段落头必须顶格写,前面不能有空格或Tab。#IF条件的括号是否成对出现,少一个括号整个逻辑段就乱了。GOTO跳转的目标标签是否存在,标签名前后是否有@符号。CHECKLEVELEX这类检查命令的写法是否符合引擎规范,有的引擎用CHECKLEVELEX,有的用CHECKLEVEL,混用了就报错。

文件编码和换行符也是常见盲区。Windows系统下的脚本文件编码必须是ANSI,换行符必须是Windows的CRLF。用Notepad++打开看右下角,编码不是ANSI就转换,换行符不是Windows(CRLF)就转换。如果编辑过脚本后发现新的报错,八成是编码或者换行符被改动了。

变量和数据库字段的校验

脚本中调用的自定义变量必须在QM或NPC声明中提前定义,未声明直接使用会触发变量不存在错误。变量名的命名规则只能包含字母、数字和下划线,其他符号会导致解析失败。脚本里引用的物品名称、怪物名称、地图编号必须和数据库里的完全一致,多一个空格或者标点符号都算不匹配。数据库路径指向是否正确,DBC2000的HeroDB别名是否指向Mirserver\Mud2\DB目录,路径不对引擎根本读不到物品和怪物数据。

NPC配置文件同步检查

NPC无法点击或点击没反应,检查MerChant.txt里NPC的脚本文件名和地图编号是否和Market_Def文件夹里的实际文件名对应。文件名为装备商人-3.txt,MerChant.txt里必须写装备商人 3,中间用空格隔开。文件名写错了或者地图编号写错了,引擎加载时找不到文件会直接跳过该NPC,游戏里NPC还在但点不了。

QuestDiary路径的核对

@CALL命令调用的文件路径必须准确。写法是#CALL [\\QuestDiary\\功能脚本\\每日奖励.txt] @每日奖励,路径中的文件夹名称和文件名要完全匹配,大小写也得对上。路径写法中路径和文件名不要打错,文件夹层次不能多也不能少。

修复流程与验证

定位到错误行后先对照引擎自带的脚本帮助文档或者找一份正常运行的相同版本脚本做对比,把出问题的段落拿过来替换测试。修改完成后保存文件,在M2Server上点击控制-重新加载-QFunction或重新加载NPC,不用重启整个引擎。重新加载后看M2Server是否还有红色报错,没有就说明问题解决了。错误类型较多时逐条排查,从一个错误开始改,改完重新加载,再看下一条错误的具体位置。
[顶部]