Advertisement
Guest User

Untitled

a guest
Jan 22nd, 2017
88
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.76 KB | None | 0 0
  1. local StatFile = game:GetService("ServerStorage"):WaitForChild("StatFile")
  2. local data = {}
  3.  
  4. data.DataStore = game:GetService("DataStoreService"):GetDataStore("test")
  5. local DS = data.DataStore
  6.  
  7. data.Default = {
  8. ["statnumbers"] = {
  9. ["Munny"] = 0,
  10. ["Kills"] = 0,
  11. ["InventorySlot"] = "Empty",
  12. ["Cats"] = false,
  13. },
  14. ["AnotherFolder"] = {
  15. ["Munny"] = 0,
  16. ["BagSlot"] = "Empty",
  17. ["Dogs"] = 0,
  18. ["Nothing"] = false,
  19. }
  20. }
  21.  
  22. local Types = {
  23. ["table"] = "Folder",
  24. ["string"] = "StringValue",
  25. ["boolean"] = "BoolValue",
  26. ["number"] = "IntValue",
  27. }
  28.  
  29. local function createDictionary(start)
  30. local dict = {}
  31. for i,v in pairs(start):GetChildren() do
  32. if v:IsA("Folder") then
  33. dict[v.Name] = createDictionary(v) --// this reminds me, make a video on recursion
  34. else
  35. dict[v.Name] = v.Value
  36. end
  37. end
  38. return dict
  39. end
  40.  
  41. local function load(player, start, parent)
  42. for i,v in pairs(start) do
  43. local valueType = Types[typeof(v)]
  44. local new = Instance.new(valueType)
  45. if valueType == 'Folder' then
  46. for ii,vv in pairs(v) do --// if i comment this loop out none of the string/int/bool values are created
  47. load(player, v, new)
  48. end
  49. else
  50. new.Value = v
  51. end
  52. new.Name = i
  53. new.Parent = parent
  54. end
  55. end
  56.  
  57. function data:SaveData(player)
  58. DS:SetAsync(player.userId, createDictionary(StatFile[player.Name]))
  59. end
  60.  
  61. function data:LoadData(player)
  62. local playerData = DS:GetAsync(player.userId)
  63. local playerDataFolder = Instance.new("Folder", StatFile)
  64. playerDataFolder.Name = player.Name
  65. if playerData then
  66. load(player, playerData, playerDataFolder)
  67. else
  68. load(player, data.Default, playerDataFolder)
  69. end
  70. print('Datastore takes up '..game:GetService("HttpService"):JSONEncode(data.Default):len())
  71. end
  72.  
  73. return data
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement