传奇HEROM2引擎 勋章触发召唤功能脚本实现教程

来源: 作者: 点击:
一、核心逻辑与前提配置

1.1 功能核心逻辑

通过脚本检测玩家佩戴的目标勋章,搭配触发条件(手动指令/攻击触发/等级达标),校验通过后执行召唤命令,同时设置召唤冷却、召唤上限等规则,确保功能稳定运行。

1.2 前提配置要求

1. 确认HEROM2引擎版本支持勋章属性扩展与召唤命令,无需额外插件,依赖内置脚本命令即可实现。

2. 提前在服务端怪物配置文件(Monster.DB)中,确认待召唤怪物的名称、血量、攻击等属性,确保怪物ID与脚本调用一致。

3. 目标勋章需已在装备配置文件(Item.DB)中配置,记录勋章名称(如“王者勋章”)及物品ID,用于脚本校验匹配。

二、三种主流召唤触发模式脚本写法

2.1 手动指令触发(佩戴勋章即可召唤)

适用于玩家佩戴指定勋章后,输入指令或点击NPC触发召唤,单次召唤1只目标怪物(以“王者勋章”召唤“黄金卫士”为例)。

2.1.1 脚本编写(NPC触发版)

脚本放置于Envir/NPCs目录下目标NPC脚本文件(如“勋章使者.txt”),代码如下:

(@main)
#IF
#SAY
<╔───────────────────────────╗/SCOLOR=254>\
<│ 勋章召唤功能 │/SCOLOR=254>\
<│ 佩戴王者勋章可召唤黄金卫士 │/SCOLOR=254>\
<│ <立即召唤/@summonmon> │/SCOLOR=254>\
<╚───────────────────────────╝/SCOLOR=254>\

(@summonmon)
#IF
CHECKITEM 王者勋章 1 // 检测是否佩戴1枚王者勋章
#AND
CHECKVAR HUMAN 2001 = 0 // 检测召唤冷却(0为可召唤)
#ACT
MOVEMON 黄金卫士 <$MAP> <$X> <$Y> 1 // 在玩家当前坐标召唤1只黄金卫士
SETVAR HUMAN 2001 1 // 标记进入冷却
SETTIMERVAR HUMAN 2001 300 0 // 300秒(5分钟)冷却后重置
MESSAGEBOX 黄金卫士召唤成功!5分钟后可再次召唤。
#ELSEACT
#IF
NOT CHECKITEM 王者勋章 1
MESSAGEBOX 请佩戴王者勋章后再尝试召唤!
#ELSE
MESSAGEBOX 召唤冷却中,5分钟后可再次召唤!
#ENDIF

2.1.2 脚本编写(指令触发版)

脚本放置于Envir/QuestDiary/Command.txt(命令脚本文件),支持玩家输入“@召唤卫士”触发,代码如下:

(@召唤卫士)
#IF
CHECKITEM 王者勋章 1
#AND
CHECKVAR HUMAN 2001 = 0
#ACT
MOVEMON 黄金卫士 <$MAP> <$X> <$Y> 1
SETVAR HUMAN 2001 1
SETTIMERVAR HUMAN 2001 300 0
MESSAGEBOX 黄金卫士召唤成功!5分钟后可再次召唤。
#ELSEACT
#IF
NOT CHECKITEM 王者勋章 1
MESSAGEBOX 请佩戴王者勋章后再尝试召唤!
#ELSE
MESSAGEBOX 召唤冷却中,5分钟后可再次召唤!
#ENDIF


2.2 攻击触发(佩戴勋章攻击时自动召唤)

适用于玩家佩戴指定勋章攻击目标时,有概率自动召唤怪物协助战斗(以“荣耀勋章”攻击时有30%概率召唤“白银卫士”为例)。

2.2.1 脚本编写

脚本放置于Envir/QuestDiary/Attack.txt(攻击触发脚本文件),代码如下:

(@Attack)
#IF
CHECKITEM 荣耀勋章 1 // 检测佩戴荣耀勋章
#AND
RANDOM 10 3 // 30%触发概率(10次中3次)
#AND
CHECKVAR HUMAN 2002 = 0 // 冷却检测
#ACT
MOVEMON 白银卫士 <$MAP> <$X> <$Y> 1 // 召唤白银卫士
SETVAR HUMAN 2002 1 // 标记冷却
SETTIMERVAR HUMAN 2002 180 0 // 180秒(3分钟)冷却
MESSAGEBOX 触发勋章特效!召唤白银卫士协助战斗!
#ELSEACT
// 未满足条件时无操作,不影响攻击动作


2.3 等级关联触发(勋章+等级双重条件)

适用于玩家佩戴指定勋章且等级达标后,方可触发召唤,召唤数量随等级提升增加(以“战神勋章”+等级60级召唤“青铜护卫”为例)。

2.3.1 脚本编写(NPC触发版)

(@main)
#IF
#SAY
<╔───────────────────────────╗/SCOLOR=254>\
<│ 等级勋章召唤 │/SCOLOR=254>\
<│ 60级+战神勋章召唤青铜护卫 │/SCOLOR=254>\
<│ 70级可召唤2只,80级可召唤3只 │/SCOLOR=254>\
<│ <立即召唤/@summonguard> │/SCOLOR=254>\
<╚───────────────────────────╝/SCOLOR=254>\

(@summonguard)
#IF
CHECKITEM 战神勋章 1
#AND
CHECKLEVELEX >= 80 // 80级及以上
#AND
CHECKVAR HUMAN 2003 = 0
#ACT
MOVEMON 青铜护卫 <$MAP> <$X> <$Y> 3 // 召唤3只青铜护卫
SETVAR HUMAN 2003 1
SETTIMERVAR HUMAN 2003 600 0 // 10分钟冷却
MESSAGEBOX 召唤3只青铜护卫成功!10分钟后可再次召唤。
#ELSEIF
CHECKITEM 战神勋章 1
#AND
CHECKLEVELEX >= 70
#AND
CHECKVAR HUMAN 2003 = 0
#ACT
MOVEMON 青铜护卫 <$MAP> <$X> <$Y> 2 // 召唤2只青铜护卫
SETVAR HUMAN 2003 1
SETTIMERVAR HUMAN 2003 600 0
MESSAGEBOX 召唤2只青铜护卫成功!10分钟后可再次召唤。
#ELSEIF
CHECKITEM 战神勋章 1
#AND
CHECKLEVELEX >= 60
#AND
CHECKVAR HUMAN 2003 = 0
#ACT
MOVEMON 青铜护卫 <$MAP> <$X> <$Y> 1 // 召唤1只青铜护卫
SETVAR HUMAN 2003 1
SETTIMERVAR HUMAN 2003 600 0
MESSAGEBOX 召唤1只青铜护卫成功!10分钟后可再次召唤。
#ELSEACT
#IF
NOT CHECKITEM 战神勋章 1
MESSAGEBOX 请佩戴战神勋章后再尝试召唤!
#ELSEIF
CHECKLEVELEX < 60
MESSAGEBOX 等级需达到60级方可触发召唤!
#ELSE
MESSAGEBOX 召唤冷却中,10分钟后可再次召唤!
#ENDIF


三、关键脚本命令与参数说明

3.1 核心召唤命令

- MOVEMON 怪物名称 地图名称 X坐标 Y坐标 召唤数量:核心召唤命令,可指定地图、坐标召唤对应数量怪物;使用<$MAP><$X><$Y>可默认召唤至玩家当前位置。

- CALLMON 怪物名称 召唤数量:简化版召唤命令,直接在玩家当前位置召唤怪物,无需指定坐标,适合快速触发场景。

3.2 校验与控制命令

- CHECKITEM 勋章名称 数量:检测玩家是否佩戴指定勋章,数量默认为1,支持检测多枚勋章叠加。

- CHECKLEVELEX >= 等级:检测玩家等级,可设置大于、小于、等于等条件,用于等级关联触发。

- RANDOM 总次数 触发次数:设置触发概率,如RANDOM 10 3代表30%触发概率,适用于攻击触发场景。

- SETVAR/CHECKVAR:变量设置与检测命令,用于标记冷却状态,HUMAN前缀代表人物专属变量,避免跨角色干扰。

- SETTIMERVAR:定时器变量命令,用于设置冷却时间,单位为秒,最后一位数字为冷却结束后变量重置值。

四、召唤怪物属性自定义设置

4.1 基础属性调整

召唤怪物的血量、攻击、防御等属性,可直接在Monster.DB中修改对应怪物条目,示例如下:

// 黄金卫士属性配置(Monster.DB中条目)
怪物名称=黄金卫士
怪物ID=1001
血量=5000
攻击=300-500
防御=200
魔防=150
攻击速度=15
移动速度=10
掉落物品=疗伤药,太阳水


4.2 召唤物存活时间限制

若需设置召唤物存活时长(如5分钟后自动消失),可在召唤脚本中添加定时器删除命令,示例如下:

(@summonmon)
#IF
CHECKITEM 王者勋章 1
#AND
CHECKVAR HUMAN 2001 = 0
#ACT
MOVEMON 黄金卫士 <$MAP> <$X> <$Y> 1
SETVAR HUMAN 2001 1
SETTIMERVAR HUMAN 2001 300 0
// 添加存活时间限制(300秒后删除召唤物)
SETTIMERVAR GLOBAL MON_DEL_<$USERNAME> 300 1
MESSAGEBOX 黄金卫士召唤成功!5分钟后自动消失,冷却5分钟。
#ELSEACT
// 未满足条件提示(略)


