flyvix
Key RequiredUniversal

flyvix

Universal ScriptVix_ScriptVix_Script 1.4K views 26.4K executesUpdated Sep 13, 2026
Unrated
00
Lua Script•459 lines (15122 chars)
-- GUI 2 LUA - Fly Rigido estilo Infinite Yield --
-- Xeno Executor | PC + Mobile (joystick nativo)
-- MESMO DESIGN, apenas ESCALA MENOR no celular (UIScale)

local Players = game:GetService("Players")
local RunService = game:GetService("RunService")
local UserInputService = game:GetService("UserInputService")
local LocalPlayer = Players.LocalPlayer
local Camera = workspace.CurrentCamera

local IS_MOBILE = UserInputService.TouchEnabled and not UserInputService.KeyboardEnabled

-- ============ ESCALA (so isso muda no mobile) ============
local UI_SCALE = IS_MOBILE and 0.62 or 1   -- mobile = 62% do tamanho | PC = 100%

-- ============ GUI (MESMO DESIGN ORIGINAL) ============
local ScreenGui_1 = Instance.new("ScreenGui")
ScreenGui_1.Name = "FlyVixGui"
ScreenGui_1.ResetOnSpawn = false
ScreenGui_1.ZIndexBehavior = Enum.ZIndexBehavior.Sibling
ScreenGui_1.IgnoreGuiInset = true
ScreenGui_1.Parent = LocalPlayer:WaitForChild("PlayerGui")

local Frame_1 = Instance.new("Frame")
Frame_1.BackgroundColor3 = Color3.fromRGB(94, 94, 94)
Frame_1.BackgroundTransparency = 0.5
Frame_1.Parent = ScreenGui_1
Frame_1.Position = UDim2.new(0.715, 0, 0.467, 0)
Frame_1.Size = UDim2.new(0, 311, 0, 117)
Frame_1.Active = true
Frame_1.Draggable = true

local UICorner_1 = Instance.new("UICorner", Frame_1)

local UIGradient_1 = Instance.new("UIGradient", Frame_1)
UIGradient_1.Color = ColorSequence.new{
    ColorSequenceKeypoint.new(0, Color3.fromRGB(24, 24, 24)),
    ColorSequenceKeypoint.new(0.526, Color3.fromRGB(61, 61, 61)),
    ColorSequenceKeypoint.new(1, Color3.fromRGB(255, 255, 255))
}
UIGradient_1.Rotation = -118

local UIStroke_1 = Instance.new("UIStroke", Frame_1)
UIStroke_1.ApplyStrokeMode = Enum.ApplyStrokeMode.Border
UIStroke_1.Thickness = 5

local Frame_2 = Instance.new("Frame")
Frame_2.BackgroundColor3 = Color3.fromRGB(94, 94, 94)
Frame_2.BackgroundTransparency = 0.5
Frame_2.Parent = Frame_1
Frame_2.Position = UDim2.new(0, 8, 0, 49)
Frame_2.Size = UDim2.new(0, 85, 0, 53)

local UICorner_2 = Instance.new("UICorner", Frame_2)
local UIGradient_2 = Instance.new("UIGradient", Frame_2)
UIGradient_2.Color = UIGradient_1.Color
UIGradient_2.Rotation = -118

local UIStroke_2 = Instance.new("UIStroke", Frame_2)
UIStroke_2.ApplyStrokeMode = Enum.ApplyStrokeMode.Border
UIStroke_2.Thickness = 5

local counter_1 = Instance.new("TextLabel")
counter_1.BackgroundTransparency = 1
counter_1.Name = "counter"
counter_1.Parent = Frame_2
counter_1.Size = UDim2.new(1, 0, 1, 0)
counter_1.Font = Enum.Font.FredokaOne
counter_1.Text = "0"
counter_1.TextColor3 = Color3.fromRGB(255, 255, 255)
counter_1.TextSize = 49

local UIStroke_3 = Instance.new("UIStroke", counter_1)
UIStroke_3.Thickness = 5

