The Title Is Confusing IK Buuuutt i will try to explain it
The First Script im making is a script to save tools and when you reset it duplicates the basic starter tool, so i want it to not dupe and i have tried an IF statement shown here:
char.Humanoid.Died:connect(function()
char.Humanoid:UnequipTools()
if player.Backpack:WaitForChild("Basic Halo") == true
then
print("Already Has Basic")
else
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
end)
Second Script: the second one is a local script to check if the player has the Molten Halo Tool when joining if the player does it will not give them the starter halo....
ToolSave Script (Normal Script, Server Script Service)
local ds = game:GetService("DataStoreService")
local store = ds:GetDataStore("saveStore")
local library = game:GetService("ServerStorage").ShopItems
--< 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()
if player.Backpack:WaitForChild("Basic Halo") == true
then
print("Already Has Basic")
else
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
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)
--[[ Shiro75 ]]--
the local script to check if the player has the tool:
local player = game.Players.LocalPlayer
function checkBasic()
wait(0.6)
if player.Backpack:GetFirstChild("Molten Halo") == true
then
player.Backpack:GetFirstChild("Basic Halo"):Destroy()
end
end
game.Players.ChildAdded:Connect(checkBasic)
Thanks Joe.
