Help with saving

So i have this script that adds a value inside a folder that is parented to the player, the problem is that it won’t save all the values and i get this:

This is the script

local DataStoreService = game:GetService("DataStoreService"):GetDataStore("Items")

game.Players.PlayerAdded:Connect(function(player)
	local key = "items-"..player.userId
	local folder = Instance.new("Folder",player)
	folder.Name = "ItemInventory"
	local save = DataStoreService:GetAsync(key)
	if save then
		for i = 1,#save do
			local temp = Instance.new("NumberValue",folder)
			temp.Name = save[i]
		end
	end
end)

game.ReplicatedStorage.AddItem.OnServerEvent:Connect(function(player,ItemName)
	local key = "items-"..player.userId
	
	local bool = Instance.new("NumberValue",player.ItemInventory)
	bool.Name = ItemName
	
	local activated = {}
	
	for i,v in pairs(player.ItemInventory:GetChildren()) do
		if v:isA("NumberValue") then
			table.insert(activated, v.Name)
			DataStoreService:SetAsync(key,activated)
		end
	end
end)
1 Like

That means storing too quickly in the data store.

Try this:

local DataStoreService = game:GetService("DataStoreService"):GetDataStore("Items")

game.Players.PlayerAdded:Connect(function(player)
	local key = "items-"..player.userId
	local folder = Instance.new("Folder",player)
	folder.Name = "ItemInventory"
	local save = DataStoreService:GetAsync(key)
	if save then
		for i = 1,#save do
			local temp = Instance.new("NumberValue",folder)
			temp.Name = save[i]
		end
	end
end)

game.ReplicatedStorage.AddItem.OnServerEvent:Connect(function(player,ItemName)
	local key = "items-"..player.userId
	
	local bool = Instance.new("NumberValue",player.ItemInventory)
	bool.Name = ItemName
	
	local activated = {}
	
	for i,v in pairs(player.ItemInventory:GetChildren()) do
		if v:isA("NumberValue") then
			table.insert(activated, v.Name)
		end
	end
    DataStoreService:SetAsync(key,activated)
end)

still gives me that message on the dev console but it saves all the values now*

1 Like