UNIVERSAL LEGIT KEYLESS AIMBOT
Key RequiredUniversal

UNIVERSAL LEGIT KEYLESS AIMBOT

Universal Scriptotate907otate907 636 views 6.5K executesUpdated Jul 25, 2026
Unrated
00
Lua Script•271 lines (7585 chars)
-- Made by YUN
-- UPDATED: Right Ctrl toggles GUI, U toggles FOV circle

local Players = game:GetService("Players")
local RunService = game:GetService("RunService")
local Workspace = game:GetService("Workspace")
local UserInputService = game:GetService("UserInputService")
local StarterGui = game:GetService("StarterGui")

local player = Players.LocalPlayer
while not player do
	task.wait()
	player = Players.LocalPlayer
end

local playerGui = player:WaitForChild("PlayerGui")
local camera = workspace.CurrentCamera

-- ===== CONFIGURATION =====
local FOV_RADIUS = 150
local SMOOTHNESS = 0.15
local AIMBOT_ENABLED = true
local SHOW_FOV = true          -- new: separate control for FOV circle visibility

local target = nil
local MOUSE_LOCKED = false

-- ===== FOV CIRCLE (GUI overlay) =====
local screenGui = Instance.new("ScreenGui")
screenGui.Name = "FOVGui"
screenGui.ResetOnSpawn = false
screenGui.Parent = playerGui

local fovCircle = Instance.new("Frame")
fovCircle.Size = UDim2.new(0, FOV_RADIUS*2, 0, FOV_RADIUS*2)
fovCircle.AnchorPoint = Vector2.new(0.5, 0.5)
fovCircle.Position = UDim2.new(0.5, 0, 0.5, 0)
fovCircle.BackgroundColor3 = Color3.fromRGB(255,0,0)
fovCircle.BackgroundTransparency = 0.9
fovCircle.BorderSizePixel = 0
fovCircle.Parent = screenGui

local circleCorner = Instance.new("UICorner")
circleCorner.CornerRadius = UDim.new(1,0)
circleCorner.Parent = fovCircle

-- Visibility is set in updateAimbotState()

-- ===== AIMBOT CORE FUNCTIONS =====
local function isVisible(targetCharacter)
	if not targetCharacter then return false end
	
	local hrp = targetCharacter:FindFirstChild("HumanoidRootPart")
	if not hrp then return false end
	
	local origin = camera.CFrame.Position
	local direction = hrp.Position - origin
	
	local params = RaycastParams.new()
	params.FilterType = Enum.RaycastFilterType.Blacklist
	params.FilterDescendantsInstances = {
		player.Character,
		targetCharacter
	}
	
	local result = Workspace:Raycast(origin, direction, params)
	return result == nil
end

local function getClosestInFOV()
	local closest = nil
	local shortestDistance = math.huge
	local screenCenter = Vector2.new(
		camera.ViewportSize.X/2,
		camera.ViewportSize.Y/2
	)

	for _, plr in ipairs(Players:GetPlayers()) do
		if plr ~= player and plr.Character then
			
			local humanoid = plr.Character:FindFirstChildOfClass("Humanoid")
			local hrp = plr.Character:FindFirstChild("HumanoidRootPart")
			
			if humanoid and humanoid.Health > 0 and hrp then
				
				local screenPos, onScreen = camera:WorldToViewportPoint(hrp.Position)
				
				if onScreen then
					local dist = (Vector2.new(screenPos.X, screenPos.Y) - screenCenter).Magnitude
					
					if dist < FOV_RADIUS and dist < shortestDistance then
						if isVisible(plr.Character) then
							closest = plr
							shortestDistance = dist
						end
					end
				end
			end
		end
	end
	
	return closest
end

-- ===== MAIN RENDER LOOP =====
RunService.RenderStepped:Connect(function()
	if not AIMBOT_ENABLED then
		if MOUSE_LOCKED then
			UserInputService.MouseBehavior = Enum.MouseBehavior.Default
			MOUSE_LOCKED = false
		end
		return
	end
	
	target = getClosestInFOV()
	
	if target and target.Character then
		
		local hrp = target.Character:FindFirstChild("HumanoidRootPart")
		
		if hrp then
			local camPos = camera.CFrame.Position
			local lookAt = CFrame.new(camPos, hrp.Position)
			
			camera.CFrame = camera.CFrame:Lerp(
				lookAt,
				SMOOTHNESS
			)

			if not MOUSE_LOCKED then
				UserInputService.MouseBehavior = Enum.MouseBehavior.LockCenter
				MOUSE_LOCKED = true
			end
		end
	else
		if MOUSE_LOCKED then
			UserInputService.MouseBehavior = Enum.MouseBehavior.Default
			MOUSE_LOCKED = false
		end
	end
end)

-- ===== SETTINGS MENU GUI =====
local menuGui = Instance.new("ScreenGui")
menuGui.Name = "AimbotMenu"
menuGui.ResetOnSpawn = false
menuGui.Parent = playerGui
menuGui.Enabled = true   -- visible by default

