telekinetic
Key RequiredUniversal

telekinetic

Universal ScriptTiknifTiknif 3.1K views 98 executesUpdated Nov 15, 2025
5.0/ 5(1 votes)
10100% Positive
Lua Script•513 lines (18523 chars)
local Players = game:GetService("Players")
local UserInputService = game:GetService("UserInputService")
local RunService = game:GetService("RunService")

local player = Players.LocalPlayer
local camera = workspace.CurrentCamera

local movingPart = nil
local followDistance = 10
local followSpeed = 200
local useCamera = false
local lastPosition = nil

local activationKey = Enum.KeyCode.LeftControl
local isActivationKeyDown = false

local gui, mainFrame, headerLabel, collapseButton, killButton
local sidebarFrame, mainButton, settingsButton
local mainContentFrame, settingsContentFrame
local distanceRow, numberBox, cameraButton, keySelectionBox

local collapsed = false
local connections = {}

local selectionBox = Instance.new("SelectionBox")
selectionBox.Color3 = Color3.fromRGB(0, 255, 0)
selectionBox.LineThickness = 0.08
selectionBox.SurfaceTransparency = 1
selectionBox.Adornee = nil
selectionBox.Parent = game:GetService("CoreGui")
selectionBox.Name = "TelSelBox"

local function stopMoving()
    movingPart = nil
    selectionBox.Adornee = nil
end

local function movePartVelocity(part, targetPos, deltaTime)
    if not part or part.Anchored then return end
    local direction = (targetPos - part.Position)
    local velocity = direction * 15
    if velocity.Magnitude > followSpeed then
        velocity = velocity.Unit * followSpeed
    end
    part.AssemblyLinearVelocity = velocity
end

local function startMoving(part)
    movingPart = part
    lastPosition = part.Position
    selectionBox.Adornee = part
end

local function togglePartMove(part)
    if movingPart == part then
        stopMoving()
    elseif not part.Anchored then
        stopMoving()
        startMoving(part)
    end
end

local function killScript()
    stopMoving()
    
    for _, conn in pairs(connections) do
        if conn and typeof(conn) == "RBXScriptConnection" then
            conn:Disconnect()
        end
    end
    connections = {}
    
    if gui and gui.Parent then
        gui:Destroy()
    end
    if selectionBox and selectionBox.Parent then
        selectionBox:Destroy()
    end
end

local function handleInputBegan(input, processed)
    if input.KeyCode == activationKey then
        isActivationKeyDown = true
    end

    if not processed and isActivationKeyDown and input.UserInputType == Enum.UserInputType.MouseButton1 then
        local target = UserInputService:GetMouseLocation()
        local ray = camera:ScreenPointToRay(target.X, target.Y)
        local params = RaycastParams.new()
        params.FilterDescendantsInstances = {player.Character}
        params.FilterType = Enum.RaycastFilterType.Blacklist
        local result = workspace:Raycast(ray.Origin, ray.Direction * 1000, params)

        if result and result.Instance and result.Instance:IsA("BasePart") and not result.Instance.Anchored then
            togglePartMove(result.Instance)
        end
    end
end

local function handleInputEnded(input)
    if input.KeyCode == activationKey then
        isActivationKeyDown = false
    end
end

local function handleTouchTap(pos, processed)
    if processed or not isActivationKeyDown then return end

    local ray = camera:ScreenPointToRay(pos.X, pos.Y)
    local params = RaycastParams.new()
    params.FilterDescendantsInstances = {player.Character}
    params.FilterType = Enum.RaycastFilterType.Blacklist
    local result = workspace:Raycast(ray.Origin, ray.Direction * 1000, params)
    if result and result.Instance and result.Instance:IsA("BasePart") and not result.Instance.Anchored then
        togglePartMove(result.Instance)
    end
end

connections.InputBegan = UserInputService.InputBegan:Connect(handleInputBegan)
connections.InputEnded = UserInputService.InputEnded:Connect(handleInputEnded)
connections.TouchTap = UserInputService.TouchTapInWorld:Connect(handleTouchTap)

connections.Heartbeat = RunService.Heartbeat:Connect(function(deltaTime)
    if movingPart then
        local char = player.Character
        local root = char and char:FindFirstChild("HumanoidRootPart")
        if not (root and movingPart and movingPart.Parent and not movingPart.Anchored) then
            stopMoving()
            return
        end

        local targetPosition
        if useCamera then
            targetPosition = camera.CFrame.Position + camera.CFrame.LookVector * followDistance
        else
            targetPosition = root.Position + root.CFrame.LookVector * followDistance
        end

        movePartVelocity(movingPart, targetPosition, deltaTime)

        if (movingPart.Position - lastPosition).Magnitude > 100 then
            stopMoving()
            return
        end
        lastPosition = movingPart.Position
    end
end)

local function switchTab(tabName)
    local MAIN_ACTIVE = Color3.fromHex("#444444")
    local MAIN_INACTIVE = Color3.fromHex("#333333")
    
    mainContentFrame.Visible = tabName == "Main"
    settingsContentFrame.Visible = tabName == "Settings"
    
    mainButton.BackgroundColor3 = tabName == "Main" and MAIN_ACTIVE or MAIN_INACTIVE
    settingsButton.BackgroundColor3 = tabName == "Settings" and MAIN_ACTIVE or MAIN_INACTIVE
end

local function updateCameraButtonText()
    cameraButton.Text = "Camera Follow: " .. (useCamera and "ON" or "OFF")
    cameraButton.BackgroundColor3 = useCamera and Color3.fromHex("#5E4C87") or Color3.fromHex("#333333")
end

local function updateNumberBox()
    numberBox.Text = tostring(followDistance)
end

local function updateKeySelectionBox()
    keySelectionBox.Text = activationKey.Name
    keySelectionBox.ClearTextOnFocus = false
end

