I'm new to scripting with datastores, so this is probably a simple question, but how do I get my datastore to save all of the children of a certain data model?
--the datastore script
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 = {
Gold = player.leaderstats.Gold.Value,
Weapons = player.weapons:GetChildren()--how would I save all of the children of weapons?
}
return dataTable
end
function saveDataForPlayer(player)
local key = generateDataKey(player)
local data = generateDataTable(player)
datastore:SetAsync(key, data)
end
function inputDataToPlayer(player, data)
player.leaderstats.Gold.Value = data.Gold
local weps = player.weapons
--maybe a for loop here?
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)
for index, tool in pairs(player.weapons:GetChildren()) do
local a = game.ServerStorage.Weapons:FindFirstChild(tool.Name)
a:Clone()
a.Parent = player.Backpack, player.StarterGear
end
end)
game.Players.PlayerRemoving:Connect(saveDataForPlayer)

1 comment
you can't save instances in datastore