local Players = game:GetService("Players") local RunService = game:GetService("RunService") local UserInputService = game:GetService("UserInputService") local localPlayer = Players.LocalPlayer local character = localPlayer.Character or localPlayer.CharacterAdded:Wait() local humanoidRootPart = character:WaitForChild("HumanoidRootPart") -- Config local TELEPORT_DISTANCE = 4 local TELEPORT_INTERVAL = 0.5 -- Variables local SELECTED_PLAYERS = {} local teleportMode = "Selected" -- "Selected", "Others", "NonFriends" local teleportLoop local originalCollisionStates = {} -- Collision handling local function setPlayerCollision(player, enable) if not player.Character then return end if not originalCollisionStates[player] then originalCollisionStates[player] = {} for _, part in ipairs(player.Character:GetDescendants()) do if part:IsA("BasePart") then originalCollisionStates[player][part] = part.CanCollide end end end for _, part in ipairs(player.Character:GetDescendants()) do if part:IsA("BasePart") then part.CanCollide = enable and (originalCollisionStates[player][part] or false) end end end -- Target selection local function getPlayersToTeleport() local targets = {} if teleportMode == "Selected" then for _, name in ipairs(SELECTED_PLAYERS) do local p = Players:FindFirstChild(name) if p then table.insert(targets, p) end end elseif teleportMode == "Others" then for _, p in ipairs(Players:GetPlayers()) do if p ~= localPlayer then table.insert(targets, p) end end elseif teleportMode == "NonFriends" then for _, p in ipairs(Players:GetPlayers()) do if p ~= localPlayer and not localPlayer:IsFriendsWith(p.UserId) then table.insert(targets, p) end end end return targets end -- Teleport function local function teleportPlayers() local myPosition = humanoidRootPart.Position local myLookVector = humanoidRootPart.CFrame.LookVector local teleportPosition = myPosition + (myLookVector * TELEPORT_DISTANCE) teleportPosition = Vector3.new(teleportPosition.X, myPosition.Y, teleportPosition.Z) for _, player in ipairs(getPlayersToTeleport()) do if player.Character then local targetHRP = player.Character:FindFirstChild("HumanoidRootPart") if targetHRP then setPlayerCollision(player, false) targetHRP.CFrame = CFrame.new(teleportPosition, teleportPosition + myLookVector) local effect = Instance.new("Part") effect.Size = Vector3.new(1, 1, 1) effect.Position = teleportPosition effect.Anchored = true effect.CanCollide = false effect.Transparency = 0.5 effect.BrickColor = BrickColor.new("Bright blue") effect.Parent = workspace game:GetService("Debris"):AddItem(effect, 0.5) end end end end -- Start/Stop Loop local function startLoop() if teleportLoop then teleportLoop:Disconnect() end teleportLoop = RunService.Heartbeat:Connect(function() if tick() % TELEPORT_INTERVAL < 0.1 then teleportPlayers() end end) end local function stopLoop() if teleportLoop then teleportLoop:Disconnect() teleportLoop = nil end end -- Small Draggable Stop Button local function createStopButton() local screenGui = Instance.new("ScreenGui") screenGui.Name = "TeleportStopUI" screenGui.Parent = localPlayer:WaitForChild("PlayerGui") screenGui.ResetOnSpawn = false local stopBtn = Instance.new("TextButton") stopBtn.Size = UDim2.new(0.1, 0, 0.05, 0) stopBtn.Position = UDim2.new(0.85, 0, 0.05, 0) stopBtn.Text = "Stop" stopBtn.Font = Enum.Font.SourceSansBold stopBtn.TextScaled = true stopBtn.BackgroundColor3 = Color3.fromRGB(170, 0, 0) stopBtn.TextColor3 = Color3.new(1, 1, 1) stopBtn.Parent = screenGui Instance.new("UICorner", stopBtn).CornerRadius = UDim.new(0.2, 0) -- Dragging logic local dragging, dragInput, dragStart, startPos local function update(input) local delta = input.Position - dragStart stopBtn.Position = UDim2.new( startPos.X.Scale, startPos.X.Offset + delta.X, startPos.Y.Scale, startPos.Y.Offset + delta.Y ) end stopBtn.InputBegan:Connect(function(input) if input.UserInputType == Enum.UserInputType.MouseButton1 or input.UserInputType == Enum.UserInputType.Touch then dragging = true dragStart = input.Position startPos = stopBtn.Position input.Changed:Connect(function() if input.UserInputState == Enum.UserInputState.End then dragging = false end end) end end) stopBtn.InputChanged:Connect(function(input) if input.UserInputType == Enum.UserInputType.MouseMovement or input.UserInputType == Enum.UserInputType.Touch then dragInput = input end end) UserInputService.InputChanged:Connect(function(input) if input == dragInput and dragging then update(input) end end) stopBtn.MouseButton1Click:Connect(function() stopLoop() screenGui:Destroy() end) end -- Main UI local function createSetupUI() local screenGui = Instance.new("ScreenGui") screenGui.Name = "TeleportControlUI" screenGui.Parent = localPlayer:WaitForChild("PlayerGui") screenGui.ResetOnSpawn = false local frame = Instance.new("Frame") frame.Size = UDim2.new(0.45, 0, 0.55, 0) frame.Position = UDim2.new(0.275, 0, 0.225, 0) frame.BackgroundColor3 = Color3.fromRGB(40, 40, 40) frame.Parent = screenGui Instance.new("UICorner", frame).CornerRadius = UDim.new(0.05, 0) local title = Instance.new("TextLabel") title.Size = UDim2.new(1, 0, 0.12, 0) title.BackgroundTransparency = 1 title.Text = "Teleport Control" title.Font = Enum.Font.SourceSansBold title.TextScaled = true title.TextColor3 = Color3.new(1, 1, 1) title.Parent = frame -- Mode buttons local modes = {"Selected", "Others", "NonFriends"} for i, mode in ipairs(modes) do local btn = Instance.new("TextButton") btn.Size = UDim2.new(0.8, 0, 0.1, 0) btn.Position = UDim2.new(0.1, 0, 0.15 + (i - 1) * 0.12, 0) btn.Text = "Mode: " .. mode btn.Font = Enum.Font.SourceSansBold btn.TextScaled = true btn.BackgroundColor3 = Color3.fromRGB(70, 70, 70) btn.TextColor3 = Color3.new(1, 1, 1) btn.Parent = frame Instance.new("UICorner", btn).CornerRadius = UDim.new(0.05, 0) btn.MouseButton1Click:Connect(function() teleportMode = mode end) end -- Selected mode inputs local numPlayersBox = Instance.new("TextBox") numPlayersBox.Size = UDim2.new(0.8, 0, 0.1, 0) numPlayersBox.Position = UDim2.new(0.1, 0, 0.55, 0) numPlayersBox.PlaceholderText = "Number of players (Selected mode)" numPlayersBox.Text = "" numPlayersBox.TextScaled = true numPlayersBox.Parent = frame local usernameBoxes = {} local function createUsernameInputs(count) for _, box in ipairs(usernameBoxes) do box:Destroy() end usernameBoxes = {} for i = 1, count do local box = Instance.new("TextBox") box.Size = UDim2.new(0.8, 0, 0.08, 0) box.Position = UDim2.new(0.1, 0, 0.66 + (i - 1) * 0.09, 0) box.PlaceholderText = "Username " .. i box.TextScaled = true box.Parent = frame table.insert(usernameBoxes, box) end end numPlayersBox.FocusLost:Connect(function() local num = tonumber(numPlayersBox.Text) if num and num > 0 then createUsernameInputs(num) end end) -- Start Button local startBtn = Instance.new("TextButton") startBtn.Size = UDim2.new(0.8, 0, 0.1, 0) startBtn.Position = UDim2.new(0.1, 0, 0.9, 0) startBtn.Text = "Start Teleporting" startBtn.Font = Enum.Font.SourceSansBold startBtn.TextScaled = true startBtn.BackgroundColor3 = Color3.fromRGB(0, 170, 0) startBtn.TextColor3 = Color3.new(1, 1, 1) startBtn.Parent = frame Instance.new("UICorner", startBtn).CornerRadius = UDim.new(0.05, 0) startBtn.MouseButton1Click:Connect(function() if teleportMode == "Selected" then SELECTED_PLAYERS = {} for _, box in ipairs(usernameBoxes) do if box.Text ~= "" then table.insert(SELECTED_PLAYERS, box.Text) end end end screenGui:Destroy() createStopButton() startLoop() end) end -- Clean up Players.PlayerRemoving:Connect(function(player) originalCollisionStates[player] = nil end) -- Launch UI createSetupUI()