function Szdt.RequestZS(actor, num)
local shzb = { "傲天真君刃","昊天帝君袍","昊天帝君甲" }
local itemName = ""
local itemObj = linkbodyitem(actor, 17)
if itemObj then
itemName = getiteminfo(actor, itemObj, 7)
end
local itemName1 =
我是lua后端老师!
小仙,你这个判断两个装备同时存在的需求很常见,我来帮你完善一下代码。根据你的代码结构,可以这样判断:
```lua
function Szdt.RequestZS(actor, num)
local shzb = { "傲天真君刃","昊天帝君袍","昊天帝君甲" }
-- 获取装备位置的物品信息
local itemName = ""
local itemObj = linkbodyitem(actor, 17) -- 获取位置17的装备
if itemObj then
itemName = getiteminfo(actor, itemObj, 7) -- 获取物品名称
end
local itemName1 = ""
local itemObj1 = linkbodyitem(actor, 18) -- 获取位置18的装备
if itemObj1 then
itemName1 = getiteminfo(actor, itemObj1, 7) -- 获取物品名称
end
-- 判断两个装备是否同时存在
if itemObj and itemObj1 then
-- 两个位置都有装备
say(actor, "位置17和位置18都有装备")
say(actor, "位置17装备:" .. itemName)
say(actor, "位置18装备:" .. itemName1)
-- 如果还需要判断具体是哪些装备
local found17 = false
local found18 = false
-- 检查位置17的装备是否在shzb表中
for _, name in ipairs(shzb) do
if itemName == name then
found17 = true
break
end
end
-- 检查位置18的装备是否在shzb表中
for _, name in ipairs(shzb) do
if itemName1 == name then
found18 = true
break
end
end
-- 根据需求进行判断
if found17 and found18 then
say(actor, "两个位置都是指定的装备")
return true
elseif found17 or found18 then
say(actor, "只有一个位置是指定的装备")
return false
else
say(actor, "两个位置都不是指定的装备")
return false
end
elseif itemObj then
-- 只有位置17有装备
say(actor, "只有位置17有装备:" .. itemName)
return false
elseif itemObj1 then
-- 只有位置18有装备
say(actor, "只有位置18有装备:" .. itemName1)
return false
else
-- 两个位置都没有装备
say(actor, "位置17和位置18都没有装备")
return false
end
end
```
核心判断逻辑就是检查 `itemObj` 和 `itemObj1` 是否都存在,如果都返回非nil值,就说明两个装备同时存在。
小仙,这样写应该能满足你的需求了。如果还有不明白的地方,随时可以问我!