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

When rejoining the game my stage value that was saved is randomized?

Asked by 6 years ago

Now, i'm unsure if this is happening to players playing the game, but it has been happening for me and the game owner.

I have a datastore scirpt which loads the player's data when joining and saves it when leaving the game. However whenever I rejoin, most of the time my stage would be completely random.

local DS = game:GetService("DataStoreService"):GetDataStore("SomeDataButItsNotTheActualName")

game.Players.PlayerAdded:connect(function(plr)
    local leaderstats = Instance.new("Model")
    leaderstats.Name = "leaderstats"
    leaderstats.Parent = plr

    local stage = Instance.new("NumberValue")
    stage.Name = "Stage"
    stage.Parent = leaderstats

    local cash = Instance.new("NumberValue")
    cash.Name = "Cash"
    cash.Parent = leaderstats

    local success, st = pcall(function()
        return DS:GetAsync("plr_" .. tostring(plr.UserId))
    end)
    if success then
        stage.Value = st
    else
        game:GetService("ReplicatedStorage").Notify:FireClient(plr)
    end

    plr:LoadCharacter()

    game.Players.PlayerRemoving:connect(function(plr)
        local success, fail = pcall(function()
            DS:SetAsync("plr_" .. tostring(plr.UserId), stage.Value)    
        end)

        if not success then
            local c = 0
            while c < 4 do
                wait(5)
                local good, fail = pcall(function()
                    DS:SetAsync("plr_" .. tostring(plr.UserId), stage.Value)
                end)
                if good then break end
                c = c + 1
            end
        end
    end)
end)

(snipped out irrelevant parts of the script)

So, what am I doing wrong?

0
There is a chance that there is another script changing the value greatneil80 2647 — 6y
0
I'll go look through them again CrystallineShard 47 — 6y

Answer this question