Scripting Helpers is winding down operations and is now read-only. More info→
Ad
Log in to vote
0

Why doesn't my data get saved all of the time?

Asked by 4 years ago

I'm trying to get my script to always save my data, but it's inconsistent in doing so. I've tried pcalls, while loops and repeats, none of which have worked. Is there something I'm doing wrong? I can't figure it out, I've looked into a lot of articles about datastore and I've asked multiple people about this. Here's the entire datastore script.

geldSave = game:GetService('DataStoreService'):GetDataStore('geldSave')
chibiSave = game:GetService('DataStoreService'):GetDataStore('chibiSave')

game.Players.PlayerAdded:Connect(function(plr)
    wait(1)
    local geld = Instance.new('IntValue')
    geld.Name = 'ChibiCoins'
    geld.Value = geldSave:GetAsync(plr.UserId) or 100
    geld.Parent = plr
    local ownedChibi = Instance.new('Folder')
    ownedChibi.Name = 'OwnedChibi'
    ownedChibi.Parent = plr
    chibiSave:GetAsync(plr.UserId)
    local chibi = chibiSave:GetAsync(plr.UserId)
    if chibi then
        local chibiclone = chibi:GetChildren():Clone()
        chibiclone.Parent = plr.OwnedChibi
    else
        return nil
    end
end)

game.Players.PlayerRemoving:Connect(function(plr)
    local chibis = plr.OwnedChibi:GetChildren()
    local saved = false
    while saved == false do
        chibiSave:SetAsync(plr.UserId, game:GetService('HttpService'):JSONEncode(chibis)) 
        geldSave:SetAsync(plr.UserId, plr.ChibiCoins.Value) 
        wait()
        saved = true
    end
    print('saved')
end)

Answer this question