local function createGUI()
    if gui then gui:Destroy() end

    local BACKGROUND_DARK = Color3.fromHex("#222222")
    local ELEMENT_DARK = Color3.fromHex("#333333")
    local TEXT_COLOR = Color3.fromHex("#FFFFFF")
    local HEADER_COLOR = Color3.fromHex("#1A1A1A")
    local KILL_COLOR = Color3.fromHex("#C84A31")

    local DEFAULT_HEIGHT = 220
    local COLLAPSED_HEIGHT = 30
    local WIDTH = 400
    local SIDEBAR_WIDTH = 120
    local BUTTON_SIZE = COLLAPSED_HEIGHT

    gui = Instance.new("ScreenGui")
    gui.Name = "TelGUI"
    gui.ResetOnSpawn = false
    gui.DisplayOrder = 50000
    gui.Parent = game:GetService("CoreGui")

    mainFrame = Instance.new("Frame")
    mainFrame.Size = UDim2.new(0, WIDTH, 0, DEFAULT_HEIGHT)
    mainFrame.Position = UDim2.new(0.02, 0, 0.1, 0)
    mainFrame.BackgroundColor3 = BACKGROUND_DARK
    mainFrame.BorderColor3 = Color3.fromHex("#000000")
    mainFrame.BorderSizePixel = 0
    mainFrame.Active = true
    mainFrame.Draggable = true
    mainFrame.Parent = gui

    local mainCorner = Instance.new("UICorner")
    mainCorner.CornerRadius = UDim.new(0, 8)
    mainCorner.Parent = mainFrame

    headerLabel = Instance.new("TextLabel")
    headerLabel.Size = UDim2.new(1, 0, 0, COLLAPSED_HEIGHT)
    headerLabel.BackgroundColor3 = HEADER_COLOR
    headerLabel.Text = "TELEKINESIS v1.0"
    headerLabel.TextScaled = false
    headerLabel.TextSize = 18
    headerLabel.Font = Enum.Font.SourceSans
    headerLabel.TextColor3 = TEXT_COLOR
    headerLabel.Parent = mainFrame
    
    local headerList = Instance.new("UIListLayout")
    headerList.FillDirection = Enum.FillDirection.Horizontal
    headerList.HorizontalAlignment = Enum.HorizontalAlignment.Right
    headerList.Parent = headerLabel
    
    local headerPadding = Instance.new("UIPadding")
    headerPadding.PaddingLeft = UDim.new(0, 10)
    headerPadding.PaddingRight = UDim.new(0, 5)
    headerPadding.Parent = headerLabel

    killButton = Instance.new("TextButton")
    killButton.Size = UDim2.new(0, BUTTON_SIZE, 1, 0)
    killButton.Text = "X"
    killButton.TextScaled = false
    killButton.TextSize = 18
    killButton.Font = Enum.Font.SourceSans
    killButton.TextColor3 = TEXT_COLOR
    killButton.BackgroundColor3 = KILL_COLOR
    killButton.BorderSizePixel = 0
    killButton.Parent = headerLabel
    
    collapseButton = Instance.new("TextButton")
    collapseButton.Size = UDim2.new(0, BUTTON_SIZE, 1, 0)
    collapseButton.Text = "—"
    collapseButton.TextScaled = false
    collapseButton.TextSize = 20
    collapseButton.Font = Enum.Font.SourceSans
    collapseButton.TextColor3 = TEXT_COLOR
    collapseButton.BackgroundColor3 = Color3.fromHex("#555555")
    collapseButton.BorderSizePixel = 0
    collapseButton.Parent = headerLabel
    
    local contentContainer = Instance.new("Frame")
    contentContainer.Size = UDim2.new(1, 0, 1, -COLLAPSED_HEIGHT)
    contentContainer.Position = UDim2.new(0, 0, 0, COLLAPSED_HEIGHT)
    contentContainer.BackgroundColor3 = BACKGROUND_DARK
    contentContainer.BackgroundTransparency = 1
    contentContainer.Parent = mainFrame
    
    local contentLayout = Instance.new("UIListLayout")
    contentLayout.FillDirection = Enum.FillDirection.Horizontal
    contentLayout.Parent = contentContainer
    
    sidebarFrame = Instance.new("Frame")
    sidebarFrame.Size = UDim2.new(0, SIDEBAR_WIDTH, 1, 0)
    sidebarFrame.BackgroundColor3 = ELEMENT_DARK
    sidebarFrame.BorderSizePixel = 0
    sidebarFrame.Parent = contentContainer
    
    local sidebarLayout = Instance.new("UIListLayout")
    sidebarLayout.Padding = UDim.new(0, 5)
    sidebarLayout.HorizontalAlignment = Enum.HorizontalAlignment.Center
    sidebarLayout.Parent = sidebarFrame
    
    local sidebarPadding = Instance.new("UIPadding")
    sidebarPadding.PaddingTop = UDim.new(0, 10)
    sidebarPadding.PaddingBottom = UDim.new(0, 10)
    sidebarPadding.Parent = sidebarFrame
    
    local function createSidebarButton(text)
        local button = Instance.new("TextButton")
        button.Size = UDim2.new(0.8, 0, 0, 30)
        button.Text = text
        button.TextScaled = false
        button.TextSize = 16
        button.Font = Enum.Font.SourceSansBold
        button.TextColor3 = TEXT_COLOR
        button.BackgroundColor3 = ELEMENT_DARK
        button.BorderSizePixel = 0
        
        local corner = Instance.new("UICorner")
        corner.CornerRadius = UDim.new(0, 5)
        corner.Parent = button
        return button
    end
    
    mainButton = createSidebarButton("Main")
    mainButton.Parent = sidebarFrame
    connections.MainButton = mainButton.MouseButton1Click:Connect(function() switchTab("Main") end)
    
    settingsButton = createSidebarButton("Settings")
    settingsButton.Parent = sidebarFrame
    connections.SettingsButton = settingsButton.MouseButton1Click:Connect(function() switchTab("Settings") end)
    
    local contentArea = Instance.new("Frame")
    contentArea.Size = UDim2.new(1, -SIDEBAR_WIDTH, 1, 0)
    contentArea.BackgroundColor3 = BACKGROUND_DARK
    contentArea.BackgroundTransparency = 1
    contentArea.Parent = contentContainer
    
    local contentPadding = Instance.new("UIPadding")
    contentPadding.PaddingLeft = UDim.new(0, 10)
    contentPadding.PaddingRight = UDim.new(0, 10)
    contentPadding.PaddingTop = UDim.new(0, 10)
    contentPadding.PaddingBottom = UDim.new(0, 10)
    contentPadding.Parent = contentArea

    mainContentFrame = Instance.new("Frame")
    mainContentFrame.Size = UDim2.new(1, 0, 1, 0)
    mainContentFrame.BackgroundColor3 = BACKGROUND_DARK
    mainContentFrame.BackgroundTransparency = 1
    mainContentFrame.Parent = contentArea
    
    local mainContentLayout = Instance.new("UIListLayout")
    mainContentLayout.Padding = UDim.new(0, 10)
    mainContentLayout.HorizontalAlignment = Enum.HorizontalAlignment.Center
    mainContentLayout.Parent = mainContentFrame

    distanceRow = Instance.new("Frame")
    distanceRow.Size = UDim2.new(1, 0, 0, 30)
    distanceRow.BackgroundColor3 = BACKGROUND_DARK
    distanceRow.BackgroundTransparency = 1
    distanceRow.Parent = mainContentFrame
    
    local distLayout = Instance.new("UIListLayout")
    distLayout.FillDirection = Enum.FillDirection.Horizontal
    distLayout.VerticalAlignment = Enum.VerticalAlignment.Center
    distLayout.Parent = distanceRow
    
    local distLabel = Instance.new("TextLabel")
    distLabel.Size = UDim2.new(0.5, 0, 1, 0)
    distLabel.Text = "Follow Distance:"
    distLabel.TextColor3 = TEXT_COLOR
    distLabel.BackgroundTransparency = 1
    distLabel.TextXAlignment = Enum.TextXAlignment.Left
    distLabel.Font = Enum.Font.SourceSans
    distLabel.TextSize = 14
    distLabel.Parent = distanceRow
    
    local inputContainer = Instance.new("Frame")
    inputContainer.Size = UDim2.new(0.5, 0, 1, 0)
    inputContainer.BackgroundColor3 = ELEMENT_DARK
    inputContainer.BorderSizePixel = 0
    inputContainer.Parent = distanceRow
    
    local inputCorner = Instance.new("UICorner")
    inputCorner.CornerRadius = UDim.new(0, 5)
    inputCorner.Parent = inputContainer
    
    local inputLayout = Instance.new("UIListLayout")
    inputLayout.FillDirection = Enum.FillDirection.Horizontal
    inputLayout.Parent = inputContainer

    numberBox = Instance.new("TextBox")
    numberBox.Size = UDim2.new(0.5, 0, 1, 0)
    numberBox.Text = tostring(followDistance)
    numberBox.Font = Enum.Font.SourceSans
    numberBox.TextColor3 = TEXT_COLOR
    numberBox.BackgroundColor3 = ELEMENT_DARK
    numberBox.ClearTextOnFocus = true
    numberBox.TextYAlignment = Enum.TextYAlignment.Center
    numberBox.TextXAlignment = Enum.TextXAlignment.Center
    numberBox.TextSize = 16
    numberBox.Parent = inputContainer
    
    local function createDistButton(text)
        local button = Instance.new("TextButton")
        button.Size = UDim2.new(0.25, 0, 1, 0)
        button.Text = text
        button.TextColor3 = TEXT_COLOR
        button.BackgroundColor3 = Color3.fromHex("#444444")
        button.Font = Enum.Font.SourceSansBold
        button.BorderSizePixel = 0
        button.TextSize = 20
        return button
    end
    
    local decreaseButton = createDistButton("-")
    decreaseButton.Parent = inputContainer
    
    local increaseButton = createDistButton("+")
    increaseButton.Parent = inputContainer

    cameraButton = Instance.new("TextButton")
    cameraButton.Size = UDim2.new(1, 0, 0, 40)
    cameraButton.TextScaled = false
    cameraButton.TextSize = 16
    cameraButton.Font = Enum.Font.SourceSansBold
    cameraButton.TextColor3 = TEXT_COLOR
    cameraButton.BorderSizePixel = 0
    cameraButton.Parent = mainContentFrame

    local cameraCorner = Instance.new("UICorner")
    cameraCorner.CornerRadius = UDim.new(0, 5)
    cameraCorner.Parent = cameraButton
    
    settingsContentFrame = Instance.new("Frame")
    settingsContentFrame.Size = UDim2.new(1, 0, 1, 0)
    settingsContentFrame.BackgroundColor3 = BACKGROUND_DARK
    settingsContentFrame.BackgroundTransparency = 1
    settingsContentFrame.Parent = contentArea
    
    local settingsContentLayout = Instance.new("UIListLayout")
    settingsContentLayout.Padding = UDim.new(0, 10)
    settingsContentLayout.HorizontalAlignment = Enum.HorizontalAlignment.Center
    settingsContentLayout.Parent = settingsContentFrame
    
    local keyRow = Instance.new("Frame")
    keyRow.Size = UDim2.new(1, 0, 0, 30)
    keyRow.BackgroundColor3 = BACKGROUND_DARK
    keyRow.BackgroundTransparency = 1
    keyRow.Parent = settingsContentFrame
    
    local keyLayout = Instance.new("UIListLayout")
    keyLayout.FillDirection = Enum.FillDirection.Horizontal
    keyLayout.VerticalAlignment = Enum.VerticalAlignment.Center
    keyLayout.Parent = keyRow
    
    local keyLabel = Instance.new("TextLabel")
    keyLabel.Size = UDim2.new(0.5, 0, 1, 0)
    keyLabel.Text = "Activation Key:"
    keyLabel.TextColor3 = TEXT_COLOR
    keyLabel.BackgroundTransparency = 1
    keyLabel.TextXAlignment = Enum.TextXAlignment.Left
    keyLabel.Font = Enum.Font.SourceSans
    keyLabel.TextSize = 14
    keyLabel.Parent = keyRow
    
    keySelectionBox = Instance.new("TextBox")
    keySelectionBox.Size = UDim2.new(0.5, 0, 1, 0)
    keySelectionBox.Text = activationKey.Name
    keySelectionBox.Font = Enum.Font.SourceSans
    keySelectionBox.TextColor3 = TEXT_COLOR
    keySelectionBox.BackgroundColor3 = ELEMENT_DARK
    keySelectionBox.TextYAlignment = Enum.TextYAlignment.Center
    keySelectionBox.TextXAlignment = Enum.TextXAlignment.Center
    keySelectionBox.TextSize = 16
    keySelectionBox.Parent = keyRow
    
    local keyCorner = Instance.new("UICorner")
    keyCorner.CornerRadius = UDim.new(0, 5)
    keyCorner.Parent = keySelectionBox
    
    local keyIsListening = false

    connections.KeySelectionBoxFocused = keySelectionBox.Focused:Connect(function()
        keySelectionBox.Text = "Press any key..."
        keyIsListening = true
    end)
    
    connections.InputBeganListener = UserInputService.InputBegan:Connect(function(input, processed)
        if keyIsListening and input.UserInputType == Enum.UserInputType.Keyboard and not processed then
            local newKey = input.KeyCode
            
            if newKey.Name ~= "Unknown" and newKey.Name ~= "None" then
                activationKey = newKey
                updateKeySelectionBox()
                keyIsListening = false
                keySelectionBox:ReleaseFocus()
            end
        end
    end)

    updateCameraButtonText()
    updateKeySelectionBox()
    switchTab("Main")

    connections.CollapseButton = collapseButton.MouseButton1Click:Connect(function()
        collapsed = not collapsed
        local targetSizeY = collapsed and COLLAPSED_HEIGHT or DEFAULT_HEIGHT
        mainFrame:TweenSize(UDim2.new(0, WIDTH, 0, targetSizeY), Enum.EasingDirection.Out, Enum.EasingStyle.Quad, 0.2, true)
        contentContainer.Visible = not collapsed
        collapseButton.Text = collapsed and "V" or "—"
    end)
    
    connections.KillButton = killButton.MouseButton1Click:Connect(killScript)

    connections.DecreaseButton = decreaseButton.MouseButton1Click:Connect(function()
        followDistance = math.clamp(followDistance - 1, 1, 500000)
        updateNumberBox()
    end)

    connections.IncreaseButton = increaseButton.MouseButton1Click:Connect(function()
        followDistance = math.clamp(followDistance + 1, 1, 500000)
        updateNumberBox()
    end)

    connections.NumberBox = numberBox.FocusLost:Connect(function()
        local num = tonumber(numberBox.Text)
        if num then
            followDistance = math.clamp(num, 0.001, 500000)
        end
        updateNumberBox()
    end)

    connections.CameraButton = cameraButton.MouseButton1Click:Connect(function()
        useCamera = not useCamera
        updateCameraButtonText()
    end)
end

createGUI()
connections.CharacterAdded = player.CharacterAdded:Connect(function()
    createGUI()
end)

Features & Information

It's just telekinesis

Community Comments (2)

TiknifTiknifNov 15, 2025

Hi

ano4ano4May 26, 2026

bro u not tuff stealing my script

More Scripts for Universal Scripts