
Key RequiredUniversal

-- Full Fly Mod Menu with Fixed Mobile Directional Fly and Full Features
local player = game.Players.LocalPlayer
local userInputService = game:GetService("UserInputService")
local runService = game:GetService("RunService")
local tweenService = game:GetService("TweenService")
local flySpeed = 50
local flying = false
local bodyVelocity
-- Create ScreenGui
local screenGui = Instance.new("ScreenGui")
screenGui.Name = "FlyModMenu"
screenGui.ResetOnSpawn = false
screenGui.Parent = player:WaitForChild("PlayerGui")
-- Create main frame
local frame = Instance.new("Frame")
frame.Size = UDim2.new(0, 220, 0, 130)
frame.Position = UDim2.new(0, 20, 0, 20)
frame.BorderSizePixel = 0
frame.Parent = screenGui
local uiCornerFrame = Instance.new("UICorner")
uiCornerFrame.CornerRadius = UDim.new(0, 15)
uiCornerFrame.Parent = frame
-- Rainbow background effect
local hue = 0
runService.Heartbeat:Connect(function()
hue = (hue + 0.5) % 360
frame.BackgroundColor3 = Color3.fromHSV(hue / 360, 1, 1)
end)
-- Title (draggable)
local title = Instance.new("TextLabel")
title.Size = UDim2.new(1, 0, 0, 30)
title.BackgroundTransparency = 1
title.Text = "Fly Mod Menu"
title.TextColor3 = Color3.new(1, 1, 1)
title.Font = Enum.Font.SourceSansBold
title.TextSize = 22
title.Parent = frame
title.TextYAlignment = Enum.TextYAlignment.Center
local dragging, dragInput, dragStart, startPos
title.InputBegan:Connect(function(input)
if input.UserInputType == Enum.UserInputType.MouseButton1 or input.UserInputType == Enum.UserInputType.Touch then
dragging = true
dragStart = input.Position
startPos = frame.Position
input.Changed:Connect(function()
if input.UserInputState == Enum.UserInputState.End then
dragging = false
end
end)
end
end)
title.InputChanged:Connect(function(input)
if input.UserInputType == Enum.UserInputType.MouseMovement or input.UserInputType == Enum.UserInputType.Touch then
dragInput = input
end
end)
userInputService.InputChanged:Connect(function(input)
if input == dragInput and dragging then
local delta = input.Position - dragStart
frame.Position = UDim2.new(
startPos.X.Scale,
startPos.X.Offset + delta.X,
startPos.Y.Scale,
startPos.Y.Offset + delta.Y
)
end
end)
-- Fly Toggle
local flyToggle = Instance.new("TextButton")
flyToggle.Size = UDim2.new(1, -40, 0, 40)
flyToggle.Position = UDim2.new(0, 10, 0, 40)
flyToggle.BackgroundColor3 = Color3.fromRGB(50, 50, 50)
flyToggle.TextColor3 = Color3.new(1, 1, 1)
flyToggle.Font = Enum.Font.SourceSansBold
flyToggle.TextSize = 22
flyToggle.Text = "Fly: OFF"
flyToggle.Parent = frame
local uiCornerButton = Instance.new("UICorner")
uiCornerButton.CornerRadius = UDim.new(0, 10)
uiCornerButton.Parent = flyToggle
-- Speed Label
local speedLabel = Instance.new("TextLabel")
speedLabel.Size = UDim2.new(0, 50, 0, 30)
speedLabel.Position = UDim2.new(0, 10, 0, 90)
speedLabel.BackgroundTransparency = 1
speedLabel.Text = "Speed:"
speedLabel.TextColor3 = Color3.new(1, 1, 1)
speedLabel.Font = Enum.Font.SourceSans
speedLabel.TextSize = 18
speedLabel.TextXAlignment = Enum.TextXAlignment.Left
speedLabel.Parent = frame
-- Speed Input
local speedInput = Instance.new("TextBox")
speedInput.Size = UDim2.new(0, 120, 0, 30)
speedInput.Position = UDim2.new(0, 70, 0, 90)
speedInput.BackgroundColor3 = Color3.fromRGB(40, 40, 40)
speedInput.TextColor3 = Color3.new(1, 1, 1)
speedInput.Font = Enum.Font.SourceSans
speedInput.TextSize = 18
speedInput.Text = tostring(flySpeed)
speedInput.ClearTextOnFocus = false
speedInput.Parent = frame
local uiCornerInput = Instance.new("UICorner")
uiCornerInput.CornerRadius = UDim.new(0, 10)
uiCornerInput.Parent = speedInput
-- Warning overlay
local warningOverlay = Instance.new("Frame")
warningOverlay.Size = UDim2.new(1, 0, 1, 0)
warningOverlay.BackgroundColor3 = Color3.fromRGB(255, 50, 50)
warningOverlay.BackgroundTransparency = 0.7
warningOverlay.Visible = false
warningOverlay.ZIndex = 1000
warningOverlay.Parent = screenGui
local warningText = Instance.new("TextLabel")
warningText.Size = UDim2.new(0.8, 0, 0.3, 0)
warningText.Position = UDim2.new(0.1, 0, 0.35, 0)
warningText.BackgroundTransparency = 1
warningText.TextColor3 = Color3.new(1, 1, 1)
warningText.Font = Enum.Font.SourceSansBold
warningText.TextSize = 36
warningText.TextWrapped = true
warningText.Text = "Warning: Speed over 3450! Things might get uncontrollable beyond this point!"
warningText.ZIndex = 1001
warningText.Parent = warningOverlay
-- Fly start/stop functions
local function startFlying()
local character = player.Character
if not character then return end
local hrp = character:FindFirstChild("HumanoidRootPart")
if not hrp then return end
bodyVelocity = Instance.new("BodyVelocity")
bodyVelocity.MaxForce = Vector3.new(1e5, 1e5, 1e5)
bodyVelocity.Velocity = Vector3.new(0, 0, 0)
bodyVelocity.Parent = hrp
end
local function stopFlying()
if bodyVelocity then
bodyVelocity:Destroy()
bodyVelocity = nil
end
end
-- Fly toggle logic
flyToggle.MouseButton1Click:Connect(function()
flying = not flying
if flying then
startFlying()
flyToggle.Text = "Fly: ON"
else
stopFlying()
flyToggle.Text = "Fly: OFF"
end
end)
-- Speed input
speedInput.FocusLost:Connect(function(enterPressed)
if enterPressed then
local val = tonumber(speedInput.Text)
if val and val > 0 then
flySpeed = val
if flySpeed > 3450 then
warningOverlay.Visible = true
task.delay(5, function()
warningOverlay.Visible = false
end)
end
else
speedInput.Text = tostring(flySpeed)
end
end
end)
-- Main fly logic (RenderStepped)
runService.RenderStepped:Connect(function()
if flying and bodyVelocity and player.Character and player.Character:FindFirstChild("HumanoidRootPart") then
local cam = workspace.CurrentCamera
local dir = Vector3.new()
if userInputService.TouchEnabled then
local hum = player.Character:FindFirstChildOfClass("Humanoid")
if hum and hum.MoveDirection.Magnitude > 0 then
dir = cam.CFrame.LookVector
end
else
if userInputService:IsKeyDown(Enum.KeyCode.W) then dir = dir + cam.CFrame.LookVector end
if userInputService:IsKeyDown(Enum.KeyCode.S) then dir = dir - cam.CFrame.LookVector end
if userInputService:IsKeyDown(Enum.KeyCode.A) then dir = dir - cam.CFrame.RightVector end
if userInputService:IsKeyDown(Enum.KeyCode.D) then dir = dir + cam.CFrame.RightVector end
if userInputService:IsKeyDown(Enum.KeyCode.Space) then dir = dir + Vector3.new(0, 1, 0) end
if userInputService:IsKeyDown(Enum.KeyCode.LeftControl) then dir = dir - Vector3.new(0, 1, 0) end
end
if dir.Magnitude > 0 then
bodyVelocity.Velocity = dir.Unit * flySpeed
else
bodyVelocity.Velocity = Vector3.zero
end
end
end)



i just fixed it so now with mobile its not broken
how do i use it on mobile im new in this web
Chat gpt script 🙏🙏
not chatgpt it was my friend that coded it with me