Fly gui
Key RequiredUniversal

Fly gui

Universal ScriptTheultrascriptTheultrascript 1.1K views 26K executesUpdated Jul 16, 2026
Unrated
00
Lua Script•324 lines (11675 chars)
--[[
  Convertito per Delta Executor
  Helper globali garantiti dagli executor più comuni:
    getgenv, getrenv, hookfunction, getconnections, getnamecallmethod,
    setreadonly, checkcaller, identifyexecutor, syn?, request/http_request
]]
local httpRequest = (syn and syn.request) or (http and http.request) or request or http_request

-- FlyGUI - Script di volo per Roblox Studio (ottimizzato per Mobile)
-- Da inserire in StarterGui come LocalScript

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

local player = Players.LocalPlayer
local character = player.Character or player.CharacterAdded:Wait()
local humanoid = character:WaitForChild("Humanoid")
local rootPart = character:WaitForChild("HumanoidRootPart")

-- Variabili di stato
local flying = false
local flySpeed = 50 -- valore mostrato (1-100)
local SPEED_MULTIPLIER = 3 -- velocità reale = flySpeed * SPEED_MULTIPLIER
local draggingSlider = false
local flyAttachment, linearVelocity, alignOrientation

-- === GUI ===
local screenGui = Instance.new("ScreenGui")
screenGui.Name = "FlyGUI"
screenGui.ResetOnSpawn = false
screenGui.Parent = player:WaitForChild("PlayerGui")

local mainFrame = Instance.new("Frame")
mainFrame.Size = UDim2.new(0, 240, 0, 180)
mainFrame.Position = UDim2.new(0, 24, 0.5, -90)
mainFrame.BackgroundColor3 = Color3.fromRGB(24, 24, 28)
mainFrame.BorderSizePixel = 0
mainFrame.Active = true
mainFrame.Draggable = true
mainFrame.Parent = screenGui

local corner = Instance.new("UICorner")
corner.CornerRadius = UDim.new(0, 16)
corner.Parent = mainFrame

local gradient = Instance.new("UIGradient")
gradient.Color = ColorSequence.new{
    ColorSequenceKeypoint.new(0, Color3.fromRGB(35, 35, 42)),
    ColorSequenceKeypoint.new(1, Color3.fromRGB(18, 18, 22))
}
gradient.Rotation = 90
gradient.Parent = mainFrame

local stroke = Instance.new("UIStroke")
stroke.Color = Color3.fromRGB(90, 170, 255)
stroke.Thickness = 1.2
stroke.Transparency = 0.5
stroke.Parent = mainFrame

local topBar = Instance.new("Frame")
topBar.Size = UDim2.new(1, 0, 0, 4)
topBar.BackgroundColor3 = Color3.fromRGB(90, 170, 255)
topBar.BorderSizePixel = 0
topBar.Parent = mainFrame

local topBarCorner = Instance.new("UICorner")
topBarCorner.CornerRadius = UDim.new(1, 0)
topBarCorner.Parent = topBar

local topGradient = Instance.new("UIGradient")
topGradient.Color = ColorSequence.new{
    ColorSequenceKeypoint.new(0, Color3.fromRGB(90, 170, 255)),
    ColorSequenceKeypoint.new(1, Color3.fromRGB(140, 100, 255))
}
topGradient.Parent = topBar

local title = Instance.new("TextLabel")
title.Size = UDim2.new(1, -20, 0, 26)
title.Position = UDim2.new(0, 16, 0, 14)
title.BackgroundTransparency = 1
title.Text = "✈️  Fly Controller"
title.TextColor3 = Color3.fromRGB(255, 255, 255)
title.Font = Enum.Font.GothamBold
title.TextSize = 19
title.TextXAlignment = Enum.TextXAlignment.Left
title.Parent = mainFrame

local subtitle = Instance.new("TextLabel")
subtitle.Size = UDim2.new(1, -20, 0, 16)
subtitle.Position = UDim2.new(0, 16, 0, 40)
subtitle.BackgroundTransparency = 1
subtitle.Text = "Sistema di volo personalizzato"
subtitle.TextColor3 = Color3.fromRGB(140, 140, 150)
subtitle.Font = Enum.Font.Gotham
subtitle.TextSize = 12
subtitle.TextXAlignment = Enum.TextXAlignment.Left
subtitle.Parent = mainFrame

local flyButton = Instance.new("TextButton")
flyButton.Size = UDim2.new(1, -32, 0, 40)
flyButton.Position = UDim2.new(0, 16, 0, 64)
flyButton.BackgroundColor3 = Color3.fromRGB(50, 160, 90)
flyButton.Text = "✈️   Attiva Volo"
flyButton.TextColor3 = Color3.fromRGB(255,255,255)
flyButton.Font = Enum.Font.GothamBold
flyButton.TextSize = 15
flyButton.AutoButtonColor = false
flyButton.Parent = mainFrame

