【发布时间】:2014-04-30 05:30:11
【问题描述】:
我需要一些关于我的游戏 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 = 3079, name = "boots of haste", value = 30000},
{id = 7412, name = "butcher's axe", value = 18000},
{id = 3381, name = "crown armor", value = 12000}
}
下面的代码可能看起来有点奇怪,因为你不知道它的用途,但基本上是这样的:上面的列表是我的游戏中的物品列表,游戏内部有一个可以存放物品的物品栏和东西。现在我想检查我的库存是否包含这些 ID。
我尝试手动添加 2 个 id 并且它有效,但我的项目列表总共包含 500 多个项目,我不想把它们都写出来。有没有办法把整个列表放在里面并检查它是否在里面?
if not table.contains({ 3035, 3043, Game_Items[id] }, tempItemCounter.id) then
这是我到目前为止所尝试的。这两个第一个 id 的工作是 3035 和 3043,然后我尝试了我所有的整个列表,只检查了 Id。但我不知道该怎么做。该代码不起作用。谁能帮我在 table.contains 中包含整个 id 列表?
基本上想在该行中包含我的整个列表,而无需手动输入所有 ID。 Game_Items[id] 不应该工作吗?这不是意味着“Game_Items”中的所有“id”吗?
谢谢!
【问题讨论】:
-
你能展示一下你的库存是什么样子的,还是和
Game_Items一样的结构?另外,您能否将两者的结构更改为映射而不是数组,例如Game_Items = { [7346] = {name="...", value=5000}, [3567] = {name = ....}, ...}?因为如果你不能,你将不得不为每个游戏项目循环遍历每个库存项目。最后,您是否想知道库存是否包含所有物品,所以即使缺少一件物品,测试也应该是错误的?