Advertisement
HowToRoblox

InfiniteObbyScript

May 7th, 2022
1,854
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 2.64 KB | None | 0 0
  1. local spawns = workspace:WaitForChild("Spawns")
  2.  
  3.  
  4. local dss = game:GetService("DataStoreService")
  5. local obbyDS = dss:GetDataStore("StagesDS")
  6.  
  7.  
  8. function saveData(plr)
  9.    
  10.     pcall(function()
  11.         obbyDS:SetAsync(plr.UserId, plr.leaderstats.Stages.Value)
  12.     end)
  13. end
  14.  
  15.  
  16. game.Players.PlayerAdded:Connect(function(plr)
  17.    
  18.     local freeSpawn
  19.    
  20.     for i, child in pairs(spawns:GetChildren()) do
  21.        
  22.         if not child:FindFirstChildOfClass("StringValue") then
  23.            
  24.             freeSpawn = child
  25.            
  26.             local value = Instance.new("StringValue", child)
  27.             value.Name = plr.Name
  28.         end
  29.     end
  30.    
  31.     plr.CharacterAdded:Connect(function(char)
  32.        
  33.         char.HumanoidRootPart:GetPropertyChangedSignal("CFrame"):Wait()
  34.         char.HumanoidRootPart.CFrame = freeSpawn.CFrame + Vector3.new(0, 10, 0)
  35.     end)
  36.    
  37.    
  38.     local leaderstats = Instance.new("Folder", plr)
  39.     leaderstats.Name = "leaderstats"
  40.    
  41.     local stagesValue = Instance.new("IntValue")
  42.     stagesValue.Name = "Stages"
  43.     stagesValue.Parent = leaderstats
  44.    
  45.     local data
  46.    
  47.     pcall(function()
  48.         data = obbyDS:GetAsync(plr.UserId)
  49.     end)
  50.     stagesValue.Value = data or 0
  51.    
  52.    
  53.     local stagesList = game.ServerStorage:WaitForChild("Stages"):GetChildren()
  54.    
  55.     while wait() do
  56.        
  57.         local randomStage = stagesList[math.random(#stagesList)]:Clone()
  58.        
  59.         for i, descendant in pairs(randomStage:GetDescendants()) do
  60.            
  61.             if descendant:IsA("BasePart") and descendant.Color == Color3.fromRGB(196, 40, 28) then
  62.                
  63.                 local debounce = false
  64.                
  65.                 descendant.Touched:Connect(function(hit)
  66.                    
  67.                     if game.Players:GetPlayerFromCharacter(hit.Parent) and not debounce then
  68.                         debounce = true
  69.                         game.Players:GetPlayerFromCharacter(hit.Parent):LoadCharacter()
  70.                         wait(0.1)
  71.                         debounce = false
  72.                     end
  73.                 end)
  74.             end
  75.            
  76.             if descendant:IsA("BasePart") and descendant.Name == "Spinner" then
  77.                
  78.                 spawn(function()
  79.                     while wait() do
  80.                         descendant.Orientation = descendant.Orientation + Vector3.new(0, 7, 0)
  81.                     end
  82.                 end)
  83.             end
  84.         end
  85.        
  86.         randomStage:SetPrimaryPartCFrame(freeSpawn.CFrame + (freeSpawn.CFrame.LookVector * (randomStage.PrimaryPart.Size.Z / 2 + freeSpawn.Size.Z / 2)))
  87.         randomStage.Parent = freeSpawn
  88.        
  89.         randomStage.End.Touched:Wait()
  90.        
  91.         freeSpawn:ClearAllChildren()
  92.        
  93.         plr:LoadCharacter()
  94.        
  95.         stagesValue.Value += 1
  96.     end
  97. end)
  98.  
  99.  
  100.  
  101. game.Players.PlayerRemoving:Connect(function(plr)
  102.    
  103.     local takenSpawn
  104.    
  105.     for i, child in pairs(spawns:GetChildren()) do
  106.        
  107.         if child:FindFirstChild(plr.Name) then
  108.            
  109.             child:ClearAllChildren()
  110.         end
  111.     end
  112.    
  113.     saveData(plr)
  114. end)
  115.  
  116. game:BindToClose(function()
  117.     for i, plr in pairs(game.Players:GetPlayers()) do
  118.         saveData(plr)
  119.     end
  120. end)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement