local lp = game.Players.LocalPlayer local camera = workspace.CurrentCamera local RunService = game:GetService("RunService") local UIS = game:GetService("UserInputService") local Settings = { Enabled = true, ActiveKey = Enum.UserInputType.MouseButton1, Sens = 1.0, Smoothness = 0.12 } local targetX, targetY, targetZ = 0, 0, 0 local isFiring = false local recoveryTime = 0 local function sync() local x, y, z = camera.CFrame:ToEulerAnglesYXZ() targetX, targetY, targetZ = x, y, z end sync() RunService:BindToRenderStep("DynamicZeroRecoil", Enum.RenderPriority.Camera.Value + 1, function(dt) if UIS.MouseBehavior == Enum.MouseBehavior.Default then sync() return end local char = lp.Character if not char or not char:FindFirstChildOfClass("Humanoid") or char.Humanoid.Health <= 0 then sync() return end local delta = UIS:GetMouseDelta() local _, _, realZ = camera.CFrame:ToEulerAnglesYXZ() local flip = (camera.CFrame.UpVector.Y < 0) and -1 or 1 if Settings.Enabled and UIS:IsMouseButtonPressed(Settings.ActiveKey) then isFiring = true recoveryTime = 0.35 targetY = targetY - math.rad(delta.X * Settings.Sens * 0.48 * flip) targetX = targetX - math.rad(delta.Y * Settings.Sens * 0.48) targetX = math.clamp(targetX, math.rad(-85), math.rad(85)) camera.CFrame = CFrame.new(camera.CFrame.Position) * CFrame.fromEulerAnglesYXZ(targetX, targetY, realZ) else if isFiring then if recoveryTime > 0 then recoveryTime = recoveryTime - dt if delta.Magnitude > 0 then targetY = targetY - math.rad(delta.X * Settings.Sens * 0.48 * flip) targetX = targetX - math.rad(delta.Y * Settings.Sens * 0.48) targetX = math.clamp(targetX, math.rad(-85), math.rad(85)) end camera.CFrame = CFrame.new(camera.CFrame.Position) * CFrame.fromEulerAnglesYXZ(targetX, targetY, targetZ) else sync() isFiring = false end else sync() end end end)