Hello, I am a very amateur scripter, to the point where I have to take free scripts and modify them to fit the game I am working on, so I may require some additional help, but besides that, I have a bit of a problem with one of my scripts. The script I have for saving tools duplicates the tools in a player's inventory upon death, I will post the code to that script. Allthough an explanation on why this happens and a fix for the script would be helpful, what I mainly need is a script that removes duplicated tools.
local rs = game:GetService("ReplicatedStorage") local ds = game:GetService("DataStoreService") local store = ds:GetDataStore("saveStore") local library = rs:WaitForChild("Library")
--< directory functions
local dir = {}
local function edit(player, list) dir[player.Name] = list end
local function setup(player, list) for i = 1, #list do local tool = library:FindFirstChild(list[i]) if tool then local clone = tool:Clone() clone.Parent = player.Backpack else print(list[i] .. " not found") end end end
--< player events
game.Players.PlayerAdded:connect(function(player)
local ready = false
player.CharacterAdded:connect(function(char)
local bp = player.Backpack
local data = nil
if ready == false then
ready = true
data = store:GetAsync(player.UserId)
if data then
setup(player, data)
edit(player, data)
end
end
char.Humanoid.Died:connect(function()
char.Humanoid:UnequipTools()
local old = player.StarterGear:GetChildren()
for i = 1, #old do
old[i]:Destroy()
end
local new = player.Backpack:GetChildren()
for i = 1, #new do
new[i].Parent = player.StarterGear
end
end)
--< adjuster
local count = 0
local function adjust()
if char.Humanoid.Health > 0 then
local list = {}
local equipped = char:FindFirstChildOfClass("Tool")
if equipped then
table.insert(list, equipped.Name)
end
local tools = bp:GetChildren()
for i = 1, #tools do
table.insert(list, tools[i].Name)
end
if count ~= #list then
edit(player, list)
count = #list
end
end
end
--< child events
bp.ChildAdded:connect(adjust)
bp.ChildRemoved:connect(adjust)
char.ChildAdded:connect(function(child)
if child.ClassName == "Tool" then
adjust()
end
end)
char.ChildRemoved:connect(function(child)
if child.ClassName == "Tool" then
adjust()
end
end)
end)
end)
game.Players.PlayerRemoving:connect(function(player) store:SetAsync(player.UserId, dir[player.Name]) dir[player.Name] = nil end)
--< safety
game:BindToClose(function() wait(5) end)

2 comments
aquacat , Please post the top of your code in Code Block please.
I did, It just didnt appear. Sorry, Im new to this.