Silent Aim OPEN SOURCE
Key Required

Silent Aim OPEN SOURCE

The Wild WestphemonazLEXphemonazLEX 3.9K views 757 executesUpdated Mar 20, 2026
5.0/ 5(1 votes)
10100% Positive
Lua Script•119 lines (4160 chars)
local Players = game:GetService("Players")
local UserInputService = game:GetService("UserInputService")
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local Workspace = game:GetService("Workspace")

local CONFIG = {
    Players = true,
    Animals = true,
    NPCs = true
}

local Entities = Workspace:FindFirstChild("WORKSPACE_Entities")
if not Entities then
    return
end

local PlayersFolder = Entities:FindFirstChild("Players")
local AnimalsFolder = Entities:FindFirstChild("Animals")
local NPCsFolder = Entities:FindFirstChild("NPCs")

local localPlayer = Players.LocalPlayer

local function getTargetPosition(origin)
    local camera = workspace.CurrentCamera
    local mousePos = UserInputService:GetMouseLocation()
    local character = localPlayer.Character
    local hrpChar = character and character:FindFirstChild("HumanoidRootPart")
    local charPos = hrpChar and hrpChar.Position or origin
    local charLook = hrpChar and hrpChar.CFrame.LookVector or camera.CFrame.LookVector

    local closestDist = math.huge
    local targetPos = nil

    local function processTarget(part, aimPosition)
        if not part or not aimPosition then return end
        local toTarget = (aimPosition - charPos).Unit
        if charLook:Dot(toTarget) > 0 then
            local screenPos, onScreen = camera:WorldToScreenPoint(aimPosition)
            if onScreen and screenPos.Z > 0 then
                local dist = (Vector2.new(screenPos.X, screenPos.Y) - mousePos).Magnitude
                if dist < closestDist then
                    closestDist = dist
                    targetPos = aimPosition
                end
            end
        end
    end

    if CONFIG.Players and PlayersFolder then
        for _, model in ipairs(PlayersFolder:GetChildren()) do
            if model ~= character then
                local hrp = model:FindFirstChild("HumanoidRootPart")
                if hrp then
                    local aimPos
                    local head = model:FindFirstChild("Head")
                    if head then
                        aimPos = head.Position - Vector3.new(0, 1, 0)
                    else
                        aimPos = hrp.Position
                    end
                    processTarget(hrp, aimPos)
                end
            end
        end
    end

    if CONFIG.Animals and AnimalsFolder then
        for _, model in ipairs(AnimalsFolder:GetChildren()) do
            if model:IsA("Model") then
                local hrp = model:FindFirstChild("HumanoidRootPart")
                if hrp then
                    processTarget(hrp, hrp.Position)
                end
            end
        end
    end

    if CONFIG.NPCs and NPCsFolder then
        for _, descendant in ipairs(NPCsFolder:GetDescendants()) do
            if descendant:IsA("Model") then
                local hrp = descendant:FindFirstChild("HumanoidRootPart")
                if hrp then
                    processTarget(hrp, hrp.Position)
                end
            end
        end
    end

    if closestDist > 1000 then
        return nil
    end
    return targetPos
end

local ProjectileHandler = require(ReplicatedStorage.SharedModules.World.ProjectileHandler)
local oldGetSpread = ProjectileHandler.GetProjectileSpread

ProjectileHandler.GetProjectileSpread = function(self, projectileType, projectileParams, info, numProjectiles)
    if info and info.origin then
        local targetPos = getTargetPosition(info.origin)
        if targetPos then
            local newDir = (targetPos - info.origin).Unit
            info.direction = newDir
        end
    end
    return oldGetSpread(self, projectileType, projectileParams, info, numProjectiles)
end

local oldInit = ProjectileHandler.InitProjectiles
ProjectileHandler.InitProjectiles = function(self, projectileType, projectileParams, info, callback)
    if info and info.origin then
        local targetPos = getTargetPosition(info.origin)
        if targetPos then
            local newDir = (targetPos - info.origin).Unit
            info.direction = newDir
        end
    end
    return oldInit(self, projectileType, projectileParams, info, callback)
end

Features & Information

credits: Phemonaz Silent Aim for the game: The Wild West

Community Comments (3)

icecoldbabyicecoldbabyApr 11, 2026

why do i even need key

Replying to @icecoldbaby
phemonazLEXphemonazLEXApr 12, 2026

@icecoldbaby you dont

KatzeGGsKatzeGGsApr 12, 2026

not workıng

More Scripts for The Wild West