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)