I'm completely stumped right now. I have a DataStore script but it saves weapons at times but after playing 2 or more times the weapon eventually does not spawn anymore. Can someone please take a look at this script for me.
Also if you know of any other DataStore scripts that may be better I would be more than willing to replace this one with a more stable script.
Thanks in advance.
wait(3)
local RunService = game:GetService("RunService")
local ToolData = game:GetService("DataStoreService"):GetDataStore("ToolData")
local ToolLocation = game.ServerStorage.Tools -- The location where all your tools are saved
function GetToolByName(toolName)
for _, tool in pairs(ToolLocation:GetChildren()) do
if tool.Name == toolName then return tool end
end
end
function IsRegisteredTool(tool)
for _, playerTool in pairs(ToolLocation:GetChildren()) do
if playerTool.Name == tool.Name then return true end
end
end
game.Players.PlayerAdded:Connect(function(player)
repeat wait() until player.Character
local dataKey = "tool-data_"..player.UserId
if ToolData:GetAsync(dataKey) then
for i, toolName in pairs(ToolData:GetAsync(dataKey)) do
local newStarterTool = GetToolByName(ToolData:GetAsync(dataKey)[i]):Clone()
local newTempTool = GetToolByName(ToolData:GetAsync(dataKey)[i]):Clone()
newStarterTool.Parent = player.StarterGear
newTempTool.Parent = player.Backpack
end
ToolData:SetAsync(dataKey, {})
end
end)
game.Players.PlayerRemoving:Connect(function(player)
local dataKey = "tool-data_"..player.UserId
local playerTools = {}
for _, tool in pairs(player.StarterGear:GetChildren()) do
if tool:IsA("Tool") and IsRegisteredTool(tool) then table.insert(playerTools, 1, tool.Name) end
end
if RunService:IsStudio() or #playerTools < 1 then return end
ToolData:SetAsync(dataKey, playerTools)
end)
