all games hub
Key RequiredUniversal

all games hub

Universal Scriptutka9421utka9421 55 views 180 executesUpdated Jul 15, 2026
Unrated
00
Lua Script•793 lines (32372 chars)
-- ProGame Hub Xeno Edition v5.4 — Speed Lock + Speed Bind
local Players = game:GetService("Players")
local RunService = game:GetService("RunService")
local UserInputService = game:GetService("UserInputService")
local TweenService = game:GetService("TweenService")
local Lighting = game:GetService("Lighting")
local Workspace = game:GetService("Workspace")
local Camera = Workspace.CurrentCamera
local LocalPlayer = Players.LocalPlayer

pcall(function()
    if LocalPlayer.PlayerGui:FindFirstChild("ProGameHub") then
        LocalPlayer.PlayerGui.ProGameHub:Destroy()
    end
end)

print("ProGame Hub v5.4 loaded!")

-- ================== СОХРАНЕНИЕ НАСТРОЕК ==================
local settingsFile = "ProGameHub_v5_Settings.json"
local function saveSettings()
    local s = {
        aimbotOn, aimbotFOV, aimbotSmooth, aimbotTeamCheck, aimbotVisCheck, fovCircleOn,
        triggerOn, triggerBind, triggerMinDelay, triggerMaxDelay,
        flyOn, flySpeed, noclipOn, tpBind, saveBind, speedBind,
        speedOn, speedVal, speedLock, jumpOn, jumpVal, jumpLock,
        spinOn, spinSpeed,
        espOn, espBoxes, espNames, espHealth, espLines,
        fbOn, menuKey, panicKey, afkOn
    }
    pcall(function()
        if writefile then writefile(settingsFile, game:GetService("HttpService"):JSONEncode(s)) end
    end)
end

local function loadSettings()
    pcall(function()
        if readfile and isfile and isfile(settingsFile) then
            local raw = readfile(settingsFile)
            local s = game:GetService("HttpService"):JSONDecode(raw)
            if s and type(s) == "table" and #s >= 33 then
                aimbotOn = s[1]; aimbotFOV = s[2]; aimbotSmooth = s[3]; aimbotTeamCheck = s[4]; aimbotVisCheck = s[5]; fovCircleOn = s[6]
                triggerOn = s[7]; triggerBind = s[8]; triggerMinDelay = s[9]; triggerMaxDelay = s[10]
                flyOn = s[11]; flySpeed = s[12]; noclipOn = s[13]; tpBind = s[14]; saveBind = s[15]; speedBind = s[16]
                speedOn = s[17]; speedVal = s[18]; speedLock = s[19]; jumpOn = s[20]; jumpVal = s[21]; jumpLock = s[22]
                spinOn = s[23]; spinSpeed = s[24]
                espOn = s[25]; espBoxes = s[26]; espNames = s[27]; espHealth = s[28]; espLines = s[29]
                fbOn = s[30]; menuKey = s[31]; panicKey = s[32]; afkOn = s[33]
            end
        end
    end)
end

-- ================== ПЕРЕМЕННЫЕ ==================
local aimbotOn, aimbotFOV, aimbotSmooth, aimbotTeamCheck, aimbotVisCheck, fovCircleOn = false, 90, 0.3, true, true, false
local triggerOn, triggerBind, triggerMinDelay, triggerMaxDelay = false, Enum.KeyCode.E, 0.12, 0.3
local flyOn, flySpeed, flyBody, flyConn = false, 50, nil, nil
local noclipOn = false
local savedPos, tpBind, saveBind, speedBind = nil, Enum.KeyCode.X, Enum.KeyCode.V, Enum.KeyCode.G
local speedOn, speedVal, speedLock = false, 50, true  -- speedLock по умолчанию ВКЛЮЧЕН, чтобы скорость не сбрасывалась
local jumpOn, jumpVal, jumpLock = false, 50, true      -- jumpLock по умолчанию ВКЛЮЧЕН
local spinOn, spinSpeed = false, 10
local espOn, espBoxes, espNames, espHealth, espLines = false, true, true, true, false
local fbOn = false
local menuKey, panicKey, afkOn = Enum.KeyCode.LeftControl, Enum.KeyCode.P, true

loadSettings()

-- ================== BLUR ==================
local blur = Instance.new("BlurEffect")
blur.Name = "MenuBlur"
blur.Size = 0
blur.Parent = Lighting

local function setBlur(value)
    pcall(function()
        TweenService:Create(blur, TweenInfo.new(0.3), {Size = value}):Play()
    end)
end

-- ================== GUI ==================
local gui = Instance.new("ScreenGui")
gui.Name = "ProGameHub"
gui.ResetOnSpawn = false
gui.ZIndexBehavior = Enum.ZIndexBehavior.Sibling
gui.IgnoreGuiInset = true
gui.Parent = LocalPlayer:WaitForChild("PlayerGui")

local background = Instance.new("Frame")
background.Size = UDim2.new(1, 0, 1, 0)
background.BackgroundColor3 = Color3.new(0, 0, 0)
background.BackgroundTransparency = 1
background.BorderSizePixel = 0
background.ZIndex = 15
background.Visible = false
background.Active = true
background.Parent = gui

local openBtn = Instance.new("TextButton")
openBtn.Size = UDim2.new(0, 56, 0, 56)
openBtn.Position = UDim2.new(0.5, -28, 0.5, -28)
openBtn.BackgroundColor3 = Color3.fromRGB(15, 15, 20)
openBtn.BorderSizePixel = 0
openBtn.Text = "😎"
openBtn.TextColor3 = Color3.fromRGB(0, 255, 255)
openBtn.Font = Enum.Font.GothamBold
openBtn.TextSize = 26
openBtn.ZIndex = 10
openBtn.Active = true
openBtn.Draggable = true
openBtn.Parent = gui
Instance.new("UICorner", openBtn).CornerRadius = UDim.new(0, 12)
Instance.new("UIStroke", openBtn).Color = Color3.fromRGB(0, 255, 255)
Instance.new("UIStroke", openBtn).Thickness = 2

local mainFrame = Instance.new("Frame")
mainFrame.Size = UDim2.new(0, 480, 0, 620)
mainFrame.Position = UDim2.new(0.5, -240, 0.5, -310)
mainFrame.BackgroundColor3 = Color3.fromRGB(12, 12, 18)
mainFrame.BorderSizePixel = 0
mainFrame.Visible = false
mainFrame.ZIndex = 20
mainFrame.Parent = gui
Instance.new("UICorner", mainFrame).CornerRadius = UDim.new(0, 16)
Instance.new("UIStroke", mainFrame).Color = Color3.fromRGB(0, 200, 255)
Instance.new("UIStroke", mainFrame).Thickness = 2

local titleBar = Instance.new("Frame")
titleBar.Size = UDim2.new(1, 0, 0, 45)
titleBar.BackgroundColor3 = Color3.fromRGB(8, 8, 14)
titleBar.BorderSizePixel = 0
titleBar.ZIndex = 21
titleBar.Parent = mainFrame
Instance.new("UICorner", titleBar).CornerRadius = UDim.new(0, 16)

local titleText = Instance.new("TextLabel")
titleText.Size = UDim2.new(1, -50, 1, 0)
titleText.Position = UDim2.new(0, 20, 0, 0)
titleText.Text = "⚡ PROGAME HUB"
titleText.TextColor3 = Color3.fromRGB(0, 255, 255)
titleText.Font = Enum.Font.GothamBlack
titleText.TextSize = 20
titleText.BackgroundTransparency = 1
titleText.ZIndex = 22
titleText.Parent = titleBar

local closeBtn = Instance.new("TextButton")
closeBtn.Size = UDim2.new(0, 32, 0, 32)
closeBtn.Position = UDim2.new(1, -40, 0, 6)
closeBtn.BackgroundColor3 = Color3.fromRGB(255, 40, 60)
closeBtn.BorderSizePixel = 0
closeBtn.Text = "✕"
closeBtn.TextColor3 = Color3.new(1,1,1)
closeBtn.Font = Enum.Font.GothamBold
closeBtn.TextSize = 18
closeBtn.ZIndex = 22
closeBtn.Parent = titleBar
Instance.new("UICorner", closeBtn).CornerRadius = UDim.new(0, 8)

local tabContainer = Instance.new("Frame")
tabContainer.Size = UDim2.new(1, 0, 0, 36)
tabContainer.Position = UDim2.new(0, 0, 0, 50)
tabContainer.BackgroundTransparency = 1
tabContainer.ZIndex = 21
tabContainer.Parent = mainFrame

local tabs, tabFrames = {}, {}
local tabNames = {"Shooter", "Parkour", "Visual", "Settings"}

local function switchTab(i)
    for _, b in ipairs(tabs) do
        b.BackgroundColor3 = Color3.fromRGB(18, 18, 26)
        b.TextColor3 = Color3.fromRGB(150, 150, 150)
    end
    if tabs[i] then
        tabs[i].BackgroundColor3 = Color3.fromRGB(0, 180, 220)
        tabs[i].TextColor3 = Color3.new(1,1,1)
    end
    for _, f in ipairs(tabFrames) do f.Visible = false end
    if tabFrames[i] then tabFrames[i].Visible = true end
end

for i, name in ipairs(tabNames) do
    local btn = Instance.new("TextButton")
    btn.Size = UDim2.new(0.25, -4, 1, 0)
    btn.Position = UDim2.new((i-1)*0.25, 2, 0, 0)
    btn.BackgroundColor3 = i == 1 and Color3.fromRGB(0, 180, 220) or Color3.fromRGB(18, 18, 26)
    btn.BorderSizePixel = 0
    btn.Text = name
    btn.TextColor3 = i == 1 and Color3.new(1,1,1) or Color3.fromRGB(150, 150, 150)
    btn.Font = Enum.Font.GothamBold
    btn.TextSize = 13
    btn.ZIndex = 21
    btn.Parent = tabContainer
    Instance.new("UICorner", btn).CornerRadius = UDim.new(0, 8)
    btn.MouseButton1Click:Connect(function() switchTab(i) end)
    table.insert(tabs, btn)
end

local contentArea = Instance.new("Frame")
contentArea.Size = UDim2.new(1, 0, 1, -90)
contentArea.Position = UDim2.new(0, 0, 0, 90)
contentArea.BackgroundTransparency = 1
contentArea.BorderSizePixel = 0
contentArea.ZIndex = 21
contentArea.Parent = mainFrame

local function createTabContent()
    local sf = Instance.new("ScrollingFrame")
    sf.Size = UDim2.new(1, 0, 1, 0)
    sf.CanvasSize = UDim2.new(0, 0, 0, 1500)
    sf.BackgroundTransparency = 1
    sf.BorderSizePixel = 0
    sf.Visible = false
    sf.ScrollBarThickness = 4
    sf.ScrollingDirection = Enum.ScrollingDirection.Y
    sf.ZIndex = 21
    sf.Parent = contentArea
    local layout = Instance.new("UIListLayout", sf)
    layout.Padding = UDim.new(0, 10)
    layout.SortOrder = Enum.SortOrder.LayoutOrder
    layout.HorizontalAlignment = Enum.HorizontalAlignment.Center
    layout.VerticalAlignment = Enum.VerticalAlignment.Top
    sf:GetPropertyChangedSignal("CanvasPosition"):Connect(function()
        sf.CanvasSize = UDim2.new(0, 0, 0, layout.AbsoluteContentSize.Y + 20)
    end)
    return sf
end

for i = 1, 4 do
    tabFrames[i] = createTabContent()
end
tabFrames[1].Visible = true

-- ================== UI ЭЛЕМЕНТЫ ==================
local function sectionLabel(parent, text)
    local lbl = Instance.new("TextLabel")
    lbl.Size = UDim2.new(1, -20, 0, 26)
    lbl.BackgroundTransparency = 1
    lbl.Text = "— " .. text
    lbl.TextColor3 = Color3.fromRGB(0, 220, 255)
    lbl.Font = Enum.Font.GothamBold
    lbl.TextSize = 14
    lbl.TextXAlignment = Enum.TextXAlignment.Left
    lbl.Parent = parent
end

local function createToggle(parent, text, default, callback)
    local frame = Instance.new("Frame")
    frame.Size = UDim2.new(1, -20, 0, 44)
    frame.BackgroundColor3 = Color3.fromRGB(20, 20, 30)
    frame.BorderSizePixel = 0
    frame.Parent = parent
    Instance.new("UICorner", frame).CornerRadius = UDim.new(0, 10)
    Instance.new("UIStroke", frame).Color = Color3.fromRGB(0, 180, 220)
    local label = Instance.new("TextLabel")
    label.Size = UDim2.new(0.7, 0, 1, 0)
    label.Position = UDim2.new(0, 12, 0, 0)
    label.BackgroundTransparency = 1
    label.Text = text
    label.TextColor3 = Color3.new(1,1,1)
    label.Font = Enum.Font.Gotham
    label.TextSize = 13
    label.TextXAlignment = Enum.TextXAlignment.Left
    label.Parent = frame
    local btn = Instance.new("TextButton")
    btn.Size = UDim2.new(0, 42, 0, 24)
    btn.Position = UDim2.new(1, -54, 0, 10)
    btn.BackgroundColor3 = default and Color3.fromRGB(0, 200, 180) or Color3.fromRGB(200, 50, 70)
    btn.BorderSizePixel = 0
    btn.Text = default and "ON" or "OFF"
    btn.TextColor3 = Color3.new(1,1,1)
    btn.Font = Enum.Font.GothamBold
    btn.TextSize = 11
    btn.Parent = frame
    Instance.new("UICorner", btn).CornerRadius = UDim.new(0, 12)
    local isOn = default
    btn.MouseButton1Click:Connect(function()
        isOn = not isOn
        btn.BackgroundColor3 = isOn and Color3.fromRGB(0, 200, 180) or Color3.fromRGB(200, 50, 70)
        btn.Text = isOn and "ON" or "OFF"
        if callback then callback(isOn) end
        saveSettings()
    end)
    return frame
end

local function createSlider(parent, text, min, max, default, callback)
    local frame = Instance.new("Frame")
    frame.Size = UDim2.new(1, -20, 0, 66)
    frame.BackgroundColor3 = Color3.fromRGB(20, 20, 30)
    frame.BorderSizePixel = 0
    frame.Parent = parent
    Instance.new("UICorner", frame).CornerRadius = UDim.new(0, 10)
    Instance.new("UIStroke", frame).Color = Color3.fromRGB(0, 180, 220)
    local lbl = Instance.new("TextLabel")
    lbl.Size = UDim2.new(0.6, 0, 0, 22)
    lbl.Position = UDim2.new(0, 12, 0, 6)
    lbl.BackgroundTransparency = 1
    lbl.Text = text
    lbl.TextColor3 = Color3.new(1,1,1)
    lbl.Font = Enum.Font.Gotham
    lbl.TextSize = 12
    lbl.TextXAlignment = Enum.TextXAlignment.Left
    lbl.Parent = frame
    local valLbl = Instance.new("TextLabel")
    valLbl.Size = UDim2.new(0.4, -12, 0, 22)
    valLbl.Position = UDim2.new(0.6, 0, 0, 6)
    valLbl.BackgroundTransparency = 1
    valLbl.Text = tostring(default)
    valLbl.TextColor3 = Color3.fromRGB(0, 255, 255)
    valLbl.Font = Enum.Font.GothamBold
    valLbl.TextSize = 12
    valLbl.TextXAlignment = Enum.TextXAlignment.Right
    valLbl.Parent = frame
    local bar = Instance.new("TextButton")
    bar.Size = UDim2.new(1, -24, 0, 14)
    bar.Position = UDim2.new(0, 12, 0, 36)
    bar.BackgroundColor3 = Color3.fromRGB(30, 30, 44)
    bar.BorderSizePixel = 0
    bar.Text = ""
    bar.Parent = frame
    Instance.new("UICorner", bar).CornerRadius = UDim.new(0, 7)
    local fill = Instance.new("Frame")
    fill.Size = UDim2.new((default-min)/(max-min), 0, 1, 0)
    fill.BackgroundColor3 = Color3.fromRGB(0, 200, 255)
    fill.BorderSizePixel = 0
    fill.Parent = bar
    Instance.new("UICorner", fill).CornerRadius = UDim.new(0, 7)
    local drag = false
    local function upd()
        local mp = UserInputService:GetMouseLocation()
        local frac = math.clamp((mp.X - bar.AbsolutePosition.X) / bar.AbsoluteSize.X, 0, 1)
        local val = math.floor(min + (max - min) * frac)
        fill.Size = UDim2.new(frac, 0, 1, 0)
        valLbl.Text = tostring(val)
        if callback then callback(val) end
        saveSettings()
    end
    bar.MouseButton1Down:Connect(function() drag = true upd() end)
    UserInputService.InputEnded:Connect(function(i) if i.UserInputType == Enum.UserInputType.MouseButton1 then drag = false end end)
    UserInputService.InputChanged:Connect(function(i) if drag and i.UserInputType == Enum.UserInputType.MouseMovement then upd() end end)
    return frame
end

local function createButton(parent, text, callback)
    local btn = Instance.new("TextButton")
    btn.Size = UDim2.new(1, -20, 0, 40)
    btn.BackgroundColor3 = Color3.fromRGB(25, 25, 38)
    btn.BorderSizePixel = 0
    btn.Text = text
    btn.TextColor3 = Color3.fromRGB(0, 255, 220)
    btn.Font = Enum.Font.GothamBold
    btn.TextSize = 14
    btn.Parent = parent
    Instance.new("UICorner", btn).CornerRadius = UDim.new(0, 10)
    Instance.new("UIStroke", btn).Color = Color3.fromRGB(0, 180, 220)
    btn.MouseButton1Click:Connect(callback)
    return btn
end

local function createBind(parent, text, defaultKey, callback)
    local frame = Instance.new("Frame")
    frame.Size = UDim2.new(1, -20, 0, 44)
    frame.BackgroundColor3 = Color3.fromRGB(20, 20, 30)
    frame.BorderSizePixel = 0
    frame.Parent = parent
    Instance.new("UICorner", frame).CornerRadius = UDim.new(0, 10)
    Instance.new("UIStroke", frame).Color = Color3.fromRGB(0, 180, 220)
    local lbl = Instance.new("TextLabel")
    lbl.Size = UDim2.new(0.6, 0, 1, 0)
    lbl.Position = UDim2.new(0, 12, 0, 0)
    lbl.BackgroundTransparency = 1
    lbl.Text = text
    lbl.TextColor3 = Color3.new(1,1,1)
    lbl.Font = Enum.Font.Gotham
    lbl.TextSize = 12
    lbl.TextXAlignment = Enum.TextXAlignment.Left
    lbl.Parent = frame
    local bindBtn = Instance.new("TextButton")
    bindBtn.Size = UDim2.new(0, 70, 0, 26)
    bindBtn.Position = UDim2.new(1, -82, 0, 9)
    bindBtn.BackgroundColor3 = Color3.fromRGB(30, 30, 44)
    bindBtn.BorderSizePixel = 0
    bindBtn.Text = string.sub(tostring(defaultKey), 14)
    bindBtn.TextColor3 = Color3.new(1,1,1)
    bindBtn.Font = Enum.Font.GothamBold
    bindBtn.TextSize = 12
    bindBtn.Parent = frame
    Instance.new("UICorner", bindBtn).CornerRadius = UDim.new(0, 8)
    Instance.new("UIStroke", bindBtn).Color = Color3.fromRGB(0, 180, 220)
    local waiting = false
    bindBtn.MouseButton1Click:Connect(function()
        waiting = true
        bindBtn.Text = "..."
    end)
    UserInputService.InputBegan:Connect(function(i, gp)
        if waiting and not gp and i.UserInputType == Enum.UserInputType.Keyboard then
            bindBtn.Text = string.sub(tostring(i.KeyCode), 14)
            waiting = false
            if callback then callback(i.KeyCode) end
            saveSettings()
        end
    end)
    return frame
