-- XploitHub.lua -- merged ESP + Aimbot with XPLOIT-style clean UI -- ESP: Boxes / Tracers / Names / Distance / Health / Chams (Highlight) -- Aim: hold-RMB camera lock with FOV + silent-aim helper for YOUR OWN tools -- Use only in your own games / Studio testing. Live exploiting = ban. -- Execute: copy entire file into executor -> Execute local Players = game:GetService("Players") local RunService = game:GetService("RunService") local Workspace = game:GetService("Workspace") local UserInputService = game:GetService("UserInputService") local LocalPlayer = Players.LocalPlayer assert(LocalPlayer, "[XPLOIT] No LocalPlayer - run as client") local Camera = Workspace.CurrentCamera local Settings = { -- ESP ESPEnabled = true, Boxes = true, Tracers = false, Names = true, Distance = true, HealthBar = true, HealthText = false, Chams = true, -- Aim AimbotEnabled = false, -- hold RMB to lock SilentAimEnabled = false, ShowFOV = true, WallCheck = true, -- Shared TeamCheck = true, ShowTeamColors = true, FOV = 120, Smoothing = 8, TargetPart = "Head", -- Head | HumanoidRootPart | Closest Prediction = 0, -- 0 .. 0.30 SilentHitChance = 100, MaxDistance = 2000, -- 0 = infinite AimKey = Enum.UserInputType.MouseButton2, BoxColor = Color3.fromRGB(255, 50, 50), FriendlyColor = Color3.fromRGB(50, 255, 100), } local hasDrawing = typeof(Drawing) == "table" and typeof(Drawing.new) == "function" local RED = Color3.fromRGB(220, 45, 55) local BG = Color3.fromRGB(15, 15, 20) local PANEL = Color3.fromRGB(24, 24, 32) local DIM = Color3.fromRGB(175, 175, 190) local BRIGHT = Color3.fromRGB(235, 235, 245) --// parent local function getParent() local ok, h = pcall(function() if typeof(gethui) == "function" then return gethui() end if typeof(get_hidden_gui) == "function" then return get_hidden_gui() end return nil end) if ok and h then return h end return LocalPlayer:WaitForChild("PlayerGui", 10) end local Parent = getParent() assert(Parent, "[XPLOIT] no parent GUI found") pcall(function() Parent:FindFirstChild("XploitHub"):Destroy() end) local function new(class, props, parent) local o = Instance.new(class) for k, v in pairs(props or {}) do pcall(function() o[k] = v end) end o.Parent = parent return o end local gui = new("ScreenGui", { Name = "XploitHub", ResetOnSpawn = false, IgnoreGuiInset = true, DisplayOrder = 999, ZIndexBehavior = Enum.ZIndexBehavior.Sibling, }, Parent) if typeof(protect_gui) == "function" then pcall(protect_gui, gui) end --// main window (XPLOIT look: dark, red title, 2 columns) local main = new("Frame", { Name = "Main", Size = UDim2.fromOffset(440, 430), Position = UDim2.new(0.5, -220, 0.5, -215), BackgroundColor3 = BG, Active = true, }, gui) new("UICorner", { CornerRadius = UDim.new(0, 8) }, main) new("UIStroke", { Thickness = 1, Color = Color3.fromRGB(60, 20, 25), Transparency = 0.1 }, main) local titleBar = new("Frame", { Size = UDim2.new(1, 0, 0, 34), BackgroundTransparency = 1, }, main) local title = new("TextLabel", { Size = UDim2.fromScale(1, 1), BackgroundTransparency = 1, Text = "XPLOIT", Font = Enum.Font.GothamBlack, TextSize = 15, TextColor3 = RED, }, titleBar) new("Frame", { -- red divider under title Size = UDim2.new(1, -24, 0, 1), Position = UDim2.fromOffset(12, 33), BackgroundColor3 = RED, BorderSizePixel = 0, BackgroundTransparency = 0.35, }, titleBar) local minBtn = new("TextButton", { Size = UDim2.fromOffset(26, 22), Position = UDim2.new(1, -32, 0, 6), BackgroundColor3 = PANEL, Text = "-", Font = Enum.Font.GothamBold, TextSize = 14, TextColor3 = BRIGHT, AutoButtonColor = true, }, titleBar) new("UICorner", { CornerRadius = UDim.new(0, 6) }, minBtn) local cols = new("Frame", { Size = UDim2.new(1, -24, 1, -88), Position = UDim2.fromOffset(12, 40), BackgroundTransparency = 1, }, main) local left = new("ScrollingFrame", { Size = UDim2.fromScale(0.5, 1), BackgroundTransparency = 1, ScrollBarThickness = 3, AutomaticCanvasSize = Enum.AutomaticSize.Y, CanvasSize = UDim2.fromScale(0, 0), }, cols) new("UIListLayout", { Padding = UDim.new(0, 6), SortOrder = Enum.SortOrder.LayoutOrder }, left) new("UIPadding", { PaddingRight = UDim.new(0, 6) }, left) local right = new("ScrollingFrame", { Size = UDim2.fromScale(0.5, 1), Position = UDim2.fromScale(0.5, 0), BackgroundTransparency = 1, ScrollBarThickness = 3, AutomaticCanvasSize = Enum.AutomaticSize.Y, CanvasSize = UDim2.fromScale(0, 0), }, cols) new("UIListLayout", { Padding = UDim.new(0, 6), SortOrder = Enum.SortOrder.LayoutOrder }, right) new("UIPadding", { PaddingLeft = UDim.new(0, 6) }, right) local footer = new("Frame", { Size = UDim2.new(1, -24, 0, 40), Position = UDim2.new(0, 12, 1, -46), BackgroundTransparency = 1, }, main) local unloadBtn = new("TextButton", { Size = UDim2.fromScale(1, 0.62), BackgroundColor3 = Color3.fromRGB(90, 25, 30), Text = "Unload", Font = Enum.Font.GothamBold, TextSize = 12, TextColor3 = BRIGHT, AutoButtonColor = true, }, footer) new("UICorner", { CornerRadius = UDim.new(0, 6) }, unloadBtn) local hint = new("TextLabel", { Size = UDim2.new(1, 0, 0, 14), Position = UDim2.fromScale(0, 0.66), BackgroundTransparency = 1, Text = "RightShift: UI | RMB hold: aim | Q: silent | Del: unload", Font = Enum.Font.Gotham, TextSize = 10, TextColor3 = DIM, }, footer) --// builders (match screenshot: red section header, dot toggles, - value + steppers) local function section(parent, text) local s = new("TextLabel", { Size = UDim2.new(1, 0, 0, 18), BackgroundTransparency = 1, Text = text, Font = Enum.Font.GothamBold, TextSize = 11, TextXAlignment = Enum.TextXAlignment.Left, TextColor3 = RED, }, parent) new("Frame", { Size = UDim2.new(1, 0, 0, 1), Position = UDim2.fromScale(0, 1), BackgroundColor3 = RED, BorderSizePixel = 0, BackgroundTransparency = 0.6, }, s) return s end local function refreshToggle(btn, dot, label, on) btn.Text = " • " .. label dot.BackgroundColor3 = on and RED or Color3.fromRGB(70, 70, 85) end local function toggle(parent, label, key) local b = new("TextButton", { Size = UDim2.new(1, 0, 0, 20), BackgroundColor3 = PANEL, Font = Enum.Font.Gotham, TextSize = 11, TextXAlignment = Enum.TextXAlignment.Left, TextColor3 = BRIGHT, AutoButtonColor = true, }, parent) new("UICorner", { CornerRadius = UDim.new(0, 6) }, b) local dot = new("Frame", { Size = UDim2.fromOffset(7, 7), Position = UDim2.new(1, -16, 0.5, -3), BackgroundColor3 = Color3.fromRGB(70, 70, 85), BorderSizePixel = 0, }, b) new("UICorner", { CornerRadius = UDim.new(1, 0) }, dot) refreshToggle(b, dot, label, Settings[key]) b.MouseButton1Click:Connect(function() Settings[key] = not Settings[key] refreshToggle(b, dot, label, Settings[key]) end) return b end local function slider(parent, label, key, smin, smax, step, fmt) fmt = fmt or function(v) return tostring(v) end local row = new("Frame", { Size = UDim2.new(1, 0, 0, 20), BackgroundColor3 = PANEL, }, parent) new("UICorner", { CornerRadius = UDim.new(0, 6) }, row) new("TextLabel", { Size = UDim2.new(0.52, 0, 1, 0), Position = UDim2.fromOffset(8, 0), BackgroundTransparency = 1, Text = " • " .. label, Font = Enum.Font.Gotham, TextSize = 11, TextXAlignment = Enum.TextXAlignment.Left, TextColor3 = BRIGHT, }, row) local minus = new("TextButton", { Size = UDim2.new(0, 20, 0, 16), Position = UDim2.new(1, -64, 0.5, -8), BackgroundColor3 = Color3.fromRGB(40, 40, 52), Text = "-", Font = Enum.Font.GothamBold, TextSize = 12, TextColor3 = BRIGHT, AutoButtonColor = true, }, row) new("UICorner", { CornerRadius = UDim.new(0, 4) }, minus) local val = new("TextLabel", { Size = UDim2.new(0, 26, 0, 16), Position = UDim2.new(1, -42, 0.5, -8), BackgroundTransparency = 1, Text = fmt(Settings[key]), Font = Enum.Font.GothamBold, TextSize = 11, TextColor3 = RED, }, row) local plus = new("TextButton", { Size = UDim2.new(0, 20, 0, 16), Position = UDim2.new(1, -22, 0.5, -8), BackgroundColor3 = Color3.fromRGB(40, 40, 52), Text = "+", Font = Enum.Font.GothamBold, TextSize = 12, TextColor3 = BRIGHT, AutoButtonColor = true, }, row) new("UICorner", { CornerRadius = UDim.new(0, 4) }, plus) local function set(v) v = math.clamp(math.floor(v / step + 0.5) * step, smin, smax) -- Prediction uses decimals, don't snap harshly if step < 1 then v = math.clamp(v, smin, smax) end Settings[key] = v val.Text = fmt(v) end minus.MouseButton1Click:Connect(function() set(Settings[key] - step) end) plus.MouseButton1Click:Connect(function() set(Settings[key] + step) end) return row end local function cycle(parent, label, key, options) local b = new("TextButton", { Size = UDim2.new(1, 0, 0, 20), BackgroundColor3 = PANEL, Font = Enum.Font.Gotham, TextSize = 11, TextXAlignment = Enum.TextXAlignment.Left, TextColor3 = BRIGHT, AutoButtonColor = true, }, parent) new("UICorner", { CornerRadius = UDim.new(0, 6) }, b) local function paint() b.Text = " • " .. label .. ": " .. tostring(Settings[key]) end paint() b.MouseButton1Click:Connect(function() local idx = 1 for i, o in ipairs(options) do if o == Settings[key] then idx = i break end end Settings[key] = options[(idx % #options) + 1] paint() end) return b end -- LEFT column (like screenshot left side) section(left, "ESP") toggle(left, "Enabled", "ESPEnabled") toggle(left, "Boxes", "Boxes") toggle(left, "Tracers", "Tracers") toggle(left, "Names", "Names") toggle(left, "Distance", "Distance") toggle(left, "Health bar", "HealthBar") toggle(left, "Health text", "HealthText") toggle(left, "Chams", "Chams") section(left, "AIM") toggle(left, "Aimbot (hold RMB)", "AimbotEnabled") toggle(left, "Silent aim", "SilentAimEnabled") toggle(left, "Show FOV", "ShowFOV") toggle(left, "Wall check", "WallCheck") -- RIGHT column (like screenshot right side) section(right, "AIM TUNE") slider(right, "FOV", "FOV", 30, 400, 5, function(v) return tostring(math.floor(v)) end) slider(right, "Smooth", "Smoothing", 1, 20, 1, function(v) return tostring(math.floor(v)) end) cycle(right, "Bone", "TargetPart", { "Head", "HumanoidRootPart", "Closest" }) slider(right, "Predict", "Prediction", 0, 0.3, 0.01, function(v) return string.format("%.2f", v) end) slider(right, "Hit %", "SilentHitChance", 1, 100, 1, function(v) return tostring(math.floor(v)) end) section(right, "SETTINGS") toggle(right, "Team check", "TeamCheck") toggle(right, "Team colors", "ShowTeamColors") slider(right, "Max dist", "MaxDistance", 0, 5000, 100, function(v) if v == 0 then return "inf" end return tostring(math.floor(v)) end) --// shared targeting logic local function isFriendly(p) if not Settings.TeamCheck then return false end local ok, r = pcall(function() return LocalPlayer.Team ~= nil and p.Team ~= nil and LocalPlayer.Team == p.Team end) return ok and r == true end local function espColor(p) if Settings.ShowTeamColors then local ok, c = pcall(function() return p.TeamColor.Color end) if ok and c then return c end end if isFriendly(p) then return Settings.FriendlyColor end return Settings.BoxColor end local function wallClear(targetPos, targetChar) if not Settings.WallCheck then return true end local origin = Camera.CFrame.Position local params = RaycastParams.new() params.FilterType = Enum.RaycastFilterType.Exclude params.FilterDescendantsInstances = { LocalPlayer.Character, targetChar } params.IgnoreWater = true return Workspace:Raycast(origin, targetPos - origin, params) == nil end local function getTargetPart(char) if Settings.TargetPart == "Head" then return char:FindFirstChild("Head") end if Settings.TargetPart == "HumanoidRootPart" then return char:FindFirstChild("HumanoidRootPart") end local head = char:FindFirstChild("Head") local hrp = char:FindFirstChild("HumanoidRootPart") if head and hrp then local m = UserInputService:GetMouseLocation() local hp = Camera:WorldToViewportPoint(head.Position) local rp = Camera:WorldToViewportPoint(hrp.Position) local hd = (Vector2.new(hp.X, hp.Y) - m).Magnitude local rd = (Vector2.new(rp.X, rp.Y) - m).Magnitude if hd < rd then return head else return hrp end end return head or hrp end local function distToLocal(hrp) local my = LocalPlayer.Character and LocalPlayer.Character:FindFirstChild("HumanoidRootPart") if not my then return 0 end return (hrp.Position - my.Position).Magnitude end local function closestTarget() Camera = Workspace.CurrentCamera if not Camera then return nil, nil end local mouse = UserInputService:GetMouseLocation() local best, bestD, bestPos = nil, Settings.FOV, nil for _, p in ipairs(Players:GetPlayers()) do if p == LocalPlayer or isFriendly(p) then continue end local char = p.Character local hum = char and char:FindFirstChildOfClass("Humanoid") if not hum or hum.Health <= 0 then continue end local part = getTargetPart(char) if not part then continue end local aimPos = part.Position if Settings.Prediction > 0 then local ok, vel = pcall(function() return part.AssemblyLinearVelocity end) if ok and vel then aimPos = aimPos + vel * Settings.Prediction end end local hrp = char:FindFirstChild("HumanoidRootPart") if hrp and Settings.MaxDistance > 0 and distToLocal(hrp) > Settings.MaxDistance then continue end local sp, onScreen = Camera:WorldToViewportPoint(aimPos) if not onScreen then continue end local d = (Vector2.new(sp.X, sp.Y) - mouse).Magnitude if d < bestD and wallClear(aimPos, char) then best, bestD, bestPos = p, d, aimPos end end return best, bestPos end local function silentShouldHit() return math.random(1, 100) <= Settings.SilentHitChance end -- expose for YOUR OWN tool scripts (silent aim done right: redirect your own ray): -- local g = getgenv() -- local target, pos = g.XploitClosestTarget() -- if target and pos and g.XploitSilentFire() then -- dir = (pos - origin).Unit * 1000 -- else -- dir = (mouse.Hit.Position - origin).Unit * 1000 -- end pcall(function() local g = getgenv and getgenv() or nil if g then g.XploitClosestTarget = closestTarget g.XploitSilentFire = function() return Settings.SilentAimEnabled and silentShouldHit() end g.XploitSettings = Settings end end) --// ESP objects local espObjects = {} local function hideDrawings(e) if e.drawings then for _, d in pairs(e.drawings) do pcall(function() d.Visible = false end) end end if e.fov then pcall(function() e.fov.Visible = false end) end end local function clearPlayer(p) local e = espObjects[p] if not e then return end pcall(function() e.highlight:Destroy() end) pcall(function() e.billboard:Destroy() end) hideDrawings(e) if e.drawings then for _, d in pairs(e.drawings) do pcall(function() d:Remove() end) end end espObjects[p] = nil end local function setupPlayer(player) if player == LocalPlayer then return end if espObjects[player] then clearPlayer(player) end local e = { drawings = {} } local hl = Instance.new("Highlight") hl.Name = "X_ESP" hl.FillTransparency = 0.6 hl.OutlineTransparency = 0 hl.Parent = gui e.highlight = hl local bb = Instance.new("BillboardGui") bb.Name = "X_Name" bb.Size = UDim2.fromOffset(200, 40) bb.StudsOffset = Vector3.new(0, 2.8, 0) bb.AlwaysOnTop = true bb.MaxDistance = math.huge bb.Parent = gui local nl = Instance.new("TextLabel") nl.Size = UDim2.fromScale(1, 1) nl.BackgroundTransparency = 1 nl.Font = Enum.Font.GothamBold nl.TextSize = 13 nl.TextStrokeTransparency = 0 nl.Parent = bb e.billboard = bb e.nameLabel = nl if hasDrawing then local box = Drawing.new("Square") box.Thickness = 1 box.Filled = false box.Visible = false box.ZIndex = 2 local tr = Drawing.new("Line") tr.Thickness = 1 tr.Visible = false tr.ZIndex = 1 local back = Drawing.new("Square") back.Filled = true back.Visible = false back.ZIndex = 1 local bar = Drawing.new("Square") bar.Filled = true bar.Visible = false bar.ZIndex = 2 e.drawings = { box = box, tracer = tr, hpBack = back, hpBar = bar } end espObjects[player] = e local function bind(char) local hum = char:WaitForChild("Humanoid", 5) local hrp = char:WaitForChild("HumanoidRootPart", 5) local head = char:WaitForChild("Head", 5) if hum and hrp then e.highlight.Adornee = char e.billboard.Adornee = head or hrp end end if player.Character then task.spawn(bind, player.Character) end player.CharacterAdded:Connect(function(c) task.spawn(bind, c) end) end for _, p in ipairs(Players:GetPlayers()) do pcall(setupPlayer, p) end Players.PlayerAdded:Connect(setupPlayer) Players.PlayerRemoving:Connect(clearPlayer) -- FOV ring local fovCircle if hasDrawing then fovCircle = Drawing.new("Circle") fovCircle.Thickness = 1 fovCircle.NumSides = 64 fovCircle.Filled = false fovCircle.Color = RED end --// input: RightShift = UI, Q = silent, Del = unload, RMB hold = aim local aiming = false local conns = {} local function unload() for _, c in ipairs(conns) do pcall(function() c:Disconnect() end) end table.clear(conns) for p, _ in pairs(espObjects) do pcall(clearPlayer, p) end if fovCircle then pcall(function() fovCircle:Remove() end) end pcall(function() local g = getgenv and getgenv() or nil if g then g.XploitClosestTarget, g.XploitSilentFire = nil, nil end end) pcall(function() gui:Destroy() end) print("[XPLOIT] unloaded") end unloadBtn.MouseButton1Click:Connect(unload) conns[#conns + 1] = UserInputService.InputBegan:Connect(function(input, gpe) if gpe then return end if input.UserInputType == Settings.AimKey then aiming = true end if input.KeyCode == Enum.KeyCode.Q then Settings.SilentAimEnabled = not Settings.SilentAimEnabled end if input.KeyCode == Enum.KeyCode.RightShift then main.Visible = not main.Visible end if input.KeyCode == Enum.KeyCode.Delete then unload() end end) conns[#conns + 1] = UserInputService.InputEnded:Connect(function(input) if input.UserInputType == Settings.AimKey then aiming = false end end) minBtn.MouseButton1Click:Connect(function() main.Visible = false end) -- drag do local dragging, sp, si = false, nil, nil titleBar.InputBegan:Connect(function(i) if i.UserInputType == Enum.UserInputType.MouseButton1 or i.UserInputType == Enum.UserInputType.Touch then dragging, sp, si = true, main.Position, i.Position end end) titleBar.InputEnded:Connect(function(i) if i.UserInputType == Enum.UserInputType.MouseButton1 or i.UserInputType == Enum.UserInputType.Touch then dragging = false end end) UserInputService.InputChanged:Connect(function(i) if not dragging then return end if i.UserInputType == Enum.UserInputType.MouseMovement or i.UserInputType == Enum.UserInputType.Touch then local d = i.Position - si main.Position = UDim2.new(sp.X.Scale, sp.X.Offset + d.X, sp.Y.Scale, sp.Y.Offset + d.Y) end end) end local function tracerFrom() local vs = Camera.ViewportSize return Vector2.new(vs.X / 2, vs.Y) end --// single render loop: ESP + FOV + hard aimbot conns[#conns + 1] = RunService.RenderStepped:Connect(function() if not gui.Parent then return end Camera = Workspace.CurrentCamera if not Camera then return end if fovCircle then fovCircle.Position = UserInputService:GetMouseLocation() fovCircle.Radius = Settings.FOV fovCircle.Visible = Settings.ShowFOV and Settings.AimbotEnabled end -- hard aimbot (camera lock while held) if Settings.AimbotEnabled and aiming then local _, pos = closestTarget() if pos then local cf = CFrame.new(Camera.CFrame.Position, pos) Camera.CFrame = Camera.CFrame:Lerp(cf, math.clamp(Settings.Smoothing / 20, 0.05, 1)) end end -- ESP for player, e in pairs(espObjects) do local ok = pcall(function() local char = player.Character local hum = char and char:FindFirstChildOfClass("Humanoid") local hrp = char and char:FindFirstChild("HumanoidRootPart") local head = char and char:FindFirstChild("Head") local valid = Settings.ESPEnabled and char and hum and hrp and head and hum.Health > 0 and not isFriendly(player) local dist = 0 if hrp then dist = distToLocal(hrp) end if Settings.MaxDistance > 0 and dist > Settings.MaxDistance then valid = false end if not valid then e.highlight.Enabled = false e.billboard.Enabled = false hideDrawings(e) return end local color = espColor(player) e.highlight.Enabled = Settings.Chams if Settings.Chams then e.highlight.Adornee = char e.highlight.FillColor = color e.highlight.OutlineColor = color end local showText = Settings.Names or Settings.Distance or Settings.HealthText e.billboard.Enabled = showText if showText then e.billboard.Adornee = head local parts = {} if Settings.Names then table.insert(parts, player.DisplayName .. " (@" .. player.Name .. ")") end if Settings.Distance then table.insert(parts, "[" .. math.floor(dist) .. "m]") end if Settings.HealthText then table.insert(parts, math.ceil(hum.Health) .. " HP") end e.nameLabel.Text = table.concat(parts, " ") e.nameLabel.TextColor3 = color end if hasDrawing then local hp, onScreen = Camera:WorldToViewportPoint(hrp.Position) local top = Camera:WorldToViewportPoint(head.Position + Vector3.new(0, 0.6, 0)) local bot = Camera:WorldToViewportPoint(hrp.Position - Vector3.new(0, 3, 0)) local h = math.abs(top.Y - bot.Y) local w = h * 0.6 if onScreen and Settings.Boxes then local b = e.drawings.box b.Visible = true b.Color = color b.Size = Vector2.new(w, h) b.Position = Vector2.new(hp.X - w / 2, top.Y) else e.drawings.box.Visible = false end if onScreen and Settings.Tracers then local t = e.drawings.tracer t.Visible = true t.Color = color t.From = tracerFrom() t.To = Vector2.new(hp.X, bot.Y) else e.drawings.tracer.Visible = false end if onScreen and Settings.HealthBar then local f = math.clamp(hum.Health / hum.MaxHealth, 0, 1) local bx = hp.X - w / 2 - 5 e.drawings.hpBack.Visible = true e.drawings.hpBack.Color = Color3.fromRGB(0, 0, 0) e.drawings.hpBack.Position = Vector2.new(bx, top.Y) e.drawings.hpBack.Size = Vector2.new(3, h) e.drawings.hpBar.Visible = true e.drawings.hpBar.Color = Color3.fromRGB(255 - math.floor(255 * f), math.floor(255 * f), 40) e.drawings.hpBar.Position = Vector2.new(bx, top.Y + h * (1 - f)) e.drawings.hpBar.Size = Vector2.new(3, h * f) else e.drawings.hpBack.Visible = false e.drawings.hpBar.Visible = false end end end) if not ok then pcall(function() e.highlight.Enabled = false e.billboard.Enabled = false end) hideDrawings(e) end end end) print("[XPLOIT] loaded. Drawing: " .. tostring(hasDrawing))