Further enhance and add in multiple handlers as well as cframe clearance, instant-tracking, and other systems. Like ADD in advanced unlock on which will unlock the player when clicking on the targeted player AGAIN after clicking on it to target it, and when clicking on another player it'll unlock the other targeted player and lockon to the new one.

```
local Players = game:GetService("Players")
local RunService = game:GetService("RunService")
local UserInputService = game:GetService("UserInputService")

-- Configuration
local ROTATION_SPEED = 0.1  -- Smooth rotation speed
local TRACKED_TARGET = nil  -- Currently tracked target (player or model with humanoid)

local player = Players.LocalPlayer
local character = player.Character or player.CharacterAdded:Wait()
local humanoidRootPart = character:WaitForChild("HumanoidRootPart")

-- Function to check if a model has a humanoid
local function hasHumanoid(model)
    return model:FindFirstChildOfClass("Humanoid") ~= nil
end

-- Function to handle clicking on a model to target or deselect it
local function onModelClicked(targetModel)
    -- If we click the same target, deselect it
    if TRACKED_TARGET == targetModel then
        TRACKED_TARGET = nil
    else
        -- Otherwise, set the clicked model as the new target
        TRACKED_TARGET = targetModel
    end
end

-- Function to smoothly face the target (player or NPC)
local function smoothFaceTarget(targetModel)
    if targetModel and targetModel:FindFirstChild("HumanoidRootPart") then
        local targetHumanoidRootPart = targetModel:FindFirstChild("HumanoidRootPart")
        
        if targetHumanoidRootPart then
            local targetPosition = Vector3.new(targetHumanoidRootPart.Position.X, humanoidRootPart.Position.Y, targetHumanoidRootPart.Position.Z)
            local targetCFrame = CFrame.lookAt(humanoidRootPart.Position, targetPosition)
            
            -- Smoothly interpolate the humanoid's CFrame towards the target
            humanoidRootPart.CFrame = humanoidRootPart.CFrame:Lerp(targetCFrame, ROTATION_SPEED)
        end
    end
end

-- Function to update the ESP to show which model is being tracked
local function updateESP()
    if TRACKED_TARGET then
        -- Simple ESP logic: Add a BillboardGui above the target's head
        local targetHead = TRACKED_TARGET:FindFirstChild("Head")
        if targetHead then
            -- Create a simple BillboardGui to show ESP
            local billboard = Instance.new("BillboardGui")
            billboard.Adornee = targetHead
            billboard.Size = UDim2.new(0, 100, 0, 100)
            billboard.StudsOffset = Vector3.new(0, 2, 0)
            billboard.AlwaysOnTop = true

            local textLabel = Instance.new("TextLabel")
            textLabel.Size = UDim2.new(1, 0, 1, 0)
            textLabel.Text = "Targeted"
            textLabel.TextColor3 = Color3.fromRGB(255, 0, 0)
            textLabel.BackgroundTransparency = 1
            textLabel.TextStrokeTransparency = 0.8
            textLabel.Parent = billboard

            billboard.Parent = game.Players.LocalPlayer.PlayerGui
        end
    end
end

-- Listen for player clicks to target or deselect a model
UserInputService.InputBegan:Connect(function(input, gameProcessed)
    if gameProcessed then return end
    if input.UserInputType == Enum.UserInputType.MouseButton1 then
        local mouse = player:GetMouse()
        local target = mouse.Target

        -- If the clicked target has a humanoid, toggle selection
        if target and target.Parent and hasHumanoid(target.Parent) then
            onModelClicked(target.Parent)
        end
    end
end)

-- Ensure the script continues working when the character respawns
player.CharacterAdded:Connect(function(newCharacter)
    character = newCharacter
    humanoidRootPart = newCharacter:WaitForChild("HumanoidRootPart")
    -- Reconnect ESP for the new character if necessary
end)

-- Run service to update the face tracking smoothly
RunService.RenderStepped:Connect(function()
    if TRACKED_TARGET then
        smoothFaceTarget(TRACKED_TARGET)
        updateESP()  -- Update the ESP every frame
    end
end)