可以使用 `delitembymakeindex` 接口通过物品唯一ID来扣除物品。首先需要获取物品对象的唯一ID,然后使用该ID进行删除操作。
**示例代码:**
```lua
-- 首先通过物品对象获取物品唯一ID
local makeIndex = getiteminfo(itemObj, "MAKEINDEX")
if makeIndex and makeIndex ~= "" then
-- 通过物品唯一ID删除物品(默认扣除全部数量)
local result = delitembymakeindex(actor, makeIndex)
if result then
print("✓ 成功删除物品")
else
print("✗ 删除物品失败")
end
end
```
**说明:**
- `getiteminfo(itemObj, "MAKEINDEX")`:通过物品对象获取物品唯一ID
- `delitembymakeindex(actor, makeIndex)`:通过物品唯一ID删除物品,支持多个唯一ID用逗号串联
- 该接口可以指定扣除数量,如果不填num参数则默认扣除全部数量
如果需要批量删除多个物品,可以先将多个物品对象的唯一ID收集起来,然后用逗号连接后一次性删除:
```lua
local makeIndexList = {}
-- 收集多个物品对象的唯一ID
for i = 1, #itemObjList do
local makeIndex = getiteminfo(itemObjList[i], "MAKEINDEX")
if makeIndex and makeIndex ~= "" then
table.insert(makeIndexList, makeIndex)
end
end
if #makeIndexList > 0 then
local makeIndexString = table.concat(makeIndexList, ",")
local result = delitembymakeindex(actor, makeIndexString)
if result then
print("✓ 成功批量删除 " .. #makeIndexList .. " 个物品")
end
end
```