local Players = game:GetService("Players") local RunService = game:GetService("RunService") local UserInputService = game:GetService("UserInputService") local ReplicatedStorage = game:GetService("ReplicatedStorage") local LocalPlayer = Players.LocalPlayer local UIS = UserInputService local Config = { targeting = true, strength = 0.55, fov = 100, range = 250, aimPoint = "Chest", scopedOnly = false, showLocked = true, silentAim = false, silentAimFov = 20, visuals = true, boxes = true, names = true, health = true, distance = false, tracers = false, dot = false, boxColor = Color3.fromRGB(255, 80, 80), visualRange = 300, recoil = true, recoilStrength = 0.8, autoFire = false, } local SignalManager local CameraHandler local BulletHandler local function pcallRequire(inst) local ok, mod = pcall(require, inst) if ok and typeof(mod) == "table" then return mod end return nil end local function resolveModules() if not SignalManager then local sig = ReplicatedStorage:FindFirstChild("SignalManager") if sig then SignalManager = pcallRequire(sig) end end if not CameraHandler then local mm = ReplicatedStorage:FindFirstChild("ModuleScripts") if mm then local guns = mm:FindFirstChild("GunModules") if guns then local fw = guns:FindFirstChild("GunFramework") if fw then local ch = fw:FindFirstChild("CameraHandler") if ch then CameraHandler = pcallRequire(ch) end end end end end if not BulletHandler then local mm = ReplicatedStorage:FindFirstChild("ModuleScripts") if mm then local guns = mm:FindFirstChild("GunModules") if guns then local bh = guns:FindFirstChild("BulletHandler") if bh then BulletHandler = pcallRequire(bh) end end end end end local function applyRecoilHook() resolveModules() if not CameraHandler then return end if not CameraHandler.__origAccel then CameraHandler.__origAccel = CameraHandler.accelerate end if CameraHandler.__hookedBy6ij3 then return end CameraHandler.__hookedBy6ij3 = true local orig = CameraHandler.__origAccel CameraHandler.accelerate = function(self, d, s, spec, tag, ...) if Config.recoil and tag == "gun_recoil" and typeof(spec) == "table" then local m = 1 - Config.recoilStrength if m <= 0.001 then return end local ns = {} for k, v in pairs(spec) do if typeof(v) == "number" then ns[k] = v * m elseif typeof(v) == "table" and v.min and v.max then ns[k] = { min = v.min * m, max = v.max * m } else ns[k] = v end end return orig(self, d, s, ns, tag, ...) end return orig(self, d, s, spec, tag, ...) end end local function enemyList() local out = {} for _, p in ipairs(Players:GetPlayers()) do if p ~= LocalPlayer then local c = p.Character if c and c.Parent then local hum = c:FindFirstChildOfClass("Humanoid") local hrp = c:FindFirstChild("HumanoidRootPart") if hum and hrp and hum.Health > 0 then out[#out + 1] = c end end end end return out end local function targetPoint(c) if Config.aimPoint == "Head" then local hd = c:FindFirstChild("Head") if hd then return hd.Position end end local hrp = c:FindFirstChild("HumanoidRootPart") if hrp then return hrp.Position + Vector3.new(0, 1.2, 0) end return nil end local function bestTarget(camPos, look, maxAng) local bestChar local bestScore for _, c in ipairs(enemyList()) do local tp = targetPoint(c) if tp then local to = tp - camPos local dist = to.Magnitude if dist > 0.5 and dist <= Config.range then local dir = to.Unit local ang = math.deg(math.acos(math.clamp(look:Dot(dir), -1, 1))) if ang <= maxAng then local score = ang / dist if not bestScore or score < bestScore then bestChar = c bestScore = score end end end end end return bestChar end local function applySilentAimHook() resolveModules() if not BulletHandler then return end if not BulletHandler.__origFire then BulletHandler.__origFire = BulletHandler.Fire end if BulletHandler.__silentHooked then return end BulletHandler.__silentHooked = true local orig = BulletHandler.__origFire BulletHandler.Fire = function(p1) if Config.silentAim and typeof(p1) == "table" then local misc = p1.Misc local origin = p1.Origin if typeof(misc) == "table" and typeof(misc.CamCFrame) == "CFrame" and typeof(origin) == "Vector3" then local target = bestTarget(origin, misc.CamCFrame.LookVector, Config.silentAimFov) if target then local tp = targetPoint(target) if tp then local dir = (tp - origin).Unit if typeof(dir) == "Vector3" then p1.Direction = dir p1.Misc.CamCFrame = CFrame.lookAt(origin, tp) end end end end end return orig(p1) end end pcall(cleardrawcache) local drawLock = Drawing.new("Line") local drawStore = {} local function getTool() local char = LocalPlayer.Character if not char then return nil end return char:FindFirstChildOfClass("Tool") end local lockedChar RunService:BindToRenderStep("FpsAim", Enum.RenderPriority.Camera.Value + 2, function(dt) pcall(function() lockedChar = nil if not Config.targeting then return end local char = LocalPlayer.Character if not char or not char:FindFirstChildOfClass("Humanoid") then return end if Config.scopedOnly and not UIS:IsMouseButtonPressed(Enum.UserInputType.MouseButton2) then return end local cam = workspace.CurrentCamera if not cam then return end local pos = cam.CFrame.Position local look = cam.CFrame.LookVector local target = bestTarget(pos, look, Config.fov) lockedChar = target if not target then return end local tp = targetPoint(target) if not tp then return end local desired = (tp - pos).Unit local current = cam.CFrame.LookVector local alpha = 1 - math.pow(1 - Config.strength, dt * 60) local newLook = current:Lerp(desired, math.clamp(alpha, 0, 1)) local up = cam.CFrame.UpVector cam.CFrame = CFrame.lookAt(pos, pos + newLook, up) end) end) local function getSet(c) local s = drawStore[c] if not s then s = { box = Drawing.new("Quad"), name = Drawing.new("Text"), hp = Drawing.new("Text"), dist = Drawing.new("Text"), tracer = Drawing.new("Line"), dot = Drawing.new("Circle"), } s.box.Filled = false s.box.Thickness = 1.5 s.name.Size = 13 s.name.Font = Drawing.Fonts.UI s.name.Center = true s.name.Outline = true s.name.OutlineColor = Color3.fromRGB(0, 0, 0) s.hp.Size = 12 s.hp.Font = Drawing.Fonts.UI s.hp.Center = true s.hp.Outline = true s.hp.OutlineColor = Color3.fromRGB(0, 0, 0) s.dist.Size = 11 s.dist.Font = Drawing.Fonts.UI s.dist.Center = true s.dist.Outline = true s.dist.OutlineColor = Color3.fromRGB(0, 0, 0) s.dot.Filled = true s.dot.Radius = 3 drawStore[c] = s end return s end local function hideAll() for _, s in pairs(drawStore) do for _, d in pairs(s) do d.Visible = false end end drawLock.Visible = false end local function boxFor(c) local hrp = c:FindFirstChild("HumanoidRootPart") local hd = c:FindFirstChild("Head") if not hrp then return nil end local cam = workspace.CurrentCamera local _, size = c:GetBoundingBox() local topPos if hd then topPos = hd.Position + Vector3.new(0, size.Y * 0.12, 0) else topPos = hrp.Position + Vector3.new(0, 1.8, 0) end local botPos = hrp.Position - Vector3.new(0, size.Y * 0.62, 0) local tv = cam:WorldToViewportPoint(topPos) local bv = cam:WorldToViewportPoint(botPos) if tv.Z <= 0 or bv.Z <= 0 then return nil end local h = math.max(math.abs(tv.Y - bv.Y), 6) local w = h * 0.6 local cx = (tv.X + bv.X) / 2 local y = math.min(tv.Y, bv.Y) return cx - w / 2, y, w, h, tv.X, tv.Y end RunService:BindToRenderStep("FpsVisuals", Enum.RenderPriority.Camera.Value + 3, function() pcall(function() hideAll() if not Config.visuals then return end local cam = workspace.CurrentCamera if not cam then return end local pos = cam.CFrame.Position local vp = cam.ViewportSize for _, c in ipairs(enemyList()) do local hrp = c:FindFirstChild("HumanoidRootPart") if hrp then local dist = (hrp.Position - pos).Magnitude if dist <= Config.visualRange then local s = getSet(c) local hum = c:FindFirstChildOfClass("Humanoid") local x, y, w, h, hx, hy = boxFor(c) if x then if Config.boxes then local b = s.box b.Visible = true b.Color = Config.boxColor b.Transparency = 1 b.PointA = Vector2.new(x, y) b.PointB = Vector2.new(x + w, y) b.PointC = Vector2.new(x + w, y + h) b.PointD = Vector2.new(x, y + h) end if Config.names then local n = s.name n.Visible = true n.Text = c.Name n.Position = Vector2.new(x + w / 2, y - 16) n.Color = Color3.fromRGB(255, 255, 255) n.Transparency = 1 end if Config.health and hum then local hpt = s.hp hpt.Visible = true hpt.Text = math.floor(hum.Health) .. " HP" hpt.Position = Vector2.new(x + w / 2, y + h + 2) local ratio = hum.Health / hum.MaxHealth hpt.Color = ratio > 0.5 and Color3.fromRGB(0, 255, 0) or (ratio > 0.25 and Color3.fromRGB(255, 255, 0) or Color3.fromRGB(255, 60, 60)) hpt.Transparency = 1 end if Config.distance then local dt = s.dist dt.Visible = true dt.Text = tostring(math.floor(dist)) dt.Position = Vector2.new(x + w + 6, y + h / 2) dt.Color = Color3.fromRGB(255, 255, 255) dt.Transparency = 1 end if Config.dot then local d = s.dot d.Visible = true d.Position = Vector2.new(hx, hy) d.Color = Config.boxColor d.Transparency = 1 end end if Config.tracers then local t = s.tracer local tv2 = cam:WorldToViewportPoint(hrp.Position) if tv2.Z > 0 then t.Visible = true t.From = Vector2.new(vp.X / 2, vp.Y) t.To = Vector2.new(tv2.X, tv2.Y) t.Color = Config.boxColor t.Thickness = 1 t.Transparency = 1 end end end end end if Config.showLocked and lockedChar and lockedChar.Parent then local hrp = lockedChar:FindFirstChild("HumanoidRootPart") if hrp then local tv2 = cam:WorldToViewportPoint(hrp.Position) if tv2.Z > 0 then drawLock.Visible = true drawLock.From = Vector2.new(vp.X / 2, vp.Y) drawLock.To = Vector2.new(tv2.X, tv2.Y) drawLock.Color = Color3.fromRGB(255, 255, 255) drawLock.Thickness = 2 drawLock.Transparency = 1 end end end end) end) local autoTask local function stopAuto() if autoTask then task.cancel(autoTask) autoTask = nil end end local function autoLoop() while true do task.wait(0.03) if not Config.autoFire then break end local tool = getTool() local held = UIS:IsMouseButtonPressed(Enum.UserInputType.MouseButton1) if tool and held and not (tool:GetAttribute("isAuto") == true) and SignalManager then SignalManager.Fire("FireWeapon", Enum.UserInputState.Begin) task.wait(0.02) SignalManager.Fire("FireWeapon", Enum.UserInputState.End) local rate = tonumber(tool:GetAttribute("FireRate")) or 0.2 task.wait(math.max(rate * 0.98, 0.05)) end end autoTask = nil end local function startAuto() stopAuto() resolveModules() autoTask = task.spawn(autoLoop) end local function cleanup() stopAuto() RunService:UnbindFromRenderStep("FpsAim") RunService:UnbindFromRenderStep("FpsVisuals") for _, s in pairs(drawStore) do for _, d in pairs(s) do pcall(function() d:Remove() end) end end drawStore = {} pcall(function() drawLock:Remove() end) if CameraHandler then if CameraHandler.__origAccel then CameraHandler.accelerate = CameraHandler.__origAccel CameraHandler.__origAccel = nil end CameraHandler.__hookedBy6ij3 = nil end if BulletHandler then if BulletHandler.__origFire then BulletHandler.Fire = BulletHandler.__origFire BulletHandler.__origFire = nil end BulletHandler.__silentHooked = nil end end applyRecoilHook() applySilentAimHook() local build local okFetch = pcall(function() build = loadstring(game:HttpGet("https://sirius.menu/gen2")) end) if not okFetch or typeof(build) ~= "function" then cleanup() return end local okInit, Rayfield = pcall(build) if not okInit or typeof(Rayfield) ~= "table" then cleanup() return end local window = Rayfield:CreateWindow({ name = "6ij3 Fps hub", subtitle = "Flick", }) local aimTab = window:CreateTab({ name = "Targeting" }) local visTab = window:CreateTab({ name = "ESP" }) local wepTab = window:CreateTab({ name = "Weapon" }) local genTab = window:CreateTab({ name = "General" }) aimTab:CreateToggle({ name = "Target Lock", value = Config.targeting, callback = function(v) Config.targeting = v end, }) aimTab:CreateSlider({ name = "Strength", range = { 5, 100 }, increment = 1, suffix = "%", value = 55, callback = function(v) Config.strength = v / 100 end, }) aimTab:CreateSlider({ name = "FOV", range = { 10, 180 }, increment = 1, suffix = "deg", value = 100, callback = function(v) Config.fov = v end, }) aimTab:CreateSlider({ name = "Range", range = { 50, 400 }, increment = 10, suffix = " studs", value = 250, callback = function(v) Config.range = v end, }) aimTab:CreateDropdown({ name = "Aim point", options = { "Chest", "Head" }, value = "Chest", callback = function(sel) Config.aimPoint = sel end, }) aimTab:CreateToggle({ name = "While scoped only", description = "Pulls only while you hold right click", value = false, callback = function(v) Config.scopedOnly = v end, }) aimTab:CreateToggle({ name = "Show locked target", description = "Draws a line to the current target", value = true, callback = function(v) Config.showLocked = v end, }) aimTab:CreateToggle({ name = "Silent aim", description = "Bullets bend to your target while your camera stays put", value = false, callback = function(v) Config.silentAim = v end, }) aimTab:CreateSlider({ name = "Silent aim FOV", description = "Max angle from your crosshair to snap a shot to", range = { 5, 90 }, increment = 1, suffix = "deg", value = 20, callback = function(v) Config.silentAimFov = v end, }) visTab:CreateToggle({ name = "ESP", value = Config.visuals, callback = function(v) Config.visuals = v end, }) visTab:CreateToggle({ name = "Boxes", value = Config.boxes, callback = function(v) Config.boxes = v end, }) visTab:CreateToggle({ name = "Names", value = Config.names, callback = function(v) Config.names = v end, }) visTab:CreateToggle({ name = "Health", value = Config.health, callback = function(v) Config.health = v end, }) visTab:CreateToggle({ name = "Distance", value = Config.distance, callback = function(v) Config.distance = v end, }) visTab:CreateToggle({ name = "Tracers", value = Config.tracers, callback = function(v) Config.tracers = v end, }) visTab:CreateToggle({ name = "Head dot", value = Config.dot, callback = function(v) Config.dot = v end, }) visTab:CreateColorPicker({ name = "Color", color = Config.boxColor, callback = function(c) Config.boxColor = c end, }) visTab:CreateSlider({ name = "Range", range = { 50, 400 }, increment = 10, suffix = " studs", value = 300, callback = function(v) Config.visualRange = v end, }) wepTab:CreateToggle({ name = "Recoil control", value = Config.recoil, callback = function(v) Config.recoil = v end, }) wepTab:CreateSlider({ name = "Recoil strength", description = "How much of the camera kick is removed", range = { 0, 100 }, increment = 5, suffix = "%", value = 80, callback = function(v) Config.recoilStrength = v / 100 end, }) wepTab:CreateToggle({ name = "Auto fire", description = "Fires while you hold M1 (semi-auto only). Use at your own risk.", value = false, callback = function(v) Config.autoFire = v if v then startAuto() else stopAuto() end end, }) genTab:CreateButton({ name = "Unload", callback = function() cleanup() pcall(function() window:Destroy() end) end, }) window:Notify({ title = "6ij3 Fps hub", content = "Loaded" })