end

-- ================== ФУНКЦИИ ==================
local function getChar() return LocalPlayer.Character end
local function getRoot() local c = getChar() return c and c:FindFirstChild("HumanoidRootPart") end
local function getHum() local c = getChar() return c and c:FindFirstChild("Humanoid") end

-- ESP
local espDrawings = {}
local function enableESP(on)
    espOn = on
    if not on then
        for _, d in ipairs(espDrawings) do pcall(function() d:Remove() end) end
        espDrawings = {}
    end
end

local function updateESP()
    if not espOn then return end
    for _, d in ipairs(espDrawings) do pcall(function() d:Remove() end) end
    espDrawings = {}
    for _, p in ipairs(Players:GetPlayers()) do
        if p ~= LocalPlayer and p.Character then
            local char = p.Character
            local head = char:FindFirstChild("Head")
            local hum = char:FindFirstChild("Humanoid")
            local root = char:FindFirstChild("HumanoidRootPart")
            if not head or not hum or hum.Health <= 0 or not root or not Camera then continue end
            local headPos, headOnScreen = Camera:WorldToViewportPoint(head.Position)
            local rootPos, rootOnScreen = Camera:WorldToViewportPoint(root.Position - Vector3.new(0, 3, 0))
            if not headOnScreen and not rootOnScreen then continue end
            if headPos.Z < 0 then continue end
            local screenX = headPos.X
            local screenTop = headPos.Y
            local screenBottom = rootPos.Y
            if not rootOnScreen or rootPos.Z < 0 then screenBottom = screenTop + 100 end
            local boxHeight = math.abs(screenBottom - screenTop)
            if boxHeight < 15 then boxHeight = 15 end
            if boxHeight > 300 then boxHeight = 300 end
            local boxWidth = boxHeight * 0.5
            local boxX = screenX - boxWidth / 2
            local boxY = screenTop - boxHeight * 0.05
            if espBoxes then
                local box = Drawing.new("Square")
                box.Visible = true; box.Color = Color3.new(0,1,1); box.Thickness = 2; box.Filled = false
                box.Position = Vector2.new(boxX, boxY); box.Size = Vector2.new(boxWidth, boxHeight)
                table.insert(espDrawings, box)
            end
            if espNames then
                local nm = Drawing.new("Text")
                nm.Visible = true; nm.Color = Color3.new(0,1,1); nm.Size = 14; nm.Center = true; nm.Outline = true
                nm.Text = p.Name; nm.Position = Vector2.new(screenX, boxY - 18)
                table.insert(espDrawings, nm)
            end
            if espHealth then
                local pct = math.clamp(hum.Health / hum.MaxHealth, 0, 1)
                local barX = boxX - 8; local barTop = boxY; local barBottom = boxY + boxHeight
                local bg = Drawing.new("Line")
                bg.Visible = true; bg.Color = Color3.new(0.2,0.2,0.2); bg.Thickness = 3
                bg.From = Vector2.new(barX, barBottom); bg.To = Vector2.new(barX, barTop)
                table.insert(espDrawings, bg)
                local bar = Drawing.new("Line")
                bar.Visible = true; bar.Thickness = 3
                bar.Color = Color3.fromRGB(255*(1-pct), 255*pct, 0)
                bar.From = Vector2.new(barX, barBottom); bar.To = Vector2.new(barX, barBottom - boxHeight * pct)
                table.insert(espDrawings, bar)
            end
            if espLines then
                local ln = Drawing.new("Line")
                ln.Visible = true; ln.Color = Color3.new(0,1,1); ln.Thickness = 1; ln.Transparency = 0.5
                ln.From = Vector2.new(Camera.ViewportSize.X/2, Camera.ViewportSize.Y)
                ln.To = Vector2.new(screenX, boxY + boxHeight/2)
                table.insert(espDrawings, ln)
            end
        end
    end
end