同时在Envir/QuestDiary/Time.txt(定时器脚本文件)中添加删除命令:

(@MON_DEL_<$USERNAME>)
#IF
CHECKMON 黄金卫士 <$MAP> <$X> <$Y> // 检测指定位置是否存在黄金卫士
#ACT
DELMON 黄金卫士 <$MAP> <$X> <$Y> 1 // 删除1只黄金卫士
MESSAGEBOX 你的黄金卫士已消失!
#ELSEACT
// 无对应召唤物时无操作


五、脚本部署与测试要点

5.1 部署步骤

1. 将编写好的脚本文件(NPC脚本/命令脚本/攻击脚本)放入对应目录,确保文件名与服务端配置一致(如Command.txt需放在QuestDiary目录下)。

2. 修改Monster.DB或Item.DB后,保存文件并关闭,无需重启服务器,修改立即生效。

3. 登录服务端后台,执行“重新加载脚本”“重新加载怪物配置”命令,确保脚本与属性配置加载成功。

5.2 测试要点

- 佩戴校验测试:未佩戴目标勋章时触发召唤,确认提示信息准确,无召唤动作。

- 条件触发测试:满足勋章+等级/概率条件时,确认召唤物正常出现,属性与设置一致。

- 冷却测试:召唤后立即再次触发,确认进入冷却状态,冷却结束后可正常召唤。

- 存活时间测试:设置存活时长后,确认召唤物在规定时间内自动消失,提示信息正常。

5.3 常见问题排查

- 召唤无反应:检查脚本中怪物名称、勋章名称是否与配置文件一致,区分大小写;确认召唤命令参数完整(如坐标、数量)。

- 召唤物属性异常:核对Monster.DB中怪物属性配置,确保血量、攻击等数值无输入错误,保存后重新加载怪物配置。

- 冷却失效:检查SETTIMERVAR命令参数,确认秒数设置正确;避免变量编号重复(如2001变量被其他脚本占用)。

- 攻击触发无概率:检查RANDOM命令参数,总次数需大于触发次数,如RANDOM 10 3不可写为RANDOM 3 10。

六、功能扩展与场景适配

6.1 多勋章召唤差异化配置

不同勋章对应召唤不同怪物,可通过多分支CHECKITEM命令实现,示例:佩戴王者勋章召唤黄金卫士,佩戴荣耀勋章召唤白银卫士,代码如下:

(@summonmon)
#IF
CHECKITEM 王者勋章 1
#AND
CHECKVAR HUMAN 2001 = 0
#ACT
MOVEMON 黄金卫士 <$MAP> <$X> <$Y> 1
SETVAR HUMAN 2001 1
SETTIMERVAR HUMAN 2001 300 0
MESSAGEBOX 黄金卫士召唤成功!
#ELSEIF
CHECKITEM 荣耀勋章 1
#AND
CHECKVAR HUMAN 2001 = 0
#ACT
MOVEMON 白银卫士 <$MAP> <$X> <$Y> 1
SETVAR HUMAN 2001 1
SETTIMERVAR HUMAN 2001 180 0
MESSAGEBOX 白银卫士召唤成功!
#ELSEACT
MESSAGEBOX 未佩戴可召唤勋章或召唤冷却中!
#ENDIF

6.2 召唤物协助战斗设置

让召唤物自动攻击玩家当前目标,可在召唤脚本中添加攻击指令,示例:

#ACT
MOVEMON 黄金卫士 <$MAP> <$X> <$Y> 1
ATKMON 黄金卫士 <$TARGET> // 命令黄金卫士攻击玩家当前目标
SETVAR HUMAN 2001 1
SETTIMERVAR HUMAN 2001 300 0


6.3 勋章强化召唤效果

强化后的勋章可提升召唤数量或属性,如“强化王者勋章”召唤2只黄金卫士,可通过检测勋章前缀实现,代码如下:

#IF
CHECKITEM 强化王者勋章 1
#AND
CHECKVAR HUMAN 2001 = 0
#ACT
MOVEMON 黄金卫士 <$MAP> <$X> <$Y> 2 // 召唤2只黄金卫士
// 提升召唤物属性(临时加成)
SETMONATTR 黄金卫士 血量 +2000 攻击 +100 // 临时增加2000血量、100攻击
SETVAR HUMAN 2001 1
SETTIMERVAR HUMAN 2001 300 0
MESSAGEBOX 强化勋章召唤2只黄金卫士(属性加成)!


以上脚本均适配HEROM2引擎全系列版本,严格遵循引擎脚本语法规范,部署后无需额外插件即可正常运行。可根据运营需求,灵活调整勋章类型、召唤怪物、触发条件及冷却时间,适配不同玩法场景,提升游戏趣味性与玩家体验。