Trying to datastore my credits and scraps value, along with a table that holds a lot of values, but for some reason it isn't working, I've tried everything I can.

--//Folder Creation and main variables.\\--
--//Trying to make a datastore thing\\--

local Players = game:GetService("Players")
Players.PlayerAdded:Connect(function(Player)
local Replic = game:GetService("ReplicatedStorage")
local Stats = Replic.Stats
local Create = Instance.new
local MoneyRise = game.ReplicatedStorage.Events.MoneyRise
local ScrapsRise = game.ReplicatedStorage.Events.ScrapsRise
local DSS = game:GetService("DataStoreService")

DS = DSS:GetGlobalDataStore("CrimsonDataStore")

local Folder = Create("Folder")
Folder.Name = Player.Name
Folder.Parent = Stats

--//Value Creation & main scripts\\--

Scraps = Create("IntValue")
Scraps.Value = 5
Scraps.Name = "Scraps"
Scraps.Parent = Folder
Scraps:GetPropertyChangedSignal("Value"):Connect(function()
    Scraps.Value = math.clamp(Scraps.Value, 0, math.huge)
end)

Credits = Create("IntValue")
Credits.Value = 750
Credits.Name = "Credits"
Credits.Parent = Folder
Credits:GetPropertyChangedSignal("Value"):Connect(function()
    Credits.Value = math.clamp(Credits.Value, 0, math.huge)
end)

-- Body Parts --

local RightUpperArm = Create("StringValue")
RightUpperArm.Value = "Null"
RightUpperArm.Name = "RightUpperArm"
RightUpperArm.Parent = Folder

local RightLowerArm = Create("StringValue")
RightLowerArm.Value = "Null"
RightLowerArm.Name = "RightLowerArm"
RightLowerArm.Parent = Folder

local UpperTorso = Create("StringValue")
UpperTorso.Value = "Null"
UpperTorso.Name = "UpperTorso"
UpperTorso.Parent = Folder

local LowerTorso = Create("StringValue")
LowerTorso.Value = "Null"
LowerTorso.Name = "LowerTorso"
LowerTorso.Parent = Folder

local Head = Create("StringValue")
Head.Value = "Null"
Head.Name = "Head"
Head.Parent = Folder

local Face = Create("StringValue")
Face.Value = "Null"
Face.Name = "Face"
Face.Parent = Folder

local LeftUpperArm = Create("StringValue")
LeftUpperArm.Value = "Null"
LeftUpperArm.Name = "LeftUpperArm"
LeftUpperArm.Parent = Folder

local LeftLowerArm = Create("StringValue")
LeftLowerArm.Value = "Null"
LeftLowerArm.Name = "LeftLowerArm"
LeftLowerArm.Parent = Folder

local RightUpperLeg = Create("StringValue")
RightUpperLeg.Value = "Null"
RightUpperLeg.Name = "RightUpperLeg"
RightUpperLeg.Parent = Folder

local RightLowerLeg = Create("StringValue")
RightLowerLeg.Value = "Null"
RightLowerLeg.Name = "RightLowerLeg"
RightLowerLeg.Parent = Folder

local LeftUpperLeg = Create("StringValue")
LeftUpperLeg.Value = "Null"
LeftUpperLeg.Name = "LeftUpperLeg"
LeftUpperLeg.Parent = Folder

local LeftLowerLeg = Create("StringValue")
LeftLowerLeg.Value = "Null"
LeftLowerLeg.Name = "LeftLowerLeg"
LeftLowerLeg.Parent = Folder

local RightFoot = Create("StringValue")
RightFoot.Value = "Null"
RightFoot.Name = "RightFoot"
RightFoot.Parent = Folder

local LeftFoot = Create("StringValue")
LeftFoot.Value = "Null"
LeftFoot.Name = "LeftFoot"
LeftFoot.Parent = Folder

local RightHand = Create("StringValue")
RightHand.Value = "Null"
RightHand.Name = "RightHand"
RightHand.Parent = Folder

local LeftHand = Create("StringValue")
LeftHand.Value = "Null"
LeftHand.Name = "LeftHand"
LeftHand.Parent = Folder

-- Events --

MoneyRise.OnServerEvent:Connect(function(plr)
	Stats[plr.name].Credits.Value = Stats[plr.name].Credits.Value + 4
	Stats[plr.name].Scraps.Value = Stats[plr.name].Scraps.Value - 1
end)

ScrapsRise.OnServerEvent:Connect(function(plr)
	Stats[plr.name].Credits.Value = Stats[plr.name].Credits.Value - 4
	Stats[plr.name].Scraps.Value = Stats[plr.name].Scraps.Value + 1
end)

--//Datastore\\--

local recieved, notRecieved = pcall(function()
  data = DS:GetAsync("UserId-"..Player.UserId)
end)
local limbstable = {
["RightUpperArm"] = Folder.RightUpperArm.Value,
["LeftUpperArm"] = Folder.LeftUpperArm.Value,
["UpperTorso"] = Folder.UpperTorso.Value,
["LowerTorso"] = Folder.LowerTorso.Value,
["RightUpperLeg"] = Folder.RightUpperLeg.Value,
["RightLowerLeg"] = Folder.RightLowerLeg.Value,
["LeftUpperLeg"] = Folder.LeftUpperLeg.Value,
["LeftLowerLeg"] = Folder.LeftLowerLeg.Value,
["Head"] = Folder.Head.Value,
["LeftFoot"] = Folder.LeftFoot.Value,
["RightFoot"] = Folder.RightFoot.Value,
["Face"] = Folder.Face.Value
}
if recieved then
	Scraps.Value = data[1]
	Credits.Value = data[2]	
	limbstable = data[3]
	print("Game has recieved stats")
	else
	warn("Game has failed to recieve stats")
end

while true do wait(30)
	RightUpperArm.Value = "The"
	DS:SetAsync("UserId-"..Player.UserId,{Scraps.Value,Credits.Value,limbstable})
	print("Saved stats")
end
end)

game.Players.PlayerRemoving:Connect(function(plr)
	local folder = game.ReplicatedStorage.Stats
	local PlayerFolder = folder[plr.Name]
	local scraps = PlayerFolder.Scraps
	local credits = PlayerFolder.Credits
	
local limbstable = {
["RightUpperArm"] = PlayerFolder.RightUpperArm.Value,
["LeftUpperArm"] = PlayerFolder.LeftUpperArm.Value,
["UpperTorso"] = PlayerFolder.UpperTorso.Value,
["LowerTorso"] = PlayerFolder.LowerTorso.Value,
["RightUpperLeg"] = PlayerFolder.RightUpperLeg.Value,
["RightLowerLeg"] = PlayerFolder.RightLowerLeg.Value,
["LeftUpperLeg"] = PlayerFolder.LeftUpperLeg.Value,
["LeftLowerLeg"] = PlayerFolder.LeftLowerLeg.Value,
["Head"] = PlayerFolder.Head.Value,
["LeftFoot"] = PlayerFolder.LeftFoot.Value,
["RightFoot"] = PlayerFolder.RightFoot.Value,
["Face"] = PlayerFolder.Face.Value
}
	
	local stored, notStored = pcall(function()
		DS:SetAsync("UserId-"..plr.UserId,{Scraps.Value,Credits.Value,limbstable})
	end)
	
	if stored then
		print("Stored stats")
	else
		warn("Not stored")
		PlayerFolder:Destroy()
	end
end)