Advertisement
Guest User

Leaderboard and script for checkpoints

a guest
Jan 3rd, 2021
196
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.21 KB | None | 0 0
  1. Make script and name it to Obbysavingsystem this is the leaderboard paste this =
  2.  
  3. local DataStoreService = game:GetService("DataStoreService")
  4. local StageDataStore = DataStoreService:GetDataStore("StageData")
  5.  
  6. local function TouchedPart(part, touchedPart)
  7. local ply = game.Players:GetPlayerFromCharacter(touchedPart.Parent)
  8. if ply then
  9. if ply.leaderstats.Stage.Value < tonumber(part.Name) then
  10. ply.leaderstats.Stage.Value = tonumber(part.Name)
  11. end
  12. end
  13. end
  14.  
  15. local function AddTouchStageGiver()
  16. local stageNum = 1
  17. while true do
  18. local part = game.Workspace:FindFirstChild(tostring(stageNum))
  19. if part then
  20. part.Touched:connect(function (touchedPart)
  21. TouchedPart(part, touchedPart)
  22. end)
  23. else
  24. break
  25. end
  26. stageNum = stageNum + 1
  27. wait()
  28. end
  29. end
  30.  
  31. local function GetSavedStage(ply)
  32. return StageDataStore:GetAsync(tostring(ply.UserId)) or 1
  33. end
  34.  
  35. local function SaveCurrentStage(ply)
  36. StageDataStore:SetAsync(tostring(ply.UserId), ply.leaderstats.Stage.Value)
  37. end
  38.  
  39. local SPAWN_OFFSET = Vector3.new(0, 5, 0)
  40.  
  41. local function GetStageSpawnCFrames(stage)
  42. local stageSpawnPart = game.Workspace:FindFirstChild(tostring(stage))
  43.  
  44. if not stageSpawnPart then
  45. return game.Workspace:FindFirstChild("1").CFrame + SPAWN_OFFSET
  46. end
  47.  
  48. return stageSpawnPart.CFrame + SPAWN_OFFSET
  49. end
  50.  
  51. local stageValues = {}
  52.  
  53. local function CharacterAdded(ply, char)
  54. repeat wait() until stageValues[ply]
  55. char:SetPrimaryPartCFrame(GetStageSpawnCFrames(stageValues[ply].Value))
  56. end
  57.  
  58. game.Players.PlayerAdded:connect(function (ply)
  59. local leaderstats = Instance.new("ObjectValue", ply)
  60. leaderstats.Name = "leaderstats"
  61.  
  62. ply.CharacterAdded:connect(function (char)
  63. CharacterAdded(ply, char)
  64. end)
  65.  
  66. local stage = Instance.new("IntValue", leaderstats)
  67. stage.Name = "Stage"
  68. stage.Value = GetSavedStage(ply)
  69.  
  70. stageValues[ply] = stage
  71.  
  72. --[[
  73. if ply.Character then
  74. CharacterAdded(ply, ply.Character)
  75. end
  76. --]]
  77. end)
  78.  
  79. game.Players.PlayerRemoving:connect(function (ply)
  80. SaveCurrentStage(ply)
  81. end)
  82.  
  83. wait(1)
  84. AddTouchStageGiver()
  85.  
  86. Checkpoints =
  87.  
  88. function oa(object)
  89. local player = game.Players:playerFromCharacter(object)
  90. if player ~= nil then
  91. local ls = player.leaderstats
  92. local sl = game.Workspace:FindFirstChild(ls.Stage.Value)
  93. print("gah")
  94. object.Torso.CFrame = object.Torso.CFrame + Vector3.new(0,3,0)
  95. wait()
  96. object.Torso.CFrame = sl.CFrame + Vector3.new(0,3,0)
  97. end end
  98.  
  99.  
  100. function oe(object)
  101. if object.className == "Player" then
  102. local ack = Instance.new("IntValue")
  103. ack.Name = "leaderstats"
  104. local ack2 = Instance.new("IntValue")
  105. ack2.Name = "Stage"
  106. ack2.Value = 1
  107. ack2.Parent = ack
  108. ack.Parent = object
  109. end end
  110.  
  111.  
  112. game.Players.ChildAdded:connect(oe)
  113. game.Workspace.ChildAdded:connect(oa)
  114.  
  115. script =
  116.  
  117. function ot(hit)
  118. if hit.Parent ~= nil then
  119. local player = game.Players:playerFromCharacter(hit.Parent)
  120. if player ~= nil then
  121. if player.leaderstats.Stage.Value == script.Parent.Name - 1 then
  122. local h = hit.Parent:FindFirstChild("Humanoid")
  123. if h ~= nil then
  124. if h.Health ~= 0 then
  125. player.leaderstats.Stage.Value = script.Parent.Name
  126. end end end end end end
  127.  
  128.  
  129. script.Parent.Touched:connect(ot)
  130.  
  131.  
  132.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement