当前位置 : 145z游戏站 | 热血传奇 | 技术教程 | 

传奇单机QManage脚本变量重复定义ADDSKILL报错文件缺失问题修复教程

热度:
启动服务端之后M2控制台持续弹出脚本报错,一共三类提示,HUMAN变量赠送记录啊已存在,ADDSKILL添加火球术参数异常,还有灵符解封模块的txt记录文件找不到,报错来源全部集中在QManage.txt登录脚本以及配套的灵符解封功能脚本,这类属于脚本编写留下的缺陷,不会直接让引擎崩溃,但是玩家上线触发登录流程时,功能会失效,严重的时候会造成上线卡顿、技能添加失败、解封功能无法保存记录。

先处理第一条变量报错,变量赠送记录啊已存在,变量类型HUMAN,命令VAR。VAR是用来声明自定义变量的指令,同一个HUMAN类型变量,不能在同一段脚本里面重复声明,QManage是角色登录加载脚本,每次人物上线都会从头到尾执行一遍里面的代码。第一次上线的时候执行VAR定义赠送记录啊,变量注册成功,再次上线脚本又执行一次相同的VAR语句,引擎检测到同名变量已经存在,直接抛出这个报错。打开MirServer\Mir200\Envir\QManage.txt,使用记事本打开,搜索关键词赠送记录啊,找到VARHUMAN赠送记录啊这一行。如果这一行放在登录触发段[@Login]里面,每次登录都会重复执行定义,就是问题根源。HUMAN变量属于人物私有变量,只需要定义一次,不适合写在每次上线都会重复运行的登录段里面。解决方式有两种,第一种是把VAR声明语句移动到[@Start]段,这个段只在引擎启动加载脚本的时候执行一次,人物上线不会重复执行。第二种方案,保留在登录脚本,在VAR前面增加判断,先检测变量是否存在,不存在才执行定义,没有判断语句直接重复VAR就会持续报错。修改完成之后保存QManage.txt,重载M2脚本或者重启M2,这条变量重复提示就不再出现,不要直接删除变量,删除之后对应的赠送记录相关逻辑会失效。

第二条报错,脚本命令ADDSKILL,参数火球术3。ADDSKILL这条指令的参数格式有固定规范,不同引擎对参数校验严格程度不一样,标准格式是ADDSKILL技能名称技能等级是否强化学习标记。这里只填写了火球术和3两个参数,部分引擎缺少后面可选参数不会报错,但是GEE、GOM引擎校验严格,参数数量不匹配、技能名称和Magic.DB里面名称不一致,都会抛出脚本错误。先打开Magic.DB,核对技能数据库里面火球术的准确名称,确认没有多余空格、错别字,数据库内叫火球术,脚本里面才可以写火球术,如果数据库名称带符号或者文字差异,要同步修改脚本内的技能名。等级参数3代表三级技能,传奇技能等级上限大多是3级,这个数值本身没问题。如果引擎要求补齐参数,可以改成ADDSKILL火球术300,末尾两个0代表不开启强化、自动学习标记。这条ADDSKILL放在QManage登录段,代表角色每次上线自动添加火球术三级,想要取消这个自动给技能的逻辑,直接注释或者删除这一行脚本即可,注释在脚本前面加;符号。还要留意,角色本身已经拥有火球术的时候,再次执行ADDSKILL,部分引擎也会触发报错,可以在ADDSKILL前面增加检测,先用CHECKSKILL判断是否已经拥有该技能,没有技能才执行添加动作。

第三条报错,文件没有找到,路径指向MapQuest_def目录上级的一休制作\灵符解封\解封玩家名字记录.txt。脚本里面使用相对路径读取文本记录,脚本写的是..\一休制作\灵符解封\解封玩家名字记录.txt,两个点代表返回上一级目录,MapQuest_def的上级是Envir文件夹,完整路径就是Mir200\Envir\一休制作\灵符解封\解封玩家名字记录.txt。报错本质是文件夹层级或者txt记录文件不存在,脚本执行写入、读取记录的时候,找不到目标文件。打开MirServer\Mir200\Envir文件夹,查看里面有没有一休制作这个文件夹,进入之后确认里面是否存在灵符解封子文件夹,以及解封玩家名字记录.txt。文件夹缺失的话,手动新建对应目录,新建空白文本文档,命名严格按照报错里的名字,注意不要多出.txt后缀,系统隐藏扩展名的时候很容易命名错误。也可以修改脚本里面的文件路径,改成脚本能够识别的绝对路径或者调整相对路径写法,推荐直接补齐目录和空白记录文件,改动最小。这个txt是灵符解封功能用来留存玩家操作记录的存储文件,文件缺失不会阻断游戏登录,但是解封之后信息无法保存,重新打开记录就会丢失。

修改脚本文件的时候,所有txt脚本保存编码选择ANSI,使用UTF8编码保存,会出现中文乱码,指令识别异常,新增的记录txt文件同样保存为ANSI格式。修改完成之后,在M2控制台找到重新加载脚本选项,依次加载QManage.txt和MapQuest脚本,不用每次都重启整套服务端,重载之后可以立刻测试效果。

还有连带需要留意的点,QManage脚本是整个版本的登录核心脚本,不要随意删除里面的段落标签,[@Login]、[@Logout]、[@Start]标签不能改动位置,只调整标签内部的指令。多个报错同时出现互不冲突,可以分开依次处理,先解决变量重复定义,再修复ADDSKILL参数,最后补齐灵符解封的目录和记录文件。处理完成之后上线账号测试,查看M2控制台,三条报错信息不再刷新,赠送记录、上线给火球术、灵符解封存档功能都可以正常运行。如果后续还出现同类变量报错,处理逻辑一致,VAR变量不要放在每次人物上线循环执行的代码块内,避免反复声明同名变量触发引擎脚本校验提示。
[顶部]