-- Aimbot
local function getClosest()
    local m = LocalPlayer:GetMouse()
    if not Camera then return nil end
    local best, bestD = nil, aimbotFOV
    for _, v in ipairs(Players:GetPlayers()) do
        if v ~= LocalPlayer and v.Character and v.Character:FindFirstChild("Head") then
            local h = v.Character:FindFirstChild("Humanoid")
            if h and h.Health > 0 then
                if aimbotTeamCheck and v.Team == LocalPlayer.Team then continue end
                local p = v.Character.Head
                local s, on = Camera:WorldToScreenPoint(p.Position)
                if on then
                    local d = (Vector2.new(s.X,s.Y) - Vector2.new(m.X,m.Y)).Magnitude
                    if d < bestD then
                        if aimbotVisCheck and getRoot() then
                            local r = Ray.new(getRoot().Position, (p.Position - getRoot().Position).Unit * 500)
                            local hit = Workspace:FindPartOnRayWithIgnoreList(r, {getChar()})
                            if not (hit and hit:IsDescendantOf(v.Character)) then continue end
                        end
                        best, bestD = p, d
                    end
                end
            end
        end
    end
    return best
end

-- Trigger Bot
local triggerKeyHeld = false
local triggerReady = true

UserInputService.InputBegan:Connect(function(i, gp)
    if gp then return end
    if i.KeyCode == triggerBind then triggerKeyHeld = true end
end)

UserInputService.InputEnded:Connect(function(i, gp)
    if gp then return end
    if i.KeyCode == triggerBind then triggerKeyHeld = false end
end)

local function triggerAction()
    if not triggerOn then return end
    if not aimbotOn then return end
    if not triggerKeyHeld then return end
    if not triggerReady then return end
    local t = getClosest()
    if t then
        triggerReady = false
        local delay = triggerMinDelay + math.random() * (triggerMaxDelay - triggerMinDelay)
        task.wait(delay)
        pcall(function()
            local vim = game:GetService("VirtualInputManager")
            vim:SendMouseButtonEvent(0, 0, 0, true, game, 0)
            task.wait(0.05)
            vim:SendMouseButtonEvent(0, 0, 0, false, game, 0)
        end)
        task.wait(triggerMinDelay + math.random() * 0.15)
        triggerReady = true
    end
end

-- FOV Circle
local fovCircle = nil
local function updateFOVCircle()
    if fovCircleOn and Camera then
        if not fovCircle then
            fovCircle = Drawing.new("Circle")
            fovCircle.Visible = true
            fovCircle.Color = Color3.new(0, 1, 1)
            fovCircle.Thickness = 1
            fovCircle.Filled = false
            fovCircle.Transparency = 0.7
        end
        fovCircle.Position = Vector2.new(Camera.ViewportSize.X/2, Camera.ViewportSize.Y/2)
        fovCircle.Radius = aimbotFOV
        fovCircle.Visible = true
    else
        if fovCircle then
            fovCircle.Visible = false
            pcall(function() fovCircle:Remove() end)
            fovCircle = nil
        end
    end
end

-- Fly
local function toggleFly(on)
    flyOn = on
    local r, h = getRoot(), getHum()
    if not r or not h then return end
    if on then
        h.PlatformStand = true
        flyBody = Instance.new("BodyVelocity", r)
        flyBody.MaxForce = Vector3.new(4e5,4e5,4e5)
        flyBody.Velocity = Vector3.zero
        flyConn = RunService.RenderStepped:Connect(function()
            if not flyOn or not flyBody then return end
            local d = Vector3.zero
            if UserInputService:IsKeyDown(Enum.KeyCode.W) then d += Camera.CFrame.LookVector end
            if UserInputService:IsKeyDown(Enum.KeyCode.S) then d -= Camera.CFrame.LookVector end
            if UserInputService:IsKeyDown(Enum.KeyCode.A) then d -= Camera.CFrame.RightVector end
            if UserInputService:IsKeyDown(Enum.KeyCode.D) then d += Camera.CFrame.RightVector end
            if UserInputService:IsKeyDown(Enum.KeyCode.Space) then d += Vector3.yAxis end
            if UserInputService:IsKeyDown(Enum.KeyCode.LeftControl) then d -= Vector3.yAxis end
            flyBody.Velocity = (d.Magnitude > 0 and d.Unit or d) * flySpeed
        end)
    else
        h.PlatformStand = false
        if flyConn then flyConn:Disconnect() end
        if flyBody then flyBody:Destroy() end
    end
end

local function savePos() if getRoot() then savedPos = getRoot().CFrame end end
local function tpPos() if savedPos and getRoot() then getRoot().CFrame = savedPos end end
local function setSpeed(v) if getHum() then getHum().WalkSpeed = v end end
local function setJump(v) if getHum() then getHum().JumpPower = v end end

