Elton Hub Cracked Open Source
Key Required

Elton Hub Cracked Open Source

ArsenalGooeyHubGooeyHub 1.5K views 1.1K executesUpdated Aug 1, 2025
5.0/ 5(1 votes)
10100% Positive
Lua Script•535 lines (17409 chars)
local Players = game:GetService("Players")
local RunService = game:GetService("RunService")
local UserInputService = game:GetService("UserInputService")
local Camera = workspace.CurrentCamera
local LocalPlayer = Players.LocalPlayer
local Mouse = LocalPlayer:GetMouse()

-- Inicializa opções globais com valores padrão
getgenv().Options = getgenv().Options or {}
getgenv().Options.Aimbot = getgenv().Options.Aimbot or false
getgenv().Options.TeamCheck = getgenv().Options.TeamCheck or false
getgenv().Options.WallCheck = getgenv().Options.WallCheck or false
getgenv().Options.ShowFOV = getgenv().Options.ShowFOV or false
getgenv().Options.FOV = getgenv().Options.FOV or 150
getgenv().Options.Smoothness = getgenv().Options.Smoothness or 0.1
getgenv().Options.AimPart = getgenv().Options.AimPart or "Head"

-- ESP CONFIG
getgenv().ESPEnabled = getgenv().ESPEnabled or {
    Name = false,
    Health = false,
    Box = false,
    Tracer = false,
    Distance = false
}
getgenv().ESPColors = getgenv().ESPColors or {
    Name = Color3.fromRGB(0, 255, 255),
    Health = Color3.fromRGB(0, 255, 0),
    Box = Color3.fromRGB(0, 255, 255),
    Tracer = Color3.fromRGB(0, 255, 255),
    Distance = Color3.fromRGB(255, 255, 255)
}
getgenv().ShowTeamESP = getgenv().ShowTeamESP or false

-- Círculo do FOV
local FOVCircle = Drawing.new("Circle")
FOVCircle.Color = Color3.new(1, 1, 1)
FOVCircle.Thickness = 1
FOVCircle.Radius = getgenv().Options.FOV
FOVCircle.Filled = false
FOVCircle.Transparency = 1
FOVCircle.NumSides = 150
FOVCircle.Visible = false

RunService.RenderStepped:Connect(function()
    FOVCircle.Position = Vector2.new(Camera.ViewportSize.X / 2, Camera.ViewportSize.Y / 2)
    FOVCircle.Radius = getgenv().Options.FOV
    FOVCircle.Visible = getgenv().Options.Aimbot and getgenv().Options.ShowFOV
end)

-- Função para verificar se o alvo está visível (sem parede na frente)
local function isVisible(targetPart)
    local origin = Camera.CFrame.Position
    local direction = (targetPart.Position - origin)
    local ray = Ray.new(origin, direction)
    local hitPart = workspace:FindPartOnRayWithIgnoreList(ray, {LocalPlayer.Character}, false, true)
    return hitPart == nil or hitPart:IsDescendantOf(targetPart.Parent)
end

-- Função para encontrar inimigo mais próximo dentro do FOV e visível
local function getClosestEnemy()
    local closest = nil
    local shortestDist = getgenv().Options.FOV

    for _, player in pairs(Players:GetPlayers()) do
        if player ~= LocalPlayer and player.Character and player.Character:FindFirstChild(getgenv().Options.AimPart) then
            if getgenv().Options.TeamCheck and player.Team == LocalPlayer.Team then
                continue
            end

            local partPos = player.Character[getgenv().Options.AimPart].Position
            local screenPos, onScreen = Camera:WorldToViewportPoint(partPos)

            if onScreen then
                local dist = (Vector2.new(screenPos.X, screenPos.Y) - Vector2.new(Camera.ViewportSize.X / 2, Camera.ViewportSize.Y / 2)).Magnitude
                if dist <= shortestDist then
                    if getgenv().Options.WallCheck then
                        if isVisible(player.Character[getgenv().Options.AimPart]) then
                            closest = player
                            shortestDist = dist
                        end
                    else
                        closest = player
                        shortestDist = dist
                    end
                end
            end
        end
    end
    return closest
