So, I've made a DNA shop and it works, you can purchase it, you can equip it, all that good stuff. But once you get to Halloween DNA(the 9th DNA) it stops saving EVERYTHING, such as your Fist power, or your Coins, like literally...everything. Please help!

Here's my DataStore:

local DatastoreService = game:GetService("DataStoreService") local Datastore = DatastoreService:GetDataStore("TrainingSimulatorDataTest41") local Datastore2 = DatastoreService:GetDataStore("TrainingSimulatorDataTest2|10") local mps = game:GetService("MarketplaceService") local id = 11893526

game.Players.PlayerAdded:Connect(function(player)

local leaderstats = Instance.new("Folder")
leaderstats.Name = "leaderstats"
leaderstats.Parent = player

local codesFolder = Instance.new("Folder")
codesFolder.Name = "CodesFolder"
codesFolder.Parent = player

local miscStats = Instance.new("Folder")
miscStats.Name = "MiscStats"
miscStats.Parent = player

local fistPowersFolder = Instance.new("Folder")
fistPowersFolder.Name = "FistPowers"
fistPowersFolder.Parent = player

local dnasFolder = Instance.new("Folder")
dnasFolder.Name = "DnasFolder"
dnasFolder.Parent = player

local folder = Instance.new("Folder")
folder.Name = player.Name
folder.Parent = game.ServerStorage:WaitForChild("RemoteData")

local debounce = Instance.new("BoolValue")
debounce.Name = "Debounce"
debounce.Parent = folder

local coins = Instance.new("NumberValue")
coins.Name = "Coins"
coins.Parent = leaderstats

local fistPower = Instance.new("NumberValue")
fistPower.Name = "FistPower"
fistPower.Parent = miscStats

local diamonds = Instance.new("NumberValue")
diamonds.Name = "Diamonds"
diamonds.Parent = leaderstats

local rank = Instance.new("StringValue")
rank.Name = "Rank"
rank.Parent = leaderstats

local rankMultiplier = Instance.new("NumberValue")
rankMultiplier.Name = "RankMultiplier"
rankMultiplier.Parent = rank

local strength = Instance.new("NumberValue")
strength.Name = "Strength"
strength.Parent = miscStats

local dnaAmount = Instance.new("NumberValue")
dnaAmount.Name = "Dna"
dnaAmount.Parent = miscStats

local coinData,strengthData,dnaData,rankData,rankMultiplierData,diamondData,fistPowerData,codeData,fistPowersData,dnasData,isEquippedFistPowerData,isEquippedDnaData

local success,errorMsg = pcall(function()
	
	coinData = Datastore:GetAsync("coinData-"..player.UserId)
	strengthData = Datastore:GetAsync("strengthData-"..player.UserId)
	dnaData = Datastore:GetAsync("dnaData-"..player.UserId)
	rankData = Datastore:GetAsync("rankData-"..player.UserId)
	rankMultiplierData = Datastore:GetAsync("rankMultiplierData-"..player.UserId)
	diamondData = Datastore:GetAsync("diamondData-"..player.UserId)
	fistPowerData = Datastore2:GetAsync("fistPowerData-"..player.UserId)
	codeData = Datastore2:GetAsync("codeData-"..player.UserId)
	fistPowersData = Datastore2:GetAsync("fistPowersData-"..player.UserId)
	dnasData = Datastore2:GetAsync("dnasData-"..player.UserId)
	isEquippedDnaData = Datastore2:GetAsync("isEquippedDnaData-"..player.UserId)
	isEquippedFistPowerData = Datastore2:GetAsync("isEquippedFistPowerData-"..player.UserId)
end)

if success then
	
	if strengthData then
		strength.Value = strengthData
		coins.Value = coinData
		dnaAmount.Value = dnaData
		rank.Value = rankData
		rankMultiplier.Value = rankMultiplierData
		diamonds.Value = diamondData
		fistPower.Value = fistPowerData
	else
		fistPower.Value = 1
		dnaAmount.Value = 50
		rank.Value = "Noob"
		
		local firstFistPower = Instance.new("StringValue")
		firstFistPower.Name = "FistPower1"
		firstFistPower.Parent = player.FistPowers
		
		local isEquipped = Instance.new("BoolValue")
		isEquipped.Name = "IsEquipped"
		isEquipped.Parent = firstFistPower
		isEquipped.Value = true
		
		local firstDna = Instance.new("StringValue")
		firstDna.Name = "NormalDNA"
		firstDna.Parent = player.DnasFolder
		
		local isEquippedDna = Instance.new("BoolValue")
		isEquippedDna.Name = "IsEquipped"
		isEquippedDna.Parent = firstDna
		isEquippedDna.Value = true
	end
	
	if codeData then
                    
		for x = 1,#codeData do
			
			local newCode = Instance.new("StringValue")
			newCode.Name = "Code"..x
			newCode.Parent = player.CodesFolder
		end
	end
	
	if fistPowersData then
		
		for x = 1,#fistPowersData do
			
			local newFistPower = Instance.new("StringValue")
			newFistPower.Name = "FistPower"..x
			newFistPower.Parent = player.FistPowers
			
			local isEquipped = Instance.new("BoolValue")
			isEquipped.Name = "IsEquipped"
			isEquipped.Parent = newFistPower
			isEquipped.Value = isEquippedFistPowerData[x]
			
			wait()
		end
	end
	
	if dnasData then
		
		for x = 1,#dnasData do
			
			local newDna = Instance.new("StringValue")
			newDna.Name = dnasData[x]
			newDna.Parent = player.DnasFolder
			
			local isEquipped = Instance.new("BoolValue")
			isEquipped.Name = "IsEquipped"
			isEquipped.Parent = newDna
			isEquipped.Value = isEquippedDnaData[x]
		end
	end
end
	

if mps:UserOwnsGamePassAsync(player.UserId,id) or player:GetRankInGroup(6305352) >= 254 then
	
	dnaAmount.Value = math.huge
end

end)

game.ReplicatedStorage.RemoteEvents.MiscEvents.CodeEvent.OnServerEvent:Connect(function(player,code,amount,folder,currency)

local newCode = Instance.new("StringValue")
newCode.Name = code
newCode.Parent = player.CodesFolder

player[folder][currency].Value = player[folder][currency].Value + amount

end)

game.Players.PlayerRemoving:Connect(function(player)

local usedCodes = {}
local isEquippedFistPowers = {}
local fistPowers = {}
local dnas = {}
local isEquippedDnas = {}

for _,code in pairs(player.CodesFolder:GetChildren()) do
	
	table.insert(usedCodes,code.Name)
	wait()
end

for _,fistPower in pairs(player.FistPowers:GetChildren()) do
	table.insert(fistPowers,fistPower.Name)
	table.insert(isEquippedFistPowers,fistPower.IsEquipped.Value)
	
	wait()
end

for _,DNA in pairs(player.DnasFolder:GetChildren()) do
	table.insert(dnas,DNA.Name)
	table.insert(isEquippedDnas,DNA.IsEquipped.Value)
	
	wait()
end


local success,errorMsg = pcall(function()
	
	Datastore:SetAsync("coinData-"..player.UserId,player.leaderstats.Coins.Value)
	Datastore:SetAsync("strengthData-"..player.UserId,player.MiscStats.Strength.Value)
	Datastore:SetAsync("dnaData-"..player.UserId,player.MiscStats.Dna.Value)
	Datastore:SetAsync("rankData-"..player.UserId,player.leaderstats.Rank.Value)
	Datastore:SetAsync("rankMultiplierData-"..player.UserId,player.leaderstats.Rank.RankMultiplier.Value)
	Datastore:SetAsync("diamondData-"..player.UserId,player.leaderstats.Diamonds.Value)
	Datastore2:SetAsync("fistPowerData-"..player.UserId,player.MiscStats.FistPower.Value)
	Datastore2:SetAsync("codeData-"..player.UserId,usedCodes)
	Datastore2:SetAsync("fistPowersData-"..player.UserId,fistPowers)
	Datastore2:SetAsync("dnasData-"..player.UserId,dnas)
	Datastore2:SetAsync("isEquippedDnaData-"..player.UserId,isEquippedDnas)
	Datastore2:SetAsync("isEquippedFistPowerData-"..player.UserId,isEquippedFistPowers)
end)

end)

game:BindToClose(function()

for _,player in pairs(game.Players:GetPlayers()) do
	
	local usedCodes = {}
	local isEquippedFistPowers = {}
	local fistPowers = {}
	local dnas = {}
	local isEquippedDnas = {}
	
	for _,code in pairs(player.CodesFolder:GetChildren()) do
		
		table.insert(usedCodes,code.Name)
		wait()
	end
	
	for _,fistPower in pairs(player.FistPowers:GetChildren()) do
		table.insert(fistPowers,fistPower.Name)
		table.insert(isEquippedFistPowers,fistPower.IsEquipped.Value)
		
		wait()
	end
	
	for _,DNA in pairs(player.DnasFolder:GetChildren()) do
		table.insert(dnas,DNA.Name)
		table.insert(isEquippedDnas,DNA.IsEquipped.Value)
		
		wait()
	end
	
	for _,dnasInDNAS in pairs(dnas) do
		print(dnasInDNAS)
		wait()
	end
	
	
	local success,errorMsg = pcall(function()
		
		Datastore:SetAsync("coinData-"..player.UserId,player.leaderstats.Coins.Value)
		Datastore:SetAsync("strengthData-"..player.UserId,player.MiscStats.Strength.Value)
		Datastore:SetAsync("dnaData-"..player.UserId,player.MiscStats.Dna.Value)
		Datastore:SetAsync("rankData-"..player.UserId,player.leaderstats.Rank.Value)
		Datastore:SetAsync("rankMultiplierData-"..player.UserId,player.leaderstats.Rank.RankMultiplier.Value)
		Datastore:SetAsync("diamondData-"..player.UserId,player.leaderstats.Diamonds.Value)
		Datastore2:SetAsync("fistPowerData-"..player.UserId,player.MiscStats.FistPower.Value)
		Datastore2:SetAsync("codeData-"..player.UserId,usedCodes)
		Datastore2:SetAsync("fistPowersData-"..player.UserId,fistPowers)
		Datastore2:SetAsync("dnasData-"..player.UserId,dnas)
		Datastore2:SetAsync("isEquippedDnaData-"..player.UserId,isEquippedDnas)
		Datastore2:SetAsync("isEquippedFistPowerData-"..player.UserId,isEquippedFistPowers)
	end)

end

end)

2 comments

0

Could you properly format this?

0

What do you mean by that?