Smol Hub
Key Required

Smol Hub

Arsenal*_**_* 3.4K views 27 executesUpdated May 11, 2025
Unrated
00
Lua Script•243 lines (7915 chars)
local Players = game:GetService("Players")
local UserInputService = game:GetService("UserInputService")
local RunService = game:GetService("RunService")
local Camera = workspace.CurrentCamera

local LocalPlayer = Players.LocalPlayer

local Config = {
    AimbotEnabled = false,
    SilentAim = false,
    ESPEnabled = false,
    TeamCheck = true,
    NoSpread = false,
    FOV = 130,
    Smoothness = 0.15,
    AimPart = "Head"
}

local ScreenGui = Instance.new("ScreenGui")
ScreenGui.Name = "FlanutsMenu"
ScreenGui.Parent = LocalPlayer:WaitForChild("PlayerGui")
ScreenGui.ResetOnSpawn = false

local MainFrame = Instance.new("Frame")
MainFrame.Size = UDim2.new(0, 260, 0, 220)
MainFrame.Position = UDim2.new(0.5, -130, 0.5, -110)
MainFrame.BackgroundColor3 = Color3.fromRGB(28, 28, 28)
MainFrame.BorderSizePixel = 0
MainFrame.Active = true
MainFrame.Draggable = true
MainFrame.Parent = ScreenGui

local UICorner = Instance.new("UICorner")
UICorner.CornerRadius = UDim.new(0, 8)
UICorner.Parent = MainFrame

local Title = Instance.new("TextLabel")
Title.Text = "Arsenal Smol Hub"
Title.Size = UDim2.new(1, 0, 0, 30)
Title.BackgroundTransparency = 1
Title.Font = Enum.Font.GothamBold
Title.TextColor3 = Color3.fromRGB(255, 255, 255)
Title.TextSize = 18
Title.Parent = MainFrame

local Minimize = Instance.new("TextButton")
Minimize.Text = "-"
Minimize.Size = UDim2.new(0, 30, 0, 30)
Minimize.Position = UDim2.new(1, -30, 0, 0)
Minimize.BackgroundColor3 = Color3.fromRGB(45, 45, 45)
Minimize.TextColor3 = Color3.fromRGB(255, 255, 255)
Minimize.Font = Enum.Font.Gotham
Minimize.TextSize = 16
Minimize.Parent = MainFrame

local ButtonsFrame = Instance.new("Frame")
ButtonsFrame.Size = UDim2.new(1, -20, 1, -40)
ButtonsFrame.Position = UDim2.new(0, 10, 0, 35)
ButtonsFrame.BackgroundTransparency = 1
ButtonsFrame.Parent = MainFrame

local function makeToggleButton(text, yPosition, callback)
    local btn = Instance.new("TextButton")
    btn.Size = UDim2.new(1, 0, 0, 30)
    btn.Position = UDim2.new(0, 0, 0, yPosition)
    btn.BackgroundColor3 = Color3.fromRGB(50, 50, 50)
    btn.TextColor3 = Color3.fromRGB(255, 255, 255)
    btn.Font = Enum.Font.Gotham
    btn.TextSize = 14
    btn.Text = text .. ": OFF"
    btn.Parent = ButtonsFrame

    local enabled = false
    btn.MouseButton1Click:Connect(function()
        enabled = not enabled
        callback(enabled)
        btn.Text = text .. ": " .. (enabled and "ON" or "OFF")
    end)
end

makeToggleButton("Aimbot", 0, function(state)
    Config.AimbotEnabled = state
end)

makeToggleButton("Silent Aim", 35, function(state)
    Config.SilentAim = state
end)

makeToggleButton("ESP", 70, function(state)
    Config.ESPEnabled = state
end)

makeToggleButton("No Spread", 105, function(state)
    Config.NoSpread = state
end)

local guiVisible = true
Minimize.MouseButton1Click:Connect(function()
    guiVisible = false
    MainFrame.Visible = false
end)
UserInputService.InputBegan:Connect(function(input)
    if input.KeyCode == Enum.KeyCode.RightShift then
        guiVisible = not guiVisible
        MainFrame.Visible = guiVisible
    end
end)

local FOVCircle = Drawing.new("Circle")
FOVCircle.Radius = Config.FOV
FOVCircle.Thickness = 2
FOVCircle.Filled = false
FOVCircle.Color = Color3.fromRGB(0, 255, 0)
FOVCircle.Transparency = 1
FOVCircle.Visible = true

local ESPFolder = {}

