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

Datastores not working?

Asked by 9 years ago

I'm getting the error Players.Player.PlayerGui.ScreenGui.Dollars.TextLabel.Script:39: attempt to index local 'playerData' (a number value) online 39. Why is this?

plr = script.Parent.Parent.Parent.Parent.Parent
dollarstheyhave = 0

notLead = Instance.new('Model', plr)
notLead.Name = 'notleaderstats'
doll = Instance.new('NumberValue', notLead)
doll.Name = 'Dollars'
doll.Value = dollarstheyhave

------------------------------------------------------------------------------------
plr:WaitForChild('notleaderstats').Dollars.Changed:connect(function()
    changetext(tostring(plr.notleaderstats.Dollars.Value))
    update(plr)
end)
------------------------------------------------------------------------------------

function changetext(msg)
    script.Parent.Text = msg
end


ds = game:GetService("DataStoreService"):GetDataStore('Dollars')

function update(player)
    local playerIdentity = player.Name .. '(' .. player.userId .. ')' --Makes identity

    local playerKey = 'player_' .. player.userId    --Makes key
    local playerData = ds:GetAsync(playerKey)       --gets datastore 

    for i,v in pairs (ds:GetChildren()) do
        print(v)
    end

    if playerData then
        if playerData.Amount <= 0 then  --FIX THIS: ERROR SAYS ARGUMENT 2 IS MISSING OR NIL WHICH MEANS WE NEED TO FIX THE playerData.personalPlaceId PART
            playerData = nil
        end 
    end

    if not playerData then              
        --ADD TUTORIAL THING
        playerData = {
            Amount = 10
        }
        ds:SetAsync(playerKey, playerData)
    end         

    if playerData and playerData.personalPlaceId then   
        dollarstheyhave = playerData
    end 
end

Answer this question