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

DataStore not functioning?

Asked by 9 years ago

Hi guys, I am trying to use DataStores in my new game but when I go to test them, the values don't load and I'm not sure why they aren't loading. I did have an error before I made a tiny amendment to the script, it said:

EDIT: I now keep getting this error. It occurs on the lines where the asynchronous methods of the data store are used (Line 16 and line 89 is where I started getting these errors, it alternates between the two randomly.)

HTTP 403 (HTTP/1.1 403 XSRF Token Validation Failed)

Now it does not show anything in the output and I'm not sure how to fix the script. Any help is appreciated, thanks!

Script (EDITED, found out why it wasn't functioning at all but now it won't progress through the clearAllValues function as it throws the token validation error above after the "if ds ~= nil then" line):

math.randomseed(tick())

rs = game:GetService("ReplicatedStorage")

function clearAllValues(item,ds,plr)
    for i,v in pairs(item:GetChildren()) do
        if not v:IsA("Folder") then
            v:Destroy()
        end
        clearAllValues(v,ds,plr)
        if v.Parent ~= plr.Accessories then
            local hasGot = Instance.new("BoolValue")
            hasGot.Name = "HasGotItem"
            hasGot.Parent = v
            if ds ~= nil then
                hasGot.Value = (ds:GetAsync(hasGot.Parent.Name.."HasGot") ~= nil) and ds:GetAsync(hasGot.Parent.Name.."HasGot") or false
                hasGot.Changed:connect(function()
                    ds:UpdateAsync(hasGot.Parent.Name.."HasGot",function()
                        return hasGot.Value
                    end)
                end)
            end
        end
    end
end

function createFolder(plr,parent,ds)
    if parent:IsA("Folder") then
        local pClone = parent:Clone()
        pClone.Parent = plr
        clearAllValues(pClone,ds,plr)
    end
end

game.Players.PlayerAdded:connect(function(plr)
    local ds = (game:GetRemoteBuildMode()) and nil or game:GetService("DataStoreService"):GetDataStore("Stats",tostring(plr.userId))
    local stats = Instance.new("Folder",plr)
    stats.Name = "PlayerStats"
    local egg_bucks = Instance.new("IntValue",stats)
    local basketlevel = Instance.new("IntValue",stats)
    local currentRoundEggs = Instance.new("IntValue",stats)
    local introDone = Instance.new("BoolValue",stats)
    local tutorialDone = Instance.new("BoolValue",stats)
    local inGame = Instance.new("BoolValue",stats)
    local changing = Instance.new("BoolValue",stats)
    local playing = Instance.new("BoolValue",stats)
    introDone.Name = "IntroDone"
    tutorialDone.Name = "TutDone"
    currentRoundEggs.Name = "CurrentEggSpace"
    egg_bucks.Name = "Eggs"
    basketlevel.Name = "BasketLevel"
    inGame.Name = "InGame"
    changing.Name = "IsChanging"
    playing.Name = "IsPlaying"

    coroutine.resume(coroutine.create(function() createFolder(plr,rs.Accessories,ds) end))

    local torsocolor = BrickColor.Random()

    plr.CharacterAdded:connect(function(char)
        plr:ClearCharacterAppearance()
        local bodyColors = Instance.new("BodyColors",char)
        bodyColors.TorsoColor = torsocolor
        local shirt = Instance.new("ShirtGraphic",char)
        shirt.Graphic = "rbxassetid://180484140"
        char.Humanoid.Died:connect(function()
            if inGame.Value == true then
                egg_bucks.Value = (plr.Accessories.Perks["Double Eggs"].HasGotItem.Value ~= true) and egg_bucks.Value + currentRoundEggs.Value or egg_bucks.Value + (currentRoundEggs.Value * 2)
                currentRoundEggs.Value = 0
                inGame.Value = false
            end
            changing.Value = false
            plr.PlayerGui.GameHUD.HUDType.Value = "Intro"
        end)
        coroutine.resume(coroutine.create(function()
            while inGame.Value == false and changing.Value == false do
                wait()
                if tutorialDone.Value == true then
                    char.Humanoid.WalkSpeed = 32
                else
                    char.Humanoid.WalkSpeed = 0
                end
            end
        end))
    end)

    if ds ~= nil then
        print("We're online!")
        egg_bucks.Value = (ds:GetAsync(egg_bucks.Name) ~= nil) and ds:GetAsync(egg_bucks.Name) or 0
        basketlevel.Value = (ds:GetAsync(basketlevel.Name) ~= nil) and ds:GetAsync(basketlevel.Name) or 1
        tutorialDone.Value = (ds:GetAsync(tutorialDone.Name) ~= nil) and ds:GetAsync(tutorialDone.Name) or false

        egg_bucks.Changed:connect(function()
            ds:UpdateAsync(egg_bucks.Name,function()
                return egg_bucks.Value
            end)
        end)

        basketlevel.Changed:connect(function()
            ds:UpdateAsync(basketlevel.Name,function()
                return basketlevel.Value
            end)
        end)

        tutorialDone.Changed:connect(function()
            ds:UpdateAsync(tutorialDone.Name,function()
                return tutorialDone.Value
            end)
        end)
    end
end)
0
What part of the script did you modify? adark 5487 — 9y
0
I made an amendment on line 36, but realized that was why it didn't work. I changed it and I get the token validation error as stated above. Spongocardo 1991 — 9y
0
I have also edited the post to say where the token validation error was pointing to. Spongocardo 1991 — 9y
0
Is this in Studio or online mode? Merely 2122 — 9y
View all comments (2 more)
0
The values load in Studio's test server mode and I get the token validation error, but nothing happens in Online mode and I get no error when I check the developer console. Spongocardo 1991 — 9y
0
I really don't know what the problem is with the script, so if anyone can shed some light on the issue, I'd greatly appreciate it. Thanks! :) Spongocardo 1991 — 9y

Answer this question