架设过程出现脚本错误,大多集中在脚本语法写错、文件编码不对、路径引用异常、数据库字段不匹配、引擎版本不兼容这几类问题,出现报错之后,先看M2引擎日志窗口内的红色提示文字,日志会标注出错的脚本文件名、行数,根据提示定位问题,不要直接批量修改全部脚本文件。
查看报错信息是第一步,M2运行后弹出脚本错误弹窗,或者日志持续刷红色报错,复制日志里的提示内容,找到对应的脚本文件路径和行号。如果提示缺少某个函数、命令不存在,代表引擎不支持该脚本指令;提示括号不匹配、缺少分号,就是脚本语法错误;提示读取文件失败,代表文件路径错误或者文件丢失。打开脚本编辑器,优先定位报错行,不要直接删除整段代码,避免引发连锁报错。
编码问题是新手最常遇到的一类错误,很多脚本使用记事本直接保存,默认编码为ANSI或者UTF-8带BOM,引擎读取的时候识别乱码,直接抛出脚本错误。处理方式是使用专业文本编辑器打开脚本,选择另存为,编码设置为UTF-8无BOM或者对应引擎要求的GBK格式。GOM、GEE引擎常用GBK编码,修改编码之后保存,重启M2引擎,重新加载脚本,很多乱码类报错可以直接解决。注意不要使用系统自带记事本反复编辑,记事本很容易自动改变编码格式。
语法类错误处理,脚本内括号成对出现,少写左括号或者右括号,引号没有闭合,变量名称写错,条件判断语句缺少结束标记,都会触发报错。找到日志标注的行数,逐行检查,核对if、act、elseact、endact这类关键字,每一个if都要有对应的endact结尾。变量区分大小写,自定义变量名称不能包含特殊符号。不要随意复制网上零散脚本片段直接粘贴进服务端,不同引擎的脚本语法不通用,GOM脚本放到HERO引擎里运行,会大量出现命令不存在的报错。
文件路径与文件缺失报错,日志提示无法加载某个脚本,先去对应的文件夹检查文件是否存在。部分脚本使用相对路径,移动服务端文件夹或者更改文件夹名称,路径失效。文件夹名称不要使用中文、空格和特殊符号,服务端整体路径尽量放在磁盘根目录,路径全部使用英文。如果脚本引用外部txt配置文件,检查txt文件名称是否和脚本内填写名称完全一致,大小写也要匹配,文件名不一致会直接读取失败。
引擎版本不兼容导致的报错,旧版本引擎无法识别新版脚本命令,高版本引擎读取老旧脚本也会出现函数不支持。确认当前服务端配套引擎版本,查看脚本开头标注的适配引擎。如果脚本是GEE引擎编写,当前使用GOM引擎运行,就会持续报错,要么更换匹配的引擎程序,要么改写脚本里不兼容的指令。升级引擎前要备份全套脚本,新版本引擎可能废弃旧命令,升级之后批量出现脚本异常。
DB数据库和脚本联动报错,脚本读取物品、怪物数据库字段时,字段名称写错,或者数据库内物品编号不存在,会触发脚本执行失败。例如脚本调用某个物品编号,DB里面没有这个物品,加载脚本就提示读取物品失败。打开DB工具核对物品编号、怪物编号,和脚本内填写的ID一一对应,新增物品之后,保存数据库,重启DB服务,再重新加载M2脚本。怪物脚本里调用掉落物品,ID写错,会在刷新怪物的时候弹出脚本错误。
加载顺序引发的报错,部分脚本存在依赖关系,需要先加载公共变量脚本,再加载地图、NPC脚本。如果加载顺序颠倒,读取未定义变量,直接报错。打开M2脚本加载列表,调整加载顺序,公共脚本放在最前面,NPC脚本、地图脚本、任务脚本放在后面。修改加载列表之后保存,重启M2生效。
NPC脚本常见报错,NPC对话框脚本缺少[@main]标签,跳转标签名称写错,[@xxx]标签前后空格多余,点击NPC直接报错。检查每个NPC脚本,确认[@main]入口标签存在,跳转goto后面的标签名称完全匹配,标签名称不能有空格。NPC脚本里面的文字换行过多,特殊符号乱入,也会造成解析失败,清理多余换行和无效特殊字符。
地图脚本报错,地图触发脚本里的地图编号填写错误,地图编号不存在,进入地图就触发脚本报错。检查地图文件,确认地图编号和脚本内一致,地图触发器设置的触发条件语法错误,比如时间段、人数判断写法不对,按照引擎脚本参考文档重写条件语句。
脚本修改调试操作流程,修改任何脚本之前,先备份原脚本文件,防止改错无法恢复。每次只修改一处问题,保存文件,在M2里面使用重载脚本功能,不需要重启整套服务端,快速测试改动效果。重载之后观察日志,确认报错是否消失,还有报错就继续根据日志提示定位下一行。一次性大量修改多处代码,出现多个报错,很难定位根源。
权限与文件只读报错,脚本文件设置为只读状态,引擎无法读取或者重载脚本,提示加载失败。右键脚本文件,打开属性,取消只读勾选。杀毒软件隔离服务端内脚本文件,文件被删除或者隔离,出现文件缺失报错,把整套服务端目录加入杀毒白名单,恢复被隔离的脚本文件。
需要避开常见误区,看到报错直接删除报错行,可能导致后续逻辑断裂,产生更多新报错。直接混用不同引擎的脚本,忽略语法差异,大量报错集中爆发。使用记事本编辑脚本,持续产生编码问题,反复修改依旧报错。不备份脚本直接大面积改写,改错之后无法还原。不看日志提示,盲目到处修改无关脚本,浪费大量排查时间。
调试阶段可以分步关闭脚本,在M2加载列表临时注释掉部分脚本,逐个启用,定位是哪一个文件引发报错,找到问题文件再针对性修复。熟悉引擎自带脚本命令参考文档,对照文档核对每一条指令,就能逐步解决大部分脚本错误,保证服务端正常加载运行。
传奇架设过程中脚本报错排查与修复完整教程,报错类型定位和文件修改方法
来源:
作者:
点击:

