Zeni Hub
Key RequiredUniversal

Zeni Hub

Universal ScriptZenqiZenqi 399 views 3.2K executesUpdated Oct 1, 2026
Unrated
00
Lua Script•480 lines (16225 chars)
--============================================================
--  FLY (плавный, Homelander-style) + ESP + МЕНЮ
--  F — вкл/выкл полёт
--  WASD — движение, Space/Ctrl — вверх/вниз, Shift — буст x2
--============================================================

local Players    = game:GetService("Players")
local UIS        = game:GetService("UserInputService")
local RunService = game:GetService("RunService")

local player     = Players.LocalPlayer
local playerGui  = player:WaitForChild("PlayerGui")

--============================================================
--  НАСТРОЙКИ
--============================================================
local FLY_SPEED         = 100
local FLY_ACCEL         = 10
local BOOST_MULT        = 2
local ESP_ON            = true
local ESP_FILL_COLOR    = Color3.fromRGB(255, 60, 60)
local ESP_OUTLINE_COLOR = Color3.fromRGB(255, 255, 255)

-- ВСТАВЬ СВОИ ID АНИМАЦИЙ (см. инструкцию после скрипта)
local FLY_ANIM_ID    = "rbxassetid://0"  -- полёт (движение)
local HOVER_ANIM_ID  = "rbxassetid://0"  -- парение (стоит на месте)
local WIND_SOUND_ID  = "rbxassetid://3308152153" -- звук ветра (этот рабочий)

-- forward declarations
local menuFlyBtn, menuEspBtn

--============================================================
--  ESP
--============================================================
local function addHighlight(char)
    if not ESP_ON then return end
    if not char or not char:IsA("Model") then return end
    if char:FindFirstChild("ESPHighlight") then return end

    local h = Instance.new("Highlight")
    h.Name                = "ESPHighlight"
    h.FillColor           = ESP_FILL_COLOR
    h.OutlineColor        = ESP_OUTLINE_COLOR
    h.FillTransparency    = 0.5
    h.OutlineTransparency = 0
    h.DepthMode           = Enum.HighlightDepthMode.AlwaysOnTop
    h.Parent              = char
end

local function removeAllHighlights()
    for _, p in ipairs(Players:GetPlayers()) do
        if p ~= player and p.Character then
            local h = p.Character:FindFirstChild("ESPHighlight")
            if h then h:Destroy() end
        end
    end
end

local function hookPlayer(p)
    if p == player then return end
    if p.Character then addHighlight(p.Character) end
    p.CharacterAdded:Connect(addHighlight)
end

for _, p in ipairs(Players:GetPlayers()) do hookPlayer(p) end
Players.PlayerAdded:Connect(hookPlayer)

local function setESP(state)
    ESP_ON = state
    if ESP_ON then
        for _, p in ipairs(Players:GetPlayers()) do
            if p ~= player and p.Character then addHighlight(p.Character) end
        end
    else
        removeAllHighlights()
    end
end

--============================================================
--  FLY
--============================================================
local flying, hrp, humanoid, att, lv, vf, spin, connFly
local currentVel = Vector3.zero
local flyAnimTrack, hoverAnimTrack, windSound
local isMoving = false
local loadedAnimator = nil

local function loadAnimations()
    local char = player.Character
    if not char then return end
    local animator = char:FindFirstChildOfClass("Animator")
    if not animator then
        local hum = char:FindFirstChildOfClass("Humanoid")
        if hum then
            animator = hum:FindFirstChildOfClass("Animator")
            if not animator then
                animator = Instance.new("Animator")
                animator.Parent = hum
            end
        end
    end
    if not animator then return end
    loadedAnimator = animator

    local flyAnim = Instance.new("Animation")
    flyAnim.AnimationId = FLY_ANIM_ID
    flyAnimTrack = animator:LoadAnimation(flyAnim)
    flyAnimTrack.Priority = Enum.AnimationPriority.Action

    local hoverAnim = Instance.new("Animation")
    hoverAnim.AnimationId = HOVER_ANIM_ID
    hoverAnimTrack = animator:LoadAnimation(hoverAnim)
    hoverAnimTrack.Priority = Enum.AnimationPriority.Action

    if windSound then windSound:Destroy() end
    windSound = Instance.new("Sound")
    windSound.SoundId = WIND_SOUND_ID
    windSound.Looped = true
    windSound.Volume = 0.5
    windSound.Parent = hrp
