Tpp to all players fun script
Key RequiredUniversal

Tpp to all players fun script

Universal Scriptjksgaming2015jksgaming2015 947 views 207 executesUpdated Aug 13, 2025
Unrated
00
Lua Script•276 lines (9194 chars)
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()

Features & Information

Tppppp

Community Comments (0)

No comments yet for this script.

More Scripts for Universal Scripts