I have two separate datastore scripts. The gold (numbers) script works fine, but the weapon (strings) script doesn't.
--the gold script is just this but replace club and weapon lines with gold
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 = {
weapon = player.weapons.Weapon.Value,--both in a model called 'weapons' which is in the player
club = player.weapons.Club.Value
}
return dataTable
end
function saveDataForPlayer(player)
local key = generateDataKey(player)
local data = generateDataTable(player)
datastore:SetAsync(key, data)
end
function inputDataToPlayer(player, data)
if data then
player.weapons.Weapon.Value = data.weapon--it says "Workspace.SaveWep:26: bad argument #3 to 'Value' (string expected, got nil)"
player.weapons.Club.Value = data.club
local ss = game.ServerStorage.Weapons
ss:FindFirstChild(player.weapons.Weapon.Value):Clone().Parent = player.Backpack
ss:FindFirstChild(player.weapons.Weapon.Value):Clone().Parent = player.StarterGear
end
end
function loadDataForPlayer(player)
local key = generateDataKey(player)
local data = datastore:GetAsync(key)
inputDataToPlayer(player, data)
end
game.Players.PlayerAdded:Connect(function(player)
loadDataForPlayer(player)
end)
game.Players.PlayerRemoving:Connect(saveDataForPlayer)
The values are all valid, too. What did I do wrong?
