传奇单机架设M2Server提示脚本错误,报错原因与分步排查处理方法

来源: 作者: 点击:
M2Server弹出脚本错误提示,是引擎在加载脚本文件、读取地图或者物品配置时校验失败,报错内容会直接写在M2主窗口日志内,先把完整报错文字复制保存,根据提示定位对应的脚本文件,不要直接忽略弹窗继续启动服务。

查看M2日志内的报错关键词,不同提示对应不同故障。如果提示[@开头标签找不到,代表脚本内缺少跳转标记,常见在NPC对话脚本、任务脚本。提示变量错误,是脚本变量定义格式不对,变量名称存在特殊符号或者大小写冲突。提示物品编号错误,就是物品数据库和脚本里面填写的物品ID不一致。提示怪物脚本错误,指向怪物AI或者怪物爆率文件。提示地图脚本错误,代表地图触发脚本、地图传送脚本存在语法问题。

优先检查文件编码。传奇脚本文件一般使用txt文本保存,编码必须为ANSI,使用记事本直接保存成UTF8会出现大量乱码,M2读取的时候直接判定脚本语法错误。右键打开报错的脚本文件,选择另存为,底部编码选项改成ANSI,保存之后重启M2。脚本内不要使用中文全角符号,逗号、括号、引号都必须用半角英文符号,全角标点是新手写脚本最容易踩的问题,肉眼很难分辨,引擎解析直接报错。

检查服务端存放路径。服务端文件夹不能放在带有中文名称的目录,D盘游戏服务端、桌面传奇文件夹这类目录会导致M2读取脚本文件乱码,引发脚本解析失败。推荐直接放在D盘根目录D:\mirserver,路径不能有空格、特殊字符。解压服务端压缩包的时候,安全软件可能删除部分脚本txt文件,造成脚本缺失,打开对应脚本文件夹核对文件数量,缺失文件需要从原压缩包重新提取,并且将整个服务端目录添加到信任列表。

NPC脚本类错误排查。报错提示指向NPC文件夹文件时,打开对应的NPC文本,查看对话段落,检查标签标记,[@main]、[@xxx]这类标记不能漏写,标签前面不能有多余空格。跳转命令格式写错也会报错,缺少括号、换行位置错误都会触发提示。脚本内调用物品、金币、检测等级的命令,核对引擎版本支持该指令,老引擎不支持新版脚本指令,直接加载就会抛出脚本错误。复制网上脚本片段粘贴时,网页自带隐藏换行符,粘贴后会破坏脚本结构,建议粘贴到记事本之后,手动清理多余空行。

爆率脚本错误排查。报错指向MonItems文件夹,就是怪物爆率文件异常。打开对应怪物爆率文本,每行格式为几率 物品名称,物品名称必须和DB物品数据库内名称完全一致,多一个空格、文字不同都会报错。空行、多余注释符号、末尾多余换行,都会导致M2加载爆率脚本时报错。不要直接删除爆率文件,缺失文件会持续弹出报错,可以打开文件删除无效空行,修正物品名称。

地图触发脚本错误。MapQuest_def目录存放地图触发脚本,报错提示这里的文件,需要检查地图编号、触发条件、跳转标签。地图编号写错,或者触发脚本里面调用不存在的NPC、不存在的物品,M2加载阶段抛出错误。部分地图触发脚本写了限时任务、死亡触发,指令不匹配当前引擎,会加载失败,可以临时注释对应行,注释用分号开头,保存后重启M2,判断该行指令是否为报错来源。

物品与技能数据库联动脚本错误。脚本中检测玩家身上装备、使用物品触发的脚本,如果物品数据库DB里面没有这个物品,调用脚本的时候直接报错。打开DB查看器核对物品名称,脚本里面的物品名字要和数据库完全一致,包括空格。技能脚本同理,魔法数据库缺失对应技能,脚本调用该技能命令就会报错。修改DB数据库之后,没有关闭M2重新加载,直接热启动也会出现读取异常。

引擎版本与脚本版本不兼容。高版本脚本放到老旧引擎,会出现指令不识别,弹出脚本错误。下载的脚本是其他引擎编写,直接导入当前服务端,大量新指令无法解析。遇到这种情况,有两种处理方式,更换配套引擎,或者修改脚本,删除引擎不支持的指令,替换成当前引擎可用的命令。不要混用不同来源的脚本包,不同作者编写的脚本语法习惯不一样,合并后极易冲突。

临时注释定位错误行。排查的时候,可以在可疑行最前面添加分号,代表注释,引擎会跳过这一行不读取,保存后重启M2。如果不再弹出报错,说明被注释的这一行就是问题所在,逐行注释测试,定位出错代码。一次不要注释大量内容,逐段排查效率更高。

重启顺序注意事项。修改任何脚本文件之后,必须完全关闭M2Server以及所有网关程序,再重新启动。M2运行的时候会把脚本加载进内存,直接保存txt文件不会实时生效,不关闭引擎的情况下修改脚本,报错不会消失。

其他附带情况,脚本文件设置只读属性,M2无法读取完整内容,右键脚本文件,取消只读勾选。硬盘坏道、压缩包损坏,脚本文件内容残缺,打开txt查看,文件末尾出现乱码,就需要重新解压原服务端文件。系统缺少必要运行库,少数情况下也会出现读取文本类脚本报错,安装对应运行库组件,再重新测试。

排查完成之后,清空M2日志窗口,重新启动整套服务,观察日志输出。如果不再弹出脚本错误弹窗,代表问题修复;还有报错,继续查看日志里新的提示文字,找到对应的脚本文件继续调整。不要在M2持续报错状态下直接登录游戏,脚本异常可能造成NPC功能失效、怪物不刷新、任务无法触发,甚至角色数据异常。