У меня проблема с игрой, которую я кодирую на Roblox. По сути, игра прерывается, когда персонаж возрождается.
У меня есть серверный скрипт, в котором определенные платформы «оцениваются», а затем сохраняются в таблице. В этом серверном скрипте у меня есть функция, которая, когда игрок набирает очки, запускает событие для всех клиентов, обновляющих эту таблицу. В моем локальном скрипте я сохраняю полученную таблицу в локальную таблицу, по которой локальный скрипт проверяет, доступна ли платформа. Все работает до возрождения. При возрождении локальная таблица пуста. Я пытаюсь исправить это с помощью удаленной функции, которая проверяет возрождение, если в таблице в сценарии на стороне сервера что-то есть.
У меня проблема в том, что теперь, когда игра запускается и никто еще не набрал очков, локальный скрипт проверяет, есть ли что-то в таблице, и, поскольку таблица пуста, я получаю сообщение об ошибке. Моя очередь:
local platsScored = FetchTableOfPlatsScored:InvokeServer()
ошибка:
attempt to call a table value
Вместо этого я попытался сделать что-то вроде этого:
if FetchTableOfPlatsScored:InvokeServer() then
platsScored = FetchTableOfPlatsScored:InvokeServer()
else platsScored = {}
end
Что, по моей логике, проверяет, есть ли что-то в таблице, и, если есть, загружает это в локальную таблицу, а если нет, устанавливает таблицу. Это дает мне ту же ошибку. Итак, мой вопрос: во что мне обернуть удаленную функцию сервера вызова, чтобы не получить сообщение об ошибке, если таблица пуста.
Другое решение, которое я пробовал, - это сценарий на стороне сервера для изменения функции:
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