Scripting HelpersARCHIVE
A little piece of Roblox history. Preserved for everyone, one question at a time.Read about the archive →
✓ ANSWER ACCEPTED

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

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

✓ Accepted answer

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

This discussion is preserved as it was. New answers, comments, and votes are closed.