Okay So I Am Trying To Make A Inventory System The Hot Bar Equip/ Unequip And Storing In Inventory Works But When I Pick Up A Item When My Inventory Is Filled The Item Glitches Like It Gets Parented To Another Are But When it Does All Of My Items In The HotBar Dissapears And When Its Parented To The Workspace All Items Are Doubled.. Why Doe?

Local Script

local Tools = {}
game.StarterGui:SetCoreGuiEnabled(Enum.CoreGuiType.Backpack,false)
local Num = 0
local Inventory = {}

local NumToWords = {
	[1] = "One",
	[2] = "Two",
	[3] = "Three",
	[4] = "Four",
	[5] = "Five",
	[6] = "Six",
	[7] = "Seven",
	[8] = "Eight",
	[9] = "Nine",
	[10] = "Zero",
}

-- Updates Hotbar
local function updatehotbar()
	-- Deletes Old Stuff
	for i,v in pairs(script.Parent.Frame:GetChildren()) do
		if v:IsA("TextButton") then
			v:Destroy()
		end
	end
	-- Cap
	if #Tools > 10 then
		table.insert(Inventory,#Inventory+1,Tools[#Tools])
		table.remove(Tools,#Tools)
		print("HotBar Filled ",Tools)
		if #Inventory <= 2 then
			local temp = script.Temp:Clone()
			temp.Parent = script.Parent.Inventory.StoreArea
			temp.Text = Inventory[#Inventory].Name
			temp.Num:Destroy()
			temp.Name = Inventory[#Inventory].Name
		else
			local object =	Inventory[#Inventory]
			object.Parent = game.ReplicatedStorage
			table.remove(Inventory,#Inventory)		
			print("Inventroy Filled ", Inventory)
			wait(5)
			object.Parent = game.Workspace
		end
	end
	-- Makes Stuff
	for i,v in pairs(Tools) do
		local temp = script.Temp:Clone()
		if #Tools < 11 then
			temp.Parent = script.Parent.Frame
		end
		if i == 10 then 
			temp:WaitForChild('Num').Text = 0
		else
			temp:WaitForChild('Num').Text = i
		end
		temp.Text = v.Name
		temp.Name = v.Name
	end

end
-- NewTool Added
local Childd
game.Players.LocalPlayer.Backpack.ChildAdded:Connect(function(Child)
	if Child ~= Childd and #Tools < 11 then
		table.insert(Tools,#Tools+1,Child)
		Num =Num + 1
	end
	updatehotbar()
end)

-- Tool Removed
game.Players.LocalPlayer.Backpack.ChildRemoved:Connect(function(Child)
	if Child.Parent ~= game.Players.LocalPlayer.Character then
		table.remove(Tools,Tools[Child])
		Num =Num - 1
	else
		Childd = Child
	end
	updatehotbar()
end)

-- When Tool Is Picked
game.Players.LocalPlayer.Character.ChildAdded:Connect(function(Child)
	if Child ~= Childd then
		game.ReplicatedStorage.UnEquipTools:FireServer()
	end
end)

local equipped = false
local db = false
-- Unequip / Equip
game:GetService("RunService").RenderStepped:Connect(function()
	for i,v in pairs(Tools) do
		game:GetService("UserInputService").InputBegan:Connect(function(In)
			if In.KeyCode == Enum.KeyCode[NumToWords[i]] and v.Parent == game.Players.LocalPlayer.Backpack or v.Parent == game.Players.LocalPlayer.Character then
				if not db then
					db = true
					if not equipped then
						equipped = true
						game.ReplicatedStorage.EquipTools:FireServer(v)
					else
						game.ReplicatedStorage.UnEquipTools:FireServer()
						equipped = false
					end
					wait(0.2)
					db = false
				end
			end
		end)
	end
end)

Server Script

game.ReplicatedStorage.UnEquipTools.OnServerEvent:Connect(function(Plr)
	local Human = Plr.Character.Humanoid
	Human:UnequipTools()
end)

game.ReplicatedStorage.EquipTools.OnServerEvent:Connect(function(Plr,Tool)
	local Human = Plr.Character.Humanoid
	Human:EquipTool(Tool)
end)