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

My datastore script isn't saving the values when the server shutdown?

Asked by 6 years ago
Edited 6 years ago
local DS = game:GetService("DataStoreService"):GetDataStore("ALPHA_MALE")

game.Players.PlayerAdded:Connect(function(players)
--Key
local Key = 'ID-' ..players.UserId          
--Loading Values
game.ServerStorage:WaitForChild("Stands")
local plrfile = game.ServerStorage.Stands:WaitForChild(players.Name)
local STypes = plrfile:WaitForChild("STypes")
local SStats = plrfile:WaitForChild("SStats")

local CR = STypes:WaitForChild("CR")
local LR = STypes:WaitForChild("LR")
local Auto = STypes:WaitForChild("Auto")
local Bound = STypes:WaitForChild("Bound")
local Colony = STypes:WaitForChild("Colo")
local Wear = STypes:WaitForChild("Wear")

local POW = SStats:WaitForChild("POW")
local SPD = SStats:WaitForChild("SPD")
local RNG = SStats:WaitForChild("RNG")
local DUR = SStats:WaitForChild("DUR")
local PER = SStats:WaitForChild("PER")
local LER = SStats:WaitForChild("LER")
--Table Store
local StoringTable = {}
--Get Data and Store
local Save_Load = DS:GetAsync(Key)
--Def Val
    if Save_Load ~= nil then
        if #Save_Load >= 1 then
            print("Has Data")
            --[[if Save_Load[] ~= nil then
                --.Value = Save_Load[]
                --table.insert(StoringTable , Save_Load[])
                --end]]
            if Save_Load[1] ~= nil then
                CR.Value = Save_Load[1]
                table.insert(StoringTable , Save_Load[1])
            end
            if Save_Load[2] ~= nil then
                LR.Value = Save_Load[2]
                table.insert(StoringTable , Save_Load[2])
            end
            if Save_Load[3] ~= nil then
                Auto.Value = Save_Load[3]
                table.insert(StoringTable , Save_Load[3])
            end
            if Save_Load[4] ~= nil then
                Bound.Value = Save_Load[4]
                table.insert(StoringTable , Save_Load[4])
            end
            if Save_Load[5] ~= nil then
                Colony.Value = Save_Load[5]
                table.insert(StoringTable , Save_Load[5])
            end
            if Save_Load[6] ~= nil then
                Wear.Value = Save_Load[6]
                table.insert(StoringTable , Save_Load[6])
            end
            if Save_Load[7] ~= nil then
                POW.Value = Save_Load[7]
                table.insert(StoringTable , Save_Load[7])
            end
            if Save_Load[8] ~= nil then
                SPD.Value = Save_Load[8]
                table.insert(StoringTable , Save_Load[8])
            end
            if Save_Load[9] ~= nil then
                RNG.Value = Save_Load[9]
                table.insert(StoringTable , Save_Load[9])
            end
            if Save_Load[10] ~= nil then
                DUR.Value = Save_Load[10]
                table.insert(StoringTable , Save_Load[10])
            end
            if Save_Load[11] ~= nil then
                PER.Value = Save_Load[11]
                table.insert(StoringTable , Save_Load[11])
            end
            if Save_Load[12] ~= nil then
                LER.Value = Save_Load[12]
                table.insert(StoringTable , Save_Load[12])
            end
        print(Save_Load[1],Save_Load[2],Save_Load[3],Save_Load[4],Save_Load[5],Save_Load[6],Save_Load[7],Save_Load[8],Save_Load[9],Save_Load[10],Save_Load[11],Save_Load[12])
    else
        Save_Load = {}
        Save_Load[1] = CR.Value 
        CR.Value = nil
        table.insert(StoringTable , Save_Load[1])
        Save_Load[2] = LR.Value 
        LR.Value = nil
        table.insert(StoringTable , Save_Load[2])
        Save_Load[3] = Auto.Value 
        Auto.Value = nil
        table.insert(StoringTable , Save_Load[3])
        Save_Load[4] = Bound.Value 
        Bound.Value = nil
        table.insert(StoringTable , Save_Load[4])
        Save_Load[5] = Colony.Value 
        Colony.Value = nil
        table.insert(StoringTable , Save_Load[5])
        Save_Load[6] = Wear.Value 
        Wear.Value = nil
        table.insert(StoringTable , Save_Load[6])
        Save_Load[7] = POW.Value 
        POW.Value = nil
        table.insert(StoringTable , Save_Load[7])
        Save_Load[8] = SPD.Value 
        SPD.Value = nil
        table.insert(StoringTable , Save_Load[8])
        Save_Load[9] = RNG.Value 
        RNG.Value = nil
        table.insert(StoringTable , Save_Load[9])
        Save_Load[10] = DUR.Value 
        DUR.Value = nil
        table.insert(StoringTable , Save_Load[10])
        Save_Load[11] = PER.Value 
        PER.Value = nil
        table.insert(StoringTable , Save_Load[11])
        Save_Load[12] = LER.Value 
        LER.Value = nil
        table.insert(StoringTable , Save_Load[12])
        print(Save_Load[1],Save_Load[2],Save_Load[3],Save_Load[4],Save_Load[5],Save_Load[6],Save_Load[7],Save_Load[8],Save_Load[9],Save_Load[10],Save_Load[11],Save_Load[12])
        DS:SetAsync(Key, StoringTable)
        end 
    end
end)

game.Players.PlayerRemoving:Connect(function(players)
--Key
local Key = 'ID-' ..players.UserId  
--Loading Vals
game.ServerStorage:WaitForChild("Stands")
local plrfile = game.ServerStorage.Stands:WaitForChild(players.Name)
local STypes = plrfile:WaitForChild("STypes")
local SStats = plrfile:WaitForChild("SStats")

local CR = STypes:WaitForChild("CR")
local LR = STypes:WaitForChild("LR")
local Auto = STypes:WaitForChild("Auto")
local Bound = STypes:WaitForChild("Bound")
local Colony = STypes:WaitForChild("Colo")
local Wear = STypes:WaitForChild("Wear")

local POW = SStats:WaitForChild("POW")
local SPD = SStats:WaitForChild("SPD")
local RNG = SStats:WaitForChild("RNG")
local DUR = SStats:WaitForChild("DUR")
local PER = SStats:WaitForChild("PER")
local LER = SStats:WaitForChild("LER")
--Saving    
local DataToSave = {
CR.Value,
LR.Value,
Auto.Value,
Bound.Value,
Colony.Value,
Wear.Value,

POW.Value,
SPD.Value,
RNG.Value,
DUR.Value,
PER.Value,
LER.Value,  


}
DS:SetAsync(Key, DataToSave)

end)

It's saving when the person resets or leave the game, but as soon as the server shutdowns the values are no longer saved. I've been told to use SetAsync but it hasn't been working... Can someone help?

0
Use BindToClose ;-; NetworkEngineer 0 — 6y
0
Can you explain a bit more? YourMajesty_Kami 1 — 6y
0
while wait(3) do stats.Value:SetAsync() end <-- that saves stuff every 3 secs greatneil80 2647 — 6y

Answer this question