Hello!
Question: How do I get this DataStore to retain the items when a player dies, or leaves the game and returns?
Information: I'm having some problems getting my DataStore to save purchased items. I was receiving help before, but I still have problems with it.
Here's how I have the DataStore process laid out:
I have a BoolValue inside PlayerGui called "HasM9". The Shop purchase script turns the Value to True like so:
--Shop Script Above if plr.leaderstats.Points.Value >= amount then tool:Clone().Parent = plr.Backpack tool:Clone().Parent = plr.StarterGear plr.leaderstats.Points.Value = plr.leaderstats.Points.Value - amount game.StarterGui.HasM9.Value = true game.Players.LocalPlayer.PlayerGui.HasM9.Value = true --Shop Script Below
Player is able to purchase the Item. However, after the player dies/respawns, the item is gone from their Backpack. Here's my Data Store:
game.Players.PlayerAdded:connect(function(player) local datastore = game:GetService("DataStoreService"):GetDataStore(player.Name.."Stats") player:WaitForChild("leaderstats") wait(1) local stats = player:FindFirstChild("leaderstats"):GetChildren() for i = 1, #stats do stats[i].Value = datastore:GetAsync(stats[i].Name) print("stat number "..i.." has been found") -- ITEM SAVING BELOW local DataStorem9 = game:GetService("DataStoreService"):GetDataStore("HasM9") local HasM9 = DataStorem9:GetAsync(player.userId) if HasM9 == true then game.ServerStorage.ToolStorage.M9:Clone().Parent = player.Backpack end player.PlayerGui:WaitForChild("HasM9").Changed:Connect(function() if player.PlayerGui.HasM9.Value == true then local DataStorem9 = game:GetService("DataStoreService"):GetDataStore("HasM9") DataStorem9:SetAsync(player.userId, true) end end) -- ITEM SAVING ABOVE stats[i].Changed:Connect(function() local datastore = game:GetService("DataStoreService"):GetDataStore(player.Name.."Stats") local statstorage = player:FindFirstChild("leaderstats"):GetChildren() for i = 1, #statstorage do datastore:SetAsync(statstorage[i].Name, statstorage[i].Value) print("saved data number "..i) end print("Stats successfully saved") end) end end)
How do I get this DataStore to retain the items when a player dies, or leaves the game and returns?
I wondered if my Global Death Script and Global Leave Script might be interfering? The scripts are from AlvinBlox's Rounds tutorial.
Global Death Script:
game:GetService('Players').PlayerAdded:connect(function(player) player.CharacterAdded:Connect(function(character) character:WaitForChild('Humanoid').Died:connect(function() local Update = {} for i,v in pairs(_G.gameplayers) do if v ~= player.Name then table.insert(Update, 1,v) end end _G.gameplayers = Update end) end) end)
Global Leave Script:
game:GetService('Players').PlayerRemoving:connect(function(player) local Update = {} for i, v in pairs(_G.gameplayers) do if v ~= player.Name then table.insert(Update, 1,v) end end _G.gameplayers = Update end)
My apologies for this big block of text. :( I really want to get this Data Store problem solved to get my game up and running for the public.