Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- -- Made by Tweakified, Neonblox Games
- -- Video: https://www.youtube.com/watch?v=k_SGagxVOmc
- local Players = game:GetService("Players")
- local DataStoreService = game:GetService("DataStoreService")
- local ObbyDataStore = DataStoreService:GetDataStore("ObbyDataStore")
- local Checkpoints = workspace:WaitForChild("Checkpoints")
- local inGameStartupPlayers = {}
- local CurrentStage = {}
- local TouchDb = {}
- local function NewCharacter(player, char)
- local TempCurrentStage = CurrentStage[player.UserId]
- if TempCurrentStage ~= nil then
- local TempCheckpoint = Checkpoints:FindFirstChild(TempCurrentStage)
- if TempCheckpoint ~= nil then
- repeat wait(0.1) until char.PrimaryPart ~= nil
- char:SetPrimaryPartCFrame(CFrame.new(TempCheckpoint.Position + Vector3.new(0, 3, 0)) * CFrame.Angles(0, math.rad(TempCheckpoint.Orientation.Y) + math.rad(90), 0))
- end
- end
- end
- local function NewPlayer(player)
- local success, stage = pcall(function()
- return (ObbyDataStore:GetAsync(player.UserId)) or 1
- end)
- CurrentStage[player.UserId] = stage
- local leaderstats = Instance.new("Folder", player)
- leaderstats.Name = "leaderstats"
- local Stage = Instance.new("IntValue", leaderstats)
- Stage.Name = "Stage"
- Stage.Value = stage
- local TempChar = player.Character
- if TempChar ~= nil then
- NewCharacter(player, TempChar)
- end
- player.CharacterAdded:Connect(function(char)
- NewCharacter(player, char)
- end)
- end
- Players.PlayerAdded:Connect(function(player)
- if inGameStartupPlayers[player] == nil then
- NewPlayer(player)
- end
- end)
- Players.PlayerRemoving:Connect(function(player)
- local success = pcall(function()
- ObbyDataStore:SetAsync(player.UserId, CurrentStage[player.UserId])
- end)
- CurrentStage[player.UserId] = nil
- end)
- for i,v in pairs(Checkpoints:GetChildren()) do
- local StageNum = tonumber(v.Name)
- v.Touched:Connect(function(hit)
- local char = hit.Parent
- if char ~= nil then
- local Humanoid = char:FindFirstChildOfClass("Humanoid")
- if Humanoid ~= nil and Humanoid.Health > 0 then
- local player = Players:GetPlayerFromCharacter(char)
- if player ~= nil and (TouchDb[player.UserId] or 0) + 1 <= os.time() then
- TouchDb[player.UserId] = os.time()
- local TempCurrentStage = CurrentStage[player.UserId]
- if TempCurrentStage == StageNum - 1 then
- CurrentStage[player.UserId] = StageNum
- local TempLeaderstats = player:FindFirstChild("leaderstats")
- if TempLeaderstats ~= nil then
- local TempStage = TempLeaderstats:FindFirstChild("Stage")
- if TempStage ~= nil then
- TempStage.Value = StageNum
- end
- end
- end
- end
- end
- end
- end)
- end
- inGameStartupPlayers = Players:GetPlayers()
- for i,v in pairs(inGameStartupPlayers) do
- spawn(function()
- NewPlayer(v)
- end)
- end
- game:BindToClose(function()
- for i,v in pairs(Players:GetPlayers()) do
- ObbyDataStore:SetAsync(v.UserId, CurrentStage[v.UserId])
- end
- wait(1)
- end)
- inGameStartupPlayers = {}
Add Comment
Please, Sign In to add comment