end

local function stopFly()
    flying = false
    if connFly then connFly:Disconnect() connFly = nil end
    if lv  then lv:Destroy()  lv  = nil end
    if vf  then vf:Destroy()  vf  = nil end
    if spin then spin:Destroy() spin = nil end
    if att then att:Destroy() att = nil end

    if flyAnimTrack then flyAnimTrack:Stop() flyAnimTrack = nil end
    if hoverAnimTrack then hoverAnimTrack:Stop() hoverAnimTrack = nil end
    if windSound then windSound:Stop() windSound:Destroy() windSound = nil end

    if humanoid and humanoid.Parent then
        humanoid.PlatformStand = false
        humanoid:ChangeState(Enum.HumanoidStateType.GettingUp)
    end

    hrp, humanoid = nil, nil
    currentVel = Vector3.zero
    isMoving = false
end

local function startFly()
    local char = player.Character
    if not char then return end
    hrp      = char:FindFirstChild("HumanoidRootPart")
    humanoid = char:FindFirstChildOfClass("Humanoid")
    if not hrp or not humanoid then return end

    humanoid.PlatformStand = true
    humanoid:ChangeState(Enum.HumanoidStateType.Physics)

    att = Instance.new("Attachment")
    att.Parent = hrp

    vf = Instance.new("VectorForce")
    vf.Attachment0 = att
    vf.RelativeTo  = Enum.ActuatorRelativeTo.World
    vf.Force       = Vector3.new(0, workspace.Gravity * hrp.AssemblyMass, 0)
    vf.Parent      = hrp

    lv = Instance.new("LinearVelocity")
    lv.Attachment0 = att
    lv.MaxForce    = math.huge
    lv.RelativeTo  = Enum.ActuatorRelativeTo.World
    lv.VectorVelocity = Vector3.zero
    lv.Parent = hrp

    spin = Instance.new("AlignOrientation")
    spin.Attachment0    = att
    spin.Mode           = Enum.OrientationAlignmentMode.OneAttachment
    spin.MaxTorque      = math.huge
    spin.Responsiveness = 20
    spin.Parent         = hrp

    currentVel = Vector3.zero
    isMoving = false

    loadAnimations()

    if hoverAnimTrack then
        pcall(function() hoverAnimTrack:Play(0.2) end)
    end

    connFly = RunService.RenderStepped:Connect(function(dt)
        if not flying or not hrp or not hrp.Parent or not lv then return end
        local cam = workspace.CurrentCamera
        if not cam then return end

        local look  = cam.CFrame.LookVector
        local right = cam.CFrame.RightVector

        local move = Vector3.zero
        if UIS:IsKeyDown(Enum.KeyCode.W) then move += look  end
        if UIS:IsKeyDown(Enum.KeyCode.S) then move -= look  end
        if UIS:IsKeyDown(Enum.KeyCode.D) then move += right end
        if UIS:IsKeyDown(Enum.KeyCode.A) then move -= right end
        if UIS:IsKeyDown(Enum.KeyCode.Space)       then move += Vector3.new(0, 1, 0) end
        if UIS:IsKeyDown(Enum.KeyCode.LeftControl) then move -= Vector3.new(0, 1, 0) end

        if move.Magnitude > 0 then move = move.Unit end

        local movingNow = move.Magnitude > 0
        if movingNow ~= isMoving then
            isMoving = movingNow
            if isMoving then
                if hoverAnimTrack then pcall(function() hoverAnimTrack:Stop(0.2) end) end
                if flyAnimTrack and not flyAnimTrack.IsPlaying then
                    pcall(function() flyAnimTrack:Play(0.2) end)
                end
            else
                if flyAnimTrack then pcall(function() flyAnimTrack:Stop(0.2) end) end
                if hoverAnimTrack and not hoverAnimTrack.IsPlaying then
                    pcall(function() hoverAnimTrack:Play(0.2) end)
                end
            end
        end

        if windSound then
            if movingNow and not windSound.IsPlaying then
                windSound:Play()
            elseif not movingNow and windSound.IsPlaying then
                windSound:Stop()
            end
        end

        local speed = FLY_SPEED
        if UIS:IsKeyDown(Enum.KeyCode.LeftShift)
        or UIS:IsKeyDown(Enum.KeyCode.RightShift) then
            speed *= BOOST_MULT
        end

        local targetVel = move * speed
        currentVel = currentVel:Lerp(targetVel, math.clamp(FLY_ACCEL * dt, 0, 1))
        lv.VectorVelocity = currentVel

        spin.CFrame = CFrame.new(hrp.Position, hrp.Position + look)
    end)
