Can someone help me? im new in LUA programming this is the script: local RS = game:GetService("ReplicatedStorage") local bags = RS.Bags local Dss = game:GetService("DataStoreService") local DS = Dss:GetDataStore("BackpackDataStore1")

game.Players.PlayerAdded:Connect(function(player) local leaderstats = Instance.new("Folder", player) leaderstats.Name = "leaderstats"

local dribbles = Instance.new("NumberValue", leaderstats)
dribbles.Name = "Dribbles"
dribbles.Value = 0

local coins = Instance.new("NumberValue", leaderstats)
coins.Name = "Coins"
coins.Value = 0

-----------------------------------------------------------

local datafolder = Instance.new("Folder", player)
datafolder.Name = "Data"

local rebirthsfolder = Instance.new("Folder", datafolder)
rebirthsfolder.Name = "RebirthsData"

local basketballsfolder = Instance.new("Folder", datafolder)
basketballsfolder.Name = "BasketballsData"

local backpackfolder = Instance.new("Folder", datafolder)
backpackfolder.Name = "BackpackData"	

-----------------------------------------------------------

local ownedbasketballsfolder = Instance.new("Folder", basketballsfolder)
ownedbasketballsfolder.Name = "OwnedBasketballs"

local ownedrebirthsfolder = Instance.new("Folder", rebirthsfolder)
ownedrebirthsfolder.Name = "OwnedRebirths"

local ownedbagsfolder = Instance.new("Folder", backpackfolder)
ownedbagsfolder.Name = "OwnedBags"
-----------------------------------------------------------

local equipedbag = Instance.new("StringValue", backpackfolder)
equipedbag.Name = "EquippedBag"
equipedbag.Value = "StarterBag"

local equippedrebirth = Instance.new("StringValue", rebirthsfolder)
equippedrebirth.Name = "EquippedRebirth"
equippedrebirth.Value = "StarterRebirth"

local equippedbasketball = Instance.new("StringValue", basketballsfolder)
equippedbasketball.Name = "EquippedBasketball"
equippedbasketball.Value = "StarterBasketball"

local Insert = Instance.new("StringValue", ownedbagsfolder)
Insert.Name = "StarterBag"

for i, bag in pairs(bags:GetChildren()) do
	if bag:FindFirstChild("isInfinitebag") then
		bag.bagStorage.Value = math.huge
	end
end


-- Data Stores 

local Key = player.UserId

local dribblesData, coinsData, ownedBagsData, ownedrebirthsData, ownedbasketballsData, equippedBagData, equippedRebirthData , equippedBasketballData

local succ, err = pcall(function()
	dribblesData = DS:GetAsync(Key.."-Dribbles")
	coinsData = DS:GetAsync(Key.."-Coins")

	ownedBagsData = DS:GetAsync(Key.."-OwnedBags")
	equippedBagData = DS:GetAsync(Key.."-Equippedbag")

	ownedrebirthsData = DS:GetAsync(Key.."-OwnedRebirths")
	equippedRebirthData = DS:GetAsync(Key.."-EquippedRebirth")

	ownedbasketballsData = DS:GetAsync(Key.."-OwnedBasketballs")
	equippedBasketballData = DS:GetAsync(Key.."-EquippedBasketball")
end)
if succ then
	if dribblesData then
		dribbles.Value = dribblesData
		if coinsData then
			coins.Value = coinsData
		end
		if ownedBagsData then
			for v, bag in pairs(ownedBagsData) do
				if bag ~= "StarterBag" then
					local Insert = Instance.new("StringValue", ownedbagsfolder)
					Insert.Name = bag
				end
			end
		end
		if equippedBagData then
			equipedbag.Value = equippedBagData
		end
	end
end
-------------------------------------------------------------
if ownedrebirthsData then
	for c, reb in pairs(ownedrebirthsData) do
		if reb ~= "StarterRebirth" then
			local Insert2 = Instance.new("StringValue", ownedrebirthsfolder)
			Insert2.Name = reb
		end
	end
end
if equippedRebirthData then
	equippedrebirth.Value = equippedRebirthData
end

------------------------------------------------------------
if ownedbasketballsData then
	for d, bkb in pairs(ownedbasketballsData) do
		if bkb ~= "StarterBag" then
			local Insert3 = Instance.new("StringValue", ownedbasketballsfolder)
			Insert3.Name = bkb
		end
	end
end
if equippedBasketballData then
	equipedbag.Value = equippedBasketballData
end

end)

game.Players.PlayerRemoving:Connect(function(player) local Key = player.UserId

local savedOwnedBags = {}
local savedOwnedRebirths = {}
local savedOwnedBasketballs = {}



local succ, err = pcall(function()
	DS:SetAsync(Key.."-Dribbles",player.leaderstats.Dribbles.Value)
	DS:SetAsync(Key.."-Coins",player.leaderstats.Coins.Value)
	
	DS:SetAsync(Key.."-OwnedBags",player.Data.BackpackData.EquippedBag.Value)
	DS:SetAsync(Key.."-EquippedBag",player.Data.Dribbles.Value)
	
	DS:SetAsync(Key.."-OwnedRebirths",player.leaderstats.Coins.Value)
	DS:SetAsync(Key.."-EquippedRebirth",player.Data.BackpackData.EquippedBag.Value)
	
	DS:SetAsync(Key.."-OwnedBasketballs",player.leaderstats.Coins.Value)
	DS:SetAsync(Key.."-EquippedBasketball",player.Data.BackpackData.EquippedBag.Value)

	for i, n in pairs(player.Data.BackpackData.OwnedBags:GetChildren()) do
		table.insert(savedOwnedBags,n.Name)
	end
	DS:SetAsync(Key.."-OwnedBags",savedOwnedBags)
	
	for i, v in pairs(player.Data.RebirthsData.OwnedRebirths:GetChildren()) do
		table.insert(savedOwnedRebirths,v.Name)
	end
	DS:SetAsync(Key.."-OwnedRebirths",savedOwnedBags)
	
	for i, c in pairs(player.Data.BackpackData.OwnedBasketballs:GetChildren()) do
		table.insert(savedOwnedBasketballs,c.Name)
	end
	DS:SetAsync(Key.."-OwnedBasketballs",savedOwnedBags)

end)
if succ then
	print("Success while saving Data!")
else
	print("Something went wrong while saving Data! "..err)
end

end)

what is wrong?