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

Why does my data store script give me this error? [closed]

Asked by 9 years ago

Hi everyone, I've started to migrate away from Data Persistence and move on to Data Stores. I couldn't get my head round the whole Data Store concept at first, but now that I have, I have constructed a script to create values, and to set their values to 0 if the GetAsync method returns nil, otherwise it will return the given value from the GetAsync method. I also have it to set the values of keys when their corresponding values inside the value objects change.

However, I'm testing this script with the player/server mode (I used SetPlaceId on my locally saved place) and it seems to be giving me an error that I can't wrap my head around on line 10 of the script at the bottom of the post.

Attempt to index upvalue ds (a nil value)

I thought I knew how to fix this, but I can't fix it so that it still checks if the GetAsync method returns nil or not. So I'm kind of stumped right now.

The code below is in a Script inside of ServerScriptStorage:

local ds = game:GetService("DataStoreService"):GetDataStore("SLStats")

game.Players.PlayerAdded:connect(function(player)
    local playedKey = "Played_" .. player.userId
    local wonKey = "Won_" .. player.userId 

    local played = Instance.new("IntValue")
    played.Name = "PlayedGames"
    played.Parent = player
    if ds:GetAsync(playedKey) == nil then --This line errors, and I don't know why.
        played.Value = 0
    else
        played.Value = ds:GetAsync(playedKey)
    end

    local won = Instance.new("IntValue")
    won.Name = "WonGames"
    won.Parent = player
    if ds:GetAsync(wonKey) == nil then --Same as the other if statement, so this would error but I don't know why.
        won.Value = 0
    else
        won.Value = ds:GetAsync(playedKey)
    end

    played.Changed:connect(function(val)
        ds:SetAsync(playedKey, val)
    end)

    won.Changed:connect(function(val)
        ds:SetAsync(wonKey, val)
    end)
end)

Any help is appreciated, thank you!

2
I believe that is because you are on a local server. NoahWillCode 370 — 9y
1
Oh right, I would've thought it would have worked. I used the SetPlaceId method before I started the server. Thanks. Spongocardo 1991 — 9y

Locked by Spongocardo, adark, and BlueTaslem

This question has been locked to preserve its current state and prevent spam and unwanted comments and answers.

Why was this question closed?