local function toggleFB(on)
    fbOn = on
    if on then
        Lighting.Ambient = Color3.new(1,1,1); Lighting.Brightness = 2; Lighting.OutdoorAmbient = Color3.new(1,1,1)
    else
        Lighting.Ambient = Color3.new(0,0,0); Lighting.Brightness = 1; Lighting.OutdoorAmbient = Color3.new(0.5,0.5,0.5)
    end
end

-- ================== SPEED LOCK (НОВОЕ) ==================
-- Принудительно восстанавливает скорость, если игра её сбросила
local function speedLockLoop()
    local hum = getHum()
    if not hum then return end
    if speedOn and speedLock and hum.WalkSpeed ~= speedVal then
        hum.WalkSpeed = speedVal
    end
    if jumpOn and jumpLock and hum.JumpPower ~= jumpVal then
        hum.JumpPower = jumpVal
    end
end

-- ================== МЕНЮ ==================
local menuOpen = false
local menuAnimating = false

local function toggleMenu()
    if menuAnimating then return end
    menuAnimating = true
    if menuOpen then
        menuOpen = false
        TweenService:Create(mainFrame, TweenInfo.new(0.2, Enum.EasingStyle.Quad, Enum.EasingDirection.In), {
            Size = UDim2.new(0,0,0,0), Position = UDim2.new(0.5,0,0.5,0)
        }):Play()
        TweenService:Create(background, TweenInfo.new(0.2), {BackgroundTransparency = 1}):Play()
        setBlur(0)
        task.wait(0.25)
        mainFrame.Visible = false; background.Visible = false
    else
        menuOpen = true
        mainFrame.Visible = true; background.Visible = true
        mainFrame.Size = UDim2.new(0,0,0,0); mainFrame.Position = UDim2.new(0.5,0,0.5,0)
        background.BackgroundTransparency = 1
        TweenService:Create(mainFrame, TweenInfo.new(0.3, Enum.EasingStyle.Back, Enum.EasingDirection.Out), {
            Size = UDim2.new(0,480,0,620), Position = UDim2.new(0.5,-240,0.5,-310)
        }):Play()
        TweenService:Create(background, TweenInfo.new(0.3), {BackgroundTransparency = 0.5}):Play()
        setBlur(24)
        task.wait(0.35)
    end
    menuAnimating = false
end

local function panicMode()
    aimbotOn, triggerOn, espOn = false, false, false
    enableESP(false); toggleFly(false)
    noclipOn = false
    speedOn, jumpOn, spinOn = false, false, false
    setSpeed(16); setJump(50)
    toggleFB(false); afkOn = false; fovCircleOn = false
    updateFOVCircle()
    menuOpen = false; menuAnimating = false; setBlur(0)
    pcall(function() if gui and gui.Parent then gui:Destroy() end end)
    saveSettings()
end

-- ================== ЦИКЛЫ ==================
RunService.Stepped:Connect(function()
    if noclipOn and getChar() then
        for _, p in ipairs(getChar():GetDescendants()) do
            if p:IsA("BasePart") then p.CanCollide = false end
        end
    end
end)

RunService.RenderStepped:Connect(function(dt)
    if aimbotOn and Camera then
        local t = getClosest()
        if t and getRoot() then
            Camera.CFrame = Camera.CFrame:Lerp(CFrame.lookAt(getRoot().Position, t.Position), aimbotSmooth)
        end
    end
    if aimbotOn and triggerOn then triggerAction() end
    if espOn then updateESP() end
    updateFOVCircle()
    speedLockLoop()  -- <<< ВОТ ТУТ МАГИЯ: каждый кадр проверяем и восстанавливаем скорость
    if afkOn and getChar() and getHum() then
        if getHum().MoveDirection.Magnitude == 0 and getRoot() then
            getRoot().Velocity = getRoot().Velocity + Vector3.new(0, 0.001, 0)
        end
    end
    if spinOn and getRoot() and getHum() then
        getHum().AutoRotate = false
        getRoot().CFrame = getRoot().CFrame * CFrame.Angles(0, math.rad(spinSpeed * dt * 60), 0)
    end
end)

-- ================== КЛАВИШИ ==================
UserInputService.InputBegan:Connect(function(i, gp)
    if gp then return end
    if i.KeyCode == menuKey then toggleMenu() end
    if i.KeyCode == panicKey then panicMode() end
    if i.KeyCode == tpBind then tpPos() end
    if i.KeyCode == saveBind then savePos() end
    if i.KeyCode == speedBind then
        speedOn = not speedOn
        if speedOn then
            setSpeed(speedVal)
            print("Speed Hack: ON (" .. speedVal .. ")")
        else
            setSpeed(16)
            print("Speed Hack: OFF")
        end
        saveSettings()
    end
end)

closeBtn.MouseButton1Click:Connect(toggleMenu)
openBtn.MouseButton1Click:Connect(toggleMenu)
background.InputBegan:Connect(function(input)
    if input.UserInputType == Enum.UserInputType.MouseButton1 then toggleMenu() end
end)

