-- 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")