传奇脚本ADDSKILL与ISONMAP命令报错:引擎兼容与参数格式对照

来源: 作者: 点击:
ADDSKILL 和 ISONMAP 同时报错,本质是引擎版本与脚本命令集不匹配,参数写法在目标引擎里根本不存在或语法规则完全不同。ADDSKILL 属于技能操作命令,ISONMAP 属于地图检测条件,两个命令在不同引擎(GOM/GEE/Hero/LEG/Sky)里的参数顺序、变量类型、返回值处理差异极大,直接套用网上下载的混合脚本必炸。

一、ADDSKILL 命令在各引擎的真实参数
ADDSKILL 用于给角色或英雄添加指定技能,标准用法必须包含技能ID或技能名、技能等级,部分引擎还需要指定目标类型。
• GOM/GEE:ADDSKILL 技能名 等级,如 ADDSKILL 烈火剑法 3。技能名必须和 Magic.DB 里的 Name 字段完全一致,等级范围 0-3,超出直接报错。

• Hero 引擎:ADDSKILL 技能ID 等级,如 ADDSKILL 12 3。技能ID 对应 Magic.DB 里的 IDX 字段,用技能名反而识别失败。

• LEG 引擎:ADDSKILL 角色类型 技能名 等级,角色类型 0=主号 1=英雄,如 ADDSKILL 0 冰咆哮 3。

• Sky 引擎:ADDSKILL 技能名 等级 目标,目标可省略默认当前角色,如 ADDSKILL 召唤神兽 3 %s。

参数错误表现:技能名含空格未加引号、等级写中文“三”、技能ID超出 Magic.DB 范围、角色类型参数缺失。

二、ISONMAP 命令的检测逻辑与参数格式
ISONMAP 用于检测指定角色是否在某个地图内,通常作为 #IF 条件使用,返回真/假。
• GOM/GEE:ISONMAP 地图号,如 ISONMAP 3。地图号对应 MapInfo.txt 里的编号,支持变量 %s(当前角色)、%x(指定角色名)。

• Hero 引擎:ISONMAP 角色名 地图号,如 ISONMAP %s 3。必须指定检测对象,单独 ISONMAP 3 会被判定参数不足。

• LEG 引擎:ISONMAP 地图号 角色类型,如 ISONMAP 3 0。角色类型 0=主号 1=英雄,缺省默认主号。

• Sky 引擎:ISONMAP 地图号 坐标X 坐标Y 范围,检测角色是否在指定坐标范围内,如 ISONMAP 3 330 330 10。

常见错误:地图号写地图名(如“盟重省”)、坐标参数缺失、范围值负数、角色名变量写错。

三、NPC 脚本中 ADDSKILL 与 ISONMAP 组合错误示例
错误写法:
[@学习技能]
IF

ISONMAP NPC ISONMAP NPC # 参数混乱,引擎不识别
ADDSKILL 烈火剑法 3 # 技能名与引擎不匹配
ACT

SENDMSG 6 学习成功
BREAK

正确写法(GOM/GEE):
[@学习技能]
IF

ISONMAP 3 # 检测是否在盟重省(地图号3)
CHECKLEVEL > 35 # 等级条件
CHECKSKILL 烈火剑法 = 0 # 未学该技能
ACT

ADDSKILL 烈火剑法 3 # 添加3级烈火
SENDMSG 6 烈火剑法学习成功
BREAK

四、引擎不支持命令的排查步骤
1. 打开当前引擎的脚本命令手册(通常在引擎目录 CommandList.txt 或 Help 文件夹),搜索 ADDSKILL、ISONMAP 确认是否存在及参数格式。
2. 查看 M2Server 控制台报错信息:提示“Unknown command: ADDSKILL”说明命令不存在;“Parameter count error”说明参数数量或格式错。
3. 对照 Magic.DB 确认技能名/ID 准确,MapInfo.txt 确认地图号准确。
4. 用基础命令替代:ADDSKILL 不可用就用 GIVE 技能书 + CHECKITEM + USEITEM;ISONMAP 不可用就用 CHECKMAPNAME 或 GETMAPNAME 变量判断。

五、典型引擎差异对照表
引擎类型 ADDSKILL 参数 ISONMAP 参数 备注

GOM/GEE 技能名 等级 地图号 最常用,参数简洁

Hero 技能ID 等级 角色名 地图号 需指定检测对象

LEG 角色类型 技能名 等级 地图号 角色类型 参数顺序严格

Sky 技能名 等级 目标 地图号 X Y 范围 支持区域检测

六、脚本调试技巧
在 #IF 段前加 SENDMSG 6 调试信息,输出当前变量值;用 #ELSEACT 分支输出错误信息,定位具体哪个条件失败;逐行注释排除法,先注释 ADDSKILL 行测试 ISONMAP,再反向测试,确认是哪个命令炸。记事本保存为 ANSI 编码,避免中文乱码导致命令解析失败。

引擎不支持的命令强行使用必报错,对照官方命令手册逐条修正参数格式,或用同功能替代命令重写逻辑,是脚本稳定运行的基础。