
KeylessUniversal

local Players = game:GetService("Players")
local RunService = game:GetService("RunService")
local UserInputService = game:GetService("UserInputService")
local LocalPlayer = Players.LocalPlayer
local Camera = workspace.CurrentCamera
local trackingEnabled = false
local ignoredPlayers = {} -- Dictionary to keep track of "teammates"
-- 1. Create the Main UI Container
local screenGui = Instance.new("ScreenGui")
screenGui.Name = "TeamHeadLockGui"
screenGui.ResetOnSpawn = false
screenGui.Parent = LocalPlayer:WaitForChild("PlayerGui")
local mainFrame = Instance.new("Frame")
mainFrame.Size = UDim2.new(0, 220, 0, 300)
mainFrame.Position = UDim2.new(0.04, 0, 0.45, -150)
mainFrame.BackgroundColor3 = Color3.fromRGB(25, 25, 25)
mainFrame.BorderSizePixel = 0
mainFrame.Active = true -- Required for dragging
mainFrame.Parent = screenGui
local toggleBtn = Instance.new("TextButton")
toggleBtn.Name = "Toggle"
toggleBtn.Size = UDim2.new(1, 0, 0, 45)
toggleBtn.BackgroundColor3 = Color3.fromRGB(20, 20, 20)
toggleBtn.TextColor3 = Color3.fromRGB(255, 255, 255)
toggleBtn.TextScaled = true
toggleBtn.Font = Enum.Font.GothamBold
toggleBtn.Text = "HEAD LOCK: OFF"
toggleBtn.Parent = mainFrame
-- Scrollable Player List
local scrollFrame = Instance.new("ScrollingFrame")
scrollFrame.Size = UDim2.new(1, 0, 1, -45)
scrollFrame.Position = UDim2.new(0, 0, 0, 45)
scrollFrame.BackgroundColor3 = Color3.fromRGB(35, 35, 35)
scrollFrame.ScrollBarThickness = 6
scrollFrame.Parent = mainFrame
local listLayout = Instance.new("UIListLayout")
listLayout.Parent = scrollFrame
listLayout.SortOrder = Enum.SortOrder.LayoutOrder
listLayout.Padding = UDim.new(0, 5)
-- 2. Make the UI Draggable
local dragging, dragInput, dragStart, startPos
local function updateInput(input)
local delta = input.Position - dragStart
mainFrame.Position = UDim2.new(startPos.X.Scale, startPos.X.Offset + delta.X, startPos.Y.Scale, startPos.Y.Offset + delta.Y)
end
mainFrame.InputBegan:Connect(function(input)
if input.UserInputType == Enum.UserInputType.MouseButton1 or input.UserInputType == Enum.UserInputType.Touch then
dragging = true
dragStart = input.Position
startPos = mainFrame.Position
input.Changed:Connect(function()
if input.UserInputState == Enum.UserInputState.End then
dragging = false
end
end)
end
end)
mainFrame.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
updateInput(input)
end
end)
-- 3. Toggle Aim Assist Button
toggleBtn.MouseButton1Click:Connect(function()
trackingEnabled = not trackingEnabled
toggleBtn.Text = trackingEnabled and "HEAD LOCK: ON" or "HEAD LOCK: OFF"
toggleBtn.BackgroundColor3 = trackingEnabled and Color3.fromRGB(180, 0, 0) or Color3.fromRGB(20, 20, 20)
end)
-- 4. Dynamic Player List & Avatar Fetching
local function refreshPlayerList()
for _, child in ipairs(scrollFrame:GetChildren()) do
if child:IsA("Frame") then child:Destroy() end
end
local yOffset = 0
for _, player in ipairs(Players:GetPlayers()) do
if player ~= LocalPlayer then
local pFrame = Instance.new("Frame")
pFrame.Size = UDim2.new(1, -10, 0, 40)
pFrame.BackgroundColor3 = ignoredPlayers[player.UserId] and Color3.fromRGB(0, 100, 180) or Color3.fromRGB(50, 50, 50)
pFrame.Parent = scrollFrame
local avatar = Instance.new("ImageLabel")
avatar.Size = UDim2.new(0, 40, 0, 40)
avatar.BackgroundTransparency = 1
local thumb, isReady = Players:GetUserThumbnailAsync(player.UserId, Enum.ThumbnailType.HeadShot, Enum.ThumbnailSize.Size48x48)
avatar.Image = thumb
avatar.Parent = pFrame
local nameBtn = Instance.new("TextButton")
nameBtn.Size = UDim2.new(1, -45, 1, 0)
nameBtn.Position = UDim2.new(0, 45, 0, 0)
nameBtn.BackgroundTransparency = 1
nameBtn.TextColor3 = Color3.fromRGB(255, 255, 255)
nameBtn.TextXAlignment = Enum.TextXAlignment.Left
nameBtn.Font = Enum.Font.SourceSansBold
nameBtn.TextSize = 16
nameBtn.Text = ignoredPlayers[player.UserId] and player.Name .. " [TEAM]" or player.Name
nameBtn.Parent = pFrame
nameBtn.MouseButton1Click:Connect(function()
if ignoredPlayers[player.UserId] then
ignoredPlayers[player.UserId] = nil
pFrame.BackgroundColor3 = Color3.fromRGB(50, 50, 50)
nameBtn.Text = player.Name
else
ignoredPlayers[player.UserId] = true
pFrame.BackgroundColor3 = Color3.fromRGB(0, 100, 180)
nameBtn.Text = player.Name .. " [TEAM]"
end
end)
yOffset = yOffset + 45
end
end
scrollFrame.CanvasSize = UDim2.new(0, 0, 0, yOffset)
end
Players.PlayerAdded:Connect(refreshPlayerList)
Players.PlayerRemoving:Connect(refreshPlayerList)
refreshPlayerList()
-- 5. Target Selection (Ignoring Whitelisted Players)
local function getHeadTarget()
local bestTarget = nil
local shortestDist = 600
for _, player in ipairs(Players:GetPlayers()) do
if player ~= LocalPlayer and not ignoredPlayers[player.UserId] and player.Character then
local targetHead = player.Character:FindFirstChild("Head")
local humanoid = player.Character:FindFirstChildOfClass("Humanoid")
if targetHead and humanoid and humanoid.Health > 0 then
local dist = (targetHead.Position - Camera.CFrame.Position).Magnitude
if dist < shortestDist then
shortestDist = dist
bestTarget = targetHead
end
end
end
end
return bestTarget
end
-- 6. Priority Brute Force Camera
RunService:BindToRenderStep("AbsoluteCameraForce", 3000, function()
if not trackingEnabled then return end
local target = getHeadTarget()
if target then
Camera.CFrame = CFrame.new(Camera.CFrame.Position, target.Position)
end
end)



this script on rivals is fire