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

Data Store "bad argument #3 to 'Value'" Error?

Asked by 5 years ago

I ask too many questions. Anyways, I am trying to save a string value in a datastore, output returns the same error: Workspace.Errors:24: bad argument #3 to 'Value' (string expected, got nil)

I have looked at other similar questions on this site however none of the solutions have worked. How can I fix the error?

local DSS = game:GetService("DataStoreService")

local datastore = DSS:GetDataStore("GeneralSaveData", "Players")

function generateDataKey(player)
    local ret = "uid_" .. player.userId
    return ret
end

function generateDataTable(player)
    local dataTable = {
        BusinessName = player.BusinessName.Value
    }
    return dataTable
end

function saveDataForPlayer(player)
    local key = generateDataKey(player)
    local data = generateDataTable(player)
    datastore:SetAsync(key, data)
end

function inputDataToPlayer(player, data)
    player.BusinessName.Value = data.BusinessName    
end

function loadDataForPlayer(player)
    local key = generateDataKey(player)
    local data = datastore:GetAsync(key)
    inputDataToPlayer(player, data)          
end

game.Players.PlayerAdded:connect(function(player)
    local businessName = Instance.new("StringValue")
    businessName.Name = 'BusinessName'
    businessName.Parent = player    

    loadDataForPlayer(player)
end)

game.Players.PlayerRemoving:connect(saveDataForPlayer)

1 answer

Log in to vote
1
Answered by 5 years ago

It means data is nil. On line 24, data.BusinessName is nil, think like your a new player, you have no data. So you could:

if data ~= nil then
    code
else
    datastore:SetAsync(key, defaultdata)
end
Ad

Answer this question