0
У меня есть программа ComputerCraft набор для включения сирены, когда-либо не-белый список игроков вблизи:Lua Набор функций в 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 я получаю попытку вызова ноль. Это заставляет меня думать, что функция set() отсутствует в computercraft. Я задаюсь вопросом:
- Есть еще один (возможно лучше) способ найти, если массив
a
подмножество массиваb
и - Если нет, где я могу получить API с помощью функции множества()?
Там нет 'set' функция/тип данных в ванильным Lua , ни в вычислительной технике, насколько мне известно. Реализуйте его самостоятельно: 'local s = {}; для _, v в ipairs (arr) do s [v] = true; конец; return s' –
Я получил заданный код из этого ответа: http://stackoverflow.com/a/28302698/3042952 –