Silent Aim [Open Source] & More
Key Required

Silent Aim [Open Source] & More

Notoriety: A PAYDAY® ExperienceMiseryMisery 1.1K views 2.8K executesUpdated Sep 7, 2026
5.0/ 5(1 votes)
10100% Positive
Lua Script•452 lines (13185 chars)
local Players = game:GetService("Players")
local RS = game:GetService("ReplicatedStorage")
local UIS = game:GetService("UserInputService")
local RunService = game:GetService("RunService")
local Workspace = game:GetService("Workspace")
local Camera = Workspace.CurrentCamera
local lp = Players.LocalPlayer

local pkg = RS:FindFirstChild("RS_Package")
local remotes = pkg and pkg:FindFirstChild("Assets") and pkg.Assets:FindFirstChild("Remotes")
local dmgRemote = remotes and remotes:FindFirstChild("Damage")
local meleeRemote = remotes and remotes:FindFirstChild("MeleeDamage")

if not dmgRemote and not meleeRemote then return end

local cfg = {
    silentAim = {
        on = true,
        fov = 250,
        dmg = 400,
        circle = {
            show = true,
            color = Color3.new(1,1,1),
            alpha = 0.8,
            thickness = 1
        }
    },

    gunMod = {
        on = true,
        dmg = 400,
        fireDelay = 0.05,
        accuracy = 100,
        magSize = 999999,
        ammoMax = 999999,
        reloadTime = 0.5,
        bulletSpeed = 75,
        aimSpeed = 999,
        noRecoil = true
    },

    stamina = { on = false },

    bringGuards = {
        on = false,
        dist = 10,
        anchor = true
    },

    killAura = {
        on = false,
        range = 10,
        dmg = 999999,
        policeOnly = true
    },

    killAll = {
        on = false,
        dmg = 999999,
        maxHits = 5,
        policeOnly = true
    },

    targets = {
        police   = true,
        bodies   = true,
        citizens = true,
        criminals = true
    },

    esp = {
        on = true,
        targets = {
            police   = true,
            citizens = false,
            criminals = false
        }
    }
}

local policeColors = {
    Guard      = Color3.new(0, 1, 0),
    ["1"]      = Color3.new(0.2, 0.8, 0.2),
    ["2"]      = Color3.new(0.4, 0.6, 0.2),
    ["3"]      = Color3.new(0.6, 0.6, 0.2),
    ["4"]      = Color3.new(0.8, 0.5, 0.2),
    ["5"]      = Color3.new(0.9, 0.4, 0.2),
    SWAT       = Color3.new(0.4, 0.4, 1),
    RiotSWAT   = Color3.new(0.6, 0.2, 0.8),
    Jugg       = Color3.new(0.8, 0.2, 0.2),
    GenSecSWAT = Color3.new(1, 0, 0)
}

local fovCircle = Drawing.new("Circle")
fovCircle.Visible      = cfg.silentAim.circle.show
fovCircle.Color        = cfg.silentAim.circle.color
fovCircle.Thickness    = cfg.silentAim.circle.thickness
fovCircle.Radius       = cfg.silentAim.fov
fovCircle.Transparency = cfg.silentAim.circle.alpha
fovCircle.Filled       = false
fovCircle.ZIndex       = 999

local function getTool()
    local char = lp.Character
    return char and char:FindFirstChildOfClass("Tool")
end

local function getHum(model)
    local h = model:FindFirstChildOfClass("Humanoid")
    if h then return h end
    for _, v in model:GetDescendants() do
        if v:IsA("Humanoid") then return v end
    end
end

local function getPart(model, name)
    local p = model:FindFirstChild(name)
    if p and p:IsA("BasePart") then return p end
    for _, v in model:GetDescendants() do
        if v.Name == name and v:IsA("BasePart") then return v end
    end
end

local function anyPart(model)
    for _, v in model:GetDescendants() do
        if v:IsA("BasePart") then return v end
    end
end

local function grabFolder(name)
    local out = {}
    local f = Workspace:FindFirstChild(name)
    if not f then return out end
    for _, m in f:GetChildren() do
        if m:IsA("Model") then table.insert(out, m) end
    end
    return out
end

local function getTargets(policeOnly)
    local t = {}
    if policeOnly then
        for _, m in grabFolder("Police") do table.insert(t, m) end
        for _, m in grabFolder("Bodies") do table.insert(t, m) end
        return t
    end
    if cfg.targets.police    then for _, m in grabFolder("Police")    do table.insert(t, m) end end
    if cfg.targets.bodies    then for _, m in grabFolder("Bodies")    do table.insert(t, m) end end
    if cfg.targets.citizens  then for _, m in grabFolder("Citizens")  do table.insert(t, m) end end
    if cfg.targets.criminals then for _, m in grabFolder("Criminals") do table.insert(t, m) end end
    return t
end

local function closestTarget()
    local mouse = UIS:GetMouseLocation()
    local best, bestDist = nil, cfg.silentAim.fov

    for _, model in getTargets(false) do
        local part = getPart(model, "HumanoidRootPart")
            or getPart(model, "Torso")
            or getPart(model, "Head")
            or anyPart(model)

        if part then
            local screen, onScreen = Camera:WorldToScreenPoint(part.Position)
            if onScreen then
                local d = (Vector2.new(screen.X, screen.Y) - mouse).Magnitude
                if d < bestDist then
                    bestDist = d
                    best = model
                end
            end
        end
    end

    return best
end

local function shoot(target)
    local tool = getTool()
    if not tool then return end
    local hum = getHum(target)
    local hitPart = getPart(target, "Head") or anyPart(target)
    if not hum or not hitPart then return end
    dmgRemote:FireServer("Damage", tool, hum, cfg.silentAim.dmg, hitPart, tool.Name, hitPart.Position, {})
end

local patchedGun = nil

local function patchData(gun)
    if not cfg.gunMod.on then return end
    local data = gun:FindFirstChild("Data")
    if not data then return end
    local ok, mod = pcall(require, data)
    if not ok or type(mod) ~= "table" then return end

    mod.Damage       = cfg.gunMod.dmg
    mod.FireDelay    = cfg.gunMod.fireDelay
    mod.Accuracy     = cfg.gunMod.accuracy
    mod.MagazineSize = cfg.gunMod.magSize
    mod.AmmoMax      = cfg.gunMod.ammoMax
    mod.ReloadTime   = cfg.gunMod.reloadTime
    mod.BulletSpeed  = cfg.gunMod.bulletSpeed
    mod.AimSpeed     = cfg.gunMod.aimSpeed

    if cfg.gunMod.noRecoil then
        local z = Vector2.zero
        mod.RecoilDirectionPattern       = {z, z, z, z}
        mod.RecoilCameraDirectionPattern = {z, z}
        mod.ShakeMagnitude  = 0
        mod.ShakeRoughness  = 0
    end
end

local function patchAmmo(gun)
    local char = lp.Character
    if not char then return end

    for _, folder in {char:FindFirstChild("Ammo"), char:FindFirstChild("AmmoValues")} do
        if folder then
            for _, v in folder:GetDescendants() do
                if v:IsA("IntValue") or v:IsA("NumberValue") then
                    v.Value = cfg.gunMod.ammoMax
                end
            end
        end
    end

    local ammo = gun:FindFirstChild("Ammo")
    if ammo and (ammo:IsA("IntValue") or ammo:IsA("NumberValue")) then
        ammo.Value = cfg.gunMod.magSize
    end
end

local function applyESP(model, color)
    if not cfg.esp.on then return end
    for _, v in model:GetDescendants() do
        if v:IsA("Highlight") then return end
    end
    if model:FindFirstChildOfClass("Highlight") then return end
    local h = Instance.new("Highlight")
    h.FillColor           = color
    h.OutlineColor        = color
    h.FillTransparency    = 1
    h.OutlineTransparency = 0
    h.Parent              = model
end

local function hookESP(folder, colorFn)
    if not folder then return end

    for _, model in folder:GetChildren() do
        if model:IsA("Model") then
            local color = colorFn(model)
            if color then applyESP(model, color) end
        end
    end

    folder.ChildAdded:Connect(function(model)
        task.wait(0.05)
        if not model:IsA("Model") then return end
        local color = colorFn(model)
        if color then applyESP(model, color) end
    end)
end

local function setupESP()
    if not cfg.esp.on then return end

    if cfg.esp.targets.police then
        hookESP(Workspace:FindFirstChild("Police"), function(m)
            return policeColors[m.Name]
        end)
    end

    if cfg.esp.targets.citizens then
        hookESP(Workspace:FindFirstChild("Citizens"), function()
            return Color3.new(0, 1, 0)
        end)
    end

    if cfg.esp.targets.criminals then
        hookESP(Workspace:FindFirstChild("Criminals"), function()
            return Color3.new(0, 1, 0)
        end)
    end
end

local loops = {}

local function startLoop(key, fn)
    if loops[key] then return end
    loops[key] = RunService.Heartbeat:Connect(fn)
end

local function stopLoop(key)
    if loops[key] then
        loops[key]:Disconnect()
        loops[key] = nil
    end
end

local function tickStamina()
    if not cfg.stamina.on then stopLoop("stamina") return end
    startLoop("stamina", function()
        local criminals = Workspace:FindFirstChild("Criminals")
        if not criminals then return end
        local model = criminals:FindFirstChild(lp.Name)
        if not model then return end
        local stam = model:FindFirstChild("Stamina")
        local maxS = model:FindFirstChild("MaxStamina")
        if stam and stam:IsA("NumberValue") then stam.Value = math.huge end
        if maxS and maxS:IsA("NumberValue") then maxS.Value = math.huge end
    end)
end

local function tickBringGuards()
    if not cfg.bringGuards.on then
        stopLoop("bring")
        for _, m in getTargets(true) do
            local hrp = m:FindFirstChild("HumanoidRootPart")
            if hrp then hrp.Anchored = false end
        end
        return
    end

    startLoop("bring", function()
        local char = lp.Character
        local hrp  = char and char:FindFirstChild("HumanoidRootPart")
        if not hrp then return end

        local dest = hrp.CFrame * CFrame.new(0, 0, -cfg.bringGuards.dist)

        for _, m in getTargets(true) do
            local hum  = getHum(m)
            local mhrp = m:FindFirstChild("HumanoidRootPart")
            if hum and mhrp and hum.Health > 0 then
                mhrp.CFrame   = dest
                mhrp.Anchored = cfg.bringGuards.anchor
                mhrp.CFrame   = CFrame.new(mhrp.Position, hrp.Position)
            end
        end
    end)
end

local function tickKillAura()
    if not cfg.killAura.on then stopLoop("aura") return end

    startLoop("aura", function()
        local char = lp.Character
        local hrp  = char and char:FindFirstChild("HumanoidRootPart")
        local tool = char and char:FindFirstChildOfClass("Tool")
        if not hrp or not tool or not meleeRemote then return end

        for _, m in getTargets(cfg.killAura.policeOnly) do
            local hum  = getHum(m)
            local mhrp = m:FindFirstChild("HumanoidRootPart")
            if hum and mhrp and hum.Health > 0 then
                if (hrp.Position - mhrp.Position).Magnitude <= cfg.killAura.range then
                    meleeRemote:FireServer(m, tool, cfg.killAura.dmg)
                end
            end
        end
    end)
end

local killAllThread = nil

local function tickKillAll()
    if not cfg.killAll.on then
        if killAllThread then task.cancel(killAllThread) killAllThread = nil end
        return
    end
    if killAllThread then return end

    killAllThread = task.spawn(function()
        while cfg.killAll.on do
            local char = lp.Character
            local hrp  = char and char:FindFirstChild("HumanoidRootPart")
            local tool = char and char:FindFirstChildOfClass("Tool")

            if not hrp or not tool or not meleeRemote then
                task.wait(0.2)
                continue
            end

            local origin   = hrp.CFrame
            local anyFound = false

            for _, m in getTargets(cfg.killAll.policeOnly) do
                if not cfg.killAll.on then break end

                local hum  = getHum(m)
                local mhrp = m:FindFirstChild("HumanoidRootPart")

                if hum and mhrp and hum.Health > 0 then
                    anyFound   = true
                    hrp.CFrame = mhrp.CFrame * CFrame.new(0, 0, -2)

                    local hits = 0
                    while hum.Health > 0 and hits < cfg.killAll.maxHits and cfg.killAll.on do
                        tool = char:FindFirstChildOfClass("Tool") or tool
                        meleeRemote:FireServer(m, tool, cfg.killAll.dmg)
                        hits += 1
                        task.wait()
                    end
                end
            end

            hrp.CFrame = origin
            if not anyFound then task.wait(1) end
        end
    end)
end

setupESP()

RunService.Heartbeat:Connect(function()
    fovCircle.Visible  = cfg.silentAim.circle.show
    fovCircle.Position = UIS:GetMouseLocation()
    fovCircle.Radius   = cfg.silentAim.fov

    local gun = getTool()
    if gun then
        if gun ~= patchedGun then
            patchedGun = gun
            patchData(gun)
        else
            patchAmmo(gun)
        end
    else
        patchedGun = nil
    end

    tickStamina()
    tickBringGuards()
    tickKillAura()
    tickKillAll()
end)

UIS.InputBegan:Connect(function(input)
    if input.UserInputType ~= Enum.UserInputType.MouseButton1 then return end
    if not cfg.silentAim.on then return end
    local target = closestTarget()
    if target then shoot(target) end
end)

lp.CharacterAdded:Connect(function()
    task.wait(0.5)
    patchedGun = nil
    setupESP()
end)

Features & Information

Silent aim script. Open source, free to use and modify. Features: - Silent Aim with FOV circle - Gun Mod (damage, no recoil, infinite ammo) - Color-coded ESP by guard tier - Kill Aura & Kill All - Bring Guards - Infinite Stamina Configure everything in the cfg table at the top of the script.

Community Comments (2)

Rudi_JagerRudi_JagerSep 8, 2026

kicked by host, on bro.

Replying to @Rudi_Jager
MiseryMiserySep 10, 2026

@Rudi_Jager guess why

More Scripts for Notoriety: A PAYDAY® Experience