Sorry I am new so I'm not that good at explaining my scripts.
------ sorry if this is a bad script or I did not do a good job explaining it im new so im not that good. PointData = game:GetService("DataStoreService"):GetDataStore("PointData")-------I dont really know what these do I just know they are important. Bought = game:GetService("DataStoreService"):GetDataStore("Bought")-------- same thing here. game.Players.PlayerAdded:Connect(function(plr)-------This runs when a new player is added. local LB = Instance.new("IntValue") LB.Name = "leaderstats" local p = Instance.new("IntValue")---------this adds the Points to the new players leader board p.Name = "Points" p.Value = PointData:GetAsync(plr.userId) or 0 local r = Instance.new("IntValue")------------This addes the Bought variable to the leaderboard of the new player. I use the bought one to keep track and save what is bought im a new programer. r.Name = "Bought" r.Value = Bought:GetAsync(plr.userId) or 0 LB.Parent = plr p.Parent = LB-------------these assing the points the Bought and the Leaderboard to the player. r.Parent = LB end) game.Players.PlayerRemoving:Connect(function(plr) PointData:SetAsync(plr.userId, plr.leaderstats.Points.Value)--------I think these take the players leaderboard thing off when they leave. Bought:SetAsync(plr.userId, plr.leaderstats.Bought.Value) end)