【问题标题】:How to determine if item exists in a list?如何确定项目是否存在于列表中?
【发布时间】:2014-05-07 02:47:43
【问题描述】:

我做了一个小游戏,我想检查一个玩家名字是否已经存在于“banlist”中。如果它有多个名称,我该怎么做? 例如,我有一个这样的播放器列表:

 PlayerList = {'Player 1', 'Player 2', 'Player 3'}

我希望能够禁止一些玩家并将他们添加到禁止列表中,以禁止他们在游戏中做一些事情。我怎样才能做到这一点?我可以像这样使用 1 个玩家名来做到这一点:

if (Player_Name ~= 'Player 2') then
print('Hello!!')
else
print('You are banned!')
end

但这仅适用于“玩家 2”。如何添加多个名称? 我不想用“或”,像这样:

if (Player_Name ~= 'Player 2' or Player_Name ~= 'Player 3') then
print('Hello!!')
else
print('You are banned!')
end

由于我的列表可能包含超过 200 个,我不想添加超过 200 个“或”。我怎样才能简单地检查玩家是否在我创建的禁止列表中?例如:

BanList = {'Player 2', 'Player 3'}

也许是这样的(ofc 这不起作用)

if (Player_Name ~= BanList) then
print('Hello!!')
else
print('You are banned!')
end

【问题讨论】:

  • 任务已经确定,直接用关键字——搜索“lua list contains”即可。

标签: arrays list lua lua-table


【解决方案1】:

您想使用循环遍历 BanList 中的所有项目,并查看其中是否包含播放器。

BanList = { 'Player 2', 'Player 3' }

function isBanned(playerName)
    for _,name in pairs(BanList) do
        if name == playerName then
            return true
        end
    end
    return false
end

if isBanned(Player_Name) then
    print('You are banned!')
else
    print('Hello!!')
end

【讨论】:

  • 还有一个问题,例如,我怎样才能将玩家添加到 BanList?例如,如果我在游戏中输入 /ban ,它会立即将其添加到列表中。现在,每次我添加某人更新列表时,我都需要重新启动游戏。喜欢 /ban Player 5
  • table.insert(BanList, playerName)
  • 这很奇怪。我在游戏中运行我的 .lua 文件,当我将玩家添加到 BanList 时,它可以在游戏中运行,但是如果我关闭游戏并重新启动它,则不会将玩家添加到 .lua 文件中。我将它们添加到列表中,但是当我使用记事本或其他任何东西打开我的 .lua 文件时,我看不到它们的名称添加在那里。我怎样才能让它永久保存在文件中?
  • Lua 不会修改自己。您需要阅读有关文件输出的信息(在 Lua 文档中查找 io.open())并编写一个配置文件,该文件将在会话之间保留名称。您可以让它将列表保存为退出前的最后一件事,并将列表加载为它在启动时所做的第一件事。
  • @user3036459 您将用于创建和初始化列表(文件中的文本)的源代码与实际列表混淆了,实际列表是由计算机内存中创建的数据结构Lua 解释器。这就像一张蓝图与一座房子:如果你在客厅里放一张沙发,这并不会神奇地在蓝图中添加一张沙发。如果你在生日蛋糕上放一根蜡烛,这不会神奇地将“蜡烛”添加到蛋糕的食谱中。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-06-17
  • 2020-06-01
  • 2013-05-07
  • 1970-01-01
  • 2019-12-18
  • 1970-01-01
相关资源
最近更新 更多