
KeylessUniversal

-- 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.")No comments yet for this script.



