Hello,
I have made a trail shop system. It checks whether player has purchased trails before (bool values same names as trails) https://imgur.com/5zYzqvs
This is a code which runs when the player joins/leaves to load/save data.
local DataStore = game:GetService("DataStoreService"):GetDataStore("Guns")
local BaseStats = game.ServerStorage.BaseStats
local DataVersion = 1
game.Players.PlayerAdded:connect(function(play)
local stats = game.ServerStorage.BaseStats:Clone()
stats.Name = play.Name
stats.Parent = game.ServerStorage.Stats
local Key = play.UserId.."Guns"..DataVersion
local gunTable
local success = pcall(function()
gunTable = DataStore:GetAsync(Key)
end)
if not success then
print("Failed to retrieve data")
else
if gunTable~=nil then
for i,v in pairs(gunTable) do
if stats:findFirstChild(v) then
stats[v].Value = true
end
end
end
end
play.CharacterAdded:connect(function(char)
game.ReplicatedStorage.OnRespawn:FireClient(play)
end)
end)
game.Players.PlayerRemoving:connect(function(play)
if game.ServerStorage.Stats:FindFirstChild(play.Name) then
local Key = play.UserId.."Guns"..DataVersion
local gunTable = {}
for i,v in pairs(game.ServerStorage.Stats:FindFirstChild(play.Name):GetChildren()) do
if v.Value == true then
table.insert(gunTable,v)
end
end
local success = pcall(function()
DataStore:SetAsync(Key,gunTable)
end)
if not success then
print("Data failed to save")
end
game.ServerStorage.Stats:FindFirstChild(play.Name):Destroy()
end
end)
The issue I'm having is: https://imgur.com/pNKF1AS
The output is always "Data failed to save"
I wonder whether anyone has any fixes to this code, looking forward to the responses. thank you