local btnCorner = Instance.new("UICorner")
btnCorner.CornerRadius = UDim.new(0, 10)
btnCorner.Parent = flyButton

flyButton.MouseEnter:Connect(function()
    TweenService:Create(flyButton, TweenInfo.new(0.15), {BackgroundTransparency = 0.1}):Play()
end)
flyButton.MouseLeave:Connect(function()
    TweenService:Create(flyButton, TweenInfo.new(0.15), {BackgroundTransparency = 0}):Play()
end)

local speedRow = Instance.new("Frame")
speedRow.Size = UDim2.new(1, -32, 0, 18)
speedRow.Position = UDim2.new(0, 16, 0, 118)
speedRow.BackgroundTransparency = 1
speedRow.Parent = mainFrame

local speedLabel = Instance.new("TextLabel")
speedLabel.Size = UDim2.new(0.5, 0, 1, 0)
speedLabel.BackgroundTransparency = 1
speedLabel.Text = "Velocità"
speedLabel.TextColor3 = Color3.fromRGB(160, 160, 170)
speedLabel.Font = Enum.Font.Gotham
speedLabel.TextSize = 13
speedLabel.TextXAlignment = Enum.TextXAlignment.Left
speedLabel.Parent = speedRow

local speedValue = Instance.new("TextLabel")
speedValue.Size = UDim2.new(0.5, 0, 1, 0)
speedValue.Position = UDim2.new(0.5, 0, 0, 0)
speedValue.BackgroundTransparency = 1
speedValue.Text = flySpeed .. " / 100"
speedValue.TextColor3 = Color3.fromRGB(90, 170, 255)
speedValue.Font = Enum.Font.GothamBold
speedValue.TextSize = 13
speedValue.TextXAlignment = Enum.TextXAlignment.Right
speedValue.Parent = speedRow

-- Slider con area di trascinamento più grande (facile su mobile)
local sliderBack = Instance.new("Frame")
sliderBack.Size = UDim2.new(1, -32, 0, 8)
sliderBack.Position = UDim2.new(0, 16, 0, 144)
sliderBack.BackgroundColor3 = Color3.fromRGB(45, 45, 52)
sliderBack.BorderSizePixel = 0
sliderBack.Parent = mainFrame

local sliderBackCorner = Instance.new("UICorner")
sliderBackCorner.CornerRadius = UDim.new(1, 0)
sliderBackCorner.Parent = sliderBack

-- Hitbox invisibile più grande sopra/sotto la barra per facilitare il tocco
local sliderHitbox = Instance.new("TextButton")
sliderHitbox.Size = UDim2.new(1, 0, 0, 36)
sliderHitbox.Position = UDim2.new(0, 0, 0.5, -18)
sliderHitbox.BackgroundTransparency = 1
sliderHitbox.Text = ""
sliderHitbox.ZIndex = 3
sliderHitbox.Parent = sliderBack

local sliderFill = Instance.new("Frame")
sliderFill.Size = UDim2.new(flySpeed/100, 0, 1, 0)
sliderFill.BackgroundColor3 = Color3.fromRGB(90, 170, 255)
sliderFill.BorderSizePixel = 0
sliderFill.Parent = sliderBack

local fillGradient = Instance.new("UIGradient")
fillGradient.Color = ColorSequence.new{
    ColorSequenceKeypoint.new(0, Color3.fromRGB(90, 170, 255)),
    ColorSequenceKeypoint.new(1, Color3.fromRGB(140, 100, 255))
}
fillGradient.Parent = sliderFill

local fillCorner = Instance.new("UICorner")
fillCorner.CornerRadius = UDim.new(1, 0)
fillCorner.Parent = sliderFill

local sliderDot = Instance.new("Frame")
sliderDot.Size = UDim2.new(0, 20, 0, 20)
sliderDot.Position = UDim2.new(flySpeed/100, -10, 0.5, -10)
sliderDot.BackgroundColor3 = Color3.fromRGB(255,255,255)
sliderDot.ZIndex = 4
sliderDot.Parent = sliderBack

local dotCorner = Instance.new("UICorner")
dotCorner.CornerRadius = UDim.new(1, 0)
dotCorner.Parent = sliderDot

local dotStroke = Instance.new("UIStroke")
dotStroke.Color = Color3.fromRGB(90, 170, 255)
dotStroke.Thickness = 2
dotStroke.Parent = sliderDot

-- === Logica slider velocità ===
local function updateSpeedFromX(inputX)
    local relative = (inputX - sliderBack.AbsolutePosition.X) / sliderBack.AbsoluteSize.X
    relative = math.clamp(relative, 0, 1)
    flySpeed = math.floor(relative * 100)
    if flySpeed < 1 then flySpeed = 1 end
    sliderFill.Size = UDim2.new(relative, 0, 1, 0)
    sliderDot.Position = UDim2.new(relative, -10, 0.5, -10)
    speedValue.Text = flySpeed .. " / 100"
