Hey, so my datastore kind of sucks because it isn't consistent and it somehow will save my stats as someone elses sometimes, its really odd and i cant figure out why?
If you guys see anything that would make this not work please let me know, thank you!
--Variables local leveldata = game:GetService("DataStoreService"):GetDataStore("level") local EXPdata = game:GetService("DataStoreService"):GetDataStore("EXP") local xpLeveldata = game:GetService("DataStoreService"):GetDataStore("xpLevel") local Golddata = game:GetService("DataStoreService"):GetDataStore("Gold") local toolsdata = game:GetService("DataStoreService"):GetDataStore("Tools") local HttpService = game:GetService("HttpService") level_gold = {"Gold", "Level"} EXP_EXPNeeded = {"Exp" , "ExpNeeded"} --Data Storage Save function savedata(dataname, playerid, value) game:GetService("DataStoreService"):GetDataStore(dataname):setAsync(playerid, value) end --Leaderboard Variables game.Players.PlayerAdded:Connect(function(player) playerKey = "user."..player.UserId -- user key print(playerKey) local leaderstats = Instance.new("Folder") leaderstats.Name = "leaderstats" leaderstats.Parent = player --Gold local gold = Instance.new("IntValue") gold.Name = "Gold" gold.Value = Golddata:GetAsync(playerKey) or 0 gold.Parent = leaderstats --Level local level = Instance.new("IntValue") level.Value = leveldata:GetAsync(playerKey) or 1 level.Name = "Level" level.Parent = leaderstats --XP local EXP = Instance.new("IntValue") EXP.Value = EXPdata:GetAsync(playerKey) or 0 EXP.Parent = player EXP.Name = "Exp" --XP Needed local xpLevel = Instance.new("IntValue") xpLevel.Value = xpLeveldata:GetAsync(playerKey) or 84 xpLevel.Name = 'ExpNeeded' xpLevel.Parent = player --tools local tools = toolsdata:GetAsync(playerKey) if tools then for i,v in pairs(tools) do local tool = game.ReplicatedStorage.Tools:FindFirstChild(v) if tool then tool:Clone().Parent = player.Backpack tool:Clone().Parent = player.StarterGear end end end --Save data when player leaves game.Players.PlayerRemoving:Connect(function(player) -- save player stats local toolsToSave = {} for i,v in pairs(player.StarterGear:GetChildren()) do if v then table.insert(toolsToSave,v.Name) end end game:GetService("DataStoreService"):GetDataStore('Tools'):SetAsync(playerKey, toolsToSave) savedata('level',playerKey,player.leaderstats.Level.Value) savedata('EXP',playerKey,player.Exp.Value) savedata('xpLevel',playerKey,player.ExpNeeded.Value) savedata('Gold',playerKey,player.leaderstats.Gold.Value) print('data saved') end)
I know i use alot of separate DataStores instead of putting them into a table, (mainly because i dont know how to put them into a table.) but do you think that would be a enough reason for this not to work??