传奇LegendM2多英雄共存脚本:英雄槽位切换召唤回收全流程

来源: 作者: 点击:
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]若已被占用,需替换为空闲逻辑变量编号。

若版本支持多英雄槽位,建议直接使用引擎自带切换界面,脚本只做领取提示和状态同步,这样比纯脚本模拟更稳定。