Tweak16

ROBLOX Scripting | Obby Reset Stage

Apr 24th, 2021 (edited)
2,160
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 2.98 KB | None | 0 0
  1. --[[
  2. Made by Tweakified, Neonblox Games
  3. Video: https://youtu.be/IkLQHJOKwDU
  4.  
  5. Script Type: Regular Script
  6. Script Parent: ServerScriptService
  7. --]]
  8.  
  9. local Players = game:GetService("Players")
  10. local ReplicatedStorage = game:GetService("ReplicatedStorage")
  11. local ResetStage = ReplicatedStorage:WaitForChild("ResetStage")
  12.  
  13. local Checkpoints = workspace:WaitForChild("Checkpoints")
  14. local inGameStartupPlayers = {}
  15. local CurrentStage = {}
  16. local TouchDb = {}
  17.  
  18. local function NewCharacter(player, char)
  19.     local TempCurrentStage = CurrentStage[player.UserId]
  20.     if TempCurrentStage ~= nil then
  21.         local TempCheckpoint = Checkpoints:FindFirstChild(TempCurrentStage)
  22.         if TempCheckpoint ~= nil then
  23.             repeat wait(0.1) until char.PrimaryPart ~= nil
  24.             char:SetPrimaryPartCFrame(CFrame.new(TempCheckpoint.Position + Vector3.new(0, 3, 0)) * CFrame.Angles(0, math.rad(TempCheckpoint.Orientation.Y) + math.rad(90), 0))
  25.         end
  26.     end
  27. end
  28.  
  29. local function NewPlayer(player)
  30.     CurrentStage[player.UserId] = 1
  31.  
  32.     local leaderstats = Instance.new("Folder", player)
  33.     leaderstats.Name = "leaderstats"
  34.     local Stage = Instance.new("IntValue", leaderstats)
  35.     Stage.Name = "Stage"
  36.     Stage.Value = 1
  37.  
  38.     local TempChar = player.Character
  39.     if TempChar ~= nil then
  40.         NewCharacter(player, TempChar)
  41.     end
  42.     player.CharacterAdded:Connect(function(char)
  43.         NewCharacter(player, char)
  44.     end)
  45. end
  46.  
  47. Players.PlayerAdded:Connect(function(player)
  48.     if inGameStartupPlayers[player] == nil then
  49.         NewPlayer(player)
  50.     end
  51. end)
  52.  
  53. Players.PlayerRemoving:Connect(function(player)
  54.     CurrentStage[player.UserId] = nil
  55. end)
  56.  
  57. ResetStage.OnServerEvent:Connect(function(player)
  58.     CurrentStage[player.UserId] = 1
  59.     local TempLeaderstats = player:FindFirstChild("leaderstats")
  60.     if TempLeaderstats ~= nil then
  61.         local TempStage = TempLeaderstats:FindFirstChild("Stage")
  62.         if TempStage ~= nil then
  63.             TempStage.Value = 1
  64.         end
  65.     end    
  66.     NewCharacter(player, player.Character)
  67. end)
  68.  
  69. for i,v in pairs(Checkpoints:GetChildren()) do
  70.     local StageNum = tonumber(v.Name)
  71.     v.Touched:Connect(function(hit)
  72.         local char = hit.Parent
  73.         if char ~= nil then
  74.             local Humanoid = char:FindFirstChildOfClass("Humanoid")
  75.             if Humanoid ~= nil and Humanoid.Health > 0 then
  76.                 local player = Players:GetPlayerFromCharacter(char)
  77.                 if player ~= nil and (TouchDb[player.UserId] or 0) + 1 <= os.time() then
  78.                     TouchDb[player.UserId] = os.time()
  79.                     local TempCurrentStage = CurrentStage[player.UserId]
  80.                     if TempCurrentStage == StageNum - 1 then
  81.                         CurrentStage[player.UserId] = StageNum
  82.                         local TempLeaderstats = player:FindFirstChild("leaderstats")
  83.                         if TempLeaderstats ~= nil then
  84.                             local TempStage = TempLeaderstats:FindFirstChild("Stage")
  85.                             if TempStage ~= nil then
  86.                                 TempStage.Value = StageNum
  87.                             end
  88.                         end
  89.                     end
  90.                 end
  91.             end
  92.         end
  93.     end)
  94. end
  95.  
  96. inGameStartupPlayers = Players:GetPlayers()
  97. for i,v in pairs(inGameStartupPlayers) do
  98.     spawn(function()
  99.         NewPlayer(v)
  100.     end)
  101. end
  102.  
  103. inGameStartupPlayers = {}
Add Comment
Please, Sign In to add comment