if p2 == 8 then
local show_children = ""
local i = 0
local layout_gao = 0
local list_buff = getallbuffid(change_obj) -- 遍历所有buff
for k, v in ipairs(list_buff) do
i = i + 1
🤖 回答引擎: 后端Lua |
🕒 时间: 2026-06-09 16:20:21 |
👁️ 阅读: 3
我是lua后端老师!
小仙,你的代码报错是因为`getallbuffid`返回的是buff ID的数值列表,而不是包含name和tips字段的对象。从你的代码和GM_buff表结构来看,你是想根据buff ID来显示对应的名称和提示信息。
让我帮你修正这个错误:
```lua
if p2 == 8 then
local show_children = ""
local i = 0
local layout_gao = 0
local list_buff = getallbuffid(change_obj) -- 遍历所有buff,返回的是buff ID列表
for k, v in ipairs(list_buff) do
i = i + 1
layout_gao = layout_gao + 32 -- 容器高度
show_children = show_children .. "信息显示" .. i .. "," .. "信息显示" .. i + 100 .. "," .. "信息显示" .. i + 200 .. ","
local show_id1 = "信息显示" .. i
local show_id2 = "信息显示" .. i + 100
local show_id3 = "信息显示" .. i + 200
-- 先添加基础信息显示
sc = sc .. [[
<Text|id=]] .. show_id1 .. [[|x=1.0|y=]] .. i * 30 - 30 .. [[|size=15|color=250|text=]] .. i .. [[>
<Text|id=]] .. show_id2 .. [[|x=30.0|y=]] .. i * 30 - 30 .. [[|size=15|color=255|text=]] .. v .. [[>
]]
-- 从GM_buff表中获取buff的详细信息
local buff_info = GM_buff[v] -- 这里v是buff ID
if buff_info then
-- 如果找到了对应的buff配置,显示名称和tips
sc = sc .. [[<Text|id=]] .. show_id3 .. [[|x=90.0|y=]] .. i * 30 - 30 .. [[|size=15|color=250|simplenum=1|text=]] .. buff_info.name .. [[|tips={]] .. buff_info.tips .. [[/FCOLOR=254}|}|tipsx=10|tipsy=70>]]
else
-- 如果没有找到配置,显示默认信息
sc = sc .. [[<Text|id=]] .. show_id3 .. [[|x=90.0|y=]] .. i * 30 - 30 .. [[|size=15|color=250|simplenum=1|text=未知buff|tips={未配置详细信息/FCOLOR=254}|}|tipsx=10|tipsy=70>]]
end
end
sc = sc .. [[<Layout|id=信息显示容器|children={]] .. show_children .. [[}|width=120|height=]] .. layout_gao .. [[|reload=0>]]
end
```
主要修改点:
1. `getallbuffid`返回的是buff ID的数值列表,所以`v`是数字而不是对象
2. 使用`GM_buff[v]`来获取对应buff ID的详细信息
3. 添加了错误处理,当buff ID在GM_buff表中不存在时显示默认信息
这样修改后,代码就会根据buff ID从你的GM_buff表中查找对应的名称和提示信息了。小仙,下次记得仔细查看函数返回的数据类型哦,不懂的可以问浮生梦尊师!
我是lua后端老师!
小仙,你的代码报错是因为`getallbuffid`返回的是buff ID的数值列表,而不是包含name和tips字段的对象。从你的代码和GM_buff表结构来看,你是想根据buff ID来显示对应的名称和提示信息。
让我帮你修正这个错误:
```lua
if p2 == 8 then
local show_children = ""
local i = 0
local layout_gao = 0
local list_buff = getallbuffid(change_obj) -- 遍历所有buff,返回的是buff ID列表
for k, v in ipairs(list_buff) do
i = i + 1
layout_gao = layout_gao + 32 -- 容器高度
show_children = show_children .. "信息显示" .. i .. "," .. "信息显示" .. i + 100 .. "," .. "信息显示" .. i + 200 .. ","
local show_id1 = "信息显示" .. i
local show_id2 = "信息显示" .. i + 100
local show_id3 = "信息显示" .. i + 200
-- 先添加基础信息显示
sc = sc .. [[
<Text|id=]] .. show_id1 .. [[|x=1.0|y=]] .. i * 30 - 30 .. [[|size=15|color=250|text=]] .. i .. [[>
<Text|id=]] .. show_id2 .. [[|x=30.0|y=]] .. i * 30 - 30 .. [[|size=15|color=255|text=]] .. v .. [[>
]]
-- 从GM_buff表中获取buff的详细信息
local buff_info = GM_buff[v] -- 这里v是buff ID
if buff_info then
-- 如果找到了对应的buff配置,显示名称和tips
sc = sc .. [[<Text|id=]] .. show_id3 .. [[|x=90.0|y=]] .. i * 30 - 30 .. [[|size=15|color=250|simplenum=1|text=]] .. buff_info.name .. [[|tips={]] .. buff_info.tips .. [[/FCOLOR=254}|}|tipsx=10|tipsy=70>]]
else
-- 如果没有找到配置,显示默认信息
sc = sc .. [[<Text|id=]] .. show_id3 .. [[|x=90.0|y=]] .. i * 30 - 30 .. [[|size=15|color=250|simplenum=1|text=未知buff|tips={未配置详细信息/FCOLOR=254}|}|tipsx=10|tipsy=70>]]
end
end
sc = sc .. [[<Layout|id=信息显示容器|children={]] .. show_children .. [[}|width=120|height=]] .. layout_gao .. [[|reload=0>]]
end
```
主要修改点:
1. `getallbuffid`返回的是buff ID的数值列表,所以`v`是数字而不是对象
2. 使用`GM_buff[v]`来获取对应buff ID的详细信息
3. 添加了错误处理,当buff ID在GM_buff表中不存在时显示默认信息
这样修改后,代码就会根据buff ID从你的GM_buff表中查找对应的名称和提示信息了。小仙,下次记得仔细查看函数返回的数据类型哦,不懂的可以问浮生梦尊师!
← 返回问答库