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 Camera = workspace.CurrentCamera workspace:GetPropertyChangedSignal("CurrentCamera"):Connect(function() Camera = workspace.CurrentCamera end) local Settings = { SilentAimEnabled = true, HeadChance = 10, HitChance = 100, FOVRadius = 180, } local NonHeadParts = {"UpperTorso", "LowerTorso", "HumanoidRootPart", "RightUpperArm", "LeftUpperArm", "RightUpperLeg", "LeftUpperLeg"} local FOVCircle = Drawing.new("Circle") FOVCircle.Visible = true FOVCircle.Thickness = 1 FOVCircle.Radius = Settings.FOVRadius FOVCircle.Transparency = 0.7 FOVCircle.Color = Color3.fromRGB(255, 255, 255) FOVCircle.Filled = false local TargetDot = Drawing.new("Circle") TargetDot.Visible = false TargetDot.Thickness = 1 TargetDot.Radius = 4 TargetDot.Color = Color3.fromRGB(255, 0, 0) TargetDot.Filled = true TargetDot.Transparency = 1 local EntityService = require(ReplicatedStorage.Remote.EntityService) local CameraController = require(ReplicatedStorage.Client.CameraController) local ClientShootableComponent = require(ReplicatedStorage.Client.CombatController.ClientComponent.ClientShootableComponent) local function GetEntityCharacter(Entity) local Inst = Entity.Instance if not Inst then return nil end if Inst:IsA("Player") then return Inst.Character end if Inst:IsA("Model") then return Inst end return nil end local function FindEntityPosition(EntityModel) local HRP = EntityModel:FindFirstChild("HumanoidRootPart") if HRP and HRP:IsA("BasePart") then return HRP.Position end local Head = EntityModel:FindFirstChild("Head") if Head and Head:IsA("BasePart") then return Head.Position end local Collider = EntityModel:FindFirstChild("Collider") if Collider then for _, Part in Collider:GetChildren() do if Part:IsA("BasePart") then return Part.Position end end end local Humanoid = EntityModel:FindFirstChildOfClass("Humanoid") if Humanoid and Humanoid.RootPart then return Humanoid.RootPart.Position end return nil end local function FindTargetPart(EntityModel, WantHead) if WantHead then local Head = EntityModel:FindFirstChild("Head") if not Head then Head = EntityModel:FindFirstChild("Head", true) end if Head and Head:IsA("BasePart") then return Head, true end end local Collider = EntityModel:FindFirstChild("Collider") if Collider then local Parts = {} for _, Part in Collider:GetChildren() do if Part:IsA("BasePart") then table.insert(Parts, Part) end end if #Parts > 0 then return Parts[math.random(1, #Parts)], false end end local Shuffled = table.clone(NonHeadParts) for I = #Shuffled, 2, -1 do local J = math.random(1, I) Shuffled[I], Shuffled[J] = Shuffled[J], Shuffled[I] end for _, PartName in Shuffled do local Part = EntityModel:FindFirstChild(PartName) if not Part then Part = EntityModel:FindFirstChild(PartName, true) end if Part and Part:IsA("BasePart") then return Part, false end end local HRP = EntityModel:FindFirstChild("HumanoidRootPart") if HRP and HRP:IsA("BasePart") then return HRP, false end return nil, false end local function IsInFOV(WorldPosition) if not Camera then return false, math.huge end local ScreenPos, OnScreen = Camera:WorldToViewportPoint(WorldPosition) if not OnScreen then return false, math.huge end local MousePos = UserInputService:GetMouseLocation() local Distance = (Vector2.new(ScreenPos.X, ScreenPos.Y) - MousePos).Magnitude return Distance <= Settings.FOVRadius, Distance end local function GetAllEnemyEntities() local Enemies = {} local LocalEntity = EntityService.GetLocalEntity() if not LocalEntity or not LocalEntity.World then return Enemies end local WorldEntities = LocalEntity.World.EntitiesByTeam if not WorldEntities then return Enemies end for _, TeamDict in pairs(WorldEntities) do local Items = TeamDict._items or TeamDict for _, Entity in pairs(Items) do if not EntityService.IsLocalEntity(Entity) and Entity:IsAlive() then local Character = GetEntityCharacter(Entity) if Character then local Humanoid = Character:FindFirstChildOfClass("Humanoid") if Humanoid and Humanoid.Health > 0 then table.insert(Enemies, Character) end end end end end return Enemies end local function GetClosestEnemy() local Enemies = GetAllEnemyEntities() local ClosestModel = nil local ClosestDistance = math.huge for _, Model in Enemies do local Position = FindEntityPosition(Model) if Position then local InFOV, Distance = IsInFOV(Position) if InFOV and Distance < ClosestDistance then ClosestModel = Model ClosestDistance = Distance end end end return ClosestModel end local SilentTarget = nil RunService.RenderStepped:Connect(function() FOVCircle.Position = UserInputService:GetMouseLocation() FOVCircle.Radius = Settings.FOVRadius FOVCircle.Visible = Settings.SilentAimEnabled if Settings.SilentAimEnabled then local TargetModel = GetClosestEnemy() if TargetModel then local Position = FindEntityPosition(TargetModel) if Position then local ScreenPos, OnScreen = Camera:WorldToViewportPoint(Position) if OnScreen then TargetDot.Position = Vector2.new(ScreenPos.X, ScreenPos.Y) TargetDot.Visible = true else TargetDot.Visible = false end else TargetDot.Visible = false end else TargetDot.Visible = false end else TargetDot.Visible = false end end) local OldGetCombatOrigin OldGetCombatOrigin = hookfunction(CameraController.GetCombatOrigin, newcclosure(function() local OrigCFrame, DetectAt = OldGetCombatOrigin() if SilentTarget then local NewCFrame = CFrame.lookAt(OrigCFrame.Position, SilentTarget.Position) return NewCFrame, DetectAt end return OrigCFrame, DetectAt end)) local OldGetTargeting OldGetTargeting = hookfunction(CameraController.GetTargeting, newcclosure(function() if SilentTarget then return SilentTarget.Position, SilentTarget.Part end return OldGetTargeting() end)) local OldLocalShoot OldLocalShoot = hookfunction(ClientShootableComponent.LocalShoot, newcclosure(function(Self, ...) if Settings.SilentAimEnabled and math.random(1, 100) <= Settings.HitChance then local TargetModel = GetClosestEnemy() if TargetModel then local WantHead = math.random(1, 100) <= Settings.HeadChance local TargetPart, IsHead = FindTargetPart(TargetModel, WantHead) if TargetPart then SilentTarget = { Part = TargetPart, Position = TargetPart.Position, IsHead = IsHead, } end end end local Result = OldLocalShoot(Self, ...) SilentTarget = nil return Result end))