-- Botão ATIVAR
local actid_1 = Instance.new("ImageButton")
actid_1.BackgroundColor3 = Color3.fromRGB(169, 255, 179)
actid_1.Name = "actid"
actid_1.Parent = Frame_1
actid_1.Position = UDim2.new(0, 250, 0, 50)
actid_1.Size = UDim2.new(0, 55, 0, 55)
actid_1.ImageTransparency = 1
actid_1.AutoButtonColor = false
local UICorner_3 = Instance.new("UICorner", actid_1)
local UIStroke_4 = Instance.new("UIStroke", actid_1)
UIStroke_4.Thickness = 5

local Frame_3 = Instance.new("Frame")
Frame_3.BackgroundColor3 = Color3.fromRGB(4, 255, 0)
Frame_3.Parent = actid_1
Frame_3.Position = UDim2.new(0.054, 0, 0.054, 0)
Frame_3.Size = UDim2.new(0, 49, 0, 49)
local UICorner_4 = Instance.new("UICorner", Frame_3)

local Frame_4 = Instance.new("Frame")
Frame_4.BackgroundColor3 = Color3.fromRGB(169, 255, 179)
Frame_4.Parent = actid_1
Frame_4.Position = UDim2.new(0.054, 0, 0.054, 0)
Frame_4.Size = UDim2.new(0, 49, 0, 23)
local UICorner_5 = Instance.new("UICorner", Frame_4)

local TextLabel_1 = Instance.new("TextLabel")
TextLabel_1.BackgroundTransparency = 1
TextLabel_1.Parent = actid_1
TextLabel_1.Size = UDim2.new(1, 0, 1, 0)
TextLabel_1.Font = Enum.Font.FredokaOne
TextLabel_1.Text = "O"
TextLabel_1.TextColor3 = Color3.fromRGB(255, 255, 255)
TextLabel_1.TextSize = 43
local UIStroke_5 = Instance.new("UIStroke", TextLabel_1)
UIStroke_5.Thickness = 5

-- Botão SPEED -
local speedMinus = Instance.new("ImageButton")
speedMinus.BackgroundColor3 = Color3.fromRGB(253, 255, 149)
speedMinus.Name = "speedMinus"
speedMinus.Parent = Frame_1
speedMinus.Position = UDim2.new(0, 180, 0, 50)
speedMinus.Size = UDim2.new(0, 55, 0, 55)
speedMinus.ImageTransparency = 1
speedMinus.AutoButtonColor = false
local UICorner_6 = Instance.new("UICorner", speedMinus)
local UIStroke_6 = Instance.new("UIStroke", speedMinus)
UIStroke_6.Thickness = 5

local Frame_5 = Instance.new("Frame")
Frame_5.BackgroundColor3 = Color3.fromRGB(255, 238, 0)
Frame_5.Parent = speedMinus
Frame_5.Position = UDim2.new(0.054, 0, 0.054, 0)
Frame_5.Size = UDim2.new(0, 49, 0, 49)
local UICorner_7 = Instance.new("UICorner", Frame_5)

local Frame_6 = Instance.new("Frame")
Frame_6.BackgroundColor3 = Color3.fromRGB(253, 255, 149)
Frame_6.Parent = speedMinus
Frame_6.Position = UDim2.new(0.054, 0, 0.054, 0)
Frame_6.Size = UDim2.new(0, 49, 0, 23)
local UICorner_8 = Instance.new("UICorner", Frame_6)

local TextLabel_2 = Instance.new("TextLabel")
TextLabel_2.BackgroundTransparency = 1
TextLabel_2.Parent = speedMinus
TextLabel_2.Size = UDim2.new(1, 0, 1, 0)
TextLabel_2.Font = Enum.Font.FredokaOne
TextLabel_2.Text = "-"
TextLabel_2.TextColor3 = Color3.fromRGB(255, 255, 255)
TextLabel_2.TextSize = 58
local UIStroke_7 = Instance.new("UIStroke", TextLabel_2)
UIStroke_7.Thickness = 5

