我有一个 ComputerCraft 程序设置为在任何非白名单玩家靠近时打开警报器:
sensor = peripheral.wrap("top")
function arraysubset(a, b)
local s = set(b)
for _, el in pairs(a)
if not s[el] then
return false
end
end
return true
end
function sirenOn() rs.setBundledOutput("back",colors.blue) end
function sirenOff() rs.setBundledOutput("back",0) end
while 1 do
playersNear = sensor.getPlayerNames()
allowedPlayers = {"VirtualDXS","jettrom","Shad0wlurker16","Demonicmobster","FireFang0113","riggs135","DaisySnow123","MasterAlex930"}
if playersNear[1] ~= nil then
if arraysubset(playersNear,allowedPlayers) then sirenOff() else sirenOn() end
else sirenOff() end
end
但是,在第 3 行,我尝试调用 nil。这让我觉得 set() 函数在计算机上不存在。我在想:
- 是否有另一种(可能更好)方法来查找数组是否是数组
a
的子集b
和 - 如果没有,我在哪里可以获得带有 set() 函数的 API?