-- ================== ЗАПОЛНЕНИЕ МЕНЮ ==================
-- Shooter
sectionLabel(tabFrames[1], "Aimbot")
createToggle(tabFrames[1], "Aimbot", aimbotOn, function(on) aimbotOn = on end)
createSlider(tabFrames[1], "FOV", 10, 300, aimbotFOV, function(v) aimbotFOV = v end)
createSlider(tabFrames[1], "Smoothness", 0, 100, aimbotSmooth*100, function(v) aimbotSmooth = v/100 end)
createToggle(tabFrames[1], "Team Check", aimbotTeamCheck, function(on) aimbotTeamCheck = on end)
createToggle(tabFrames[1], "Visibility Check", aimbotVisCheck, function(on) aimbotVisCheck = on end)

sectionLabel(tabFrames[1], "Trigger Bot (Hold Key)")
createToggle(tabFrames[1], "Trigger Bot", triggerOn, function(on) triggerOn = on end)
createBind(tabFrames[1], "Trigger Key", triggerBind, function(k) triggerBind = k end)
createSlider(tabFrames[1], "Min Delay (ms)", 50, 250, triggerMinDelay*1000, function(v) triggerMinDelay = v/1000 end)
createSlider(tabFrames[1], "Max Delay (ms)", 100, 500, triggerMaxDelay*1000, function(v) triggerMaxDelay = v/1000 end)

-- Parkour
sectionLabel(tabFrames[2], "Movement")
createToggle(tabFrames[2], "Fly", flyOn, toggleFly)
createSlider(tabFrames[2], "Fly Speed", 10, 200, flySpeed, function(v) flySpeed = v end)
createToggle(tabFrames[2], "Noclip", noclipOn, function(on) noclipOn = on end)
createToggle(tabFrames[2], "SpinBot", spinOn, function(on) spinOn = on end)
createSlider(tabFrames[2], "Spin Speed", 1, 50, spinSpeed, function(v) spinSpeed = v end)

sectionLabel(tabFrames[2], "Teleport")
createBind(tabFrames[2], "Save Pos Key", saveBind, function(k) saveBind = k end)
createBind(tabFrames[2], "Teleport Key", tpBind, function(k) tpBind = k end)
createButton(tabFrames[2], "Save Position", savePos)
createButton(tabFrames[2], "Teleport", tpPos)

sectionLabel(tabFrames[2], "Stats")
createToggle(tabFrames[2], "Speed Hack", speedOn, function(on) speedOn = on setSpeed(on and speedVal or 16) end)
createBind(tabFrames[2], "Speed Toggle Key", speedBind, function(k) speedBind = k end)
createSlider(tabFrames[2], "Walk Speed", 16, 200, speedVal, function(v) speedVal = v if speedOn then setSpeed(v) end end)
createToggle(tabFrames[2], "Speed Lock", speedLock, function(on) speedLock = on end)
createToggle(tabFrames[2], "Jump Power", jumpOn, function(on) jumpOn = on setJump(on and jumpVal or 50) end)
createSlider(tabFrames[2], "Jump Height", 50, 500, jumpVal, function(v) jumpVal = v if jumpOn then setJump(v) end end)
createToggle(tabFrames[2], "Jump Lock", jumpLock, function(on) jumpLock = on end)

-- Visual
sectionLabel(tabFrames[3], "ESP")
createToggle(tabFrames[3], "ESP", espOn, enableESP)
createToggle(tabFrames[3], "Boxes", espBoxes, function(on) espBoxes = on end)
createToggle(tabFrames[3], "Names", espNames, function(on) espNames = on end)
createToggle(tabFrames[3], "Health", espHealth, function(on) espHealth = on end)
createToggle(tabFrames[3], "Lines", espLines, function(on) espLines = on end)

sectionLabel(tabFrames[3], "Aimbot Visual")
createToggle(tabFrames[3], "FOV Circle", fovCircleOn, function(on) fovCircleOn = on end)

sectionLabel(tabFrames[3], "World")
createToggle(tabFrames[3], "Fullbright", fbOn, toggleFB)

-- Settings
sectionLabel(tabFrames[4], "Binds")
createBind(tabFrames[4], "Menu Key", menuKey, function(k) menuKey = k end)
createBind(tabFrames[4], "Panic Key", panicKey, function(k) panicKey = k end)
createToggle(tabFrames[4], "Anti AFK", afkOn, function(on) afkOn = on end)

-- Активация
if flyOn then toggleFly(true) end
if speedOn then setSpeed(speedVal) end
if jumpOn then setJump(jumpVal) end
if fbOn then toggleFB(true) end
if espOn then enableESP(true) end

print("ProGame Hub v5.4 ready! Speed Lock active.")

Features & Information

it haves features for many games! (only pc)
#hub#all games#no ban

Community Comments (0)

No comments yet for this script.

More Scripts for Universal Scripts