end

-- Aimbot loop
RunService.RenderStepped:Connect(function()
    if getgenv().Options.Aimbot then
        local target = getClosestEnemy()
        if target and target.Character and target.Character:FindFirstChild(getgenv().Options.AimPart) then
            local targetPos = target.Character[getgenv().Options.AimPart].Position
            local currentCF = Camera.CFrame
            local direction = (targetPos - currentCF.Position).Unit
            local newCF = CFrame.new(currentCF.Position, currentCF.Position + direction)
            Camera.CFrame = currentCF:Lerp(newCF, getgenv().Options.Smoothness)
        end
    end
end)

-- WindUI
local WindUI = loadstring(game:HttpGet("https://github.com/Footagesus/WindUI/releases/latest/download/main.lua"))()

local Window = WindUI:CreateWindow({
    Title = "Arsenal",
    Icon = "check",
    Author = "By Elton",
    Folder = "EltonsHub",
    Size = UDim2.fromOffset(580, 460),
    Transparent = true,
    Theme = "Dark",
    Resizable = true,
    SideBarWidth = 200,
    Background = "rbxassetid://116498441103707",
    BackgroundImageTransparency = 0.95,
    HideSearchBar = true,
    ScrollBarEnabled = true,
    User = {
        Enabled = true,
        Anonymous = false,
    },
})

local TabMain = Window:Tab({ Title  = "Main", Icon = "house", Locked = false})
local TabGun = Window:Tab({ Title = "Guns", Icon = "crosshair", Locked = false})
local TabEsp = Window:Tab({ Title = "ESP", Icon = "eye", Locked = false})
local TabEspcolor = Window:Tab({ Title = "ESP Color", Icon = "palette", Locked = false})

-- ESP
local ESPObjects = {}
local NAME_SIZE, HEALTH_SIZE, DIST_SIZE = 16, 14, 14
local BOX_THICKNESS, TRACER_THICKNESS = 2, 2

TabEsp:Toggle({
    Title = "Show Team ESP",
    Default = getgenv().ShowTeamESP,
    Callback = function(val)
        getgenv().ShowTeamESP = val
    end
})

for name, _ in pairs(getgenv().ESPEnabled) do
    TabEsp:Toggle({
        Title = name .. " ESP",
        Default = getgenv().ESPEnabled[name],
        Callback = function(val)
            getgenv().ESPEnabled[name] = val
        end
    })
end

for name, _ in pairs(getgenv().ESPColors) do
    TabEspcolor:Colorpicker({
        Title = name .. " Color",
        Default = getgenv().ESPColors[name],
        Callback = function(color)
            getgenv().ESPColors[name] = color
        end
    })
end

local function CreatePlayerESP(player)
    if ESPObjects[player] then return end
    ESPObjects[player] = {
        Name = Drawing.new("Text"),
        Health = Drawing.new("Text"),
        Distance = Drawing.new("Text"),
        Box = Drawing.new("Square"),
        Tracer = Drawing.new("Line")
    }
    local esp = ESPObjects[player]
    for _, text in ipairs({esp.Name, esp.Health, esp.Distance}) do
        text.Center = true
        text.Outline = true
        text.Font = 2
        text.OutlineColor = Color3.new(0, 0, 0)
    end
    esp.Name.Size = NAME_SIZE
    esp.Health.Size = HEALTH_SIZE
    esp.Distance.Size = DIST_SIZE
    esp.Box.Thickness = BOX_THICKNESS
    esp.Box.Transparency = 0.8
    esp.Box.Filled = false
    esp.Tracer.Thickness = TRACER_THICKNESS
    esp.Tracer.Transparency = 0.8
end

local function RemovePlayerESP(player)
    if ESPObjects[player] then
        for _, obj in pairs(ESPObjects[player]) do obj:Remove() end
        ESPObjects[player] = nil
    end
end

RunService.RenderStepped:Connect(function()
    for _, player in pairs(Players:GetPlayers()) do
        if player ~= LocalPlayer then
            if not ESPObjects[player] then
                CreatePlayerESP(player)
            end
            local char = player.Character
            local esp = ESPObjects[player]
            local show = getgenv().ShowTeamESP or (player.Team ~= LocalPlayer.Team)
            if char and char:FindFirstChild("HumanoidRootPart") and char:FindFirstChild("Head") and char:FindFirstChildOfClass("Humanoid") and show then
                local hrp, head, hum = char.HumanoidRootPart, char.Head, char:FindFirstChildOfClass("Humanoid")
                local pos, onScreen = Camera:WorldToViewportPoint(hrp.Position)
                local headPos = Camera:WorldToViewportPoint(head.Position)
                local size = math.max(Camera.ViewportSize.Y / pos.Z * 2, 4)
                esp.Box.Color = getgenv().ESPColors.Box
                esp.Tracer.Color = getgenv().ESPColors.Tracer
                esp.Name.Color = getgenv().ESPColors.Name
                esp.Distance.Color = getgenv().ESPColors.Distance
                esp.Box.Visible = getgenv().ESPEnabled.Box and onScreen
                if esp.Box.Visible then
                    esp.Box.Size = Vector2.new(size * 0.8, size * 1.2)
                    esp.Box.Position = Vector2.new(pos.X - size * 0.4, pos.Y - size * 0.6)
                end
                esp.Name.Visible = getgenv().ESPEnabled.Name and onScreen
                if esp.Name.Visible then
                    esp.Name.Text = player.Name
                    esp.Name.Position = Vector2.new(headPos.X, headPos.Y - 30)
                end
                esp.Health.Visible = getgenv().ESPEnabled.Health and onScreen
                if esp.Health.Visible then
                    local hp = math.floor((hum.Health / hum.MaxHealth) * 100)
                    esp.Health.Text = hp .. "%"
                    esp.Health.Color = Color3.fromRGB(255 - hp * 2.55, hp * 2.55, 0)
                    esp.Health.Position = Vector2.new(headPos.X, headPos.Y - 50)
                end
                esp.Distance.Visible = getgenv().ESPEnabled.Distance and onScreen
                if esp.Distance.Visible then
                    local dist = (LocalPlayer.Character and LocalPlayer.Character:FindFirstChild("HumanoidRootPart"))
                        and (LocalPlayer.Character.HumanoidRootPart.Position - hrp.Position).Magnitude or 0
                    esp.Distance.Text = string.format("%.0f studs", dist)
                    esp.Distance.Position = Vector2.new(headPos.X + esp.Name.TextBounds.X / 2 + esp.Distance.TextBounds.X / 2 + 5, headPos.Y - 30)
                end
                esp.Tracer.Visible = getgenv().ESPEnabled.Tracer and onScreen
                if esp.Tracer.Visible then
                    local scr = Camera.ViewportSize
                    esp.Tracer.From = Vector2.new(scr.X / 2, scr.Y)
                    esp.Tracer.To = Vector2.new(pos.X, pos.Y)
                end
            else
                for _, v in pairs(esp) do v.Visible = false end
            end
        end
    end
    for player, _ in pairs(ESPObjects) do
        if not Players:FindFirstChild(player.Name) then
            RemovePlayerESP(player)
        end
    end
end)

Players.PlayerAdded:Connect(CreatePlayerESP)
Players.PlayerRemoving:Connect(RemovePlayerESP)

-- RESTANTE DO SEU SCRIPT (Aimbot, Guns, etc) ABAIXO

-- Toggle Aimbot
TabMain:Toggle({
    Title = "Aimbot",
    Icon = "check",
    Default = getgenv().Options.Aimbot,
    Callback = function(state)
        getgenv().Options.Aimbot = state
    end
})

-- Toggle TeamCheck
TabMain:Toggle({
    Title = "Team Check",
    Icon = "check",
    Default = getgenv().Options.TeamCheck,
    Callback = function(state)
        getgenv().Options.TeamCheck = state
    end
})

-- Toggle WallCheck
TabMain:Toggle({
    Title = "WallCheck",
    Icon = "check",
    Default = getgenv().Options.WallCheck,
    Callback = function(state)
        getgenv().Options.WallCheck = state
    end
})

-- Toggle ShowFOV
TabMain:Toggle({
    Title = "Show FOV",
    Icon = "check",
    Default = getgenv().Options.ShowFOV,
    Callback = function(state)
        getgenv().Options.ShowFOV = state
    end
})

local HoldClick = true

local Players = game:GetService('Players')
local RunService = game:GetService('RunService')

local LocalPlayer = Players.LocalPlayer
local Mouse = LocalPlayer:GetMouse()

local Pressing = false
local Toggle = false

-- Toggle da Interface
TabMain:Toggle({
    Title = "Triggerbot",
    Icon = "check",
    Type = "Toggle",
    Default = false,
    Callback = function(state)
        Toggle = state
        print("Triggerbot Ativado: " .. tostring(state))
        -- Se desligar enquanto segurando clique, solta imediatamente
        if not state and Pressing then
            mouse1release()
            Pressing = false
        end
    end
})

-- Loop principal
RunService.RenderStepped:Connect(function()
    if not Toggle then return end

    local target = Mouse.Target
    local model = target and target:FindFirstAncestorWhichIsA("Model")
    local isHumanoid = model and model:FindFirstChild("Humanoid")

    if isHumanoid then
        if HoldClick then
            if not Pressing then
                mouse1press()
                Pressing = true
            end
        else
            mouse1press()
            mouse1release()
        end
    else
        if Pressing then
            mouse1release()
            Pressing = false
        end
    end
end)


TabMain:Dropdown({
    Title = "AimPart",
    Values = {"Head", "HumanoidRootPart"},
    Value = getgenv().Options.AimPart,
    Callback = function(option)
        getgenv().Options.AimPart = option
    end
})

-- Slider FOV
TabMain:Slider({
    Title = "FOV",
    Step = 1,
    Value = {
        Min = 10,
        Max = 500,
        Default = getgenv().Options.FOV,
    },
    Callback = function(value)
        local numValue = tonumber(value) or 150
        getgenv().Options.FOV = numValue
        FOVCircle.Radius = numValue
    end
})

-- Slider Smoothness
TabMain:Slider({
    Title = "Smoothness",
    Step = 0.01,
    Value = {
        Min = 0.01,
        Max = 1,
        Default = getgenv().Options.Smoothness,
    },
    Callback = function(value)
        local numValue = tonumber(value) or 0.1
        getgenv().Options.Smoothness = numValue
    end
})

-- Guns Tab - Sliders corrigidos
TabGun:Slider({
    Title = "Ammo",
    Step = 1,
    Value = {
        Min = 20,
        Max = 999,
        Default = 70,
    },
    Callback = function(value)
        local numValue = tonumber(value) or 70
        local weaponsFolder = game:GetService("ReplicatedStorage"):WaitForChild("Weapons")
        for _, weapon in pairs(weaponsFolder:GetChildren()) do
            if weapon:FindFirstChild("Ammo") and weapon.Ammo:IsA("IntValue") then
                weapon.Ammo.Value = numValue
            end
        end
    end
})

