传奇单机版脚本错误修复:变量重复定义ADDSKILL失败与文件缺失处理

来源: 作者: 点击:
这个报错包含三个独立问题:变量重复定义、技能添加失败、文件路径缺失。需要分别处理。

一、变量赠送记录已存在

报错信息中"变量类型:HUMAN 脚本命令:VAR"说明 QManage 脚本在角色登录时重复执行了变量定义。传奇引擎中,VAR 命令用于声明变量,同一个变量不能重复声明。

打开 D:MirserverMir200EnvirMarket_DefQManage-0.txt,找到类似以下代码:

VAR Integer HUMAN 赠送记录

如果这个变量在 [@Login] 或其他登录触发段中被重复定义,就会报"已存在"。

处理方法:把变量声明段用 #IF 包裹,只执行一次。例如:

IF
CHECKVAR HUMAN 赠送记录 < 0
ACT
VAR Integer HUMAN 赠送记录
SETVAR HUMAN 赠送记录 0

或者更简单的做法,把 VAR 声明移到脚本最顶部,只保留一份,不要在每个触发段里重复写。变量声明后,用 LOADVAR 从文件读取持久化数据:

LOADVAR Integer HUMAN 赠送记录 ..QuestDiary灵符解封解封玩家名字记录.txt

二、ADDSKILL 火球术失败

ADDSKILL 命令用于给角色添加技能,格式为 ADDSKILL 技能名称 等级。 报错说明技能添加未成功,常见原因有三个:

技能名称不匹配。不同版本中火球术可能写作"火球术"、"FireBall"或自定义名称。打开 DBC2000,查看 Magic.DB 中技能的实际名称,确保脚本中的名称与数据库一致。

技能等级超出范围。火球术最高3级,如果脚本中写了超过3级,可能添加失败。确认参数2填写的是1到3之间的数值。

引擎版本不支持。部分老版本引擎对 ADDSKILL 命令支持不完整,可尝试改用 GIVE 或直接修改角色技能表。

三、文件没有找到 解封玩家名字记录.txt

报错路径 D:MirserverMir200EnvirMapQuest_def..一休制作灵符解封解封玩家名字记录.txt 中,".."表示返回上一级目录,实际指向 D:MirserverMir200Envir一休制作灵符解封解封玩家名字记录.txt。

这个文件不存在,需要手动创建。在 D:MirserverMir200Envir 目录下新建"一休制作"文件夹,再在其下新建"灵符解封"文件夹,最后创建一个空的"解封玩家名字记录.txt"文件。

文件编码必须保存为 ANSI,不能用 UTF-8,否则引擎读取时可能乱码或失败。

如果 QManage 脚本中有 LOADVAR 或 CHECKLIST 等命令引用了这个文件,文件缺失就会导致报错。创建空文件后重启 M2Server,或在游戏中执行"重新加载所有NPC"使修改生效。

四、完整排查顺序

先在 QManage-0.txt 中搜索"赠送记录",删除重复的 VAR 声明,只保留一份。再用 DBC2000 核对 Magic.DB 中火球术的实际名称,修正 ADDSKILL 参数。最后在 Envir 目录下按报错路径补全缺失的 txt 文件并保存为 ANSI 编码。处理完成后重启 M2Server,观察控制台是否还有同类报错。