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

does anyone else have a problem with unrealiable datastores?

Asked by 6 years ago

do any of you ever have your datastores not update randomly? or any other errors?

does anyone think using tables in my datastore would help?

ill link my script below if you want to look (its kinda long)

--Variables
local leveldata = game:GetService("DataStoreService"):GetDataStore("level")
local EXPdata = game:GetService("DataStoreService"):GetDataStore("EXP")
local xpLeveldata = game:GetService("DataStoreService"):GetDataStore("xpLevel")
local Golddata = game:GetService("DataStoreService"):GetDataStore("Gold")
local toolsdata = game:GetService("DataStoreService"):GetDataStore("Tools")
local HttpService = game:GetService("HttpService")


--Data Storage Save
function savedata(dataname, playerid, value)
    game:GetService("DataStoreService"):GetDataStore(dataname):SetAsync(playerid, value)
end

--Leaderboard Variables
game.Players.PlayerAdded:connect(function(player)
    playerKey = "user."..player.userId  -- user key

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

    --Gold
    local gold = Instance.new("IntValue")
    gold.Name = "Gold"
    gold.Value = Golddata:GetAsync(playerKey) or 0
    gold.Parent = leaderstats


    --Level
    local level = Instance.new("IntValue")
    level.Value = leveldata:GetAsync(playerKey) or 1
    level.Name = "Level"
    level.Parent = leaderstats


    --XP
    local EXP = Instance.new("IntValue")
    EXP.Value = EXPdata:GetAsync(playerKey) or 0
    EXP.Parent = player
    EXP.Name = "Exp"

    --XP Needed
    local xpLevel = Instance.new("IntValue")
    xpLevel.Value = xpLeveldata:GetAsync(playerKey) or 84
    xpLevel.Name = 'ExpNeeded'
    xpLevel.Parent = player

    --tools
    local tools = toolsdata:GetAsync(playerKey)
    if tools then
        for i,v in pairs(tools) do
            local tool = game.ReplicatedStorage.Tools:FindFirstChild(v)
            if tool then 
                tool:Clone().Parent = player.Backpack
                tool:Clone().Parent = player.StarterGear

            end
        end
    end


end)


game.Players.PlayerRemoving:Connect(function(player) -- save player stats
    local toolsToSave = {}      
    for i,v in pairs(player.StarterGear:GetChildren()) do
        if v then
            table.insert(toolsToSave,v.Name)
        end
    end
    game:GetService("DataStoreService"):GetDataStore('Tools'):SetAsync(playerKey, toolsToSave)
    savedata('level',playerKey,player.leaderstats.Level.Value)
    savedata('EXP',playerKey,player.Exp.Value)
    savedata('xpLevel',playerKey,player.ExpNeeded.Value)
    savedata('Gold',playerKey,player.leaderstats.Gold.Value)
    print('data saved')
end)

Answer this question