Hello guys, I was wondering if there was an easier way to write out this dataStore; a way where I can just save everything inside a certain folder? Thanks in advance, here is the script:

local dataStoreService = game:GetService("DataStoreService")
local invstore = dataStoreService:GetDataStore("hats")

local players = game:GetService("Players")

local function save(player)
    local ok, exception_data = pcall(
        invstore.SetAsync,
        invstore,
        player.UserId,
        {
            Koala = player.DataValues.KoalaCounter.Value,
            countstat = player.DataValues.Count.Value, 
			desertcount = player.DataValues.DesertScoutV.Value,
			desertquest = player.DataValues.DesertScoutQ.Value,
			dominuscount = player.DataValues.DominusFrigV.Value,
			dominusquest = player.DataValues.DominusFrigV.Value
        }
    )
    if ok then 
        print("Data successfully saved")
    else
      
        warn(exception_data)
    end
    return ok, exception_data
end


  game.Players.PlayerAdded:Connect(function(player)
	local DataValues = Instance.new("Folder")
	DataValues.Name = "DataValues"
	DataValues.Parent = player
	
	local KoalaCounter = Instance.new("IntValue")
	KoalaCounter.Name = "KoalaCounter"
	KoalaCounter.Parent = DataValues
	
	local count = Instance.new("IntValue")
	count.Name = "Count"
	count.Parent = DataValues
	
	local DesertScoutV = Instance.new("IntValue")
	DesertScoutV.Name = "DesertScoutV"
	DesertScoutV.Parent = DataValues
	
	local DesertScoutQ = Instance.new("IntValue")
	DesertScoutQ.Name = "DesertScoutQ"
	DesertScoutQ.Parent = DataValues
	
	local DominusFrigQ = Instance.new("IntValue")
	DominusFrigQ.Name = "DominusFrigQ"
	DominusFrigQ.Parent = DataValues

	local DominusFrigV = Instance.new("IntValue")
	DominusFrigV.Name = "DominusFrigV"
	DominusFrigV.Parent = DataValues

    local ok, data = pcall(invstore.GetAsync, invstore, player.UserId)

    if ok then
        if data then
            KoalaCounter.Value = data.Koala
            count.Value = data.countstat
			DesertScoutV.Value = data.desertcount
			DesertScoutQ.Value = data.desertquest
			DominusFrigQ.Value = data.dominusquest
			DominusFrigV.Value = data.dominuscount
        else
           
        end
        
        print("yes, data successfully loaded")
    else
    
        warn("Nope,", data)
    end
end)

players.PlayerRemoving:Connect(function(player)
    local ok, exception_data = save(player)
 	
    if not ok then
       
    end
end)

game:BindToClose(function()
    for _, player in ipairs(players:GetPlayers()) do
        coroutine.wrap(save)(player)
    end
end)

1 comment