local Players = game:GetService("Players") local RunService = game:GetService("RunService") local LocalPlayer = Players.LocalPlayer local Mouse = LocalPlayer:GetMouse() -- === CONSTANTS === local TELEPORT_INTERVAL = 60 local TELEPORT_DELAY = 0.09 local NORMAL_WALKSPEED = 30 -- === Tool: Click Teleport === local Tool = Instance.new("Tool") Tool.RequiresHandle = false Tool.Name = "Tp tool (Equip to Click TP)" Tool.Parent = LocalPlayer.Backpack Tool.Activated:Connect(function() local pos = Mouse.Hit.Position + Vector3.new(0, 2.5, 0) local character = LocalPlayer.Character if character and character:FindFirstChild("Head") then character.Head.CFrame = CFrame.new(pos) end end) -- === /e sit command === LocalPlayer.Chatted:Connect(function(msg) if msg:lower() == "/e sit" then local humanoid = LocalPlayer.Character and LocalPlayer.Character:FindFirstChildOfClass("Humanoid") if humanoid then humanoid.Sit = true end end end) -- === GUI Setup === local gui = Instance.new("ScreenGui", LocalPlayer:WaitForChild("PlayerGui")) gui.ResetOnSpawn = false -- Teleport Button local button = Instance.new("TextButton") button.Size = UDim2.new(0, 220, 0, 50) button.Position = UDim2.new(0.5, -110, 1, -160) button.AnchorPoint = Vector2.new(0.5, 1) button.Text = "Teleport Me" button.TextScaled = true button.BackgroundColor3 = Color3.fromRGB(30, 30, 30) button.TextColor3 = Color3.new(1, 1, 1) button.Parent = gui button.ZIndex = 2 -- Countdown Label local countdown = Instance.new("TextLabel") countdown.Size = UDim2.new(0, 220, 0, 50) countdown.Position = UDim2.new(0.5, -110, 1, -100) countdown.AnchorPoint = Vector2.new(0.5, 1) countdown.Text = "Next teleport: 60s" countdown.TextScaled = true countdown.BackgroundColor3 = Color3.fromRGB(30, 30, 30) countdown.TextColor3 = Color3.new(1, 1, 1) countdown.Parent = gui countdown.ZIndex = 2 -- === Teleport Positions === local autoPositions = { CFrame.new(6.427, 4.055, -191.89), CFrame.new(6.392, 4.048, -101.887), CFrame.new(6.392, 4.048, -14.195), CFrame.new(6.392, 4.048, 75.805), CFrame.new(-271.765, 4.048, 73.685), CFrame.new(-271.765, 4.048, -16.315), CFrame.new(-271.765, 4.048, -104.006), CFrame.new(-271.765, 4.048, -194.006) } -- === Teleport Function === local function teleportThroughPositions(positions) local character = LocalPlayer.Character if not (character and character:FindFirstChild("Head") and character:FindFirstChildOfClass("Humanoid")) then return end local humanoid = character:FindFirstChildOfClass("Humanoid") local originalCFrame = character.Head.CFrame -- Freeze movement humanoid.WalkSpeed = 0 humanoid.JumpPower = 0 humanoid.AutoRotate = false for _, cf in ipairs(positions) do character.Head.CFrame = cf task.wait(TELEPORT_DELAY) end -- Return to original position character.Head.CFrame = originalCFrame -- Restore movement task.wait(0.1) humanoid.WalkSpeed = NORMAL_WALKSPEED humanoid.JumpPower = 50 humanoid.AutoRotate = true end -- === Button Click === button.MouseButton1Click:Connect(function() teleportThroughPositions(autoPositions) end) -- === Auto Teleport Loop === task.spawn(function() while true do for i = TELEPORT_INTERVAL, 0, -1 do countdown.Text = "Next teleport: " .. i .. "s" task.wait(1) end teleportThroughPositions(autoPositions) end end) -- === Anti-Ragdoll & Anti-Trap === RunService.RenderStepped:Connect(function() local character = LocalPlayer.Character if character then local humanoid = character:FindFirstChildOfClass("Humanoid") if humanoid and humanoid.WalkSpeed < NORMAL_WALKSPEED then humanoid.WalkSpeed = NORMAL_WALKSPEED end end end) -- === Restore Tool On Respawn === LocalPlayer.CharacterAdded:Connect(function(char) task.wait(1) if not LocalPlayer.Backpack:FindFirstChild(Tool.Name) then Tool:Clone().Parent = LocalPlayer.Backpack end end) -- === Initial Instant Teleport on Script Run === teleportThroughPositions(autoPositions)