local function UpdateESP()
    for _, drawing in pairs(ESPFolder) do
        drawing:Remove()
    end
    table.clear(ESPFolder)

    for _, player in ipairs(Players:GetPlayers()) do
        if player ~= LocalPlayer and player.Character and player.Character:FindFirstChild("HumanoidRootPart") then
            if not Config.TeamCheck or player.Team ~= LocalPlayer.Team then
                local tag = Drawing.new("Text")
                tag.Size = 16
                tag.Center = true
                tag.Outline = true
                tag.Font = 2
                tag.Color = Color3.fromRGB(255, 0, 0)
                tag.Visible = false
                ESPFolder[player] = tag
            end
        end
    end
end

local Holding = false
UserInputService.InputBegan:Connect(function(input)
    if input.UserInputType == Enum.UserInputType.MouseButton2 then
        Holding = true
    end
end)
UserInputService.InputEnded:Connect(function(input)
    if input.UserInputType == Enum.UserInputType.MouseButton2 then
        Holding = false
    end
end)

local function GetClosestTarget()
    local mousePos = UserInputService:GetMouseLocation()
    local closest, closestDist = nil, Config.FOV
    for _, player in ipairs(Players:GetPlayers()) do
        if player ~= LocalPlayer and player.Character and player.Character:FindFirstChild(Config.AimPart) then
            if not Config.TeamCheck or player.Team ~= LocalPlayer.Team then
                local part = player.Character[Config.AimPart]
                local screenPos, onScreen = Camera:WorldToViewportPoint(part.Position)
                if onScreen then
                    local dist = (Vector2.new(screenPos.X, screenPos.Y) - Vector2.new(mousePos.X, mousePos.Y)).Magnitude
                    if dist <= closestDist then
                        closest = player
                        closestDist = dist
                    end
                end
            end
        end
    end
    return closest
end

RunService.RenderStepped:Connect(function()
    local mousePos = UserInputService:GetMouseLocation()
    FOVCircle.Position = Vector2.new(mousePos.X, mousePos.Y)

    if Config.ESPEnabled then
        UpdateESP()
        for player, tag in pairs(ESPFolder) do
            if player.Character and player.Character:FindFirstChild("HumanoidRootPart") then
                local hrp = player.Character.HumanoidRootPart
                local screenPos, onScreen = Camera:WorldToViewportPoint(hrp.Position)
                tag.Position = Vector2.new(screenPos.X, screenPos.Y - 25)
                tag.Visible = onScreen
                tag.Text = player.Name
            else
                tag.Visible = false
            end
        end
    end

    if Config.AimbotEnabled and Holding then
        local target = GetClosestTarget()
        if target then
            local part = target.Character and target.Character:FindFirstChild(Config.AimPart)
            if part then
                local dir = CFrame.new(Camera.CFrame.Position, part.Position)
                Camera.CFrame = Camera.CFrame:Lerp(dir, Config.Smoothness)
            end
        end
    end
end)

UserInputService.InputBegan:Connect(function(input, gpe)
    if input.UserInputType == Enum.UserInputType.MouseButton1 and Config.SilentAim and not gpe then
        local mousePos = UserInputService:GetMouseLocation()
        for _, player in ipairs(Players:GetPlayers()) do
            if player ~= LocalPlayer and player.Character and player.Character:FindFirstChild(Config.AimPart) then
                if not Config.TeamCheck or player.Team ~= LocalPlayer.Team then
                    local part = player.Character[Config.AimPart]
                    local screenPos, onScreen = Camera:WorldToViewportPoint(part.Position)
                    if onScreen then
                        local dist = (Vector2.new(screenPos.X, screenPos.Y) - Vector2.new(mousePos.X, mousePos.Y)).Magnitude
                        if dist <= Config.FOV then
                            print("[Silent Aim] Hit: " .. player.Name)
                        end
                    end
                end
            end
        end
    end
end)

if Config.NoSpread then
    local mt = getrawmetatable(game)
    local old = mt.__namecall
    setreadonly(mt, false)

    mt.__namecall = newcclosure(function(self, ...)
        local args = {...}
        local method = getnamecallmethod()

        if method == "FireServer" and tostring(self):lower():find("shoot") then

        end

        return old(self, unpack(args))
    end)
end

--Credits--
--flanut--

Features & Information

-Smol Hub- Aimbot Silent Aim ESP Some Gun Mods. Still working on improvements. I did use some ai but its for some help, I did most of script alone.
#*nal

Community Comments (1)

Most AI generated * ever, dont do that learn how to script man

More Scripts for Arsenal