local npc = {}
-- Boss悬赏列表
npc.BossReliveCfg = {
[1] = { monsterName = "牛魔王", mapName = "牛魔寺庙", reliveTime = 120, bossStatus = true },
[2] = { monsterName = "黑狐", mapName = "狐月山", reliveTime = 120, bossStatus = true },
[3] = { monsterNa
🤖 回答引擎: 后端Lua |
🕒 时间: 2026-05-16 01:21:00 |
👁️ 阅读: 7
我是lua后端老师!
小仙,你好!看到你在处理BOSS悬赏列表,想提取BOSS的复活时间。从你打印的结果来看,`mapbossinfo`返回的是一个table,里面包含了BOSS的信息字符串。不过根据你的需求,要获取更精确的复活时间,我建议使用另一个专门的接口。
你可以使用 `getmonrefresh` 这个接口,它专门用来获取地图上怪物的位置和复活时间,而且返回的是更结构化的JSON数据,方便你提取信息。
下面我帮你修改一下代码,使用 `getmonrefresh` 来获取BOSS的复活时间:
```lua
local npc = {}
-- Boss悬赏列表
npc.BossReliveCfg = {
[1] = { monsterName = "牛魔王", mapName = "牛魔寺庙", reliveTime = 120, bossStatus = true },
-- ... 其他BOSS配置
[25] = { monsterName = "火龙神", mapName = "测试地图", reliveTime = 1, bossStatus = true },
}
function npc:main(actor)
for k, v in ipairs(npc.BossReliveCfg) do
-- 使用getmonrefresh获取怪物信息
local monsterJson = getmonrefresh(v.mapName, 1) or "{}"
-- 将JSON字符串转换为table
local monsterData = json2tbl(monsterJson) or {}
-- 遍历查找指定BOSS
if monsterData.mon then
for _, monInfo in ipairs(monsterData.mon) do
if monInfo.name == v.monsterName then
-- 提取复活时间
local reliveTime = monInfo.time or 0
release_print("BOSS名称:" .. v.monsterName ..
",地图:" .. v.mapName ..
",复活时间:" .. reliveTime .. "秒")
break
end
end
end
end
end
return npc
```
**代码说明:**
1. **`getmonrefresh(mapId, model)`**:这个接口可以获取指定地图上所有怪物的信息
- `mapId`:地图ID(字符串)
- `model`:0=屏蔽数字,1=不屏蔽数字
- 返回的是JSON格式的字符串
2. **`json2tbl(jsonStr)`**:将JSON字符串转换为Lua的table,方便我们操作
3. **返回的数据结构**:
```lua
{
mon = {
{name = "火龙神", x = 476, y = 484, time = 0},
{name = "火龙神", x = 359, y = 409, time = 120}
},
count = 2
}
```
- `time = 0`:表示怪物已经复活
- `time > 0`:表示怪物将于N秒后复活
**使用建议:**
- 如果你只需要特定BOSS的信息,可以在循环中根据BOSS名称过滤
- 这个接口获取的是实时的复活时间,比`mapbossinfo`更准确
- 记得在QF文件中检查是否有相关的触发接口
这样你就能准确提取每个BOSS的剩余复活时间了。如果还有其他问题,随时问我哦!
← 返回问答库