Advertisement
Cakey3101

Player Data Service

Jun 7th, 2025
251
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 2.11 KB | Source Code | 0 0
  1. local ServerScriptService = game:GetService("ServerScriptService")
  2. local Players = game:GetService("Players")
  3.  
  4. local ProfileService = require(ServerScriptService.Libs.ProfileService)
  5.  
  6. local DataStoreName = "PlayerProfiles"
  7. local ProfileTemplate = {
  8.     Clicks = 0,
  9.     Gems = 0,
  10.     Rebirths = 0,
  11. }
  12.  
  13. local Shared = {}
  14. local Local = {}
  15.  
  16. Shared.Profiles = {}
  17.  
  18. function Shared.OnStart()
  19.     Players.PlayerAdded:Connect(Local.LoadProfile)
  20.     Players.PlayerRemoving:Connect(Local.ReleaseProfile)
  21.  
  22.     task.spawn(function()
  23.         while true do
  24.             task.wait(300)
  25.             Local.AutoSaveAllProfiles()
  26.         end
  27.     end)
  28. end
  29.  
  30. function Local.LoadProfile(Player)
  31.     local ProfileStore = ProfileService.GetProfileStore(DataStoreName, ProfileTemplate)
  32.     local Profile = ProfileStore:LoadProfileAsync("Player_" .. Player.UserId)
  33.  
  34.     if not Profile then return end
  35.  
  36.     Profile:AddUserId(Player.UserId)
  37.     Profile:Reconcile()
  38.     Shared.Profiles[Player] = Profile
  39.  
  40.     Local.CreateLeaderstats(Player, Profile.Data)
  41.  
  42.     Profile:ListenToRelease(function()
  43.         Local.ReleaseProfile(Player)
  44.     end)
  45. end
  46.  
  47. function Local.CreateLeaderstats(Player, Data)
  48.     local leaderstats = Instance.new("Folder", Player)
  49.     leaderstats.Name = "leaderstats"
  50.  
  51.     local Clicks = Instance.new("NumberValue", leaderstats)
  52.     Clicks.Name = "Clicks"
  53.     Clicks.Value = Data.Clicks
  54.  
  55.     local Gems = Instance.new("NumberValue", leaderstats)
  56.     Gems.Name = "Gems"
  57.     Gems.Value = Data.Gems
  58.  
  59.     local Rebirths = Instance.new("NumberValue", leaderstats)
  60.     Rebirths.Name = "Rebirths"
  61.     Rebirths.Value = Data.Rebirths
  62. end
  63.  
  64. function Local.ReleaseProfile(Player)
  65.     local Profile = Shared.Profiles[Player]
  66.     if Profile then
  67.         Profile:Save()
  68.         Profile:Release()
  69.         Shared.Profiles[Player] = nil
  70.     end
  71.  
  72.     if Player:FindFirstChild("leaderstats") then
  73.         Player.leaderstats:Destroy()
  74.     end
  75. end
  76.  
  77. function Local.AutoSaveAllProfiles()
  78.     for Player, Profile in pairs(Shared.Profiles) do
  79.         if Profile then
  80.             Profile.Data.Clicks = Player.leaderstats.Clicks.Value
  81.             Profile.Data.Gems = Player.leaderstats.Gems.Value
  82.             Profile.Data.Rebirths = Player.leaderstats.Rebirths.Value
  83.             Profile:Save()
  84.         end
  85.     end
  86. end
  87.  
  88. return Shared
Tags: robloxstudio
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement