传奇M2显示错误变量信息脚本报错的完整修复

来源: 作者: 点击:
M2server启动后刷出满屏的“脚本错误”、“变量不存在”这类红字,后面跟着一堆看不懂的参数,版本本身没动过手脚但就是报错。这种情况很常见,根源在于脚本引擎在执行代码时,遇到了无法识别的变量名称、格式错误的命令或者缺失的关联文件。下面直接针对不同报错类型列出具体的修复步骤。

处理“变量不存在”类报错

M2报错信息里出现“变量XXX不存在,变量类型:HUMAN”这样的提示,后面跟着CALCVAR或SAVEVAR命令。这说明脚本里使用了一个自定义变量,但没有提前声明这个变量的数据类型和保存路径。传奇引擎在处理自定义变量时,需要先在某个地方“注册”一下,告诉它这个变量是整型还是字符型,是个人变量还是全局变量,保存在哪个文本文件里。

打开报错信息里提到的NPC脚本文件,找到调用这个变量的那一行。然后在脚本头部或者在QuestDiary目录下的相关变量管理文本里,补上变量声明语句。格式通常是VAR Integer HUMAN 变量名 或者 VAR String HUMAN 变量名。声明完之后,还要确保SAVEVAR命令里指定的保存路径对应的文件夹和文本文件真实存在,不存在的手动新建一个空白文本文件。

处理“变量已存在”类报错

报错信息显示“变量XXX已存在,变量类型:HUMAN”,这种情况通常发生在重复声明同一个变量的时候。比如同一个变量在脚本里被VAR命令声明了两次,或者是在不同的脚本文件里重复声明。引擎加载到第二次声明时就会报错。

打开所有相关的脚本文件,搜索这个变量名,找到所有出现VAR命令的地方。保留其中一处声明,把其他重复的VAR语句删除或者注释掉。注意不要删除使用变量的地方,只删除声明的那一行。

处理“脚本命令参数错误”类报错

报错信息类似“脚本命令:CREDITPOINT NPC名称:万事通 参数1: 参数2:”后面全是空的。这说明脚本里调用的命令后面没有跟上必要的参数。CREDITPOINT命令后面必须跟加减符号和数值,比如CREDITPOINT + 1。如果只写了CREDITPOINT没写后面的东西,引擎不知道要执行什么操作,就会报参数错误。

找到对应的NPC脚本文件,定位到报错的行。检查命令格式,把缺失的参数补全。如果不确定命令的正确格式,可以参考同类脚本或者引擎说明书。另一种情况是SENDMSG命令的参数1填了9,但引擎里9号消息类型不存在。SENDMSG的消息类型代码有固定范围,通常1到7是有效值,填了范围外的数字就会报错。改成有效的消息类型代码即可。

处理“自定义变量与引擎不兼容”问题

有些版本是从别的引擎移植过来的,原来的脚本用了某类变量,新引擎不支持或者支持的上限不同。比如有的引擎支持自定义变量以U开头,有的不支持。或者在Legend引擎里,标识[001]-[499]是固定的,超出这个范围就会异常。还有一种情况是变量名用了P、G、M、I、D、N、S、A这些系统保留字开头,导致冲突。

检查脚本里自定义变量的命名,避免使用引擎保留的变量名前缀。如果是因为引擎更换导致的命令不兼容,需要对照新引擎的说明书,把旧命令批量替换成新引擎支持的写法。比如有的引擎用CHECKVAR,有的用CHECK [XXX]这类不同格式。

处理“变量保存路径错误”问题

报错信息里提到某个保存路径下的文本文件找不到,比如“..\QuestDiary\冷风数据\RWSWSave.txt”。这是因为脚本里用SAVEVAR命令指定了变量保存的位置,但这个文件夹路径在服务端里并不存在,或者文件名写错了。

按照报错提示的路径,一级一级检查QuestDiary目录下有没有对应的文件夹和文本文件。缺少文件夹就手动新建,缺少文本文件就新建一个空白文档并重命名为指定的文件名。注意文件名和路径的大小写,有些引擎对大小写敏感。

处理“脚本死循环”类报错

M2报错出现“[脚本死循环]”字样,伴随GOTO命令跳转频繁。这是因为脚本里的循环逻辑没有出口,或者循环次数超出了引擎的限制。GOTO命令用得太滥,或者多个GOTO相互跳转形成了死胡同。

打开!Setup.txt文件,找到ScriptGotoCountLimit=这一项,后面的数字是引擎允许的GOTO循环次数。如果脚本确实需要较多循环,把这个数值调大,比如改成50000以内。但如果调大后还是报错,那就是脚本逻辑本身有问题。检查脚本里的GOTO跳转,确保每个跳转都有正确的出口条件,避免多个GOTO命令在同一个#ACT下连续执行,一个执行段里最好只用一个GOTO。

处理“标识范围超限”问题

报错涉及标识[XXX]的操作,但XXX的数值超出了引擎支持的上限。不同引擎支持的标识数量不同,有的支持499个,有的支持更多。如果脚本里用了标识[500]而引擎只支持到499,就会报错。

查看引擎说明书确认当前引擎的标识数量上限,把脚本里超范围的标识改成范围内的数字。或者如果引擎支持调整标识总数,可以在M2选项里把标识数量改大。

处理“变量类型不匹配”问题

脚本里对变量进行了运算,但变量的类型不支持这种运算。比如对字符型变量进行加减乘除,或者把字符串赋值给整型变量。引擎在计算时会因为类型不匹配而报错。

检查报错行附近的变量操作,确认每个变量的类型。整型变量只能用整型数值进行运算,字符型变量不能用数学符号操作。如果需要对字符型变量里的数字进行运算,先用相关命令转换成整型再操作。

完成上述检查修改后,保存所有文件,在M2控制台上执行重新加载脚本配置的操作,或者直接重启整个服务端。观察启动信息,直到脚本错误报红不再出现,NPC功能测试正常,就代表问题解决了。