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

传奇脚本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等级,如ADDSKILL123。技能ID对应Magic.DB里的IDX字段,用技能名反而识别失败。

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

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

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

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

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

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

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

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

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

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

SENDMSG6学习成功
BREAK

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

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

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

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

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

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

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

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

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

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

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