Here's my DataStore code:
local DatastoreService = game:GetService("DataStoreService")
local Datastore = DatastoreService:GetDataStore("TrainingSimulatorDatastore11")
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 = Datastore:GetAsync("fistPowerData-"..player.UserId)
codeData = Datastore:GetAsync("codeData-"..player.UserId)
fistPowersData = Datastore:GetAsync("fistPowersData-"..player.UserId)
dnasData = Datastore:GetAsync("dnasData-"..player.UserId)
isEquippedDnaData = Datastore:GetAsync("isEquippedDnaData-"..player.UserId)
isEquippedFistPowerData = Datastore: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 = "Dna1"
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 = "Dna"..x
newDna.Parent = player.DnasFolder
local isEquipped = Instance.new("BoolValue")
isEquipped.Name = "IsEquipped"
isEquipped.Parent = newDna
isEquipped.Value = isEquippedDnaData[x]
end
end
else
print("Something went wrong whilst giving "..player.Name.." their data!")
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)
Datastore:SetAsync("fistPowerData-"..player.UserId,player.MiscStats.FistPower.Value)
Datastore:SetAsync("codeData-"..player.UserId,usedCodes)
Datastore:SetAsync("fistPowersData-"..player.UserId,fistPowers)
Datastore:SetAsync("dnasData-"..player.UserId,dnas)
Datastore:SetAsync("isEquippedDnaData-"..player.UserId,isEquippedDnas)
Datastore: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)
Datastore:SetAsync("fistPowerData-"..player.UserId,player.MiscStats.FistPower.Value)
Datastore:SetAsync("codeData-"..player.UserId,usedCodes)
Datastore:SetAsync("fistPowersData-"..player.UserId,fistPowers)
Datastore:SetAsync("dnasData-"..player.UserId,dnas)
Datastore:SetAsync("isEquippedDnaData-"..player.UserId,isEquippedDnas)
Datastore:SetAsync("isEquippedFistPowerData-"..player.UserId,isEquippedFistPowers)
end)
end
end)

1 comment
it's probably a roblox error, the servers are pretty busy right now