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

0

you can't save instances in datastore