Хранилища данных Roblox не обновляют данные - PullRequest
0 голосов
/ 05 февраля 2019

Я застрял в последние пару дней, когда данные не сохраняются, мой код не выдает никаких ошибок, и, насколько я вижу, он должен работать.Вот код:

local DataStore = game:GetService("DataStoreService"):GetDataStore("PlayerStats001")


-- Function to make the leaderstats
function onPlayerJoin(player)

    local Leaderstats = Instance.new("Folder", player)
    Leaderstats.Name = ("leaderstats")

    local leadermoney = Instance.new("IntValue", Leaderstats)
    leadermoney.Name = ("Money")


    local leaderrescues = Instance.new("IntValue", Leaderstats)
    leaderrescues.Name = ("Rescues")


    local key = "player-" .. player.userId

    local savePoints = {}
    savePoints = DataStore:GetAsync(key)

    if savePoints then
        print("Old leaderstats")
        -- Has been to game before, save format = {money, rescues}
        leadermoney.Value = savePoints[1]
        leaderrescues.Value = savePoints[2]
    else
        print("New leaderstats")
        leadermoney.Value = 25000
        leaderrescues.Value = 0
        local valuesToSave = {leadermoney.Value, leaderrescues.Value}
        DataStore:SetAsync(key, valuesToSave)
    end

end

-- Saves player data
function save(player)
    print("Started save")
    local key = "player-" .. player.userId
    local valuesToSave = {player.leaderstats:FindFirstChild("Money").Value , player.leaderstats:FindFirstChild("Rescues").Value}
    DataStore:SetAsync(key, valuesToSave)
    print("Finished save", valuesToSave[1], valuesToSave[2])
end

function playerLeaves(player)
    save()
end

-- Runs the save function if a client requests a save
game.Lighting.RemoteEvents.Save.OnServerEvent:Connect(save)

-- Runs the playerLeaves function if a player leaves
game.Players.PlayerRemoving:Connect(save)

-- Runs the onPlayerJoin function when a player joins
game.Players.PlayerAdded:Connect(onPlayerJoin)

Когда я запускаю его (у меня есть локальный скрипт в GUI стартера, который работает):

function autoSaveRequester()
    print("Started auto save function.")
    while wait(15) do
        print("Finnished wait")
        game.Lighting.RemoteEvents.Save:FireServer()
    end
end

spawn(autoSaveRequester)

выводит то же значение, что и до того, как я его изменяюи не новый, любая помощь приветствуется.

1 Ответ

0 голосов
/ 21 февраля 2019

Ваш код не работает из-за этой строки;

game.Players.PlayerRemoving:Connect(save)

Вы переходите прямо к функции сохранения, а не к PlayerRemoving, а также не определяете игрока.

Обновите эту строку следующим образом:

game.Players.PlayerRemoving:Connect(playerLeaves)

Если это помогло, не забудьте поднять голос!Если это ответило на ваш вопрос, не забудьте нажать галочку!

Если вам нужно что-то еще, прокомментируйте ниже.

Росс.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...