Advertisement
Guest User

Datastore (Regular)

a guest
Jun 21st, 2018
84
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.46 KB | None | 0 0
  1. local DSS = game:GetService("DataStoreService")
  2. local RS = game.ReplicatedStorage
  3. local DS = DSS:GetDataStore("TestDS1")
  4. local statsModule = require(script.DATA)
  5.  
  6. game.Players.PlayerAdded:connect(function(plr)
  7. local key = "user_" ..plr.UserId
  8. statsModule.DATA[plr] = {}
  9. local plrData = DS:GetAsync(key)
  10. if plrData == nil then
  11. statsModule.DATA[plr] = {
  12. Level = 1;
  13. XP = 0;
  14. Weapons = {"Aiz1"};
  15. Equipped = "Aiz1";
  16. }
  17. DS:SetAsync(key, statsModule.DATA[plr])
  18. else
  19. statsModule.DATA[plr] = DS:GetAsync(key)
  20. end
  21.  
  22. local index = statsModule.DATA[plr]
  23. statsModule.DATA[plr] = setmetatable({}, {__index = index, __newindex = function(tbl, key, newValue)
  24. local existingValue = index[key]
  25. index[key] = newValue
  26. if newValue ~= existingValue and existingValue ~= nil then
  27. if key == "XP" then
  28. --XP Gui Client Update Event
  29. if statsModule.DATA[plr].XP >= (statsModule.DATA[plr].Level * 100) then
  30. statsModule.DATA[plr].XP = (statsModule.DATA[plr].XP - statsModule.DATA[plr].Level * 100) -- Updating XP
  31. statsModule.DATA[plr].Level = statsModule.DATA[plr].Level + 1 -- Adding One Level
  32. end
  33. end
  34. end
  35. end})
  36. end)
  37.  
  38. game.Players.PlayerRemoving:connect(function(plr)
  39. local key = "user_" ..plr.UserId
  40. statsModule.DATA[plr] = getmetatable(statsModule.DATA[plr]).__index
  41. DS:SetAsync(key, statsModule.DATA[plr])
  42. end)
  43.  
  44. game:BindToClose(function()
  45. warn("Saving Data")
  46. wait(1)
  47. warn("Complete")
  48. end)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement