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
Could you properly format this?
What do you mean by that?