Arrays Lua-如何检查列表是否包含元素
我需要一些关于我的lua游戏脚本的帮助。我需要检查我在游戏中的库存是否包含列表中的任何id 以下是我的清单:Arrays Lua-如何检查列表是否包含元素,arrays,list,lua,element,Arrays,List,Lua,Element,我需要一些关于我的lua游戏脚本的帮助。我需要检查我在游戏中的库存是否包含列表中的任何id 以下是我的清单: local Game_Items = { {id = 7436, name = "angelic axe", value = 5000}, {id = 3567, name = "blue robe", value = 10000}, {id = 3418, name = "bonelord shield", value = 1200}, {id = 30
local Game_Items = {
{id = 7436, name = "angelic axe", value = 5000},
{id = 3567, name = "blue robe", value = 10000},
{id = 3418, name = "bonelord shield", value = 1200},
{id = 3079, name = "boots of haste", value = 30000},
{id = 7412, name = "butcher's axe", value = 18000},
{id = 3381, name = "crown armor", value = 12000}
}
下面的代码可能看起来有点奇怪,因为你不知道它的用途,但基本上是这样的:上面的列表是我游戏中的物品列表,游戏中有一个可以存放物品的清单。现在我想检查我的清单是否包含这些ID
我试着手动添加两个id,结果成功了,但我的项目列表总共包含500多个项目,我不想把它们全部写出来。有没有办法把整张单子放进去,然后检查它是否在里面
if not table.contains({ 3035, 3043, Game_Items[id] }, tempItemCounter.id) then
这就是我到目前为止所尝试的。这两个第一个id分别是3035和3043,然后我尝试了所有的列表,只检查了id。但是我不知道怎么做。那个代码不起作用。谁能帮我把整个id列表都包括在表中吗
基本上我想把我的整个列表都包括在那一行,而不用手动输入所有ID。
游戏项[id]不应该工作吗?这难道不意味着“游戏项目”中的所有“id”吗
谢谢 不,这并不意味着。如果foo是一个表,那么foo[id]在foo中查找一个字段,该字段调用id所指的任何内容,例如字符串(因此,如果id为1,则得到foo[1],如果id为“bar”,则得到foo.bar,等等) 您不能在一行中完成,但可以创建一个函数,允许您编写if条件。我不确定什么是
tempItemCounter
,但假设您的库存是表单条目的键映射
inventory = {
[1234] = {....},
[1235] = {....},
...
}
其中,每个整数键都是唯一的,并且假设仅当所有项目都在库存中时才希望为true,则可以执行以下操作:
function isAllInInventory(items, inventory)
for i,item in ipairs(items) do
if inventory[item.id] == nil
return false
end
end
return true
end
if isAllInInventory(Game_Items, inventory) then
...
end
你能展示一下你的库存是什么样子的吗?或者它的结构与
Game\u物品的结构相同吗?另外,您是否可以将两者的结构更改为地图而不是数组,例如Game_Items={[7346]={name=“…”,value=5000},[3567]={name=..},}
?因为如果你做不到,你就必须对每个游戏项目的每个库存项目进行循环。最后,您想知道库存是否包含所有项目,所以即使有一个项目丢失,测试也应该为false吗?