Как мне не добавлять в таблицу элементы, существующие в другой? - PullRequest
0 голосов
/ 08 мая 2020

Я создаю игровой сервер, который позволяет Lua скриптов. По сути, сценарий получает дату сервера и выбирает текстовый файл на основе этой даты. Каждый текстовый файл содержит список имен. Смысл сценария - переименовать игроков в "забавное" название праздника.

Это мой исходный код для заполнения таблицы и присвоения имени:

-- Get Names from selected Holiday file
local holFile = io.open(filePath .. holiday .. ".txt", "r");
local holidayNames = {}

for line in holFile:lines() do
    table.insert (holidayNames, line);
end

-- Set Name to a random item in the Holiday Names table
randomItem = math.random(0, #holidayNames - 1)
Name = (holidayNames[randomItem])

Я также добавил эту часть ПЕРЕД приведенным выше кодом просто для того, чтобы таблица была заполнена текущими именами:

-- Get Current Players List
local currPlayers = io.open(filePath "players.txt", "r");
local currentPlayers = {}

for line in currPlayers:lines() do
    table.insert (currentPlayers, line);
end

Итак, в основном, когда я пытаюсь добавить элементы в holidayNames, я хочу увидеть, существуют ли они в currentPlayers , первый.

1 Ответ

0 голосов
/ 13 мая 2020

Поскольку currentPlayers уже определен, вам придется сканировать каждую строку в названиях праздников, чтобы найти совпадения. Вы можете сделать это с помощью пар:

for line in holFile:lines() do
    for __, name in pairs(currentPlayers) do
        if name ~= line then
            -- skip insertion if it's a match
            table.insert(holidayNames, line)
        end
    end
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...