-- Botão SPEED +
local speedPlus = Instance.new("ImageButton")
speedPlus.BackgroundColor3 = Color3.fromRGB(169, 170, 255)
speedPlus.Name = "speedPlus"
speedPlus.Parent = Frame_1
speedPlus.Position = UDim2.new(0, 110, 0, 50)
speedPlus.Size = UDim2.new(0, 55, 0, 55)
speedPlus.ImageTransparency = 1
speedPlus.AutoButtonColor = false
local UICorner_9 = Instance.new("UICorner", speedPlus)
local UIStroke_8 = Instance.new("UIStroke", speedPlus)
UIStroke_8.Thickness = 5

local Frame_7 = Instance.new("Frame")
Frame_7.BackgroundColor3 = Color3.fromRGB(8, 0, 255)
Frame_7.Parent = speedPlus
Frame_7.Position = UDim2.new(0.054, 0, 0.054, 0)
Frame_7.Size = UDim2.new(0, 49, 0, 49)
local UICorner_10 = Instance.new("UICorner", Frame_7)

local Frame_8 = Instance.new("Frame")
Frame_8.BackgroundColor3 = Color3.fromRGB(169, 170, 255)
Frame_8.Parent = speedPlus
Frame_8.Position = UDim2.new(0.054, 0, 0.054, 0)
Frame_8.Size = UDim2.new(0, 49, 0, 23)
local UICorner_11 = Instance.new("UICorner", Frame_8)

local TextLabel_3 = Instance.new("TextLabel")
TextLabel_3.BackgroundTransparency = 1
TextLabel_3.Parent = speedPlus
TextLabel_3.Size = UDim2.new(1, 0, 1, 0)
TextLabel_3.Font = Enum.Font.FredokaOne
TextLabel_3.Text = "+"
TextLabel_3.TextColor3 = Color3.fromRGB(255, 255, 255)
TextLabel_3.TextSize = 43
local UIStroke_9 = Instance.new("UIStroke", TextLabel_3)
UIStroke_9.Thickness = 5

-- Imagem decorativa
local ImageLabel_1 = Instance.new("ImageLabel")
ImageLabel_1.BackgroundTransparency = 1
ImageLabel_1.Parent = Frame_1
ImageLabel_1.Position = UDim2.new(-0.147, 0, -0.422, 0)
ImageLabel_1.Rotation = 26
ImageLabel_1.Size = UDim2.new(0, 100, 0, 106)
ImageLabel_1.Image = "rbxassetid://7971626465"

-- Botão FECHAR
local cloze_1 = Instance.new("ImageButton")
cloze_1.BackgroundColor3 = Color3.fromRGB(255, 90, 90)
cloze_1.Name = "cloze"
cloze_1.Parent = Frame_1
cloze_1.Position = UDim2.new(0.941, 0, -0.193, 0)
cloze_1.Size = UDim2.new(0, 55, 0, 55)
cloze_1.ImageTransparency = 1
cloze_1.AutoButtonColor = false
local UICorner_12 = Instance.new("UICorner", cloze_1)
local UIStroke_10 = Instance.new("UIStroke", cloze_1)
UIStroke_10.Thickness = 5

local Frame_9 = Instance.new("Frame")
Frame_9.BackgroundColor3 = Color3.fromRGB(255, 0, 0)
Frame_9.Parent = cloze_1
Frame_9.Position = UDim2.new(0.054, 0, 0.054, 0)
Frame_9.Size = UDim2.new(0, 49, 0, 49)
local UICorner_13 = Instance.new("UICorner", Frame_9)

local Frame_10 = Instance.new("Frame")
Frame_10.BackgroundColor3 = Color3.fromRGB(255, 90, 90)
Frame_10.Parent = cloze_1
Frame_10.Position = UDim2.new(0.054, 0, 0.054, 0)
Frame_10.Size = UDim2.new(0, 49, 0, 23)
local UICorner_14 = Instance.new("UICorner", Frame_10)

