DataStore request was added to queue. If request queue fills, further requests will be dropped. Try sending fewer requests.Key = 3837598027-tools

I did some more testing and this worked for me:

Script
local Players = game:GetService("Players")
local dss = game:GetService("DataStoreService")
local toolsDS = dss:GetDataStore("ToolsData1")
local function SaveData(plr)
	
	local toolsOwned = {}
	for i, toolInBackpack in pairs(plr.Backpack:GetChildren()) do

		table.insert(toolsOwned, toolInBackpack.Name)
	end

	local success, errormsg = pcall(function()
		toolsDS:SetAsync(plr.UserId.."-tools", toolsOwned)
	end)
	if success then
		print("Saved data")
		for i, v in pairs(toolsOwned) do
			print(v)
		end
	elseif errormsg then 
		warn(errormsg) 
	end
end

Players.PlayerRemoving:Connect(SaveData)
game:BindToClose(function()
	task.wait(3)
end)

yes, i know that you said you would do it yourself but i am determined to get the script working.

Okay so look. i got an ak in my game and yes, it printed the name but when i rejoined i didn’t get the gun.

Like i don’t understand why this isn’t working, you are telling me that it’s working for you but when i rejoin i only have 1 gun instead of 2

I don’t really know what else to do then, sorry.

its prob player removing and bind to close run at the same time which causes warning , try add if its rostud then it wont run