end

sliderHitbox.InputBegan:Connect(function(input)
    if input.UserInputType == Enum.UserInputType.MouseButton1 or input.UserInputType == Enum.UserInputType.Touch then
        draggingSlider = true
        updateSpeedFromX(input.Position.X)
    end
end)

UserInputService.InputChanged:Connect(function(input)
    if draggingSlider and (input.UserInputType == Enum.UserInputType.MouseMovement or input.UserInputType == Enum.UserInputType.Touch) then
        updateSpeedFromX(input.Position.X)
    end
end)

UserInputService.InputEnded:Connect(function(input)
    if input.UserInputType == Enum.UserInputType.MouseButton1 or input.UserInputType == Enum.UserInputType.Touch then
        draggingSlider = false
    end
end)

-- === Funzioni di volo ===
local function startFly()
    if flying then return end
    flying = true
    flyButton.Text = "🛬   Disattiva Volo"
    flyButton.BackgroundColor3 = Color3.fromRGB(200, 60, 60)

    humanoid.PlatformStand = true
    humanoid.AutoRotate = false

    flyAttachment = Instance.new("Attachment")
    flyAttachment.Name = "FlyAttachment"
    flyAttachment.Parent = rootPart

    linearVelocity = Instance.new("LinearVelocity")
    linearVelocity.Attachment0 = flyAttachment
    linearVelocity.MaxForce = math.huge
    linearVelocity.VectorVelocity = Vector3.new(0, 0, 0)
    linearVelocity.RelativeTo = Enum.ActuatorRelativeTo.World
    linearVelocity.Parent = rootPart

    alignOrientation = Instance.new("AlignOrientation")
    alignOrientation.Attachment0 = flyAttachment
    alignOrientation.MaxTorque = math.huge
    alignOrientation.Responsiveness = 100
    alignOrientation.Mode = Enum.OrientationAlignmentMode.OneAttachment
    alignOrientation.Parent = rootPart
end

local function stopFly()
    if not flying then return end
    flying = false
    flyButton.Text = "✈️   Attiva Volo"
    flyButton.BackgroundColor3 = Color3.fromRGB(50, 160, 90)

    humanoid.PlatformStand = false
    humanoid.AutoRotate = true

    if linearVelocity then linearVelocity:Destroy() linearVelocity = nil end
    if alignOrientation then alignOrientation:Destroy() alignOrientation = nil end
    if flyAttachment then flyAttachment:Destroy() flyAttachment = nil end
end

flyButton.MouseButton1Click:Connect(function()
    if flying then stopFly() else startFly() end
end)

-- === Movimento durante il volo ===
-- Usa SOLO il joystick di Roblox: guardando in alto/basso mentre spingi
-- il joystick in avanti sali/scendi, come in un vero volo.
RunService.RenderStepped:Connect(function()
    if flying and linearVelocity and alignOrientation then
        local camera = workspace.CurrentCamera
        local moveDir = humanoid.MoveDirection -- da joystick (mobile) o WASD (PC)

        local moveVector = Vector3.new(0, 0, 0)

        if moveDir.Magnitude > 0.05 then
            local lookFlat = Vector3.new(camera.CFrame.LookVector.X, 0, camera.CFrame.LookVector.Z)
            local rightFlat = Vector3.new(camera.CFrame.RightVector.X, 0, camera.CFrame.RightVector.Z)

            if lookFlat.Magnitude > 0.001 then lookFlat = lookFlat.Unit end
            if rightFlat.Magnitude > 0.001 then rightFlat = rightFlat.Unit end

            -- quanto il joystick spinge avanti/indietro e lateralmente
            local forwardAmount = moveDir:Dot(lookFlat)
            local rightAmount = moveDir:Dot(rightFlat)

            -- il movimento "avanti" usa il vettore camera COMPLETO (con inclinazione),
            -- così guardare su/giù fa salire/scendere
            moveVector = (camera.CFrame.LookVector * forwardAmount) + (rightFlat * rightAmount)
        end

        if moveVector.Magnitude > 0 then
            moveVector = moveVector.Unit * (flySpeed * SPEED_MULTIPLIER)
        end

        linearVelocity.VectorVelocity = moveVector
        alignOrientation.CFrame = camera.CFrame
    end
end)

-- Ripristina lo stato al respawn
player.CharacterAdded:Connect(function(newChar)
    character = newChar
    humanoid = character:WaitForChild("Humanoid")
    rootPart = character:WaitForChild("HumanoidRootPart")
    flying = false
    flyButton.Text = "✈️   Attiva Volo"
    flyButton.BackgroundColor3 = Color3.fromRGB(50, 160, 90)
end)

Features & Information

Fly gui

Community Comments (0)

No comments yet for this script.

More Scripts for Universal Scripts