end

local COLOR_ON  = Color3.fromRGB(60, 180, 90)
local COLOR_OFF = Color3.fromRGB(55, 55, 60)

local function updateFlyUI()
    if not menuFlyBtn then return end
    menuFlyBtn.Text = flying and "Fly: ON" or "Fly: OFF"
    menuFlyBtn.BackgroundColor3 = flying and COLOR_ON or COLOR_OFF
end

local function updateEspUI()
    if not menuEspBtn then return end
    menuEspBtn.Text = ESP_ON and "ESP: ON" or "ESP: OFF"
    menuEspBtn.BackgroundColor3 = ESP_ON and COLOR_ON or COLOR_OFF
end

local function setFly(state)
    if state == flying then return end
    if state then
        flying = true
        startFly()
    else
        stopFly()
    end
    updateFlyUI()
end

UIS.InputBegan:Connect(function(input, gp)
    if gp then return end
    if input.KeyCode == Enum.KeyCode.F then
        setFly(not flying)
    end
end)

player.CharacterAdded:Connect(function()
    if flying then setFly(false) end
end)

--============================================================
--  МЕНЮ
--============================================================
local screenGui = Instance.new("ScreenGui")
screenGui.Name = "FlyEspMenu"
screenGui.ResetOnSpawn = false
screenGui.ZIndexBehavior = Enum.ZIndexBehavior.Sibling
screenGui.Parent = playerGui

local toggleBtn = Instance.new("TextButton")
toggleBtn.Size = UDim2.new(0, 96, 0, 32)
toggleBtn.Position = UDim2.new(1, -116, 0, 20)
toggleBtn.BackgroundColor3 = Color3.fromRGB(28, 28, 32)
toggleBtn.TextColor3 = Color3.fromRGB(255, 255, 255)
toggleBtn.Font = Enum.Font.GothamBold
toggleBtn.TextSize = 14
toggleBtn.Text = "⚙ Меню"
toggleBtn.Parent = screenGui
Instance.new("UICorner", toggleBtn).CornerRadius = UDim.new(0, 8)
local toggleStroke = Instance.new("UIStroke")
toggleStroke.Color = Color3.fromRGB(70, 70, 80)
toggleStroke.Thickness = 1
toggleStroke.Parent = toggleBtn

local panel = Instance.new("Frame")
panel.Size = UDim2.new(0, 240, 0, 260)
panel.Position = UDim2.new(1, -260, 0, 64)
panel.BackgroundColor3 = Color3.fromRGB(22, 22, 26)
panel.BorderSizePixel = 0
panel.Visible = false
panel.Active = true
panel.Parent = screenGui
Instance.new("UICorner", panel).CornerRadius = UDim.new(0, 10)
local panelStroke = Instance.new("UIStroke")
panelStroke.Color = Color3.fromRGB(70, 70, 80)
panelStroke.Thickness = 1
panelStroke.Parent = panel

