可以获取已穿戴的套装件数。根据浮生梦老师前端课程内容,可以通过以下方式检测:
```lua
-- 检测部位是否存在相应的装备
local function checkEquipMeet(suitConfig, pos)
local meet = false
local equip = nil
local equipName = nil
if not _lookPlayer then
if _IsHero then
equip = SL:GetMetaValue("H.EQUIP_DATA", pos)
else
equip = SL:GetMetaValue("EQUIP_DATA", pos)
end
else
equip = SL:GetMetaValue("L.M.EQUIP_DATA", pos)
end
local equipsuit = nil
if equip and equip.suitid and string.len(equip.suitid) > 0 then
equipsuit = equip.suitid
end
if equipsuit then
local equipSuitArray = string.split(equipsuit, "#")
for i, v in ipairs(equipSuitArray) do
if v and string.len(v) > 0 then
local posSuitConfig = SL:GetMetaValue("SUITEX_CONFIG", tonumber(v))
if posSuitConfig and posSuitConfig[1] and
posSuitConfig[1].suittype == suitConfig.suittype and
posSuitConfig[1].level >= suitConfig.level then
meet = true
equipName = equip.originName or equip.Name
break
end
end
end
end
return meet, equipName
end
-- 统计已穿戴的套装件数
local function countEquippedSuitPieces(suitConfigs)
local meetCount = 0
if suitConfigs and next(suitConfigs) then
for cfgIdx, suitConfig in ipairs(suitConfigs) do
if suitConfig and next(suitConfig) then
local equipPos = string.split(suitConfig.equipid or "", "#")
for i, pos in ipairs(equipPos) do
pos = tonumber(pos)
if pos then
local meet, equipName = checkEquipMeet(suitConfig, pos)
if meet then
meetCount = meetCount + 1
end
end
end
end
end
end
return meetCount
end
-- 使用示例
local suitConfigs = SL:GetMetaValue("SUIT_CONFIG", itemName)
local equippedCount = countEquippedSuitPieces(suitConfigs)
SL:print("已穿戴套装件数: " .. equippedCount)
```
核心逻辑:
1. 通过 `SL:GetMetaValue("EQUIP_DATA", pos)` 获取指定部位的装备数据
2. 检查装备的 `suitid` 字段,判断是否属于目标套装
3. 通过 `SL:GetMetaValue("SUITEX_CONFIG", suitId)` 获取套装配置进行对比
4. 统计满足条件的装备数量得到已穿戴件数
注意:需要区分英雄装备(`H.EQUIP_DATA`)和查看其他玩家装备(`L.M.EQUIP_DATA`)的情况。