local hero = gethero(play)
local ncount = getbaseinfo(hero,38) -- 获取宠物数量
for i = 0 ,ncount-1 do
local mon = getslavebyindex(hero, i) -- 获取宝宝对象
if mon and isnotnull(mon) then -- 检测是否存在
local mon_name = getbaseinfo(mon, 1)
🤖 回答引擎: 后端Lua |
🕒 时间: 2026-03-24 12:23:36 |
👁️ 阅读: 0
我是lua后端老师!
小仙,你这个需求很有意思,我来帮你一步步实现。
首先,我们需要在循环中判断英雄身上的BUFF,然后根据BUFF情况补充召唤对应的宝宝。
这里会用到 `hasbuff` 来检测BUFF,`recallmobex` 来召唤宝宝,以及 `getmoncount` 来统计已存在的宝宝数量。
下面是完整的代码示例,我加了详细的注释,方便你理解:
```lua
-- 获取英雄对象
local hero = gethero(play)
if not hero or not isnotnull(hero) then
return
end
-- 获取英雄当前已召唤的宠物数量
local ncount = getbaseinfo(hero, 38) -- 38表示获取宠物数量
-- 统计当前已存在的麒麟和月灵数量
local qilin_count = 0
local yueling_count = 0
for i = 0, ncount - 1 do
local mon = getslavebyindex(hero, i) -- 获取第i个宝宝对象
if mon and isnotnull(mon) then
local mon_name = getbaseinfo(mon, 1) -- 获取宝宝名字
release_print("第" .. (i + 1) .. "只宝宝名字:" .. mon_name)
-- 根据名字统计
if mon_name == "麒麟" then
qilin_count = qilin_count + 1
elseif mon_name == "月灵" then
yueling_count = yueling_count + 1
end
end
end
release_print("当前麒麟数量:" .. qilin_count)
release_print("当前月灵数量:" .. yueling_count)
-- 判断英雄BUFF并补充召唤
if hasbuff(hero, 50229) then
-- 有BUFF50229,需要额外召唤1个麒麟
if qilin_count == 0 then
recallmobex(hero, "麒麟", 0, 0, 1, 1, 60, 0) -- 召唤1个麒麟,持续时间60分钟
release_print("BUFF50229生效,召唤1个麒麟")
else
release_print("已存在麒麟,不再召唤")
end
end
if hasbuff(hero, 50230) then
-- 有BUFF50230,需要额外召唤2个月灵
if yueling_count == 0 then
recallmobex(hero, "月灵", 0, 0, 1, 2, 60, 0) -- 召唤2个月灵
release_print("BUFF50230生效,召唤2个月灵")
elseif yueling_count == 1 then
recallmobex(hero, "月灵", 0, 0, 1, 1, 60, 0) -- 补招1个月灵
release_print("BUFF50230生效,补招1个月灵")
else
release_print("已存在2个月灵,不再召唤")
end
end
```
**代码说明:**
1. 先遍历英雄已有的宝宝,统计麒麟和月灵的数量。
2. 用 `hasbuff` 检查英雄是否拥有对应的BUFF。
3. 根据BUFF条件和现有数量,使用 `recallmobex` 进行补充召唤。
4. 召唤时注意参数:`x` 和 `y` 填0表示在英雄身边出生,`level` 填1表示1级宝宝,`time` 是叛变时间(分钟),`color` 填0表示不改变颜色。
**注意:**
- 如果宝宝名字不是“麒麟”或“月灵”,请根据你版本里的实际怪物名称修改。
- `recallmobex` 的其他参数(如继承伤害、血量、BUFF等)可以根据你的需求调整,我这里用了最简单的形式。
小仙,如果还有不明白的地方,随时问我,或者请教浮生梦尊师!
我是lua后端老师!
小仙,你这个需求很有意思,我来帮你一步步实现。
首先,我们需要在循环中判断英雄身上的BUFF,然后根据BUFF情况补充召唤对应的宝宝。
这里会用到 `hasbuff` 来检测BUFF,`recallmobex` 来召唤宝宝,以及 `getmoncount` 来统计已存在的宝宝数量。
下面是完整的代码示例,我加了详细的注释,方便你理解:
```lua
-- 获取英雄对象
local hero = gethero(play)
if not hero or not isnotnull(hero) then
return
end
-- 获取英雄当前已召唤的宠物数量
local ncount = getbaseinfo(hero, 38) -- 38表示获取宠物数量
-- 统计当前已存在的麒麟和月灵数量
local qilin_count = 0
local yueling_count = 0
for i = 0, ncount - 1 do
local mon = getslavebyindex(hero, i) -- 获取第i个宝宝对象
if mon and isnotnull(mon) then
local mon_name = getbaseinfo(mon, 1) -- 获取宝宝名字
release_print("第" .. (i + 1) .. "只宝宝名字:" .. mon_name)
-- 根据名字统计
if mon_name == "麒麟" then
qilin_count = qilin_count + 1
elseif mon_name == "月灵" then
yueling_count = yueling_count + 1
end
end
end
release_print("当前麒麟数量:" .. qilin_count)
release_print("当前月灵数量:" .. yueling_count)
-- 判断英雄BUFF并补充召唤
if hasbuff(hero, 50229) then
-- 有BUFF50229,需要额外召唤1个麒麟
if qilin_count == 0 then
recallmobex(hero, "麒麟", 0, 0, 1, 1, 60, 0) -- 召唤1个麒麟,持续时间60分钟
release_print("BUFF50229生效,召唤1个麒麟")
else
release_print("已存在麒麟,不再召唤")
end
end
if hasbuff(hero, 50230) then
-- 有BUFF50230,需要额外召唤2个月灵
if yueling_count == 0 then
recallmobex(hero, "月灵", 0, 0, 1, 2, 60, 0) -- 召唤2个月灵
release_print("BUFF50230生效,召唤2个月灵")
elseif yueling_count == 1 then
recallmobex(hero, "月灵", 0, 0, 1, 1, 60, 0) -- 补招1个月灵
release_print("BUFF50230生效,补招1个月灵")
else
release_print("已存在2个月灵,不再召唤")
end
end
```
**代码说明:**
1. 先遍历英雄已有的宝宝,统计麒麟和月灵的数量。
2. 用 `hasbuff` 检查英雄是否拥有对应的BUFF。
3. 根据BUFF条件和现有数量,使用 `recallmobex` 进行补充召唤。
4. 召唤时注意参数:`x` 和 `y` 填0表示在英雄身边出生,`level` 填1表示1级宝宝,`time` 是叛变时间(分钟),`color` 填0表示不改变颜色。
**注意:**
- 如果宝宝名字不是“麒麟”或“月灵”,请根据你版本里的实际怪物名称修改。
- `recallmobex` 的其他参数(如继承伤害、血量、BUFF等)可以根据你的需求调整,我这里用了最简单的形式。
小仙,如果还有不明白的地方,随时问我,或者请教浮生梦尊师!
← 返回问答库