
Key RequiredUniversal

-- LocalScript: paste into StarterPlayer > StarterPlayerScripts
-- ALL-IN-ONE: ESP + Aimbot with GUI (no dependencies)
local Players = game:GetService("Players")
local RunService = game:GetService("RunService")
local UserInputService = game:GetService("UserInputService")
local LocalPlayer = Players.LocalPlayer
local Camera = workspace.CurrentCamera
-- Settings
local HIGHLIGHT_COLOR = Color3.fromRGB(255, 60, 60)
local MAX_LOCK_DIST = 1000
local DEFAULT_AIMBOT_FOV = 70 -- aimbot detection FOV (separate from camera)
local DEFAULT_SMOOTH = 30 -- 1..100
-- State
local espEnabled = true
local aimbotEnabled = false
local aimPart = "Head"
local smoothness = DEFAULT_SMOOTH
local aimbotFov = DEFAULT_AIMBOT_FOV
local filterMode = "All"
local aimbotActive = false
local currentTarget = nil
local cameraConn = nil
local tagMap = {}
local walkSpeed = 16
local flyEnabled = false
local flyConn = nil
local infiniteJumpEnabled = false
local triggerBotEnabled = false
-- Create red highlight
local function createHighlight(character, color)
if not character or not character:IsA("Model") then return end
local existing = character:FindFirstChild("_Highlighter")
if existing then return existing end
local highlight = Instance.new("Highlight")
highlight.Name = "_Highlighter"
highlight.Adornee = character
highlight.FillColor = color or Color3.fromRGB(230, 60, 60)
highlight.OutlineColor = Color3.fromRGB(30, 0, 0)
highlight.FillTransparency = 0.35
highlight.OutlineTransparency = 0
highlight.DepthMode = Enum.HighlightDepthMode.AlwaysOnTop
highlight.Parent = character
return highlight
end
-- Create nametag above head
local function createNameTag(player, localPlayerGui)
if not player or not localPlayerGui then return end
local character = player.Character
if not character then return end
local head = character:FindFirstChild("Head")
if not head then return end
local tagName = "NameTag_" .. player.UserId
local old = localPlayerGui:FindFirstChild(tagName)
if old then old:Destroy() end
local billboard = Instance.new("BillboardGui")
billboard.Name = tagName
billboard.Adornee = head
billboard.AlwaysOnTop = true
billboard.Size = UDim2.new(0, 220, 0, 65)
billboard.StudsOffset = Vector3.new(0, 2.6, 0)
billboard.Parent = localPlayerGui
local bg = Instance.new("Frame")
bg.Size = UDim2.new(1, 0, 1, 0)
bg.BackgroundTransparency = 0.35
bg.BackgroundColor3 = Color3.fromRGB(0, 0, 0)
bg.BorderSizePixel = 0
bg.Parent = billboard
local corner = Instance.new("UICorner")
corner.CornerRadius = UDim.new(0, 10)
corner.Parent = bg
local gradient = Instance.new("UIGradient")
gradient.Color = ColorSequence.new({
ColorSequenceKeypoint.new(0, Color3.fromRGB(255, 80, 80)),
ColorSequenceKeypoint.new(1, Color3.fromRGB(180, 30, 30)),
})
gradient.Rotation = 90
gradient.Parent = bg
local stroke = Instance.new("UIStroke")
stroke.Color = Color3.fromRGB(0, 0, 0)
stroke.Transparency = 0.6
stroke.Thickness = 2
stroke.Parent = bg
local nameLabel = Instance.new("TextLabel")
nameLabel.Size = UDim2.new(1, -12, 0.5, -6)
nameLabel.Position = UDim2.new(0, 6, 0, 4)
nameLabel.BackgroundTransparency = 1
nameLabel.Text = (player.DisplayName ~= "" and player.DisplayName) or player.Name
nameLabel.TextColor3 = Color3.fromRGB(255, 255, 255)
nameLabel.Font = Enum.Font.GothamBold
nameLabel.TextScaled = true
nameLabel.TextStrokeTransparency = 0
nameLabel.TextStrokeColor3 = Color3.fromRGB(0, 0, 0)
nameLabel.Parent = bg
local distLabel = Instance.new("TextLabel")
distLabel.Name = "DistLabel"
distLabel.Size = UDim2.new(1, -12, 0.25, -2)
distLabel.Position = UDim2.new(0, 6, 0.42, 0)
distLabel.BackgroundTransparency = 1
distLabel.Text = ""
distLabel.TextColor3 = Color3.fromRGB(255, 200, 100)
distLabel.Font = Enum.Font.GothamBold
distLabel.TextScaled = true
distLabel.TextStrokeTransparency = 0.5
distLabel.TextStrokeColor3 = Color3.fromRGB(0, 0, 0)
distLabel.TextXAlignment = Enum.TextXAlignment.Right
distLabel.Parent = bg
-- Health bar background
local healthBarBg = Instance.new("Frame")
healthBarBg.Size = UDim2.new(1, -12, 0.25, -4)
healthBarBg.Position = UDim2.new(0, 6, 0.72, 2)
healthBarBg.BackgroundColor3 = Color3.fromRGB(30, 30, 30)
healthBarBg.BorderSizePixel = 0
healthBarBg.Parent = bg
local healthCorner = Instance.new("UICorner")
healthCorner.CornerRadius = UDim.new(0, 4)
healthCorner.Parent = healthBarBg
-- Health bar fill
local healthFill = Instance.new("Frame")
healthFill.Size = UDim2.new(1, 0, 1, 0)
healthFill.Position = UDim2.new(0, 0, 0, 0)
healthFill.BackgroundColor3 = Color3.fromRGB(0, 200, 0)
healthFill.BorderSizePixel = 0
healthFill.Parent = healthBarBg
local fillCorner = Instance.new("UICorner")
fillCorner.CornerRadius = UDim.new(0, 4)
fillCorner.Parent = healthFill
-- Health number label
local healthLabel = Instance.new("TextLabel")
healthLabel.Name = "HealthLabel"
healthLabel.Size = UDim2.new(1, 0, 1, 0)
healthLabel.Position = UDim2.new(0, 0, 0, 0)
healthLabel.BackgroundTransparency = 1
healthLabel.Text = "100"
healthLabel.TextColor3 = Color3.fromRGB(255, 255, 255)
healthLabel.Font = Enum.Font.GothamBold
healthLabel.TextScaled = true
healthLabel.TextSize = 16
healthLabel.TextStrokeTransparency = 0
healthLabel.TextStrokeColor3 = Color3.fromRGB(0, 0, 0)
healthLabel.Parent = healthBarBg
-- Distance update loop + health update
local lastUpdate = 0
local updateInterval = 0.12
local conn
conn = RunService.Heartbeat:Connect(function(dt)
lastUpdate = lastUpdate + dt
if lastUpdate < updateInterval then return end
lastUpdate = 0
if not player or not player.Parent then
conn:Disconnect()
if billboard and billboard.Parent then billboard:Destroy() end
tagMap[player] = nil
return
end
local localChar = LocalPlayer.Character
local localRoot = localChar and (localChar:FindFirstChild("HumanoidRootPart") or localChar:FindFirstChild("Head"))
local targetChar = player.Character
local targetRoot = targetChar and (targetChar:FindFirstChild("HumanoidRootPart") or targetChar:FindFirstChild("Head"))
if not localRoot or not targetRoot then
distLabel.Text = ""
return
end
local dist = (localRoot.Position - targetRoot.Position).Magnitude
if dist >= 1000 then
distLabel.Text = string.format("%.1fk", dist / 1000)
else
distLabel.Text = string.format("%.1fm", dist)
end
-- Update health bar
local humanoid = targetChar and targetChar:FindFirstChild("Humanoid")
if humanoid then
local maxHealth = humanoid.MaxHealth
local currentHealth = humanoid.Health
local healthPercent = currentHealth / maxHealth
-- Set fill size
healthFill.Size = UDim2.new(healthPercent, 0, 1, 0)
-- Update health label with current health value
local healthLabel = healthBarBg:FindFirstChild("HealthLabel")
if healthLabel then
healthLabel.Text = tostring(math.floor(currentHealth))
end
-- Change color based on health
if currentHealth <= 0 then
healthFill.BackgroundColor3 = Color3.fromRGB(0, 0, 0) -- Black when dead
elseif healthPercent > 0.6 then
healthFill.BackgroundColor3 = Color3.fromRGB(0, 220, 0) -- Green when high
elseif healthPercent > 0.3 then
healthFill.BackgroundColor3 = Color3.fromRGB(255, 220, 0) -- Yellow when medium
else
healthFill.BackgroundColor3 = Color3.fromRGB(255, 50, 50) -- Red when low
end
end
end)
if not tagMap[player] then tagMap[player] = {} end
tagMap[player].nametag = billboard
tagMap[player].conn = conn
return billboard
end
-- Helpers
local function passesFilter(player)
if filterMode == "All" then return true end
if filterMode == "Team" then
if LocalPlayer.Team and player.Team then return LocalPlayer.Team == player.Team end
return false
end
if filterMode == "Friends" then
local ok, res = pcall(function() return LocalPlayer:IsFriendsWith(player.UserId) end)
return ok and res
end
if filterMode == "Enemies" then
if LocalPlayer.Team and player.Team then return LocalPlayer.Team ~= player.Team end
local ok, res = pcall(function() return LocalPlayer:IsFriendsWith(player.UserId) end)
return not (ok and res)
end
return true
end
local function createESPFor(player)
if not player or player == LocalPlayer then return end
if not passesFilter(player) then
removeESPFor(player)
return
end
if not tagMap[player] then tagMap[player] = {} end
local character = player.Character
-- If character exists, create or repair the highlight and nametag
if character then
if not (tagMap[player].highlight and tagMap[player].highlight.Parent) then
local hl = createHighlight(character, HIGHLIGHT_COLOR)
tagMap[player].highlight = hl
end
if not (tagMap[player].nametag and tagMap[player].nametag.Parent) then
local nt = createNameTag(player, LocalPlayer:WaitForChild("PlayerGui"))
tagMap[player].nametag = nt
end
end
-- Attach CharacterAdded listener once so we can rematerialize ESP on respawn
if not tagMap[player].charConn then
tagMap[player].charConn = player.CharacterAdded:Connect(function(char)
if not passesFilter(player) then return end
wait(0.05)
createESPFor(player)
end)
end
-- Attach CharacterRemoving listener to clean up per-death and allow re-creation
if not tagMap[player].charRemovingConn then
tagMap[player].charRemovingConn = player.CharacterRemoving:Connect(function()
if tagMap[player] then
if tagMap[player].highlight and tagMap[player].highlight.Parent then
tagMap[player].highlight:Destroy()
end
if tagMap[player].nametag and tagMap[player].nametag.Parent then
tagMap[player].nametag:Destroy()
end
if tagMap[player].conn then
tagMap[player].conn:Disconnect()
tagMap[player].conn = nil
end
tagMap[player].highlight = nil
tagMap[player].nametag = nil
end
end)
end
end
local function removeESPFor(player)
local entry = tagMap[player]
if entry then
if entry.highlight and entry.highlight.Parent then entry.highlight:Destroy() end
if entry.nametag and entry.nametag.Parent then entry.nametag:Destroy() end
if entry.conn then entry.conn:Disconnect() end
if entry.charConn then entry.charConn:Disconnect() end
if entry.charRemovingConn then entry.charRemovingConn:Disconnect() end
tagMap[player] = nil
else
local playerGui = LocalPlayer:FindFirstChild("PlayerGui")
if playerGui then
local name = "NameTag_" .. player.UserId
local old = playerGui:FindFirstChild(name)
if old then old:Destroy() end
end
end
end
local function refreshAllESP()
for _, p in ipairs(Players:GetPlayers()) do
if p ~= LocalPlayer then
if espEnabled and passesFilter(p) then
createESPFor(p)
else
removeESPFor(p)
end
end
end
end
-- Aimbot
local function getAimPart(player)
if not player.Character then return nil end
if aimPart == "Head" then return player.Character:FindFirstChild("Head") end
return player.Character:FindFirstChild("HumanoidRootPart") or player.Character:FindFirstChild("Torso")
end
local function angleToCamera(pos)
local camCFrame = Camera.CFrame
local forward = camCFrame.LookVector
local dir = (pos - camCFrame.Position).Unit
local dot = forward:Dot(dir)
local angle = math.acos(math.clamp(dot, -1, 1))
return angle
end
local function findBestTarget()
local best, bestScore = nil, math.huge
local halfFovRad = math.rad(aimbotFov/2)
local camPos = Camera.CFrame.Position
for _, p in ipairs(Players:GetPlayers()) do
if p ~= LocalPlayer and p.Character and passesFilter(p) then
local aim = getAimPart(p)
if aim then
local dist = (aim.Position - camPos).Magnitude
if dist <= MAX_LOCK_DIST then
local ang = angleToCamera(aim.Position)
if ang <= halfFovRad then
local score = ang + (dist / 10000)
if score < bestScore then
bestScore = score
best = p
end
end
end
end
end
end
return best
end
local function engageAimbot(target)
if not target or not target.Character then return end
if cameraConn then cameraConn:Disconnect() cameraConn = nil end
currentTarget = target
-- Lerp camera without locking it - keeps player movement free
cameraConn = RunService.RenderStepped:Connect(function()
if not currentTarget or not currentTarget.Character then
if cameraConn then cameraConn:Disconnect() cameraConn = nil end
currentTarget = nil
return
end
local aim = getAimPart(currentTarget)
if not aim then return end
local camPos = Camera.CFrame.Position
local desired = CFrame.new(camPos, aim.Position)
local alpha = math.clamp(1 - (smoothness / 200), 0.01, 0.95)
Camera.CFrame = Camera.CFrame:Lerp(desired, alpha)
-- Attempt trigger if enabled and aligned on target
if triggerBotEnabled then
local dist = (aim.Position - camPos).Magnitude
local ang = angleToCamera(aim.Position)
if dist <= MAX_LOCK_DIST and ang <= math.rad(aimbotFov/2) then
local myChar = LocalPlayer.Character
if myChar then
local tool = myChar:FindFirstChildOfClass("Tool")
if tool and tool.Parent == myChar then
pcall(function() tool:Activate() end)
end
end
end
end
end)
end
local function disengageAimbot()
if cameraConn then cameraConn:Disconnect() cameraConn = nil end
currentTarget = nil
end
-- Fly system
local function engageFly()
if flyConn then flyConn:Disconnect() flyConn = nil end
if not LocalPlayer.Character then return end
local humanoid = LocalPlayer.Character:FindFirstChild("Humanoid")
local rootPart = LocalPlayer.Character:FindFirstChild("HumanoidRootPart")
if not humanoid or not rootPart then return end
humanoid.PlatformStand = true
flyConn = RunService.RenderStepped:Connect(function()
if not LocalPlayer.Character or not rootPart.Parent then
humanoid.PlatformStand = false
if flyConn then flyConn:Disconnect() flyConn = nil end
return
end
local cam = Camera
local moveDir = Vector3.new(0, 0, 0)
if UserInputService:IsKeyDown(Enum.KeyCode.W) then
moveDir = moveDir + cam.CFrame.LookVector
end
if UserInputService:IsKeyDown(Enum.KeyCode.A) then
moveDir = moveDir - cam.CFrame.RightVector
end
if UserInputService:IsKeyDown(Enum.KeyCode.S) then
moveDir = moveDir - cam.CFrame.LookVector
end
if UserInputService:IsKeyDown(Enum.KeyCode.D) then
moveDir = moveDir + cam.CFrame.RightVector
end
if UserInputService:IsKeyDown(Enum.KeyCode.Space) then
moveDir = moveDir + Vector3.new(0, 1, 0)
end
if UserInputService:IsKeyDown(Enum.KeyCode.LeftControl) then
moveDir = moveDir - Vector3.new(0, 1, 0)
end
if moveDir.Magnitude > 0 then
moveDir = moveDir.Unit
end
rootPart.AssemblyLinearVelocity = moveDir * 50
end)
end
local function disengageFly()
if flyConn then flyConn:Disconnect() flyConn = nil end
if LocalPlayer.Character then
local humanoid = LocalPlayer.Character:FindFirstChild("Humanoid")
if humanoid then humanoid.PlatformStand = false end
end
end
-- GUI creation
local function makeGui()
local playerGui = LocalPlayer:WaitForChild("PlayerGui")
local existing = playerGui:FindFirstChild("RH_GUI")
if existing then existing:Destroy() end
local screen = Instance.new("ScreenGui")
screen.Name = "RH_GUI"
screen.ResetOnSpawn = false
screen.Parent = playerGui
-- Main panel - larger, more elegant
local panel = Instance.new("Frame")
panel.Name = "Panel"
panel.Size = UDim2.new(0, 500, 0, 340)
panel.Position = UDim2.new(0, 20, 0, 20)
panel.BackgroundColor3 = Color3.fromRGB(15, 15, 25)
panel.BorderSizePixel = 0
panel.Parent = screen
local panelCorner = Instance.new("UICorner")
panelCorner.CornerRadius = UDim.new(0, 20)
panelCorner.Parent = panel
local panelStroke = Instance.new("UIStroke")
panelStroke.Color = Color3.fromRGB(255, 30, 60)
panelStroke.Transparency = 0.3
panelStroke.Thickness = 3
panelStroke.Parent = panel
-- Background gradient
local bgGradient = Instance.new("UIGradient")
bgGradient.Color = ColorSequence.new({
ColorSequenceKeypoint.new(0, Color3.fromRGB(25, 10, 15)),
ColorSequenceKeypoint.new(1, Color3.fromRGB(15, 15, 30)),
})
bgGradient.Rotation = 45
bgGradient.Parent = panel
-- Title bar for dragging
local titleBar = Instance.new("Frame")
titleBar.Name = "TitleBar"
titleBar.Size = UDim2.new(1, 0, 0, 60)
titleBar.Position = UDim2.new(0, 0, 0, 0)
titleBar.BackgroundColor3 = Color3.fromRGB(20, 10, 20)
titleBar.BackgroundTransparency = 0
titleBar.BorderSizePixel = 0
titleBar.ZIndex = 3
titleBar.Parent = panel
local titleCorner = Instance.new("UICorner")
titleCorner.CornerRadius = UDim.new(0, 20)
titleCorner.Parent = titleBar
-- Title
local title = Instance.new("TextLabel")
title.Size = UDim2.new(1, -40, 1, 0)
title.Position = UDim2.new(0, 20, 0, 0)
title.BackgroundTransparency = 1
title.Text = "π©Έ CRIMSON AIMBOT+ESP"
title.Font = Enum.Font.GothamBold
title.TextSize = 24
title.TextColor3 = Color3.fromRGB(255, 50, 80)
title.TextXAlignment = Enum.TextXAlignment.Left
title.Parent = titleBar
-- Divider line
local divider1 = Instance.new("Frame")
divider1.Size = UDim2.new(1, 0, 0, 2)
divider1.Position = UDim2.new(0, 0, 0, 60)
divider1.BackgroundColor3 = Color3.fromRGB(255, 30, 60)
divider1.BorderSizePixel = 0
divider1.ZIndex = 3
divider1.Parent = panel
-- Button factory - premium style
local function makeBtn(text, pos, size, bgColor)
local btn = Instance.new("TextButton")
btn.Size = size or UDim2.new(0, 110, 0, 40)
btn.Position = pos
btn.BackgroundColor3 = bgColor
btn.TextColor3 = Color3.fromRGB(255, 255, 255)
btn.Font = Enum.Font.GothamBold
btn.TextSize = 12
btn.Text = text
btn.BorderSizePixel = 0
btn.AutoButtonColor = false
btn.ZIndex = 4
btn.Parent = panel
local btnCorner = Instance.new("UICorner")
btnCorner.CornerRadius = UDim.new(0, 10)
btnCorner.Parent = btn
local btnStroke = Instance.new("UIStroke")
btnStroke.Color = Color3.fromRGB(255, 255, 255)
btnStroke.Transparency = 0.8
btnStroke.Thickness = 1
btnStroke.Parent = btn
btn.MouseEnter:Connect(function()
btn.BackgroundColor3 = Color3.fromRGB(
math.min(bgColor.R * 255 + 50, 255) / 255,
math.min(bgColor.G * 255 + 50, 255) / 255,
math.min(bgColor.B * 255 + 50, 255) / 255
)
btnStroke.Transparency = 0.3
end)
btn.MouseLeave:Connect(function()
btn.BackgroundColor3 = bgColor
btnStroke.Transparency = 0.8
end)
return btn
end
-- Top row buttons moved into the Main tab
-- Tab buttons
local mainTabBtn = Instance.new("TextButton")
mainTabBtn.Name = "MainTab"
mainTabBtn.Size = UDim2.new(0, 120, 0, 30)
mainTabBtn.Position = UDim2.new(0, 15, 0, 40)
mainTabBtn.BackgroundColor3 = Color3.fromRGB(220, 60, 80)
mainTabBtn.TextColor3 = Color3.fromRGB(255, 255, 255)
mainTabBtn.Font = Enum.Font.GothamBold
mainTabBtn.TextSize = 11
mainTabBtn.Text = "MAIN"
mainTabBtn.BorderSizePixel = 0
mainTabBtn.AutoButtonColor = false
mainTabBtn.ZIndex = 4
mainTabBtn.Parent = panel
local miscTabBtn = Instance.new("TextButton")
miscTabBtn.Name = "MiscTab"
miscTabBtn.Size = UDim2.new(0, 120, 0, 30)
miscTabBtn.Position = UDim2.new(0, 150, 0, 40)
miscTabBtn.BackgroundColor3 = Color3.fromRGB(80, 80, 100)
miscTabBtn.TextColor3 = Color3.fromRGB(255, 255, 255)
miscTabBtn.Font = Enum.Font.GothamBold
miscTabBtn.TextSize = 11
miscTabBtn.Text = "MISC"
miscTabBtn.BorderSizePixel = 0
miscTabBtn.AutoButtonColor = false
miscTabBtn.ZIndex = 4
miscTabBtn.Parent = panel
local tabCorner1 = Instance.new("UICorner")
tabCorner1.CornerRadius = UDim.new(0, 8)
tabCorner1.Parent = mainTabBtn
local tabCorner2 = Instance.new("UICorner")
tabCorner2.CornerRadius = UDim.new(0, 8)
tabCorner2.Parent = miscTabBtn
-- Tab containers
local mainTabContainer = Instance.new("Frame")
mainTabContainer.Name = "MainTab"
mainTabContainer.Size = UDim2.new(1, -30, 0, 260)
mainTabContainer.Position = UDim2.new(0, 15, 0, 120)
mainTabContainer.BackgroundTransparency = 1
mainTabContainer.BorderSizePixel = 0
mainTabContainer.ZIndex = 3
mainTabContainer.Parent = panel
local miscTabContainer = Instance.new("Frame")
miscTabContainer.Name = "MiscTab"
miscTabContainer.Size = UDim2.new(1, -30, 0, 260)
miscTabContainer.Position = UDim2.new(0, 15, 0, 120)
miscTabContainer.BackgroundTransparency = 1
miscTabContainer.BorderSizePixel = 0
miscTabContainer.Visible = false
miscTabContainer.ZIndex = 3
miscTabContainer.Parent = panel
local currentTab = "Main"
mainTabBtn.MouseButton1Click:Connect(function()
if currentTab ~= "Main" then
currentTab = "Main"
mainTabBtn.BackgroundColor3 = Color3.fromRGB(220, 60, 80)
miscTabBtn.BackgroundColor3 = Color3.fromRGB(80, 80, 100)
mainTabContainer.Visible = true
miscTabContainer.Visible = false
end
end)
miscTabBtn.MouseButton1Click:Connect(function()
if currentTab ~= "Misc" then
currentTab = "Misc"
mainTabBtn.BackgroundColor3 = Color3.fromRGB(80, 80, 100)
miscTabBtn.BackgroundColor3 = Color3.fromRGB(220, 60, 80)
mainTabContainer.Visible = false
miscTabContainer.Visible = true
end
end)
-- FOV Section
local fovLabel = Instance.new("TextLabel")
fovLabel.Size = UDim2.new(0, 120, 0, 22)
fovLabel.Position = UDim2.new(0, 0, 0, 0)
fovLabel.BackgroundTransparency = 1
fovLabel.Text = "π FOV RADIUS"
fovLabel.Font = Enum.Font.GothamBold
fovLabel.TextSize = 13
fovLabel.TextColor3 = Color3.fromRGB(255, 200, 100)
fovLabel.TextXAlignment = Enum.TextXAlignment.Left
fovLabel.ZIndex = 4
fovLabel.Parent = mainTabContainer
local fovValue = Instance.new("TextLabel")
fovValue.Size = UDim2.new(0, 60, 0, 22)
fovValue.Position = UDim2.new(0, 380, 0, 0)
fovValue.BackgroundTransparency = 1
fovValue.Text = aimbotFov .. "Β°"
fovValue.Font = Enum.Font.GothamBold
fovValue.TextSize = 15
fovValue.TextColor3 = Color3.fromRGB(255, 100, 100)
fovValue.TextXAlignment = Enum.TextXAlignment.Right
fovValue.ZIndex = 4
fovValue.Parent = mainTabContainer
-- FOV slider background
local fovSliderBg = Instance.new("Frame")
fovSliderBg.Size = UDim2.new(1, 0, 0, 8)
fovSliderBg.Position = UDim2.new(0, 0, 0, 30)
fovSliderBg.BackgroundColor3 = Color3.fromRGB(40, 40, 50)
fovSliderBg.BorderSizePixel = 0
fovSliderBg.ZIndex = 4
fovSliderBg.Parent = mainTabContainer
local fovSliderBgCorner = Instance.new("UICorner")
fovSliderBgCorner.CornerRadius = UDim.new(0, 4)
fovSliderBgCorner.Parent = fovSliderBg
local fovFill = Instance.new("Frame")
fovFill.Size = UDim2.new((aimbotFov - 10) / 150, 0, 1, 0)
fovFill.Position = UDim2.new(0, 0, 0, 0)
fovFill.BackgroundColor3 = Color3.fromRGB(255, 100, 100)
fovFill.BorderSizePixel = 0
fovFill.ZIndex = 5
fovFill.Parent = fovSliderBg
local fovFillCorner = Instance.new("UICorner")
fovFillCorner.CornerRadius = UDim.new(0, 4)
fovFillCorner.Parent = fovFill
-- Smoothness Section
local smLabel = Instance.new("TextLabel")
smLabel.Size = UDim2.new(0, 150, 0, 22)
smLabel.Position = UDim2.new(0, 0, 0, 60)
smLabel.BackgroundTransparency = 1
smLabel.Text = "β AIM SMOOTHNESS"
smLabel.Font = Enum.Font.GothamBold
smLabel.TextSize = 13
smLabel.TextColor3 = Color3.fromRGB(255, 200, 100)
smLabel.TextXAlignment = Enum.TextXAlignment.Left
smLabel.ZIndex = 4
smLabel.Parent = mainTabContainer
local smValue = Instance.new("TextLabel")
smValue.Size = UDim2.new(0, 60, 0, 22)
smValue.Position = UDim2.new(0, 380, 0, 60)
smValue.BackgroundTransparency = 1
smValue.Text = smoothness
smValue.Font = Enum.Font.GothamBold
smValue.TextSize = 15
smValue.TextColor3 = Color3.fromRGB(100, 180, 255)
smValue.TextXAlignment = Enum.TextXAlignment.Right
smValue.ZIndex = 4
smValue.Parent = mainTabContainer
-- Smoothness slider background
local smSliderBg = Instance.new("Frame")
smSliderBg.Size = UDim2.new(1, 0, 0, 8)
smSliderBg.Position = UDim2.new(0, 0, 0, 90)
smSliderBg.BackgroundColor3 = Color3.fromRGB(40, 40, 50)
smSliderBg.BorderSizePixel = 0
smSliderBg.ZIndex = 4
smSliderBg.Parent = mainTabContainer
local smSliderBgCorner = Instance.new("UICorner")
smSliderBgCorner.CornerRadius = UDim.new(0, 4)
smSliderBgCorner.Parent = smSliderBg
local smFill = Instance.new("Frame")
smFill.Size = UDim2.new(smoothness / 100, 0, 1, 0)
smFill.Position = UDim2.new(0, 0, 0, 0)
smFill.BackgroundColor3 = Color3.fromRGB(100, 180, 255)
smFill.BorderSizePixel = 0
smFill.ZIndex = 5
smFill.Parent = smSliderBg
local smFillCorner = Instance.new("UICorner")
smFillCorner.CornerRadius = UDim.new(0, 4)
smFillCorner.Parent = smFill
-- Top row - Toggle buttons (for Main tab)
local espBtn = makeBtn("π ESP", UDim2.new(0, 0, 0, 130), UDim2.new(0, 110, 0, 40), Color3.fromRGB(220, 60, 80))
espBtn.Parent = mainTabContainer
local aimBtn = makeBtn("π― AIMBOT", UDim2.new(0, 120, 0, 130), UDim2.new(0, 110, 0, 40), Color3.fromRGB(60, 100, 160))
aimBtn.Parent = mainTabContainer
local partBtn = makeBtn("π€ HEAD", UDim2.new(0, 240, 0, 130), UDim2.new(0, 110, 0, 40), Color3.fromRGB(100, 150, 80))
partBtn.Parent = mainTabContainer
local filterBtn = makeBtn("π‘ ALL", UDim2.new(0, 360, 0, 130), UDim2.new(0, 100, 0, 40), Color3.fromRGB(160, 120, 60))
filterBtn.Parent = mainTabContainer
-- Trigger bot button
local triggerBtn = makeBtn("β‘ TRIGGER", UDim2.new(0, 360, 0, 180), UDim2.new(0, 100, 0, 40), Color3.fromRGB(200, 60, 140))
triggerBtn.Parent = mainTabContainer
-- Misc tab content
local wsLabel = Instance.new("TextLabel")
wsLabel.Size = UDim2.new(0, 150, 0, 22)
wsLabel.Position = UDim2.new(0, 0, 0, 10)
wsLabel.BackgroundTransparency = 1
wsLabel.Text = "π WALKSPEED"
wsLabel.Font = Enum.Font.GothamBold
wsLabel.TextSize = 13
wsLabel.TextColor3 = Color3.fromRGB(255, 200, 100)
wsLabel.TextXAlignment = Enum.TextXAlignment.Left
wsLabel.ZIndex = 4
wsLabel.Parent = miscTabContainer
local wsValue = Instance.new("TextLabel")
wsValue.Size = UDim2.new(0, 60, 0, 22)
wsValue.Position = UDim2.new(0, 380, 0, 10)
wsValue.BackgroundTransparency = 1
wsValue.Text = walkSpeed
wsValue.Font = Enum.Font.GothamBold
wsValue.TextSize = 15
wsValue.TextColor3 = Color3.fromRGB(100, 220, 150)
wsValue.TextXAlignment = Enum.TextXAlignment.Right
wsValue.ZIndex = 4
wsValue.Parent = miscTabContainer
-- Walkspeed slider
local wsSliderBg = Instance.new("Frame")
wsSliderBg.Size = UDim2.new(1, 0, 0, 8)
wsSliderBg.Position = UDim2.new(0, 0, 0, 40)
wsSliderBg.BackgroundColor3 = Color3.fromRGB(40, 40, 50)
wsSliderBg.BorderSizePixel = 0
wsSliderBg.ZIndex = 4
wsSliderBg.Parent = miscTabContainer
local wsSliderCorner = Instance.new("UICorner")
wsSliderCorner.CornerRadius = UDim.new(0, 4)
wsSliderCorner.Parent = wsSliderBg
local wsFill = Instance.new("Frame")
wsFill.Size = UDim2.new((walkSpeed - 5) / 95, 0, 1, 0)
wsFill.Position = UDim2.new(0, 0, 0, 0)
wsFill.BackgroundColor3 = Color3.fromRGB(100, 220, 150)
wsFill.BorderSizePixel = 0
wsFill.ZIndex = 5
wsFill.Parent = wsSliderBg
local wsFillCorner = Instance.new("UICorner")
wsFillCorner.CornerRadius = UDim.new(0, 4)
wsFillCorner.Parent = wsFill
-- Fly button
local flyBtn = makeBtn("πΈ FLY", UDim2.new(0, 0, 0, 80), UDim2.new(0, 150, 0, 40), Color3.fromRGB(100, 150, 200))
flyBtn.Parent = miscTabContainer
-- Infinite Jump toggle
local jumpBtn = makeBtn("βΎοΈ INF JUMP", UDim2.new(0, 170, 0, 80), UDim2.new(0, 150, 0, 40), Color3.fromRGB(180, 100, 150))
jumpBtn.Parent = miscTabContainer
-- FOV Section (moved below to original location)
-- Status bar
local statusBg = Instance.new("Frame")
statusBg.Size = UDim2.new(1, -30, 0, 35)
statusBg.Position = UDim2.new(0, 15, 0, 270)
statusBg.BackgroundColor3 = Color3.fromRGB(30, 40, 50)
statusBg.BackgroundTransparency = 0.3
statusBg.BorderSizePixel = 0
statusBg.ZIndex = 4
statusBg.Parent = panel
local statusCorner = Instance.new("UICorner")
statusCorner.CornerRadius = UDim.new(0, 10)
statusCorner.Parent = statusBg
local statusLabel = Instance.new("TextLabel")
statusLabel.Size = UDim2.new(1, -20, 1, 0)
statusLabel.Position = UDim2.new(0, 10, 0, 0)
statusLabel.BackgroundTransparency = 1
statusLabel.Text = "π¬ Right Click + Hold to aim"
statusLabel.Font = Enum.Font.Gotham
statusLabel.TextSize = 12
statusLabel.TextColor3 = Color3.fromRGB(180, 220, 255)
statusLabel.TextXAlignment = Enum.TextXAlignment.Left
statusLabel.ZIndex = 5
statusLabel.Parent = statusBg
-- FOV circle
local fovCircle = Instance.new("Frame")
fovCircle.Name = "FOVCircle"
fovCircle.Size = UDim2.new(0, 200, 0, 200)
fovCircle.AnchorPoint = Vector2.new(0.5, 0.5)
fovCircle.Position = UDim2.new(0.5, 0, 0.5, 0)
fovCircle.BackgroundTransparency = 1
fovCircle.BorderSizePixel = 0
fovCircle.Parent = screen
local fovCorner = Instance.new("UICorner")
fovCorner.CornerRadius = UDim.new(1, 0)
fovCorner.Parent = fovCircle
local fovStroke = Instance.new("UIStroke")
fovStroke.Color = Color3.fromRGB(255, 100, 100)
fovStroke.Thickness = 2
fovStroke.Transparency = 0.6
fovStroke.Parent = fovCircle
-- Drag functionality
local dragging = false
local dragStart = nil
local panelStart = nil
local panelMinimized = false
local originalPosition = panel.Position
titleBar.InputBegan:Connect(function(input, gpe)
if gpe then return end
if input.UserInputType == Enum.UserInputType.MouseButton1 then
dragging = true
dragStart = game.Players.LocalPlayer:GetMouse().X
panelStart = panel.Position.X.Offset
end
end)
UserInputService.InputEnded:Connect(function(input, gpe)
if input.UserInputType == Enum.UserInputType.MouseButton1 then
dragging = false
end
end)
RunService.RenderStepped:Connect(function()
if dragging and dragStart then
local mouse = game.Players.LocalPlayer:GetMouse()
local delta = mouse.X - dragStart
panel.Position = UDim2.new(0, panelStart + delta, panel.Position.Y.Scale, panel.Position.Y.Offset)
end
end)
-- Button connections
espBtn.MouseButton1Click:Connect(function()
espEnabled = not espEnabled
espBtn.Text = espEnabled and "π ESP" or "π OFF"
refreshAllESP()
end)
aimBtn.MouseButton1Click:Connect(function()
aimbotEnabled = not aimbotEnabled
aimBtn.Text = aimbotEnabled and "π― AIMBOT" or "π― OFF"
if not aimbotEnabled then disengageAimbot() end
end)
partBtn.MouseButton1Click:Connect(function()
if aimPart == "Head" then
aimPart = "HumanoidRootPart"
partBtn.Text = "π€ BODY"
else
aimPart = "Head"
partBtn.Text = "π€ HEAD"
end
end)
local filterModes = { "All", "Team", "Friends", "Enemies" }
local filterIndex = 1
filterBtn.MouseButton1Click:Connect(function()
filterIndex = filterIndex % #filterModes + 1
filterMode = filterModes[filterIndex]
filterBtn.Text = "π‘ " .. filterMode:upper()
refreshAllESP()
end)
-- Trigger bot toggle
triggerBtn.MouseButton1Click:Connect(function()
triggerBotEnabled = not triggerBotEnabled
triggerBtn.Text = triggerBotEnabled and "β‘ ON" or "β‘ TRIGGER"
end)
-- FOV slider
fovSliderBg.InputBegan:Connect(function(input, gpe)
if gpe then return end
if input.UserInputType == Enum.UserInputType.MouseButton1 then
local connection
connection = RunService.RenderStepped:Connect(function()
local mouse = game.Players.LocalPlayer:GetMouse()
local relX = mouse.X - fovSliderBg.AbsolutePosition.X
local pct = math.clamp(relX / fovSliderBg.AbsoluteSize.X, 0, 1)
aimbotFov = math.floor(10 + pct * 150)
fovValue.Text = aimbotFov .. "Β°"
fovFill.Size = UDim2.new((aimbotFov - 10) / 150, 0, 1, 0)
local radius = math.clamp((aimbotFov/120) * math.min(Camera.ViewportSize.X, Camera.ViewportSize.Y) * 0.35, 40, 800)
fovCircle.Size = UDim2.new(0, radius*2, 0, radius*2)
end)
UserInputService.InputEnded:Connect(function(input2, gpe2)
if input2.UserInputType == Enum.UserInputType.MouseButton1 then
connection:Disconnect()
end
end)
end
end)
-- Smoothness slider
smSliderBg.InputBegan:Connect(function(input, gpe)
if gpe then return end
if input.UserInputType == Enum.UserInputType.MouseButton1 then
local connection
connection = RunService.RenderStepped:Connect(function()
local mouse = game.Players.LocalPlayer:GetMouse()
local relX = mouse.X - smSliderBg.AbsolutePosition.X
local pct = math.clamp(relX / smSliderBg.AbsoluteSize.X, 0, 1)
smoothness = math.floor(pct * 100)
smValue.Text = smoothness
smFill.Size = UDim2.new(smoothness / 100, 0, 1, 0)
end)
UserInputService.InputEnded:Connect(function(input2, gpe2)
if input2.UserInputType == Enum.UserInputType.MouseButton1 then
connection:Disconnect()
end
end)
end
end)
-- Walkspeed slider
wsSliderBg.InputBegan:Connect(function(input, gpe)
if gpe then return end
if input.UserInputType == Enum.UserInputType.MouseButton1 then
local connection
connection = RunService.RenderStepped:Connect(function()
local mouse = game.Players.LocalPlayer:GetMouse()
local relX = mouse.X - wsSliderBg.AbsolutePosition.X
local pct = math.clamp(relX / wsSliderBg.AbsoluteSize.X, 0, 1)
walkSpeed = math.floor(5 + pct * 95)
wsValue.Text = walkSpeed
wsFill.Size = UDim2.new((walkSpeed - 5) / 95, 0, 1, 0)
if LocalPlayer.Character then
local humanoid = LocalPlayer.Character:FindFirstChild("Humanoid")
if humanoid then
humanoid.WalkSpeed = walkSpeed
end
end
end)
UserInputService.InputEnded:Connect(function(input2, gpe2)
if input2.UserInputType == Enum.UserInputType.MouseButton1 then
connection:Disconnect()
end
end)
end
end)
-- Fly button
flyBtn.MouseButton1Click:Connect(function()
flyEnabled = not flyEnabled
flyBtn.Text = flyEnabled and "πΈ ON" or "πΈ FLY"
if flyEnabled then
engageFly()
else
disengageFly()
end
end)
-- Infinite jump
jumpBtn.MouseButton1Click:Connect(function()
infiniteJumpEnabled = not infiniteJumpEnabled
jumpBtn.Text = infiniteJumpEnabled and "βΎοΈ ON" or "βΎοΈ INF JUMP"
end)
-- K key to minimize (move off-screen)
UserInputService.InputBegan:Connect(function(input, processed)
if processed then return end
if input.KeyCode == Enum.KeyCode.K then
panelMinimized = not panelMinimized
if panelMinimized then
panel.Position = UDim2.new(0, -550, 0, 20)
else
panel.Position = originalPosition
end
end
end)
-- Right mouse hold
UserInputService.InputBegan:Connect(function(input, processed)
if processed then return end
if input.UserInputType == Enum.UserInputType.MouseButton2 then
if aimbotEnabled then
aimbotActive = true
currentTarget = findBestTarget()
if currentTarget then engageAimbot(currentTarget) end
end
end
end)
UserInputService.InputEnded:Connect(function(input, processed)
if input.UserInputType == Enum.UserInputType.MouseButton2 then
aimbotActive = false
disengageAimbot()
end
end)
-- Update loop
RunService.Heartbeat:Connect(function()
fovCircle.Position = UDim2.new(0.5, 0, 0.5, 0)
local radius = math.clamp((aimbotFov/120) * math.min(Camera.ViewportSize.X, Camera.ViewportSize.Y) * 0.35, 40, 800)
fovCircle.Size = UDim2.new(0, radius*2, 0, radius*2)
if aimbotActive and aimbotEnabled and (not currentTarget or not currentTarget.Character) then
local best = findBestTarget()
if best then
currentTarget = best
engageAimbot(best)
end
end
-- Trigger bot (non-aimbot): find target and attempt to fire when aligned
if triggerBotEnabled and (not aimbotActive or not aimbotEnabled) then
local best = findBestTarget()
if best and best.Character then
local aim = getAimPart(best)
if aim then
local camPos = Camera.CFrame.Position
local dist = (aim.Position - camPos).Magnitude
local ang = angleToCamera(aim.Position)
if dist <= MAX_LOCK_DIST and ang <= math.rad(aimbotFov/2) then
local myChar = LocalPlayer.Character
if myChar then
local tool = myChar:FindFirstChildOfClass("Tool")
if tool and tool.Parent == myChar then
pcall(function() tool:Activate() end)
end
end
end
end
end
end
end)
return screen
end
-- Initialization
makeGui()
refreshAllESP()
-- Player connections
Players.PlayerAdded:Connect(function(p)
if p ~= LocalPlayer then
p.CharacterAdded:Connect(function()
wait(0.1)
if espEnabled and passesFilter(p) then createESPFor(p) end
end)
end
end)
Players.PlayerRemoving:Connect(function(p)
removeESPFor(p)
end)
LocalPlayer.CharacterAdded:Connect(function()
disengageAimbot()
refreshAllESP()
disengageFly()
-- Set walkspeed
local humanoid = LocalPlayer.Character:FindFirstChild("Humanoid")
if humanoid then
humanoid.WalkSpeed = walkSpeed
end
-- Handle infinite jump
if infiniteJumpEnabled then
local humanoid = LocalPlayer.Character:FindFirstChild("Humanoid")
if humanoid then
humanoid.Jumping:Connect(function()
if infiniteJumpEnabled then
humanoid:ChangeState(Enum.HumanoidStateType.Landed)
end
end)
end
end
end)
-- Infinite jump input handler
UserInputService.InputBegan:Connect(function(input, processed)
if processed then return end
if infiniteJumpEnabled and input.KeyCode == Enum.KeyCode.Space then
local humanoid = LocalPlayer.Character and LocalPlayer.Character:FindFirstChild("Humanoid")
if humanoid then
humanoid:ChangeState(Enum.HumanoidStateType.Jumping)
end
end
end)
print("β
RedHighlighter loaded - FOV is for aimbot detection, camera stays free")



aimbot thinks yourself is an enemie to point at pls correct it
gui or wtv isnt even opening on mobile
its so ahh i can t close menu and esp and aim its trash
@mykpat k closes the gui buddy and the esp and and aimbot are working for me tf do you mean?
@billy1 nah it works for me idk what your talking about maybe the game your playing is the one doing that?
made with cahtgpt ahh
chatgpt kiddo