LegendM2本身支持合击英雄,但默认通常只允许一个英雄跟随。多英雄共存需要把“英雄槽位、召唤、回收、切换、属性保存”做成完整脚本链路。若引擎自带多英雄系统,优先使用引擎配置;若只有单英雄槽位,则用脚本模拟多英雄切换。
一、实现思路
多英雄共存有两种常见方案。
第一种是引擎原生多英雄。部分合击版本支持多个英雄槽位,玩家可在不同英雄之间切换,英雄等级、技能、装备由引擎数据库管理。这种方案最稳定,脚本只需负责召唤、回收和提示。
第二种是脚本模拟多英雄。引擎只允许一个英雄跟随,脚本通过逻辑变量记录多个英雄状态,玩家切换时回收当前英雄,再召唤目标英雄。该方案适合老版本LegendM2,但需要注意英雄数据保存和状态冲突。
二、英雄槽位变量设计
脚本中用逻辑变量记录每个英雄是否已拥有、是否已召唤。
变量建议如下:
[701] 战士英雄是否拥有
[702] 法师英雄是否拥有
[703] 道士英雄是否拥有
[704] 当前跟随英雄类型,0无,1战士,2法师,3道士
[705] 切换冷却标记
变量编号需根据版本实际占用情况调整,避免与已有功能冲突。
三、多英雄管理NPC
文件路径:
Mir200EnvirMarket_Def多英雄使者.txt
[@main]
SAY
多英雄管理系统\
\
当前跟随英雄:<@$STR(N704)>号\
\
<领取战士英雄/@GetHero1>\
<领取法师英雄/@GetHero2>\
<领取道士英雄/@GetHero3>\
\
<召唤战士英雄/@CallHero1>\
<召唤法师英雄/@CallHero2>\
<召唤道士英雄/@CallHero3>\
\
<回收当前英雄/@RecallHero>\
<切换英雄冷却/@CheckCool>\
\
[@exit]
[@GetHero1]
IF
CHECK [701] 0
CHECKLEVELEX > 35
ACT
SET [701] 1
SENDMSG 7 已获得战士英雄领取资格。
CLOSE
ELSESAY
你已拥有战士英雄,或等级不足。\
[@exit]
[@GetHero2]
IF
CHECK [702] 0
CHECKLEVELEX > 35
ACT
SET [702] 1
SENDMSG 7 已获得法师英雄领取资格。
CLOSE
ELSESAY
你已拥有法师英雄,或等级不足。\
[@exit]
[@GetHero3]
IF
CHECK [703] 0
CHECKLEVELEX > 35
ACT
SET [703] 1
SENDMSG 7 已获得道士英雄领取资格。
CLOSE
ELSESAY
你已拥有道士英雄,或等级不足。\
[@exit]
四、召唤英雄脚本
召唤前先回收当前跟随英雄,再召唤目标英雄。
[@CallHero1]
IF
CHECK [701] 1
EQUAL [704] 0
ACT
SET [704] 1
HEROCALL 战士英雄
SENDMSG 7 战士英雄已召唤。
CLOSE
BREAK
IF
CHECK [701] 1
EQUAL [704] 1
ACT
SENDMSG 7 战士英雄已在跟随。
CLOSE
BREAK
IF
CHECK [701] 1
ACT
GOTO @SwitchToHero1
BREAK
ELSESAY
你尚未领取战士英雄。\
[@exit]
[@CallHero2]
IF
CHECK [702] 1
EQUAL [704] 0
ACT
SET [704] 2
HEROCALL 法师英雄
SENDMSG 7 法师英雄已召唤。
CLOSE
BREAK
IF
CHECK [702] 1
EQUAL [704] 2
ACT
SENDMSG 7 法师英雄已在跟随。
CLOSE
BREAK
IF
CHECK [702] 1
ACT
GOTO @SwitchToHero2
BREAK
ELSESAY
你尚未领取法师英雄。\
[@exit]
[@CallHero3]
IF
CHECK [703] 1
EQUAL [704] 0
ACT
SET [704] 3
HEROCALL 道士英雄
SENDMSG 7 道士英雄已召唤。
CLOSE
BREAK
IF
CHECK [703] 1
EQUAL [704] 3
ACT
SENDMSG 7 道士英雄已在跟随。
CLOSE
BREAK
IF
CHECK [703] 1
ACT
GOTO @SwitchToHero3
BREAK
ELSESAY
你尚未领取道士英雄。\
[@exit]
五、切换英雄流程
切换时先回收当前英雄,再召唤新英雄。
[@SwitchToHero1]
IF
CHECK [705] 0
ACT
SET [705] 1
HERORECALL
DELAYGOTO 1000 @DoCallHero1
BREAK
ELSESAY
切换冷却中,请稍后再试。\
[@exit]
[@DoCallHero1]
IF
CHECK [701] 1
ACT
SET [704] 1
HEROCALL 战士英雄
RESET [705] 0
SENDMSG 7 已切换至战士英雄。
CLOSE
BREAK
[@SwitchToHero2]
IF
CHECK [705] 0
ACT
SET [705] 1
HERORECALL
DELAYGOTO 1000 @DoCallHero2
BREAK
ELSESAY
切换冷却中,请稍后再试。\
[@exit]
[@DoCallHero2]
IF
CHECK [702] 1
ACT
SET [704] 2
HEROCALL 法师英雄
RESET [705] 0
SENDMSG 7 已切换至法师英雄。
CLOSE
BREAK
[@SwitchToHero3]
IF
CHECK [705] 0
ACT
SET [705] 1
HERORECALL
DELAYGOTO 1000 @DoCallHero3
BREAK
ELSESAY
切换冷却中,请稍后再试。\
[@exit]
[@DoCallHero3]
IF
CHECK [703] 1
ACT
SET [704] 3
HEROCALL 道士英雄
RESET [705] 0
SENDMSG 7 已切换至道士英雄。
CLOSE
BREAK
六、回收英雄脚本
回收用于下线前、切换前或进入特殊地图前清理跟随英雄。
[@RecallHero]
IF
LARGE [704] 0
ACT
HERORECALL
SET [704] 0
SENDMSG 7 当前英雄已回收。
CLOSE
ELSESAY
当前没有跟随英雄。\
[@exit]
七、状态清理与保护
玩家下线或进入禁止携带英雄地图时,需要自动回收英雄,避免变量残留。
文件路径:
Mir200EnvirMapQuest_defQManage.txt
[@Logout]
IF
LARGE [704] 0
ACT
HERORECALL
SET [704] 0
[@Login]
IF
LARGE [704] 0
ACT
SENDMSG 7 检测到上次未回收英雄,已清理跟随状态。
SET [704] 0
进入特殊地图时,可在地图进入触发中增加回收判断。
文件路径:
Mir200EnvirMapQuest_defQFunction-0.txt
[@MapMove]
IF
ISONMAP 5
LARGE [704] 0
ACT
HERORECALL
SET [704] 0
SENDMSG 7 该地图禁止携带英雄,已自动回收。
地图编号5仅为示例,需替换为实际禁止携带英雄的地图编号。
八、部署步骤
在HeroDB中确认战士英雄、法师英雄、道士英雄的名称和配置。
在Market_Def下创建多英雄使者NPC脚本。
将召唤、回收、切换脚本放入对应段落。
在QManage.txt中添加下线清理。
在QFunction-0.txt中添加地图进入清理。
重载NPC、QFunction和QManage后测试召唤、切换、回收流程。
九、注意事项
HEROCALL、HERORECALL等命令名称可能随LegendM2版本不同而存在差异,若无法识别,需改为当前引擎支持的英雄召唤命令。
脚本模拟多英雄共存时,英雄等级、技能、装备通常依赖引擎英雄数据库,脚本只负责切换跟随对象,不能直接替代英雄成长数据。
切换冷却必须保留,否则玩家频繁点击可能导致召唤状态异常。
变量[701]至[705]若已被占用,需替换为空闲逻辑变量编号。
若版本支持多英雄槽位,建议直接使用引擎自带切换界面,脚本只做领取提示和状态同步,这样比纯脚本模拟更稳定。
传奇LegendM2多英雄共存脚本:英雄槽位切换召唤回收全流程
来源:
作者:
点击:

