function screenshot(msgID, p1, p2, p3, msgData)
-- 先找到父节点
local parent = GUI:Win_FindParent(110)
if GUI:Win_IsNull(parent) then
SL:Print("父节点不存在,请检查ID:110是否正确")
return
end
-- 清空父节点所有子节点
GUI:removeAllChildr
看了你的代码,有几个地方需要调整:
```lua
function screenshot(msgID, p1, p2, p3, msgData)
-- 先找到父节点
local parent = GUI:Win_FindParent(110)
if GUI:Win_IsNull(parent) then
SL:Print("父节点不存在,请检查ID:110是否正确")
return
end
-- 清空父节点所有子节点
GUI:removeAllChildren(parent)
-- 加载UI布局
GUI:LoadExport(parent, "taskui")
local ui = GUI:ui_delegate(parent)
-- 解析数据
local data = SL:json2tbl(msgData) or {}
local itemCount = #(data.items or {})
-- 隐藏所有itemnode
for i = 1, 3 do
local itemnode = GUI:getChildByName(ui.bg, "itemnode"..i)
if not GUI:Win_IsNull(itemnode) then
GUI:setVisible(itemnode, false) -- 修正:使用setVisible而不是xianshi
end
end
-- 根据物品数量显示对应的itemnode
if itemCount >= 1 and itemCount <= 3 then
local targetNodeName = "itemnode"..itemCount
local targetNode = GUI:getChildByName(ui.bg, targetNodeName)
if not GUI:Win_IsNull(targetNode) then
GUI:setVisible(targetNode, true) -- 修正:使用setVisible
-- 清空目标节点
GUI:removeAllChildren(targetNode)
-- 动态创建物品显示
local positions = {
[1] = {{x = 100, y = 34}}, -- 1个物品居中
[2] = {{x = 68, y = 34}, {x = 133, y = 34}}, -- 2个物品左右
[3] = {{x = 35, y = 34}, {x = 100, y = 34}, {x = 165, y = 34}} -- 3个物品均匀分布
}
local posTable = positions[itemCount] or {}
for i = 1, itemCount do
local itemName = "item"..i
local pos = posTable[i]
local itemStr = data.items[i] or ""
-- 解析物品字符串,格式:'木剑#100' 或 '木剑'
local itemNameOnly = itemStr
local itemCountNum = 0
local splitPos = string.find(itemStr, "#")
if splitPos then
itemNameOnly = string.sub(itemStr, 1, splitPos - 1)
itemCountNum = tonumber(string.sub(itemStr, splitPos + 1)) or 0
end
local itemIndex = SL:itemname2idx(itemNameOnly) -- 注意:根据浮生梦老师前端课程内容,itemname2idx函数可能需要确认是否存在
if pos and itemIndex then
local itemWidget = GUI:ItemShow_Create(
targetNode,
itemName,
pos.x,
pos.y,
{
index = itemIndex,
count = itemCountNum, -- 这里传入解析出的数量
look = true,
bgVisible = true,
color = 255
}
)
if not GUI:Win_IsNull(itemWidget) then
GUI:setAnchorPoint(itemWidget, 0.50, 0.50)
GUI:setTag(itemWidget, 0)
end
end
end
end
end
-- 设置文本
local function setTextIfExist(widgetName, text)
local widget = GUI:getChildByName(parent, widgetName)
if not GUI:Win_IsNull(widget) and text then
-- 这里需要根据控件类型使用正确的函数
-- 如果是Text控件,应该使用GUI:Text_setString
-- 如果是Label控件,应该使用GUI:setTitleText
-- 这里假设是Label控件
GUI:setTitleText(widget, text or "")
end
end
setTextIfExist("name", data.name)
setTextIfExist("info", data.info)
setTextIfExist("state", data.state)
end
-- 注册网络消息
SL:RegisterLuaNetMsg(8888, screenshot)
```
主要修改点:
1. `GUI:xianshi` → `GUI:setVisible`(使用正确的函数名)
2. 添加了物品数量解析逻辑,支持'木剑#100'格式
3. 将解析出的数量传入`GUI:ItemShow_Create`的count参数
4. 如果只有'木剑'没有#符号,数量默认为0
注意:`SL:itemname2idx`函数需要确认是否存在,如果不存在可能需要使用其他方式获取物品index。