Advertisement
Cassimus

DataServer

Oct 27th, 2024
21
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.22 KB | None | 0 0
  1. local players = game:GetService("Players")
  2.  
  3. local playerData = script.PlayerData
  4.  
  5. local dataStoreService = game:GetService("DataStoreService")
  6. local dataStore = dataStoreService:GetDataStore("Data")
  7. local key = "TestKey1"
  8.  
  9. local remotes = game.ReplicatedStorage.Remotes
  10. local bank = remotes.Bank
  11. local area = remotes.Area
  12.  
  13. local function LoadData(player: Player)
  14. for i, v in pairs(playerData:GetChildren()) do
  15. v:Clone().Parent = player
  16. end
  17.  
  18. local data
  19.  
  20. local success, errorMsg = pcall(function(...)
  21. data = dataStore:GetAsync(player.UserId..key)
  22.  
  23. for key, folder in pairs(data) do
  24. if key == "leaderstats" then
  25. for item, amount in pairs(folder) do
  26. if item == "Coins" then
  27. player.leaderstats.Coins.Value = amount
  28. elseif item == "Diamonds" then
  29. player.leaderstats.Diamonds.Value = amount
  30. end
  31. end
  32. end
  33.  
  34. if key == "Areas" then
  35. for item, amount in pairs(folder) do
  36. if not player.Areas:FindFirstChild(item) then
  37. local value = Instance.new("StringValue",
  38. player.Areas)
  39. value.Name = item
  40. area:FireClient(player,
  41. workspace.Areas[value.Name].Barrier)
  42. end
  43. end
  44. end
  45. end
  46.  
  47. print("Loaded data")
  48. print(data)
  49.  
  50. end)
  51.  
  52. if not success then
  53. warn(errorMsg)
  54. wait(5)
  55. LoadData(player)
  56. end
  57. end
  58.  
  59. local function SaveData(player: Player)
  60. local data = {}
  61. local count = 0
  62.  
  63. local success, errorMsg = pcall(function(...)
  64.  
  65. for i, folder in pairs(player:GetChildren()) do
  66. data[folder.Name]={}
  67.  
  68. for i, item in pairs(folder:GetChildren()) do
  69. data[folder.Name][item.Name] = item.Value
  70. end
  71. end
  72.  
  73. dataStore:SetAsync(player.UserId..key, data)
  74. end)
  75.  
  76. if not success then
  77. warn(errorMsg)
  78. wait(5)
  79. SaveData(player)
  80. end
  81.  
  82. print ("Saved data")
  83. print(data)
  84. end
  85.  
  86. players.PlayerAdded:Connect(LoadData)
  87.  
  88. players.PlayerRemoving:Connect(SaveData)
  89.  
  90. bank.OnServerEvent:Connect(function(player: Player,
  91. action: string,
  92. currency: string,
  93. amount: number)
  94.  
  95. if action == "+" then
  96. if currency == "Coins" then
  97. player.leaderstats.Coins.Value += amount
  98. elseif currency == "Diamonds" then
  99. player.leaderstats.Diamonds.Value += amount
  100. end
  101. end
  102. end)
  103.  
  104.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement