SERVERSIDED PLAYER LIFTER no key
Key RequiredUniversal

SERVERSIDED PLAYER LIFTER no key

Universal Scriptbobjsbobjs 1.2K views 164 executesUpdated Mar 17, 2026
2.5/ 5(2 votes)
1150% Positive
Lua Script•1226 lines (42598 chars)
-- Bring Menu GUI
local Players = game:GetService("Players")
local UserInputService = game:GetService("UserInputService")
local TweenService = game:GetService("TweenService")
local PathfindingService = game:GetService("PathfindingService")
local RunService = game:GetService("RunService")

local player = Players.LocalPlayer
local playerGui = player:WaitForChild("PlayerGui")

-- Create GUI
local screenGui = Instance.new("ScreenGui")
screenGui.Name = "BringMenu"
screenGui.ResetOnSpawn = false
screenGui.Parent = playerGui

local mainFrame = Instance.new("Frame")
mainFrame.Name = "MainFrame"
mainFrame.Size = UDim2.new(0, 320, 0, 430)
mainFrame.Position = UDim2.new(0.5, -160, 0.5, -215)
mainFrame.BackgroundColor3 = Color3.fromRGB(45, 45, 45)
mainFrame.BorderSizePixel = 0
mainFrame.Active = true
mainFrame.Draggable = true
mainFrame.Parent = screenGui

-- Corner rounding
local corner = Instance.new("UICorner")
corner.CornerRadius = UDim.new(0, 8)
corner.Parent = mainFrame

-- Title bar
local titleBar = Instance.new("Frame")
titleBar.Name = "TitleBar"
titleBar.Size = UDim2.new(1, 0, 0, 30)
titleBar.Position = UDim2.new(0, 0, 0, 0)
titleBar.BackgroundColor3 = Color3.fromRGB(35, 35, 35)
titleBar.BorderSizePixel = 0
titleBar.Parent = mainFrame

local titleCorner = Instance.new("UICorner")
titleCorner.CornerRadius = UDim.new(0, 8)
titleCorner.Parent = titleBar

local titleLabel = Instance.new("TextLabel")
titleLabel.Name = "TitleLabel"
titleLabel.Size = UDim2.new(1, -60, 1, 0)
titleLabel.Position = UDim2.new(0, 10, 0, 0)
titleLabel.BackgroundTransparency = 1
titleLabel.Text = "Advanced Bring Menu"
titleLabel.TextColor3 = Color3.fromRGB(255, 255, 255)
titleLabel.TextScaled = true
titleLabel.Font = Enum.Font.GothamBold
titleLabel.Parent = titleBar

-- Close button
local closeButton = Instance.new("TextButton")
closeButton.Name = "CloseButton"
closeButton.Size = UDim2.new(0, 30, 0, 30)
closeButton.Position = UDim2.new(1, -30, 0, 0)
closeButton.BackgroundColor3 = Color3.fromRGB(255, 85, 85)
closeButton.BorderSizePixel = 0
closeButton.Text = "X"
closeButton.TextColor3 = Color3.fromRGB(255, 255, 255)
closeButton.TextScaled = true
closeButton.Font = Enum.Font.GothamBold
closeButton.Parent = titleBar

local closeCorner = Instance.new("UICorner")
closeCorner.CornerRadius = UDim.new(0, 8)
closeCorner.Parent = closeButton

-- Mode selector
local modeFrame = Instance.new("Frame")
modeFrame.Name = "ModeFrame"
modeFrame.Size = UDim2.new(1, -20, 0, 35)
modeFrame.Position = UDim2.new(0, 10, 0, 40)
modeFrame.BackgroundColor3 = Color3.fromRGB(55, 55, 55)
modeFrame.BorderSizePixel = 0
modeFrame.Parent = mainFrame

local modeCorner = Instance.new("UICorner")
modeCorner.CornerRadius = UDim.new(0, 6)
modeCorner.Parent = modeFrame

local modeDropdown = Instance.new("TextButton")
modeDropdown.Name = "ModeDropdown"
modeDropdown.Size = UDim2.new(1, -20, 1, 0)
modeDropdown.Position = UDim2.new(0, 10, 0, 0)
modeDropdown.BackgroundTransparency = 1
modeDropdown.Text = "Classic Lift ▼"
modeDropdown.TextColor3 = Color3.fromRGB(255, 255, 255)
modeDropdown.TextScaled = true
modeDropdown.Font = Enum.Font.Gotham
modeDropdown.Parent = modeFrame

-- Username input
local usernameFrame = Instance.new("Frame")
usernameFrame.Name = "UsernameFrame"
usernameFrame.Size = UDim2.new(1, -20, 0, 40)
usernameFrame.Position = UDim2.new(0, 10, 0, 85)
usernameFrame.BackgroundColor3 = Color3.fromRGB(55, 55, 55)
usernameFrame.BorderSizePixel = 0
usernameFrame.Parent = mainFrame

local usernameCorner = Instance.new("UICorner")
usernameCorner.CornerRadius = UDim.new(0, 6)
usernameCorner.Parent = usernameFrame

local usernameBox = Instance.new("TextBox")
usernameBox.Name = "UsernameBox"
usernameBox.Size = UDim2.new(1, -20, 1, 0)
usernameBox.Position = UDim2.new(0, 10, 0, 0)
usernameBox.BackgroundTransparency = 1
usernameBox.PlaceholderText = "Enter username or partial name..."
usernameBox.Text = ""
usernameBox.TextColor3 = Color3.fromRGB(255, 255, 255)
usernameBox.PlaceholderColor3 = Color3.fromRGB(150, 150, 150)
usernameBox.TextScaled = true
usernameBox.Font = Enum.Font.Gotham
usernameBox.Parent = usernameFrame