local TextLabel_4 = Instance.new("TextLabel")
TextLabel_4.BackgroundTransparency = 1
TextLabel_4.Parent = cloze_1
TextLabel_4.Size = UDim2.new(1, 0, 1, 0)
TextLabel_4.Font = Enum.Font.FredokaOne
TextLabel_4.Text = "X"
TextLabel_4.TextColor3 = Color3.fromRGB(255, 255, 255)
TextLabel_4.TextSize = 43
local UIStroke_11 = Instance.new("UIStroke", TextLabel_4)
UIStroke_11.Thickness = 5

-- Título
local TextLabel_5 = Instance.new("TextLabel")
TextLabel_5.BackgroundTransparency = 1
TextLabel_5.Parent = Frame_1
TextLabel_5.Position = UDim2.new(0.061, 0, -0.008, 0)
TextLabel_5.Size = UDim2.new(0.5, 0, 0.4, 0)
TextLabel_5.Font = Enum.Font.FredokaOne
TextLabel_5.Text = "FlyVix"
TextLabel_5.TextColor3 = Color3.fromRGB(255, 255, 255)
TextLabel_5.TextSize = 46
local UIStroke_12 = Instance.new("UIStroke", TextLabel_5)
UIStroke_12.Thickness = 4.3

-- ============ ESCALA (aplica em tudo de uma vez) ============
-- UIScale comprime o menu inteiro mantendo o design 100% intacto
local uiScale = Instance.new("UIScale")
uiScale.Scale = UI_SCALE
uiScale.Parent = Frame_1

-- ============ LÓGICA DE FLY ============

local flyActive = false
local displayValue = 0
local SPEED_STEP = 1
local MULTIPLIER = 100
local MAX_DISPLAY = 50

local flyConnection = nil
local currentBV = nil
local currentBG = nil
local originalPlatformStand = false
local originalGravity = workspace.Gravity

local function updateCounter()
    counter_1.Text = tostring(displayValue)
end

local function getRealSpeed()
    return displayValue * MULTIPLIER
end

local function createFlyInstances()
    local character = LocalPlayer.Character
    if not character then return false end
    local hrp = character:FindFirstChild("HumanoidRootPart")
    local humanoid = character:FindFirstChildOfClass("Humanoid")
    if not hrp or not humanoid then return false end

    if currentBV then currentBV:Destroy() end
    if currentBG then currentBG:Destroy() end

    currentBV = Instance.new("BodyVelocity")
    currentBV.Name = "FlyVix_BV"
    currentBV.MaxForce = Vector3.new(math.huge, math.huge, math.huge)
    currentBV.Velocity = Vector3.new(0, 0, 0)
    currentBV.P = 1250
    currentBV.Parent = hrp

    currentBG = Instance.new("BodyGyro")
    currentBG.Name = "FlyVix_BG"
    currentBG.MaxTorque = Vector3.new(math.huge, math.huge, math.huge)
    currentBG.P = 30000
    currentBG.D = 500
    currentBG.CFrame = hrp.CFrame
    currentBG.Parent = hrp

    humanoid.PlatformStand = true
    return true
end

local function removeFlyInstances()
    if currentBV then currentBV:Destroy() currentBV = nil end
    if currentBG then currentBG:Destroy() currentBG = nil end

    local character = LocalPlayer.Character
    if character then
        local humanoid = character:FindFirstChildOfClass("Humanoid")
        if humanoid then
            humanoid.PlatformStand = originalPlatformStand
        end
    end
    workspace.Gravity = originalGravity
end

-- Direcao via joystick nativo (mobile) / WASD (PC)
local function getMoveDirection()
    local character = LocalPlayer.Character
    if not character then return Vector3.new(0, 0, 0) end
    local humanoid = character:FindFirstChildOfClass("Humanoid")
    if not humanoid then return Vector3.new(0, 0, 0) end

    local moveDir = humanoid.MoveDirection
    if moveDir.Magnitude > 0 then
        return moveDir.Unit
    end

    if not IS_MOBILE then
        local moveVector = Vector3.new(0, 0, 0)
        if UserInputService:IsKeyDown(Enum.KeyCode.Space) then
            moveVector = moveVector + Vector3.new(0, 1, 0)
        end
        if UserInputService:IsKeyDown(Enum.KeyCode.LeftControl)
            or UserInputService:IsKeyDown(Enum.KeyCode.LeftShift) then
            moveVector = moveVector - Vector3.new(0, 1, 0)
        end
        if moveVector.Magnitude > 0 then
            return moveVector.Unit
        end
    end

    return Vector3.new(0, 0, 0)
