Попытка вызвать ошибку табличного значения в Roblox studio - PullRequest
0 голосов
/ 25 января 2020

У меня проблема с игрой, которую я пишу на Roblox. По сути, игра прерывается, когда персонаж возрождается.

У меня есть серверный скрипт, в котором определенные платформы «забиваются», а затем сохраняются в таблице. В этом серверном скрипте у меня есть функция, которая, когда игрок забивает, запускает событие для всех клиентов, обновляющих эту таблицу. На своем локальном сценарии я сохраняю полученную таблицу в локальной таблице, по которой локальный сценарий проверяет, доступна ли платформа. Все работает до возрождения. При респауне локальная таблица пуста. Я пытаюсь исправить это с помощью удаленной функции, которая при респауне проверяет, есть ли в таблице серверного скрипта что-то.

У меня проблема в том, что сейчас, когда запускается игра, и никто пока что забил, локальный скрипт проверяет, есть ли в таблице что-то, и так как таблица пуста, я получаю ошибку. Моя строка:

local platsScored = FetchTableOfPlatsScored:InvokeServer()

ошибка:

attempt to call a table value

Вместо этого я попытался сделать что-то вроде этого:

if FetchTableOfPlatsScored:InvokeServer() then 
    platsScored = FetchTableOfPlatsScored:InvokeServer() 
else platsScored = {} 
end

Который, в моей логике c , проверяет, есть ли что-то в таблице и загружает ли оно в локальную таблицу, а если не устанавливает таблицу. Это дает мне ту же ошибку. Поэтому мой вопрос заключается в том, что мне нужно для того, чтобы обернуть мою удаленную функцию invoke server, чтобы не получалось сообщение об ошибке, если таблица пуста.

Другое решение, которое я попробовал, заключается в сценарии на стороне сервера для изменения функции. :

local function passTable()
    return platsScored

end

FetchTableOfPlatsScored.OnServerInvoke = passTable()

к чему-то вроде

local function passTable()
    if platsScored ~= nil then
       return platsScored
    else
    ** what do I write here that won't break the code*
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...