local manipEnabled = true -- change the true to a false if you want normal silent aim local Players = game:GetService("Players") local UserInputService = game:GetService("UserInputService") local Camera = workspace.CurrentCamera local lp = Players.LocalPlayer local function lookvector(from, to) return (to - from).Unit end local function target() local screenSize = Camera.ViewportSize local screenCenter = Vector2.new(screenSize.X / 2, screenSize.Y / 2) local closestPlayer = nil local closestDistance = math.huge for _, player in ipairs(Players:GetPlayers()) do if player ~= lp then local character = player.Character if character then local humanoid = character:FindFirstChildOfClass("Humanoid") local rootPart = character:FindFirstChild("Head") if humanoid and rootPart and humanoid.Health > 0 then local pos, onScreen = Camera:WorldToViewportPoint(rootPart.Position) if onScreen then local distance = (Vector2.new(pos.X, pos.Y) - screenCenter).Magnitude if distance < closestDistance then closestDistance = distance closestHead = rootPart end end end end end end return closestHead.Position end local gc = getgc(true) for _,v in pairs(gc) do if typeof(v) ~= 'function' then continue end if debug.getinfo(v).name == 'isLimbGibbed' then print("disabling gib negatives") local old; old = hookfunction(v, function() return false end) end end local i = 0 for _,v in pairs(gc) do if typeof(v) ~= "table" then continue end if rawget(v, "applyRecoil") then -- new one each time u respawn, need to reapply on respawn local old; old = hookfunction(v.applyRecoil, function() return -- remove camera recoil end) continue end if rawget(v, "fire") and typeof(v.fire) == 'function' then local info = debug.getinfo(v.fire) if info.source:find("projectiles") ~= nil then local old; old = hookfunction(v.fire, function(...) local args = {...} if args[2] == true then -- other player shot return old(...) end local target = target() local newpos = lp.Character.Head.Position -- the below works lol if not manipEnabled then args[1]["origin"] = game.Players.LocalPlayer.Character.Head.Position --+ Vector3.new(0,20,0) else newpos = target + Vector3.new(0, 1, 0) args[1]["origin"] = newpos end for i,dir in pairs(args[1]["directions"]) do args[1]["directions"][i] = lookvector(newpos, target) end return old(unpack(args)) end) end end end