end

local function startFly()
    if flyConnection then flyConnection:Disconnect() end

    local character = LocalPlayer.Character
    if character then
        local humanoid = character:FindFirstChildOfClass("Humanoid")
        if humanoid then
            originalPlatformStand = humanoid.PlatformStand
        end
    end
    originalGravity = workspace.Gravity

    if not createFlyInstances() then return end

    workspace.Gravity = 0

    flyConnection = RunService.RenderStepped:Connect(function()
        if not flyActive then return end

        local char = LocalPlayer.Character
        if not char then return end
        local hrp = char:FindFirstChild("HumanoidRootPart")
        if not hrp then return end

        if not currentBV or not currentBV.Parent
            or not currentBG or not currentBG.Parent then
            createFlyInstances()
            if not currentBV then return end
        end

        local dir = getMoveDirection()
        currentBV.Velocity = dir * getRealSpeed()
        currentBG.CFrame = Camera.CFrame
    end)
end

local function stopFly()
    if flyConnection then
        flyConnection:Disconnect()
        flyConnection = nil
    end
    removeFlyInstances()
end

local function toggleFly()
    flyActive = not flyActive
    if flyActive then
        Frame_4.BackgroundColor3 = Color3.fromRGB(4, 255, 0)
        Frame_3.BackgroundColor3 = Color3.fromRGB(0, 100, 0)
        TextLabel_1.Text = "I"
        startFly()
    else
        Frame_4.BackgroundColor3 = Color3.fromRGB(169, 255, 179)
        Frame_3.BackgroundColor3 = Color3.fromRGB(4, 255, 0)
        TextLabel_1.Text = "O"
        stopFly()
    end
end

-- ============ EVENTOS ============

actid_1.MouseButton1Click:Connect(toggleFly)

speedPlus.MouseButton1Click:Connect(function()
    displayValue = math.min(displayValue + SPEED_STEP, MAX_DISPLAY)
    updateCounter()
end)

speedMinus.MouseButton1Click:Connect(function()
    displayValue = math.max(displayValue - SPEED_STEP, 0)
    updateCounter()
end)

cloze_1.MouseButton1Click:Connect(function()
    stopFly()
    ScreenGui_1:Destroy()
end)

LocalPlayer.CharacterAdded:Connect(function()
    if flyActive then
        stopFly()
        flyActive = false
        Frame_4.BackgroundColor3 = Color3.fromRGB(169, 255, 179)
        Frame_3.BackgroundColor3 = Color3.fromRGB(4, 255, 0)
        TextLabel_1.Text = "O"
    end
end)

UserInputService.InputBegan:Connect(function(input, gpe)
    if gpe then return end
    if input.KeyCode == Enum.KeyCode.F then
        toggleFly()
    elseif input.KeyCode == Enum.KeyCode.E then
        displayValue = math.min(displayValue + SPEED_STEP, MAX_DISPLAY)
        updateCounter()
    elseif input.KeyCode == Enum.KeyCode.Q then
        displayValue = math.max(displayValue - SPEED_STEP, 0)
        updateCounter()
    end
end)

updateCounter()

print("[FlyVix] Menu carregado! Design original, escala mobile = " .. UI_SCALE)
print("Display 1 = velocidade 100 | Passo 1 em 1 | Comeca em 0")
if IS_MOBILE then
    print("Use o JOYSTICK do Roblox pra voar")
else
    print("WASD = mover | Space = subir | Ctrl/Shift = descer")
end

Features & Information

fly para toilet verse tower defense

Community Comments (1)

jadsoncavalcantejadsoncavalcanteSep 14, 2026

Faz um script bom pra esse jogo pago dinheiro

More Scripts for Universal Scripts