Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- --[[
- Made by Tweakified, Neonblox Games
- Video: https://youtu.be/IkLQHJOKwDU
- Script Type: Regular Script
- Script Parent: ServerScriptService
- --]]
- local Players = game:GetService("Players")
- local ReplicatedStorage = game:GetService("ReplicatedStorage")
- local ResetStage = ReplicatedStorage:WaitForChild("ResetStage")
- 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)
- CurrentStage[player.UserId] = 1
- local leaderstats = Instance.new("Folder", player)
- leaderstats.Name = "leaderstats"
- local Stage = Instance.new("IntValue", leaderstats)
- Stage.Name = "Stage"
- Stage.Value = 1
- 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)
- CurrentStage[player.UserId] = nil
- end)
- ResetStage.OnServerEvent:Connect(function(player)
- CurrentStage[player.UserId] = 1
- local TempLeaderstats = player:FindFirstChild("leaderstats")
- if TempLeaderstats ~= nil then
- local TempStage = TempLeaderstats:FindFirstChild("Stage")
- if TempStage ~= nil then
- TempStage.Value = 1
- end
- end
- NewCharacter(player, player.Character)
- 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
- inGameStartupPlayers = {}
Add Comment
Please, Sign In to add comment