local mainFrame = Instance.new("Frame")
mainFrame.Size = UDim2.new(0,220,0,150)
mainFrame.Position = UDim2.new(0.05,0,0.3,0)
mainFrame.BackgroundColor3 = Color3.fromRGB(35,35,35)
mainFrame.BorderSizePixel = 0
mainFrame.Active = true
mainFrame.Draggable = true
mainFrame.Parent = menuGui

local frameCorner = Instance.new("UICorner")
frameCorner.CornerRadius = UDim.new(0,12)
frameCorner.Parent = mainFrame

local title = Instance.new("TextLabel")
title.Size = UDim2.new(1,0,0,30)
title.BackgroundTransparency = 1
title.Text = "Aimbot Settings"
title.TextColor3 = Color3.new(1,1,1)
title.TextScaled = true
title.Parent = mainFrame

local toggleButton = Instance.new("TextButton")
toggleButton.Size = UDim2.new(0.8,0,0,30)
toggleButton.Position = UDim2.new(0.1,0,0,40)
toggleButton.BackgroundColor3 = Color3.fromRGB(60,60,60)
toggleButton.TextColor3 = Color3.new(1,1,1)
toggleButton.Text = "Aimbot: ON"
toggleButton.Parent = mainFrame

local smoothLabel = Instance.new("TextLabel")
smoothLabel.Size = UDim2.new(1,0,0,25)
smoothLabel.Position = UDim2.new(0,0,0,75)
smoothLabel.BackgroundTransparency = 1
smoothLabel.TextColor3 = Color3.new(1,1,1)
smoothLabel.TextScaled = true
smoothLabel.Text = "Smoothness: "..string.format("%.2f", SMOOTHNESS)
smoothLabel.Parent = mainFrame

local minus = Instance.new("TextButton")
minus.Size = UDim2.new(0,40,0,30)
minus.Position = UDim2.new(0.2,0,0,110)
minus.Text = "-"
minus.BackgroundColor3 = Color3.fromRGB(60,60,60)
minus.TextColor3 = Color3.new(1,1,1)
minus.Parent = mainFrame

local plus = Instance.new("TextButton")
plus.Size = UDim2.new(0,40,0,30)
plus.Position = UDim2.new(0.6,0,0,110)
plus.Text = "+"
plus.BackgroundColor3 = Color3.fromRGB(60,60,60)
plus.TextColor3 = Color3.new(1,1,1)
plus.Parent = mainFrame

-- ===== STATE UPDATE FUNCTION =====
local function updateAimbotState()
	if AIMBOT_ENABLED then
		toggleButton.Text = "Aimbot: ON"
	else
		toggleButton.Text = "Aimbot: OFF"
		UserInputService.MouseBehavior = Enum.MouseBehavior.Default
		MOUSE_LOCKED = false
	end
	-- FOV circle visible only if aimbot is ON AND SHOW_FOV is true
	fovCircle.Visible = AIMBOT_ENABLED and SHOW_FOV
end

-- ===== BUTTONS & KEYBINDS =====
toggleButton.MouseButton1Click:Connect(function()
	AIMBOT_ENABLED = not AIMBOT_ENABLED
	updateAimbotState()
end)

-- E key toggles aimbot
UserInputService.InputBegan:Connect(function(input, processed)
	if processed then return end
	
	if input.KeyCode == Enum.KeyCode.E then
		AIMBOT_ENABLED = not AIMBOT_ENABLED
		updateAimbotState()
	end

	-- NEW: U key toggles FOV circle visibility
	if input.KeyCode == Enum.KeyCode.U then
		SHOW_FOV = not SHOW_FOV
		updateAimbotState()
	end

	-- NEW: Right Ctrl toggles the settings GUI
	if input.KeyCode == Enum.KeyCode.RightControl then
		menuGui.Enabled = not menuGui.Enabled
	end
end)

-- Smoothness controls
minus.MouseButton1Click:Connect(function()
	SMOOTHNESS = math.clamp(SMOOTHNESS - 0.05, 0.01, 1)
	smoothLabel.Text = "Smoothness: "..string.format("%.2f", SMOOTHNESS)
end)

plus.MouseButton1Click:Connect(function()
	SMOOTHNESS = math.clamp(SMOOTHNESS + 0.05, 0.01, 1)
	smoothLabel.Text = "Smoothness: "..string.format("%.2f", SMOOTHNESS)
end)

-- Reset camera on respawn
player.CharacterAdded:Connect(function()
	camera.CameraType = Enum.CameraType.Custom
	UserInputService.MouseBehavior = Enum.MouseBehavior.Default
	MOUSE_LOCKED = false
end)

-- ===== NOTIFICATION =====
local function sendNotification(title, text, duration)
	StarterGui:SetCore("SendNotification", {
		Title = title;          
		Text = text;            
		Duration = duration or 5; 
	})
end

sendNotification("INFO", "E = toggle aimbot | U = toggle FOV | Right Ctrl = toggle menu", 6)

Features & Information

aimbot universal keyless hidden undetecxted cool
#universal#roblox#aimbot#keyless#gui

Community Comments (0)

No comments yet for this script.

More Scripts for Universal Scripts