-- Bring button
local bringButton = Instance.new("TextButton")
bringButton.Name = "BringButton"
bringButton.Size = UDim2.new(1, -20, 0, 40)
bringButton.Position = UDim2.new(0, 10, 0, 135)
bringButton.BackgroundColor3 = Color3.fromRGB(85, 170, 85)
bringButton.BorderSizePixel = 0
bringButton.Text = "Start Lift"
bringButton.TextColor3 = Color3.fromRGB(255, 255, 255)
bringButton.TextScaled = true
bringButton.Font = Enum.Font.GothamBold
bringButton.Parent = mainFrame

local bringCorner = Instance.new("UICorner")
bringCorner.CornerRadius = UDim.new(0, 6)
bringCorner.Parent = bringButton

-- Undetected lift button
local undetectedButton = Instance.new("TextButton")
undetectedButton.Name = "UndetectedButton"
undetectedButton.Size = UDim2.new(1, -20, 0, 40)
undetectedButton.Position = UDim2.new(0, 10, 0, 185)
undetectedButton.BackgroundColor3 = Color3.fromRGB(170, 85, 170)
undetectedButton.BorderSizePixel = 0
undetectedButton.Text = "Undetected Lift"
undetectedButton.TextColor3 = Color3.fromRGB(255, 255, 255)
undetectedButton.TextScaled = true
undetectedButton.Font = Enum.Font.GothamBold
undetectedButton.Parent = mainFrame

local undetectedCorner = Instance.new("UICorner")
undetectedCorner.CornerRadius = UDim.new(0, 6)
undetectedCorner.Parent = undetectedButton

-- Infinite Yield button
local infiniteYieldButton = Instance.new("TextButton")
infiniteYieldButton.Name = "InfiniteYieldButton"
infiniteYieldButton.Size = UDim2.new(1, -20, 0, 40)
infiniteYieldButton.Position = UDim2.new(0, 10, 0, 235)
infiniteYieldButton.BackgroundColor3 = Color3.fromRGB(85, 85, 170)
infiniteYieldButton.BorderSizePixel = 0
infiniteYieldButton.Text = "Load Infinite Yield"
infiniteYieldButton.TextColor3 = Color3.fromRGB(255, 255, 255)
infiniteYieldButton.TextScaled = true
infiniteYieldButton.Font = Enum.Font.GothamBold
infiniteYieldButton.Parent = mainFrame
    
local infiniteYieldCorner = Instance.new("UICorner")
infiniteYieldCorner.CornerRadius = UDim.new(0, 6)
infiniteYieldCorner.Parent = infiniteYieldButton

-- Stop button (initially hidden)
local stopButton = Instance.new("TextButton")
stopButton.Name = "StopButton"
stopButton.Size = UDim2.new(1, -20, 0, 40)
stopButton.Position = UDim2.new(0, 10, 0, 135)
stopButton.BackgroundColor3 = Color3.fromRGB(255, 85, 85)
stopButton.BorderSizePixel = 0
stopButton.Text = "Stop Lift"
stopButton.TextColor3 = Color3.fromRGB(255, 255, 255)
stopButton.TextScaled = true
stopButton.Font = Enum.Font.GothamBold
    stopButton.Visible = false
stopButton.Parent = mainFrame
    
local stopCorner = Instance.new("UICorner")
stopCorner.CornerRadius = UDim.new(0, 6)
stopCorner.Parent = stopButton

-- Settings frame
local settingsFrame = Instance.new("Frame")
settingsFrame.Name = "SettingsFrame"
settingsFrame.Size = UDim2.new(1, -20, 0, 100)
settingsFrame.Position = UDim2.new(0, 10, 0, 285)
settingsFrame.BackgroundColor3 = Color3.fromRGB(55, 55, 55)
settingsFrame.BorderSizePixel = 0
settingsFrame.Parent = mainFrame

local settingsCorner = Instance.new("UICorner")
settingsCorner.CornerRadius = UDim.new(0, 6)
settingsCorner.Parent = settingsFrame

-- Speed slider
local speedLabel = Instance.new("TextLabel")
speedLabel.Name = "SpeedLabel"
speedLabel.Size = UDim2.new(0.3, 0, 0.25, 0)
speedLabel.Position = UDim2.new(0, 10, 0, 5)
speedLabel.BackgroundTransparency = 1
speedLabel.Text = "Speed: 1x"
speedLabel.TextColor3 = Color3.fromRGB(255, 255, 255)
speedLabel.TextScaled = true
speedLabel.Font = Enum.Font.Gotham
speedLabel.Parent = settingsFrame

local speedSlider = Instance.new("Frame")
speedSlider.Name = "SpeedSlider"
speedSlider.Size = UDim2.new(0.6, -20, 0, 20)
speedSlider.Position = UDim2.new(0.4, 0, 0, 10)
speedSlider.BackgroundColor3 = Color3.fromRGB(35, 35, 35)
speedSlider.BorderSizePixel = 0
speedSlider.Parent = settingsFrame

local speedSliderCorner = Instance.new("UICorner")
speedSliderCorner.CornerRadius = UDim.new(0, 10)
speedSliderCorner.Parent = speedSlider

local speedKnob = Instance.new("TextButton")
speedKnob.Name = "SpeedKnob"
speedKnob.Size = UDim2.new(0, 18, 0, 18)
speedKnob.Position = UDim2.new(0, 1, 0, 1)
speedKnob.BackgroundColor3 = Color3.fromRGB(85, 170, 85)
speedKnob.BorderSizePixel = 0
speedKnob.Text = ""
speedKnob.Parent = speedSlider

local speedKnobCorner = Instance.new("UICorner")
speedKnobCorner.CornerRadius = UDim.new(0, 9)
speedKnobCorner.Parent = speedKnob

-- Height slider for undetected lift
local heightLabel = Instance.new("TextLabel")
heightLabel.Name = "HeightLabel"
heightLabel.Size = UDim2.new(0.3, 0, 0.25, 0)
heightLabel.Position = UDim2.new(0, 10, 0, 35)
heightLabel.BackgroundTransparency = 1
heightLabel.Text = "Height: 0"
heightLabel.TextColor3 = Color3.fromRGB(255, 255, 255)
heightLabel.TextScaled = true
heightLabel.Font = Enum.Font.Gotham
heightLabel.Parent = settingsFrame

local heightSlider = Instance.new("Frame")
heightSlider.Name = "HeightSlider"
heightSlider.Size = UDim2.new(0.6, -20, 0, 20)
heightSlider.Position = UDim2.new(0.4, 0, 0, 40)
heightSlider.BackgroundColor3 = Color3.fromRGB(35, 35, 35)
heightSlider.BorderSizePixel = 0
heightSlider.Parent = settingsFrame

local heightSliderCorner = Instance.new("UICorner")
heightSliderCorner.CornerRadius = UDim.new(0, 10)
heightSliderCorner.Parent = heightSlider

local heightKnob = Instance.new("TextButton")
heightKnob.Name = "HeightKnob"
heightKnob.Size = UDim2.new(0, 18, 0, 18)
heightKnob.Position = UDim2.new(0.5, -9, 0, 1)
heightKnob.BackgroundColor3 = Color3.fromRGB(170, 85, 170)
heightKnob.BorderSizePixel = 0
heightKnob.Text = ""
heightKnob.Parent = heightSlider

local heightKnobCorner = Instance.new("UICorner")
heightKnobCorner.CornerRadius = UDim.new(0, 9)
heightKnobCorner.Parent = heightKnob

-- Auto-heal toggle
local autoHealToggle = Instance.new("TextButton")
autoHealToggle.Name = "AutoHealToggle"
autoHealToggle.Size = UDim2.new(0.45, -10, 0.2, 0)
autoHealToggle.Position = UDim2.new(0, 10, 0.75, 0)
autoHealToggle.BackgroundColor3 = Color3.fromRGB(85, 170, 85)
autoHealToggle.BorderSizePixel = 0
autoHealToggle.Text = "Auto-Heal: ON"
autoHealToggle.TextColor3 = Color3.fromRGB(255, 255, 255)
autoHealToggle.TextScaled = true
autoHealToggle.Font = Enum.Font.Gotham
autoHealToggle.Parent = settingsFrame

local autoHealCorner = Instance.new("UICorner")
autoHealCorner.CornerRadius = UDim.new(0, 4)
autoHealCorner.Parent = autoHealToggle

-- Noclip toggle
local noclipToggle = Instance.new("TextButton")
noclipToggle.Name = "NoclipToggle"
noclipToggle.Size = UDim2.new(0.45, -10, 0.2, 0)
noclipToggle.Position = UDim2.new(0.55, 0, 0.75, 0)
noclipToggle.BackgroundColor3 = Color3.fromRGB(85, 170, 85)
noclipToggle.BorderSizePixel = 0
noclipToggle.Text = "Noclip: ON"
noclipToggle.TextColor3 = Color3.fromRGB(255, 255, 255)
noclipToggle.TextScaled = true
noclipToggle.Font = Enum.Font.Gotham
noclipToggle.Parent = settingsFrame

local noclipCorner = Instance.new("UICorner")
noclipCorner.CornerRadius = UDim.new(0, 4)
noclipCorner.Parent = noclipToggle

-- Status label
local statusLabel = Instance.new("TextLabel")
statusLabel.Name = "StatusLabel"
statusLabel.Size = UDim2.new(1, -20, 0, 25)
statusLabel.Position = UDim2.new(0, 10, 0, 400)
statusLabel.BackgroundTransparency = 1
    statusLabel.Text = "Ready - Select mode and enter username"
statusLabel.TextColor3 = Color3.fromRGB(200, 200, 200)
statusLabel.TextScaled = true
statusLabel.Font = Enum.Font.Gotham
statusLabel.Parent = mainFrame

-- Variables for lifting
local currentConnection = nil
local isLifting = false
local currentTarget = nil
local liftBodyPosition = nil
local healConnection = nil
local liftStartTime = 0
local targetPosition = nil
local noclipConnection = nil
local characterFlipConnection = nil
local originalCFrames = {}
local originalPlayerPosition = nil
local deathConnection = nil

-- Mode settings
local currentMode = "classic"
local liftSpeed = 1
local undetectedHeight = 0
local autoHealEnabled = true
local noclipEnabled = true

local modes = {
    classic = {name = "Classic Lift", description = "Standard lifting under target"},
    rocket = {name = "Rocket Boost", description = "Fast upward acceleration"},
    orbit = {name = "Orbit Mode", description = "Circle around target while lifting"},
    teleport = {name = "Teleport Lift", description = "Instant teleportation lifting"},
    magnet = {name = "Magnet Mode", description = "Pull target towards you"},
    undetected = {name = "Undetected Lift", description = "Subtle hip-level positioning"},
    bring = {name = "Bring Mode", description = "Bring target to your location"}
}

-- Mode dropdown functionality
local dropdownOpen = false
local modeButtons = {}

