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

Datastore not saving tables?

Asked by 4 years ago

I've literally been looking for hours for a fix for this and it's a real headache. If someone could help me, that'd be greatly appreciated.

code:

_G.infinite=game.ReplicatedStorage.infinite.Value
local DataStoreService=game:GetService("DataStoreService")
local ds=DataStoreService:GetDataStore("Player_Data")

game.Players.PlayerAdded:connect(function(plr)
    local leaderstats=Instance.new("IntValue",plr);leaderstats.Name="leaderstats"
    local clout=Instance.new("IntValue",leaderstats);clout.Name="Clout"
    local coins=Instance.new("IntValue",plr);coins.Name="Coins"
    local storage=Instance.new("NumberValue",plr);storage.Name="Storage"
    local equipped=Instance.new("ObjectValue",plr);equipped.Name="equipped";equipped.Value=game.ReplicatedStorage.FlexTools:FindFirstChild("1ยข")
    storage.Value=5
    local clout_multiplier=Instance.new("NumberValue",plr);clout_multiplier.Name="clout_multiplier";clout_multiplier.Value=1
    local coin_multiplier=Instance.new("NumberValue",plr);coin_multiplier.Name="coin_multiplier";coin_multiplier.Value=1
    local dela=Instance.new("BoolValue",plr);dela.Name="DelayActive";dela.Value=false
    local rank=Instance.new("StringValue",plr.leaderstats);rank.Name="Rank";rank.Value="Noob"
    local dsLoaded=Instance.new("BoolValue",plr);dsLoaded.Name="dsLoaded"
    --Datastore Part--
    local PlayerData;
    local CanSave=Instance.new('BoolValue',plr)
    CanSave.Name="CanSaveData"
    CanSave.Value=true
    local DataFetchSuccess,ErrorMessage=pcall(function()
    PlayerData=ds:GetAsync(tostring(plr.UserId))
    end)
    if DataFetchSuccess then --Data successfully loaded.
        dsLoaded.Value=true
        print("player data loaded,")
        if PlayerData~=nil then
            --[[
            local t=PlayerData
            plr.leaderstats.Clout.Value=t.clout
            plr.leaderstats.Rank.Value=t.rank
            plr.Storage.Value=t.storage
            plr.Coins.Value=t.coins
            plr.equipped.Value=t.equipped
            plr.coin_multiplier.Value=t.multiplier
            plr.clout_multiplier.Value=t.cMultiplier
            --]]
        else
            local first=Instance.new("Model",plr);first.Name="FirstTime"
        end
    else
        plr.CanSaveData.Value=false
        plr:Kick("Your data failed to load, please try again in a few minutes.")        
    end
end)

game.Players.PlayerRemoving:connect(function(plr)
    if plr.CanSaveData.Value==false then return end
    print("player leaving and can save data.")
    local PlayerData={
    clout=plr.leaderstats.Clout.Value,
    rank=plr.leaderstats.Rank.Value,
    storage=plr.Storage.Value,
    coins=plr.Coins.Value,
    equipped=plr.equipped.Value,
    multiplier=plr.coin_multiplier.Value,
    cMultiplier=plr.clout_multiplier.Value
    }
    local DataWriteSuccess,ErrorMessage=pcall(function()
        ds:SetAsync(tostring(plr.UserId),{PlayerData})
        print(PlayerData)
    end)
    if not DataWriteSuccess then --Well ship, this might go bad for the player. Sorry player :/
        print("poop")
        local Retry_Count=0
        while Retry_Count<6 do
            wait(60)
            local Succeded,Error=pcall(function()
                ds:SetAsync(tostring(plr.UserId),PlayerData)
            end)
            if Succeded then break end
            Retry_Count=Retry_Count+1
        end
    end
end)
0
Were is the error? Since I can't find it I would say use different datastores to save each data of the player. Like saving coins would be 1 datastore and the 2nd would be PlayerWeapons (to save a person's weapons, just create codes for each weapon the player has.) ViviTheLuaKing 103 — 4y
0
where* ViviTheLuaKing 103 — 4y
0
It just fails to save (line 64) arondevs 65 — 4y

Answer this question