TabGun:Slider({
    Title = "FireRate",
    Step = 1,
    Value = {
        Min = 0,
        Max = 10,
        Default = 1,
    },
    Callback = function(value)
        local numValue = tonumber(value) or 1
        local weaponsFolder = game:GetService("ReplicatedStorage"):WaitForChild("Weapons")
        for _, weapon in pairs(weaponsFolder:GetChildren()) do
            local fireRate = weapon:FindFirstChild("FireRate")
            if fireRate and (fireRate:IsA("NumberValue") or fireRate:IsA("IntValue")) then
                fireRate.Value = numValue
            end
        end
    end
})

TabGun:Slider({
    Title = "Spread",
    Step = 1,
    Value = {
        Min = 0,
        Max = 10,
        Default = 1,
    },
    Callback = function(value)
        local numValue = tonumber(value) or 1
        local weaponsFolder = game:GetService("ReplicatedStorage"):WaitForChild("Weapons")
        for _, weapon in pairs(weaponsFolder:GetChildren()) do
            local Spread = weapon:FindFirstChild("Spread")
            if Spread and (Spread:IsA("NumberValue") or Spread:IsA("IntValue")) then
                Spread.Value = numValue
            end
        end
    end
})

TabGun:Slider({
    Title = "ReloadTime",
    Step = 1,
    Value = {
        Min = 0,
        Max = 10,
        Default = 1,
    },
    Callback = function(value)
        local numValue = tonumber(value) or 1
        local weaponsFolder = game:GetService("ReplicatedStorage"):WaitForChild("Weapons")
        for _, weapon in pairs(weaponsFolder:GetChildren()) do
            local ReloadTime = weapon:FindFirstChild("ReloadTime")
            if ReloadTime and (ReloadTime:IsA("NumberValue") or ReloadTime:IsA("IntValue")) then
                ReloadTime.Value = numValue
            end
        end
    end
})

TabGun:Slider({
    Title = "Recoil",
    Step = 1,
    Value = {
        Min = 0,
        Max = 10,
        Default = 1,
    },
    Callback = function(value)
        local numValue = tonumber(value) or 1
        local weaponsFolder = game:GetService("ReplicatedStorage"):WaitForChild("Weapons")
        for _, weapon in pairs(weaponsFolder:GetChildren()) do
            local RecoilControl = weapon:FindFirstChild("RecoilControl")
            if RecoilControl and (RecoilControl:IsA("NumberValue") or RecoilControl:IsA("IntValue")) then
                RecoilControl.Value = numValue
            end
        end
    end
})

TabGun:Slider({
    Title = "Range",
    Step = 1,
    Value = {
        Min = 1,
        Max = 5000,
        Default = 1,
    },
    Callback = function(value)
        local numValue = tonumber(value) or 1
        local weaponsFolder = game:GetService("ReplicatedStorage"):WaitForChild("Weapons")
        for _, weapon in pairs(weaponsFolder:GetChildren()) do
            local Range = weapon:FindFirstChild("Range")
            if Range and (Range:IsA("NumberValue") or Range:IsA("IntValue")) then
                Range.Value = numValue
            end
        end
    end
})

TabGun:Toggle({
    Title = "Automatic",
    Default = false,
    Type = "Checkbox",
    Icon = "check",
    Callback = function(state)
        local weaponsFolder = game:GetService("ReplicatedStorage"):WaitForChild("Weapons")
        for _, weapon in pairs(weaponsFolder:GetChildren()) do
            local auto = weapon:FindFirstChild("Auto")
            if auto and auto:IsA("BoolValue") then
                auto.Value = state
            end
        end
    end
})

Features & Information

Aimbot Fire rate adjuster Esp 0 recoil 0 spread
#Cracked#*nal#Open Source#Elton Hub#Aimbot

Community Comments (2)

steamgta*steamgta*Aug 1, 2025

its rlly bad

GooeyHubGooeyHubAug 1, 2025

@steamgta yea i know, i dont even think esp works but i know fire rate set to max, recoil set to 0, and spread set to 0 +aimbot works alright

More Scripts for Arsenal