local header = Instance.new("Frame")
header.Size = UDim2.new(1, 0, 0, 34)
header.BackgroundColor3 = Color3.fromRGB(32, 32, 38)
header.BorderSizePixel = 0
header.Parent = panel
Instance.new("UICorner", header).CornerRadius = UDim.new(0, 10)

local title = Instance.new("TextLabel")
title.Size = UDim2.new(1, -40, 1, 0)
title.Position = UDim2.new(0, 12, 0, 0)
title.BackgroundTransparency = 1
title.TextColor3 = Color3.fromRGB(255, 255, 255)
title.Font = Enum.Font.GothamBold
title.TextSize = 15
title.TextXAlignment = Enum.TextXAlignment.Left
title.Text = "Zeni HUB"
title.Parent = header

local closeBtn = Instance.new("TextButton")
closeBtn.Size = UDim2.new(0, 24, 0, 24)
closeBtn.Position = UDim2.new(1, -30, 0, 5)
closeBtn.BackgroundColor3 = Color3.fromRGB(60, 40, 40)
closeBtn.TextColor3 = Color3.fromRGB(255, 200, 200)
closeBtn.Font = Enum.Font.GothamBold
closeBtn.TextSize = 14
closeBtn.Text = "✕"
closeBtn.Parent = header
Instance.new("UICorner", closeBtn).CornerRadius = UDim.new(0, 6)

menuFlyBtn = Instance.new("TextButton")
menuFlyBtn.Size = UDim2.new(1, -20, 0, 36)
menuFlyBtn.Position = UDim2.new(0, 10, 0, 46)
menuFlyBtn.BackgroundColor3 = COLOR_OFF
menuFlyBtn.TextColor3 = Color3.fromRGB(255, 255, 255)
menuFlyBtn.Font = Enum.Font.GothamMedium
menuFlyBtn.TextSize = 14
menuFlyBtn.Text = "Fly: OFF"
menuFlyBtn.Parent = panel
Instance.new("UICorner", menuFlyBtn).CornerRadius = UDim.new(0, 8)

menuEspBtn = Instance.new("TextButton")
menuEspBtn.Size = UDim2.new(1, -20, 0, 36)
menuEspBtn.Position = UDim2.new(0, 10, 0, 88)
menuEspBtn.BackgroundColor3 = COLOR_OFF
menuEspBtn.TextColor3 = Color3.fromRGB(255, 255, 255)
menuEspBtn.Font = Enum.Font.GothamMedium
menuEspBtn.TextSize = 14
menuEspBtn.Text = "ESP: ON"
menuEspBtn.Parent = panel
Instance.new("UICorner", menuEspBtn).CornerRadius = UDim.new(0, 8)

local speedLbl = Instance.new("TextLabel")
speedLbl.Size = UDim2.new(1, -20, 0, 20)
speedLbl.Position = UDim2.new(0, 10, 0, 136)
speedLbl.BackgroundTransparency = 1
speedLbl.TextColor3 = Color3.fromRGB(200, 200, 210)
speedLbl.Font = Enum.Font.Gotham
speedLbl.TextSize = 13
speedLbl.TextXAlignment = Enum.TextXAlignment.Left
speedLbl.Text = "Скорость: " .. FLY_SPEED
speedLbl.Parent = panel

local sliderBar = Instance.new("TextButton")
sliderBar.Size = UDim2.new(1, -20, 0, 20)
sliderBar.Position = UDim2.new(0, 10, 0, 160)
sliderBar.BackgroundColor3 = Color3.fromRGB(50, 50, 58)
sliderBar.Text = ""
sliderBar.AutoButtonColor = false
sliderBar.Parent = panel
Instance.new("UICorner", sliderBar).CornerRadius = UDim.new(0, 10)

local sliderFill = Instance.new("Frame")
sliderFill.Size = UDim2.new((FLY_SPEED - 10) / 490, 0, 1, 0)
sliderFill.BackgroundColor3 = Color3.fromRGB(80, 170, 255)
sliderFill.BorderSizePixel = 0
sliderFill.Parent = sliderBar
Instance.new("UICorner", sliderFill).CornerRadius = UDim.new(0, 10)

local hint = Instance.new("TextLabel")
hint.Size = UDim2.new(1, -20, 0, 40)
hint.Position = UDim2.new(0, 10, 0, 190)
hint.BackgroundTransparency = 1
hint.TextColor3 = Color3.fromRGB(150, 150, 160)
hint.Font = Enum.Font.Gotham
hint.TextSize = 11
hint.TextXAlignment = Enum.TextXAlignment.Left
hint.TextYAlignment = Enum.TextYAlignment.Top
hint.TextWrapped = true
hint.Text = "WASD — движение  |  Space/Ctrl — вверх/вниз\nShift — ускорение  |  F — вкл/выкл Fly"
hint.Parent = panel

local MIN_SPEED, MAX_SPEED = 10, 500
local function setSliderFromX(x)
    local rel = math.clamp((x - sliderBar.AbsolutePosition.X) / sliderBar.AbsoluteSize.X, 0, 1)
    FLY_SPEED = math.floor(MIN_SPEED + rel * (MAX_SPEED - MIN_SPEED))
    sliderFill.Size = UDim2.new(rel, 0, 1, 0)
    speedLbl.Text = "Скорость: " .. FLY_SPEED
end

local draggingSlider = false
sliderBar.InputBegan:Connect(function(input)
    if input.UserInputType == Enum.UserInputType.MouseButton1
    or input.UserInputType == Enum.UserInputType.Touch then
        draggingSlider = true
        setSliderFromX(input.Position.X)
    end
end)
UIS.InputChanged:Connect(function(input)
    if draggingSlider and (input.UserInputType == Enum.UserInputType.MouseMovement
    or input.UserInputType == Enum.UserInputType.Touch) then
        setSliderFromX(input.Position.X)
    end
end)
UIS.InputEnded:Connect(function(input)
    if input.UserInputType == Enum.UserInputType.MouseButton1
    or input.UserInputType == Enum.UserInputType.Touch then
        draggingSlider = false
    end
end)

local draggingPanel, dragStart, startPos
header.InputBegan:Connect(function(input)
    if input.UserInputType == Enum.UserInputType.MouseButton1
    or input.UserInputType == Enum.UserInputType.Touch then
        draggingPanel = true
        dragStart = input.Position
        startPos  = panel.Position
    end
end)
UIS.InputChanged:Connect(function(input)
    if draggingPanel and (input.UserInputType == Enum.UserInputType.MouseMovement
    or input.UserInputType == Enum.UserInputType.Touch) then
        local delta = input.Position - dragStart
        panel.Position = UDim2.new(
            startPos.X.Scale, startPos.X.Offset + delta.X,
            startPos.Y.Scale, startPos.Y.Offset + delta.Y
        )
    end
end)
UIS.InputEnded:Connect(function(input)
    if input.UserInputType == Enum.UserInputType.MouseButton1
    or input.UserInputType == Enum.UserInputType.Touch then
        draggingPanel = false
    end
end)

toggleBtn.MouseButton1Click:Connect(function()
    panel.Visible = not panel.Visible
end)
closeBtn.MouseButton1Click:Connect(function()
    panel.Visible = false
end)
menuFlyBtn.MouseButton1Click:Connect(function()
    setFly(not flying)
end)
menuEspBtn.MouseButton1Click:Connect(function()
    setESP(not ESP_ON)
    updateEspUI()
end)

setESP(true)
updateEspUI()
updateFlyUI()

Features & Information

Universal script includes Fly and ESP
#fly#esp#script#universal

Community Comments (0)

No comments yet for this script.

More Scripts for Universal Scripts