local function createModeDropdown()
    local dropdownFrame = Instance.new("Frame")
    dropdownFrame.Name = "DropdownFrame"
    dropdownFrame.Size = UDim2.new(1, 0, 0, #modes * 25)
    dropdownFrame.Position = UDim2.new(0, 0, 1, 0)
    dropdownFrame.BackgroundColor3 = Color3.fromRGB(65, 65, 65)
    dropdownFrame.BorderSizePixel = 0
    dropdownFrame.Visible = false
    dropdownFrame.ZIndex = 10
    dropdownFrame.Parent = modeFrame
    
    local dropdownCorner = Instance.new("UICorner")
    dropdownCorner.CornerRadius = UDim.new(0, 6)
    dropdownCorner.Parent = dropdownFrame
    
    local yPos = 0
    for key, mode in pairs(modes) do
        local modeButton = Instance.new("TextButton")
        modeButton.Name = key
        modeButton.Size = UDim2.new(1, -10, 0, 23)
        modeButton.Position = UDim2.new(0, 5, 0, yPos)
        modeButton.BackgroundColor3 = Color3.fromRGB(75, 75, 75)
        modeButton.BorderSizePixel = 0
        modeButton.Text = mode.name
        modeButton.TextColor3 = Color3.fromRGB(255, 255, 255)
        modeButton.TextScaled = true
        modeButton.Font = Enum.Font.Gotham
        modeButton.ZIndex = 11
        modeButton.Parent = dropdownFrame
        
        local buttonCorner = Instance.new("UICorner")
        buttonCorner.CornerRadius = UDim.new(0, 4)
        buttonCorner.Parent = modeButton
        
        modeButton.MouseButton1Click:Connect(function()
            currentMode = key
            modeDropdown.Text = mode.name .. " ▼"
            statusLabel.Text = mode.description
            dropdownFrame.Visible = false
            dropdownOpen = false
        end)
    
        modeButtons[key] = modeButton
        yPos = yPos + 25
    end
    
    return dropdownFrame
    end
    
local dropdownFrame = createModeDropdown()

modeDropdown.MouseButton1Click:Connect(function()
    dropdownOpen = not dropdownOpen
    dropdownFrame.Visible = dropdownOpen
    modeDropdown.Text = modeDropdown.Text:gsub("▼", dropdownOpen and "▲" or "▼")
    end)
    
-- Speed slider functionality
local dragging = false
speedKnob.MouseButton1Down:Connect(function()
    dragging = true
end)

-- Height slider functionality
local heightDragging = false
heightKnob.MouseButton1Down:Connect(function()
    heightDragging = true
end)
UserInputService.InputEnded:Connect(function(input)
    if input.UserInputType == Enum.UserInputType.MouseButton1 then
        dragging = false
        heightDragging = false
    end
    end)
    
UserInputService.InputChanged:Connect(function(input)
    if input.UserInputType == Enum.UserInputType.MouseMovement then
        if dragging then
            local mousePos = UserInputService:GetMouseLocation()
            local sliderPos = speedSlider.AbsolutePosition
            local sliderSize = speedSlider.AbsoluteSize
            
            local relativeX = math.clamp((mousePos.X - sliderPos.X) / sliderSize.X, 0, 1)
            speedKnob.Position = UDim2.new(relativeX, -9, 0, 1)
            
            liftSpeed = 0.1 + (relativeX * 2.9) -- 0.1x to 3x speed
            speedLabel.Text = "Speed: " .. string.format("%.1f", liftSpeed) .. "x"
end

        if heightDragging then
            local mousePos = UserInputService:GetMouseLocation()
            local sliderPos = heightSlider.AbsolutePosition
            local sliderSize = heightSlider.AbsoluteSize
            
            local relativeX = math.clamp((mousePos.X - sliderPos.X) / sliderSize.X, 0, 1)
            heightKnob.Position = UDim2.new(relativeX, -9, 0, 1)
            
            undetectedHeight = -5 + (relativeX * 10) -- -5 to 5 studs
            heightLabel.Text = "Height: " .. string.format("%.1f", undetectedHeight)
    end
    end
    end)
    
-- Toggle functionality
autoHealToggle.MouseButton1Click:Connect(function()
    autoHealEnabled = not autoHealEnabled
    autoHealToggle.Text = "Auto-Heal: " .. (autoHealEnabled and "ON" or "OFF")
    autoHealToggle.BackgroundColor3 = autoHealEnabled and Color3.fromRGB(85, 170, 85) or Color3.fromRGB(255, 85, 85)
    
    if autoHealEnabled then
setupAutoHeal()
    elseif healConnection then
        healConnection:Disconnect()
        healConnection = nil
    end
end)

noclipToggle.MouseButton1Click:Connect(function()
    noclipEnabled = not noclipEnabled
    noclipToggle.Text = "Noclip: " .. (noclipEnabled and "ON" or "OFF")
    noclipToggle.BackgroundColor3 = noclipEnabled and Color3.fromRGB(85, 170, 85) or Color3.fromRGB(255, 85, 85)
end)
-- Infinite Yield button functionality
infiniteYieldButton.MouseButton1Click:Connect(function()
    loadstring(game:HttpGet('https://raw.githubusercontent.com/EdgeIY/infiniteyield/master/source'))()
end)

-- Auto-heal function
local function setupAutoHeal()
    if not autoHealEnabled then return end
    
    if healConnection then
        healConnection:Disconnect()
    end
    
    healConnection = RunService.Heartbeat:Connect(function()
        if player.Character and player.Character:FindFirstChild("Humanoid") then
            local humanoid = player.Character.Humanoid
            if humanoid.Health < humanoid.MaxHealth then
                humanoid.Health = humanoid.MaxHealth
            end
        end
    end)
end

-- Character flip function
local function flipCharacterOnSide()
    if not player.Character or not player.Character:FindFirstChild("HumanoidRootPart") then
        return
    end
    
    local humanoidRootPart = player.Character.HumanoidRootPart
    
    -- Store original CFrame for restoration
    originalCFrames[humanoidRootPart] = humanoidRootPart.CFrame
    
    -- Flip character on side (90 degrees rotation around X axis for flat side up)
    local currentCFrame = humanoidRootPart.CFrame
    local flippedCFrame = currentCFrame * CFrame.Angles(math.rad(90), 0, 0)
    humanoidRootPart.CFrame = flippedCFrame
    
    -- Keep character flipped during lifting
    if characterFlipConnection then
        characterFlipConnection:Disconnect()
    end
        
    characterFlipConnection = RunService.Heartbeat:Connect(function()
        if player.Character and player.Character:FindFirstChild("HumanoidRootPart") and isLifting then
            local rootPart = player.Character.HumanoidRootPart
            local currentPos = rootPart.Position
            rootPart.CFrame = CFrame.new(currentPos) * CFrame.Angles(math.rad(90), 0, 0)
        end
    end)
end

local function restoreCharacterOrientation()
    if characterFlipConnection then
        characterFlipConnection:Disconnect()
        characterFlipConnection = nil
    end
    
    if player.Character and player.Character:FindFirstChild("HumanoidRootPart") then
        local humanoidRootPart = player.Character.HumanoidRootPart
        if originalCFrames[humanoidRootPart] then
            local currentPos = humanoidRootPart.Position
            local originalRotation = originalCFrames[humanoidRootPart] - originalCFrames[humanoidRootPart].Position
            humanoidRootPart.CFrame = CFrame.new(currentPos) + originalRotation
            originalCFrames[humanoidRootPart] = nil
        end
    end
end
    
-- Noclip function
local function enableNoclip()
    if not noclipEnabled then return end
    
    if noclipConnection then
        noclipConnection:Disconnect()
    end
    
    noclipConnection = RunService.Stepped:Connect(function()
        if player.Character then
            for _, part in pairs(player.Character:GetChildren()) do
                if part:IsA("BasePart") and part.CanCollide then
                    part.CanCollide = false
                end
            end
        end
    end)
end

local function disableNoclip()
    if noclipConnection then
        noclipConnection:Disconnect()
        noclipConnection = nil
    end
    
    if player.Character then
        for _, part in pairs(player.Character:GetChildren()) do
            if part:IsA("BasePart") and part.Name ~= "HumanoidRootPart" then
                part.CanCollide = true
            end
        end
    end
end

-- Function to find player by partial name
local function findPlayer(partialName)
    partialName = partialName:lower()
    for _, targetPlayer in pairs(Players:GetPlayers()) do
        if targetPlayer ~= player and targetPlayer.Name:lower():find(partialName, 1, true) then
            return targetPlayer
        end
    end
    return nil
end

-- Function to setup death detection
local function setupDeathDetection()
    if deathConnection then
        deathConnection:Disconnect()
    end
        
    if player.Character and player.Character:FindFirstChild("Humanoid") then
        deathConnection = player.Character.Humanoid.Died:Connect(function()
    if isLifting then
        stopLifting()
            end
        end)
    end
    end
    
-- Function to stop lifting
local function stopLifting()
    if currentConnection then
        currentConnection:Disconnect()
        currentConnection = nil
    end
    
    if liftBodyPosition and liftBodyPosition.Parent then
        liftBodyPosition:Destroy()
        liftBodyPosition = nil
    end
    
    disableNoclip()
    restoreCharacterOrientation()
    
    -- Return player to original position
    if originalPlayerPosition and player.Character and player.Character:FindFirstChild("HumanoidRootPart") then
        player.Character.HumanoidRootPart.CFrame = originalPlayerPosition
        originalPlayerPosition = nil
    end
    
    isLifting = false
    currentTarget = nil
    targetPosition = nil
    
    -- Show bring button, hide stop button and change colors to green (ready state)
    bringButton.Visible = true
    bringButton.BackgroundColor3 = Color3.fromRGB(85, 170, 85)
    undetectedButton.Visible = true
    undetectedButton.BackgroundColor3 = Color3.fromRGB(170, 85, 170)
    stopButton.Visible = false
    stopButton.BackgroundColor3 = Color3.fromRGB(85, 170, 85) -- Make stop button green when hidden
    
    statusLabel.Text = "Ready - Select mode and enter username"
end

-- Mode-specific lift functions
local function classicLift(targetPlayer)
    if not player.Character or not player.Character:FindFirstChild("HumanoidRootPart") then
        return false
    end
    
    if not targetPlayer.Character or not targetPlayer.Character:FindFirstChild("HumanoidRootPart") then
        return false
    end
    
    local playerRootPart = player.Character.HumanoidRootPart
    local targetRootPart = targetPlayer.Character.HumanoidRootPart
    
    -- Store original position before teleporting
    originalPlayerPosition = playerRootPart.CFrame
    
    -- Calculate precise position directly under target
    local targetBounds = targetPlayer.Character:GetExtentsSize()
    local playerBounds = player.Character:GetExtentsSize()
    local offsetY = (targetBounds.Y / 2) + (playerBounds.Y / 2) + 0.5
    
    targetPosition = Vector3.new(
        targetRootPart.Position.X, 
        targetRootPart.Position.Y - offsetY, 
        targetRootPart.Position.Z
    )
        
    enableNoclip()
    flipCharacterOnSide()
    
    playerRootPart.CFrame = CFrame.new(targetPosition)
    
    liftBodyPosition = Instance.new("BodyPosition")
    liftBodyPosition.MaxForce = Vector3.new(math.huge, math.huge, math.huge)
    liftBodyPosition.Position = targetPosition
    liftBodyPosition.D = 2000
    liftBodyPosition.P = 10000
    liftBodyPosition.Parent = playerRootPart
    
    liftStartTime = tick()
    currentConnection = RunService.Heartbeat:Connect(function()
        if not isLifting then return end
        
        if not targetPlayer.Character or not targetPlayer.Character:FindFirstChild("HumanoidRootPart") then
            statusLabel.Text = "Target player left or died"
            stopLifting()
            return
        end
        
        if not player.Character or not player.Character:FindFirstChild("HumanoidRootPart") then
            return
        end
    
        local targetRootPart = targetPlayer.Character.HumanoidRootPart
        
        -- Fixed classic lift - just follow target position without acceleration
        targetPosition = Vector3.new(
            targetRootPart.Position.X, 
            targetRootPart.Position.Y - offsetY, 
            targetRootPart.Position.Z
        )
        
        if liftBodyPosition and liftBodyPosition.Parent then
            liftBodyPosition.Position = targetPosition
        end
end)
    return true
end
local function rocketLift(targetPlayer)
    if not player.Character or not player.Character:FindFirstChild("HumanoidRootPart") then
        return false
    end
    
    if not targetPlayer.Character or not targetPlayer.Character:FindFirstChild("HumanoidRootPart") then
        return false
    end
    
    local playerRootPart = player.Character.HumanoidRootPart
    local targetRootPart = targetPlayer.Character.HumanoidRootPart
    
    -- Store original position before teleporting
    originalPlayerPosition = playerRootPart.CFrame
    
    targetPosition = Vector3.new(targetRootPart.Position.X, targetRootPart.Position.Y - 5, targetRootPart.Position.Z)
    
    enableNoclip()
    playerRootPart.CFrame = CFrame.new(targetPosition)
    
    liftBodyPosition = Instance.new("BodyPosition")
    liftBodyPosition.MaxForce = Vector3.new(math.huge, math.huge, math.huge)
    liftBodyPosition.Position = targetPosition
    liftBodyPosition.D = 5000
    liftBodyPosition.P = 20000
    liftBodyPosition.Parent = playerRootPart
    
    liftStartTime = tick()
    currentConnection = RunService.Heartbeat:Connect(function()
        if not isLifting then return end
        
        if not targetPlayer.Character or not targetPlayer.Character:FindFirstChild("HumanoidRootPart") then
            statusLabel.Text = "Target player left or died"
            stopLifting()
            return
        end
        
        if not player.Character or not player.Character:FindFirstChild("HumanoidRootPart") then
            return
        end
        
        local elapsedTime = tick() - liftStartTime
        local targetRootPart = targetPlayer.Character.HumanoidRootPart
        
        local rocketSpeed = elapsedTime * elapsedTime * 2 * liftSpeed
        local newY = targetRootPart.Position.Y + rocketSpeed
        
        targetPosition = Vector3.new(targetRootPart.Position.X, newY, targetRootPart.Position.Z)
        
        if liftBodyPosition and liftBodyPosition.Parent then
            liftBodyPosition.Position = targetPosition
        end
    end)
    return true
end

local function orbitLift(targetPlayer)
    if not player.Character or not player.Character:FindFirstChild("HumanoidRootPart") then
        return false
    end
    
    if not targetPlayer.Character or not targetPlayer.Character:FindFirstChild("HumanoidRootPart") then
        return false
    end
    
    local playerRootPart = player.Character.HumanoidRootPart
    local targetRootPart = targetPlayer.Character.HumanoidRootPart
    
    -- Store original position before teleporting
    originalPlayerPosition = playerRootPart.CFrame
    
    enableNoclip()
    
    liftBodyPosition = Instance.new("BodyPosition")
    liftBodyPosition.MaxForce = Vector3.new(math.huge, math.huge, math.huge)
    liftBodyPosition.D = 3000
    liftBodyPosition.P = 15000
    liftBodyPosition.Parent = playerRootPart
    
    liftStartTime = tick()
    currentConnection = RunService.Heartbeat:Connect(function()
        if not isLifting then return end
        
        if not targetPlayer.Character or not targetPlayer.Character:FindFirstChild("HumanoidRootPart") then
            statusLabel.Text = "Target player left or died"
            stopLifting()
            return
        end
        
        if not player.Character or not player.Character:FindFirstChild("HumanoidRootPart") then
            return
        end
        
        local elapsedTime = tick() - liftStartTime
        local targetRootPart = targetPlayer.Character.HumanoidRootPart
        
        local angle = elapsedTime * liftSpeed * 2
        local radius = 8
        local height = elapsedTime * liftSpeed * 3
        
        local x = targetRootPart.Position.X + math.cos(angle) * radius
        local y = targetRootPart.Position.Y + height
        local z = targetRootPart.Position.Z + math.sin(angle) * radius
        
        targetPosition = Vector3.new(x, y, z)
        
        if liftBodyPosition and liftBodyPosition.Parent then
            liftBodyPosition.Position = targetPosition
        end
    end)
    return true
end

local function teleportLift(targetPlayer)
    if not player.Character or not player.Character:FindFirstChild("HumanoidRootPart") then
        return false
    end
    
    if not targetPlayer.Character or not targetPlayer.Character:FindFirstChild("HumanoidRootPart") then
        return false
    end
    
    local playerRootPart = player.Character.HumanoidRootPart
    
    -- Store original position before teleporting
    originalPlayerPosition = playerRootPart.CFrame
    
    enableNoclip()
    liftStartTime = tick()
    currentConnection = RunService.Heartbeat:Connect(function()
        if not isLifting then return end
        
        if not targetPlayer.Character or not targetPlayer.Character:FindFirstChild("HumanoidRootPart") then
            statusLabel.Text = "Target player left or died"
            stopLifting()
            return
        end
        
        if not player.Character or not player.Character:FindFirstChild("HumanoidRootPart") then
            return
        end
        
        local elapsedTime = tick() - liftStartTime
        local targetRootPart = targetPlayer.Character.HumanoidRootPart
        
        local height = elapsedTime * 10 * liftSpeed
        targetPosition = Vector3.new(targetRootPart.Position.X, targetRootPart.Position.Y + height, targetRootPart.Position.Z)
        playerRootPart.CFrame = CFrame.new(targetPosition)
    end)
    return true
end

local function magnetLift(targetPlayer)
    if not player.Character or not player.Character:FindFirstChild("HumanoidRootPart") then
        return false
    end
    
    if not targetPlayer.Character or not targetPlayer.Character:FindFirstChild("HumanoidRootPart") then
        return false
    end
    
    local playerRootPart = player.Character.HumanoidRootPart
    
    -- Store original position before teleporting
    originalPlayerPosition = playerRootPart.CFrame
    
    enableNoclip()
    
    liftBodyPosition = Instance.new("BodyPosition")
    liftBodyPosition.MaxForce = Vector3.new(math.huge, math.huge, math.huge)
    liftBodyPosition.D = 4000
    liftBodyPosition.P = 25000
    liftBodyPosition.Parent = playerRootPart
    
    liftStartTime = tick()
    currentConnection = RunService.Heartbeat:Connect(function()
        if not isLifting then return end
        
        if not targetPlayer.Character or not targetPlayer.Character:FindFirstChild("HumanoidRootPart") then
            statusLabel.Text = "Target player left or died"
            stopLifting()
            return
        end
        
        if not player.Character or not player.Character:FindFirstChild("HumanoidRootPart") then
            return
        end
        
        local elapsedTime = tick() - liftStartTime
        local targetRootPart = targetPlayer.Character.HumanoidRootPart
        local playerPos = playerRootPart.Position
        
        local direction = (targetRootPart.Position - playerPos).Unit
        local distance = math.max(5, 15 - elapsedTime * liftSpeed)
        
        targetPosition = targetRootPart.Position - direction * distance + Vector3.new(0, elapsedTime * liftSpeed * 2, 0)
        
        if liftBodyPosition and liftBodyPosition.Parent then
            liftBodyPosition.Position = targetPosition
        end
    end)
    return true
end

local function undetectedLift(targetPlayer)
    if not player.Character or not player.Character:FindFirstChild("HumanoidRootPart") then
        return false
    end
    
    if not targetPlayer.Character or not targetPlayer.Character:FindFirstChild("HumanoidRootPart") then
        return false
    end
    
    local playerRootPart = player.Character.HumanoidRootPart
    local targetRootPart = targetPlayer.Character.HumanoidRootPart
    
    -- Store original position before teleporting
    originalPlayerPosition = playerRootPart.CFrame
    
    enableNoclip()
    flipCharacterOnSide()
    
    liftStartTime = tick()
    currentConnection = RunService.Heartbeat:Connect(function()
        if not isLifting then return end
        
        if not targetPlayer.Character or not targetPlayer.Character:FindFirstChild("HumanoidRootPart") then
            statusLabel.Text = "Target player left or died"
            stopLifting()
            return
        end
        
        if not player.Character or not player.Character:FindFirstChild("HumanoidRootPart") then
            return
        end
    
        local targetRootPart = targetPlayer.Character.HumanoidRootPart
        
        -- Position at adjustable height relative to target
        local targetBounds = targetPlayer.Character:GetExtentsSize()
        local offsetY = (targetBounds.Y / 2) + undetectedHeight
        targetPosition = Vector3.new(
            targetRootPart.Position.X, 
            targetRootPart.Position.Y - offsetY, 
            targetRootPart.Position.Z
        )
        
        -- Directly set CFrame to lock position instantly
        playerRootPart.CFrame = CFrame.new(targetPosition) * CFrame.Angles(math.rad(90), 0, 0)
    end)
    return true
end

local function bringMode(targetPlayer)
    if not player.Character or not player.Character:FindFirstChild("HumanoidRootPart") then
        return false
    end
    
    if not targetPlayer.Character or not targetPlayer.Character:FindFirstChild("HumanoidRootPart") then
        return false
    end
    
    local playerRootPart = player.Character.HumanoidRootPart
    local targetRootPart = targetPlayer.Character.HumanoidRootPart
    
    -- Store original position
    originalPlayerPosition = playerRootPart.CFrame
    local originalX = originalPlayerPosition.Position.X
    
    enableNoclip()
    flipCharacterOnSide()
    
    -- Phase 1: Position under target with -1 height offset
    local targetBounds = targetPlayer.Character:GetExtentsSize()
    local offsetY = (targetBounds.Y / 2) + (-1)
    local phase1Position = Vector3.new(
        targetRootPart.Position.X, 
        targetRootPart.Position.Y - offsetY, 
        targetRootPart.Position.Z
    )
    
    playerRootPart.CFrame = CFrame.new(phase1Position) * CFrame.Angles(math.rad(90), 0, 0)
    
    liftStartTime = tick()
    local phase = 1
    local moveStartTime = 0
    
    currentConnection = RunService.Heartbeat:Connect(function()
        if not isLifting then return end
        
        if not targetPlayer.Character or not targetPlayer.Character:FindFirstChild("HumanoidRootPart") then
            statusLabel.Text = "Target player left or died"
            stopLifting()
            return
        end
        
        if not player.Character or not player.Character:FindFirstChild("HumanoidRootPart") then
            return
        end
        
        local elapsedTime = tick() - liftStartTime
        local targetRootPart = targetPlayer.Character.HumanoidRootPart
        
        if phase == 1 then
            -- Phase 1: Stay under target for 1 second
            local targetBounds = targetPlayer.Character:GetExtentsSize()
            local offsetY = (targetBounds.Y / 2) + (-1)
            targetPosition = Vector3.new(
                targetRootPart.Position.X, 
                targetRootPart.Position.Y - offsetY, 
                targetRootPart.Position.Z
            )
            
            playerRootPart.CFrame = CFrame.new(targetPosition) * CFrame.Angles(math.rad(90), 0, 0)
            
            if elapsedTime > 1 then
                phase = 2
                moveStartTime = tick()
            end
        elseif phase == 2 then
            -- Phase 2: Move to original X position at decent speed
            local moveElapsed = tick() - moveStartTime
            local moveSpeed = 5 * liftSpeed -- Decent speed
            local currentX = targetRootPart.Position.X
            local targetX = originalX
            local distance = math.abs(targetX - currentX)
            
            if distance > 1 then
                local direction = targetX > currentX and 1 or -1
                local newX = currentX + (direction * moveSpeed * moveElapsed)
                
                -- Clamp to target X if we've passed it
                if (direction == 1 and newX >= targetX) or (direction == -1 and newX <= targetX) then
                    newX = targetX
                end
                
                local targetBounds = targetPlayer.Character:GetExtentsSize()
                local offsetY = (targetBounds.Y / 2) + (-1)
                targetPosition = Vector3.new(
                    newX, 
                    targetRootPart.Position.Y - offsetY, 
                    targetRootPart.Position.Z
                )
                
                playerRootPart.CFrame = CFrame.new(targetPosition) * CFrame.Angles(math.rad(90), 0, 0)
            else
                phase = 3
                moveStartTime = tick()
            end
        elseif phase == 3 then
            -- Phase 3: Lower down slowly
            local lowerElapsed = tick() - moveStartTime
            local lowerSpeed = 2 * liftSpeed -- Slow descent
            local targetBounds = targetPlayer.Character:GetExtentsSize()
            local baseOffsetY = (targetBounds.Y / 2) + (-1)
            local additionalLower = lowerElapsed * lowerSpeed
            
            targetPosition = Vector3.new(
                originalX, 
                targetRootPart.Position.Y - baseOffsetY - additionalLower, 
                targetRootPart.Position.Z
            )
            
            playerRootPart.CFrame = CFrame.new(targetPosition) * CFrame.Angles(math.rad(90), 0, 0)
        end
    end)
    return true
end
    
-- Function to lift target player based on mode
local function liftPlayer(targetPlayer)
    if currentMode == "classic" then
        return classicLift(targetPlayer)
    elseif currentMode == "rocket" then
        return rocketLift(targetPlayer)
    elseif currentMode == "orbit" then
        return orbitLift(targetPlayer)
    elseif currentMode == "teleport" then
        return teleportLift(targetPlayer)
    elseif currentMode == "magnet" then
        return magnetLift(targetPlayer)
    elseif currentMode == "undetected" then
        return undetectedLift(targetPlayer)
    elseif currentMode == "bring" then
        return bringMode(targetPlayer)
    end
    return false
end

-- Start auto-heal when script loads
setupAutoHeal()

-- Setup death detection when character spawns
player.CharacterAdded:Connect(function()
    setupDeathDetection()
end)

-- Setup initial death detection if character already exists
if player.Character then
    setupDeathDetection()
end

-- Bring button functionality
bringButton.MouseButton1Click:Connect(function()
    if isLifting then
        statusLabel.Text = "Already lifting a player!"
        return
    end
    
    local username = usernameBox.Text:gsub("%s+", "")
    if username == "" then
        statusLabel.Text = "Please enter a username!"
        return
    end
    
    local targetPlayer = findPlayer(username)
    if not targetPlayer then
        statusLabel.Text = "Player not found!"
        return
    end
    
    if targetPlayer == player then
        statusLabel.Text = "Cannot bring yourself!"
        return
    end
    
    statusLabel.Text = "Lifting " .. targetPlayer.Name .. " (" .. modes[currentMode].name .. ")..."
    isLifting = true
    currentTarget = targetPlayer
    
    -- Hide bring button, show stop button
    bringButton.Visible = false
    undetectedButton.Visible = false
    stopButton.Visible = true
    stopButton.BackgroundColor3 = Color3.fromRGB(255, 85, 85) -- Red when active
    
    -- Start lifting
    if not liftPlayer(targetPlayer) then
        statusLabel.Text = "Failed to lift player!"
        stopLifting()
        return
    end
end)

-- Undetected lift button functionality
undetectedButton.MouseButton1Click:Connect(function()
    if isLifting then
        statusLabel.Text = "Already lifting a player!"
        return
    end
    
    local username = usernameBox.Text:gsub("%s+", "")
    if username == "" then
        statusLabel.Text = "Please enter a username!"
        return
    end
    
    local targetPlayer = findPlayer(username)
    if not targetPlayer then
        statusLabel.Text = "Player not found!"
        return
    end
    
    if targetPlayer == player then
        statusLabel.Text = "Cannot bring yourself!"
        return
    end
    
    statusLabel.Text = "Undetected lifting " .. targetPlayer.Name .. "..."
    isLifting = true
    currentTarget = targetPlayer
    
    -- Hide buttons, show stop button
    bringButton.Visible = false
    undetectedButton.Visible = false
    stopButton.Visible = true
    stopButton.BackgroundColor3 = Color3.fromRGB(255, 85, 85) -- Red when active
    
    -- Start undetected lifting
    if not undetectedLift(targetPlayer) then
        statusLabel.Text = "Failed to lift player!"
        stopLifting()
        return
    end
end)

-- Stop button functionality
stopButton.MouseButton1Click:Connect(function()
    stopLifting()
end)

-- Close button functionality
closeButton.MouseButton1Click:Connect(function()
    stopLifting()
    if healConnection then
        healConnection:Disconnect()
    end
    if deathConnection then
        deathConnection:Disconnect()
    end
    screenGui:Destroy()
end)

-- Toggle GUI with key (F for example)
UserInputService.InputBegan:Connect(function(input, gameProcessed)
    if gameProcessed then return end
    
    if input.KeyCode == Enum.KeyCode.F then
        screenGui.Enabled = not screenGui.Enabled
    end
end)

Features & Information

player lifter, use undetected player lifter for best result.
#universal#lift#trolling#fe#serversided

Community Comments (2)

bobjsbobjsMar 17, 2026

use undetected player lifter, working on updates, the others arent that good

bobjsbobjsMar 17, 2026

please send me a friend request for key scripts, without keys, my old user is @hamster_gamer14 i have 8k followers, bc working on followers script

More Scripts for Universal Scripts