У меня проблема с игрой, которую я пишу на 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