-- [[ Rscripts Risk Notice ]] -- This script is not verified by rscripts.net. Deal with caution. -- -- Stay safe: -- • Never log in on unofficial Roblox sites or lookalike domains. -- • Real Roblox links use roblox.com (check the .com ending). -- • Treat fake Roblox login / "claim reward" pages as phishing. -- [[ End Rscripts Risk Notice ]] -- MOBILE + PC FLY + PREMIUM GUI -- Mobile joystick + PC WASD + mouse camera -- Custom speed input: 10-300 -- Put this LocalScript in StarterPlayerScripts 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 camera = workspace.CurrentCamera -------------------------------------------------- -- SETTINGS -------------------------------------------------- local flySpeed = 60 local flying = false local minimized = false -------------------------------------------------- -- CHARACTER -------------------------------------------------- local character local humanoid local rootPart local animateScript local oldWalkSpeed = 16 local oldJumpPower = 50 local oldJumpHeight = 7.2 local oldAutoRotate = true -------------------------------------------------- -- MOBILE CONTROLS -------------------------------------------------- local playerModule local controls task.spawn(function() local playerScripts = player:WaitForChild("PlayerScripts") playerModule = require(playerScripts:WaitForChild("PlayerModule")) controls = playerModule:GetControls() end) -------------------------------------------------- -- HOVER FORCE -------------------------------------------------- local hoverAttachment local hoverForce local function createHoverForce() if hoverForce then hoverForce:Destroy() end if hoverAttachment then hoverAttachment:Destroy() end hoverAttachment = Instance.new("Attachment") hoverAttachment.Name = "FlyHoverAttachment" hoverAttachment.Parent = rootPart hoverForce = Instance.new("VectorForce") hoverForce.Name = "FlyHoverForce" hoverForce.Attachment0 = hoverAttachment hoverForce.RelativeTo = Enum.ActuatorRelativeTo.World hoverForce.ApplyAtCenterOfMass = true hoverForce.Parent = rootPart end local function updateHoverForce() if hoverForce and rootPart then hoverForce.Force = Vector3.new( 0, rootPart.AssemblyMass * workspace.Gravity, 0 ) end end local function removeHoverForce() if hoverForce then hoverForce:Destroy() hoverForce = nil end if hoverAttachment then hoverAttachment:Destroy() hoverAttachment = nil end end -------------------------------------------------- -- CHARACTER SETUP -------------------------------------------------- local function setupCharacter(char) character = char humanoid = char:WaitForChild("Humanoid") rootPart = char:WaitForChild("HumanoidRootPart") animateScript = char:FindFirstChild("Animate") flying = false removeHoverForce() end setupCharacter(player.Character or player.CharacterAdded:Wait()) player.CharacterAdded:Connect(setupCharacter) -------------------------------------------------- -- GUI -------------------------------------------------- local gui = Instance.new("ScreenGui") gui.Name = "PremiumMobileFly" gui.ResetOnSpawn = false gui.IgnoreGuiInset = true gui.Parent = player:WaitForChild("PlayerGui") -------------------------------------------------- -- MAIN PANEL -------------------------------------------------- local main = Instance.new("Frame") main.Name = "Main" main.Size = UDim2.new(0, 225, 0, 190) main.Position = UDim2.new(0, 20, 0.5, -95) main.BackgroundColor3 = Color3.fromRGB(18, 19, 24) main.BorderSizePixel = 0 main.Parent = gui local mainCorner = Instance.new("UICorner") mainCorner.CornerRadius = UDim.new(0, 18) mainCorner.Parent = main local mainStroke = Instance.new("UIStroke") mainStroke.Color = Color3.fromRGB(70, 72, 85) mainStroke.Thickness = 1.5 mainStroke.Transparency = 0.25 mainStroke.Parent = main -------------------------------------------------- -- HEADER -------------------------------------------------- local header = Instance.new("Frame") header.Name = "Header" header.Size = UDim2.new(1, -20, 0, 48) header.Position = UDim2.new(0, 10, 0, 8) header.BackgroundColor3 = Color3.fromRGB(25, 27, 34) header.BorderSizePixel = 0 header.Parent = main local headerCorner = Instance.new("UICorner") headerCorner.CornerRadius = UDim.new(0, 12) headerCorner.Parent = header -------------------------------------------------- -- TITLE -------------------------------------------------- local icon = Instance.new("TextLabel") icon.Size = UDim2.new(0, 40, 1, 0) icon.Position = UDim2.new(0, 5, 0, 0) icon.BackgroundTransparency = 1 icon.Text = "✈" icon.TextColor3 = Color3.fromRGB(100, 190, 255) icon.TextSize = 24 icon.Font = Enum.Font.GothamBold icon.Parent = header local title = Instance.new("TextLabel") title.Size = UDim2.new(0, 88, 0, 25) title.Position = UDim2.new(0, 48, 0, 4) title.BackgroundTransparency = 1 title.Text = "MOBILE + PC FLY" title.TextColor3 = Color3.new(1, 1, 1) title.TextSize = 9 title.Font = Enum.Font.GothamBold title.TextXAlignment = Enum.TextXAlignment.Left title.TextScaled = true title.Parent = header local subtitle = Instance.new("TextLabel") subtitle.Size = UDim2.new(0, 88, 0, 18) subtitle.Position = UDim2.new(0, 48, 0, 25) subtitle.BackgroundTransparency = 1 subtitle.Text = "Flight Control" subtitle.TextColor3 = Color3.fromRGB(145, 148, 160) subtitle.TextSize = 11 subtitle.Font = Enum.Font.Gotham subtitle.TextXAlignment = Enum.TextXAlignment.Left subtitle.Parent = header -------------------------------------------------- -- MINIMIZE BUTTON -------------------------------------------------- local minimizeButton = Instance.new("TextButton") minimizeButton.Name = "Minimize" minimizeButton.Size = UDim2.new(0, 30, 0, 30) minimizeButton.Position = UDim2.new(1, -68, 0, 9) minimizeButton.BackgroundColor3 = Color3.fromRGB(40, 42, 50) minimizeButton.BorderSizePixel = 0 minimizeButton.Text = "−" minimizeButton.TextColor3 = Color3.fromRGB(220, 220, 225) minimizeButton.TextSize = 20 minimizeButton.Font = Enum.Font.GothamBold minimizeButton.AutoButtonColor = false minimizeButton.Parent = header local minCorner = Instance.new("UICorner") minCorner.CornerRadius = UDim.new(0, 8) minCorner.Parent = minimizeButton -------------------------------------------------- -- CLOSE BUTTON -------------------------------------------------- local closeButton = Instance.new("TextButton") closeButton.Name = "Close" closeButton.Size = UDim2.new(0, 30, 0, 30) closeButton.Position = UDim2.new(1, -34, 0, 9) closeButton.BackgroundColor3 = Color3.fromRGB(55, 35, 40) closeButton.BorderSizePixel = 0 closeButton.Text = "×" closeButton.TextColor3 = Color3.fromRGB(255, 130, 140) closeButton.TextSize = 20 closeButton.Font = Enum.Font.GothamBold closeButton.AutoButtonColor = false closeButton.Parent = header local closeCorner = Instance.new("UICorner") closeCorner.CornerRadius = UDim.new(0, 8) closeCorner.Parent = closeButton -------------------------------------------------- -- FLY BUTTON -------------------------------------------------- local flyButton = Instance.new("TextButton") flyButton.Name = "FlyButton" flyButton.Size = UDim2.new(1, -20, 0, 48) flyButton.Position = UDim2.new(0, 10, 0, 64) flyButton.BackgroundColor3 = Color3.fromRGB(38, 40, 48) flyButton.BorderSizePixel = 0 flyButton.Text = "" flyButton.AutoButtonColor = false flyButton.Parent = main local flyCorner = Instance.new("UICorner") flyCorner.CornerRadius = UDim.new(0, 12) flyCorner.Parent = flyButton local flyStroke = Instance.new("UIStroke") flyStroke.Color = Color3.fromRGB(75, 78, 90) flyStroke.Transparency = 0.3 flyStroke.Parent = flyButton local flyIcon = Instance.new("TextLabel") flyIcon.Size = UDim2.new(0, 35, 1, 0) flyIcon.Position = UDim2.new(0, 10, 0, 0) flyIcon.BackgroundTransparency = 1 flyIcon.Text = "⚡" flyIcon.TextColor3 = Color3.fromRGB(255, 205, 80) flyIcon.TextSize = 20 flyIcon.Font = Enum.Font.GothamBold flyIcon.Parent = flyButton local flyText = Instance.new("TextLabel") flyText.Size = UDim2.new(0, 90, 1, 0) flyText.Position = UDim2.new(0, 48, 0, 0) flyText.BackgroundTransparency = 1 flyText.Text = "FLY" flyText.TextColor3 = Color3.new(1, 1, 1) flyText.TextSize = 16 flyText.Font = Enum.Font.GothamBold flyText.TextXAlignment = Enum.TextXAlignment.Left flyText.Parent = flyButton local statusText = Instance.new("TextLabel") statusText.Size = UDim2.new(0, 55, 1, 0) statusText.Position = UDim2.new(1, -65, 0, 0) statusText.BackgroundTransparency = 1 statusText.Text = "OFF" statusText.TextColor3 = Color3.fromRGB(150, 153, 165) statusText.TextSize = 12 statusText.Font = Enum.Font.GothamBold statusText.TextXAlignment = Enum.TextXAlignment.Right statusText.Parent = flyButton -------------------------------------------------- -- SPEED BOX -------------------------------------------------- local speedBox = Instance.new("Frame") speedBox.Size = UDim2.new(1, -20, 0, 48) speedBox.Position = UDim2.new(0, 10, 0, 119) speedBox.BackgroundColor3 = Color3.fromRGB(25, 27, 34) speedBox.BorderSizePixel = 0 speedBox.Parent = main local speedCorner = Instance.new("UICorner") speedCorner.CornerRadius = UDim.new(0, 12) speedCorner.Parent = speedBox local speedTitle = Instance.new("TextLabel") speedTitle.Size = UDim2.new(0, 70, 1, 0) speedTitle.Position = UDim2.new(0, 10, 0, 0) speedTitle.BackgroundTransparency = 1 speedTitle.Text = "SPEED" speedTitle.TextColor3 = Color3.fromRGB(150, 153, 165) speedTitle.TextSize = 11 speedTitle.Font = Enum.Font.GothamBold speedTitle.TextXAlignment = Enum.TextXAlignment.Left speedTitle.Parent = speedBox -------------------------------------------------- -- CUSTOM SPEED TEXTBOX -------------------------------------------------- local speedValue = Instance.new("TextBox") speedValue.Name = "SpeedInput" speedValue.Size = UDim2.new(0, 50, 1, 0) speedValue.Position = UDim2.new(0.5, -25, 0, 0) speedValue.BackgroundTransparency = 1 speedValue.Text = "60" speedValue.PlaceholderText = "60" speedValue.TextColor3 = Color3.new(1, 1, 1) speedValue.TextSize = 17 speedValue.Font = Enum.Font.GothamBold speedValue.ClearTextOnFocus = false speedValue.TextEditable = true speedValue.Parent = speedBox local minusButton = Instance.new("TextButton") minusButton.Size = UDim2.new(0, 34, 0, 34) minusButton.Position = UDim2.new(1, -80, 0.5, -17) minusButton.BackgroundColor3 = Color3.fromRGB(40, 42, 50) minusButton.BorderSizePixel = 0 minusButton.Text = "−" minusButton.TextColor3 = Color3.new(1, 1, 1) minusButton.TextSize = 20 minusButton.Font = Enum.Font.GothamBold minusButton.AutoButtonColor = false minusButton.Parent = speedBox local minusCorner = Instance.new("UICorner") minusCorner.CornerRadius = UDim.new(0, 9) minusCorner.Parent = minusButton local plusButton = Instance.new("TextButton") plusButton.Size = UDim2.new(0, 34, 0, 34) plusButton.Position = UDim2.new(1, -40, 0.5, -17) plusButton.BackgroundColor3 = Color3.fromRGB(40, 42, 50) plusButton.BorderSizePixel = 0 plusButton.Text = "+" plusButton.TextColor3 = Color3.new(1, 1, 1) plusButton.TextSize = 20 plusButton.Font = Enum.Font.GothamBold plusButton.AutoButtonColor = false plusButton.Parent = speedBox local plusCorner = Instance.new("UICorner") plusCorner.CornerRadius = UDim.new(0, 9) plusCorner.Parent = plusButton -------------------------------------------------- -- HINT -------------------------------------------------- local hint = Instance.new("TextLabel") hint.Size = UDim2.new(1, -20, 0, 18) hint.Position = UDim2.new(0, 10, 1, -20) hint.BackgroundTransparency = 1 hint.Text = "JOYSTICK / WASD • MOVE TO FLY" hint.TextColor3 = Color3.fromRGB(110, 113, 125) hint.TextSize = 9 hint.Font = Enum.Font.GothamBold hint.Parent = main -------------------------------------------------- -- MINIMIZE / RESTORE -------------------------------------------------- local function setMinimized(state) minimized = state if minimized then flyButton.Visible = false speedBox.Visible = false hint.Visible = false TweenService:Create( main, TweenInfo.new(0.2, Enum.EasingStyle.Quad, Enum.EasingDirection.Out), {Size = UDim2.new(0, 225, 0, 64)} ):Play() minimizeButton.Text = "+" else flyButton.Visible = true speedBox.Visible = true hint.Visible = true TweenService:Create( main, TweenInfo.new(0.2, Enum.EasingStyle.Quad, Enum.EasingDirection.Out), {Size = UDim2.new(0, 225, 0, 190)} ):Play() minimizeButton.Text = "−" end end -------------------------------------------------- -- CLOSE / MINIMIZE -------------------------------------------------- closeButton.Activated:Connect(function() main.Visible = false end) minimizeButton.Activated:Connect(function() setMinimized(not minimized) end) -------------------------------------------------- -- GUI DRAGGING -------------------------------------------------- local draggingGui = false local dragStart local startPosition header.InputBegan:Connect(function(input) if input.UserInputType == Enum.UserInputType.Touch or input.UserInputType == Enum.UserInputType.MouseButton1 then draggingGui = true dragStart = input.Position startPosition = main.Position end end) header.InputEnded:Connect(function(input) if input.UserInputType == Enum.UserInputType.Touch or input.UserInputType == Enum.UserInputType.MouseButton1 then draggingGui = false end end) UserInputService.InputChanged:Connect(function(input) if draggingGui then if input.UserInputType == Enum.UserInputType.Touch or input.UserInputType == Enum.UserInputType.MouseMovement then local delta = input.Position - dragStart main.Position = UDim2.new( startPosition.X.Scale, startPosition.X.Offset + delta.X, startPosition.Y.Scale, startPosition.Y.Offset + delta.Y ) end end end) -------------------------------------------------- -- BUTTON PRESS EFFECT -------------------------------------------------- local function buttonPress(button) local originalSize = button.Size local smaller = UDim2.new( originalSize.X.Scale, originalSize.X.Offset - 4, originalSize.Y.Scale, originalSize.Y.Offset - 4 ) TweenService:Create( button, TweenInfo.new(0.08), {Size = smaller} ):Play() task.delay(0.08, function() TweenService:Create( button, TweenInfo.new(0.08), {Size = originalSize} ):Play() end) end -------------------------------------------------- -- START FLYING -------------------------------------------------- local function startFlying() if not humanoid or not rootPart then return end flying = true oldWalkSpeed = humanoid.WalkSpeed oldJumpPower = humanoid.JumpPower oldJumpHeight = humanoid.JumpHeight oldAutoRotate = humanoid.AutoRotate humanoid.WalkSpeed = 0 humanoid.JumpPower = 0 humanoid.JumpHeight = 0 humanoid.AutoRotate = false humanoid:ChangeState(Enum.HumanoidStateType.Physics) if animateScript then animateScript.Disabled = true end for _, track in ipairs(humanoid:GetPlayingAnimationTracks()) do track:Stop(0) end createHoverForce() updateHoverForce() rootPart.AssemblyLinearVelocity = Vector3.zero rootPart.AssemblyAngularVelocity = Vector3.zero flyText.Text = "FLYING" statusText.Text = "ON" statusText.TextColor3 = Color3.fromRGB(80, 255, 150) flyButton.BackgroundColor3 = Color3.fromRGB(35, 75, 55) flyStroke.Color = Color3.fromRGB(70, 190, 120) end -------------------------------------------------- -- STOP FLYING -------------------------------------------------- local function stopFlying() flying = false removeHoverForce() if rootPart then rootPart.AssemblyLinearVelocity = Vector3.zero rootPart.AssemblyAngularVelocity = Vector3.zero end if humanoid then humanoid.WalkSpeed = oldWalkSpeed humanoid.JumpPower = oldJumpPower humanoid.JumpHeight = oldJumpHeight humanoid.AutoRotate = oldAutoRotate humanoid:ChangeState(Enum.HumanoidStateType.GettingUp) end if animateScript then animateScript.Disabled = false end flyText.Text = "FLY" statusText.Text = "OFF" statusText.TextColor3 = Color3.fromRGB(150, 153, 165) flyButton.BackgroundColor3 = Color3.fromRGB(38, 40, 48) flyStroke.Color = Color3.fromRGB(75, 78, 90) end -------------------------------------------------- -- FLY BUTTON -------------------------------------------------- flyButton.Activated:Connect(function() buttonPress(flyButton) if flying then stopFlying() else startFlying() end end) -------------------------------------------------- -- SPEED BUTTONS -------------------------------------------------- minusButton.Activated:Connect(function() buttonPress(minusButton) flySpeed = math.max(10, flySpeed - 10) speedValue.Text = tostring(flySpeed) end) plusButton.Activated:Connect(function() buttonPress(plusButton) flySpeed = math.min(300, flySpeed + 10) speedValue.Text = tostring(flySpeed) end) -------------------------------------------------- -- CUSTOM SPEED INPUT -------------------------------------------------- speedValue.FocusLost:Connect(function() local input = speedValue.Text -- Only whole-number digits are accepted if not input:match("^%d+$") then speedValue.Text = tostring(flySpeed) return end local newSpeed = tonumber(input) -- Only allow speeds from 10 to 300 if not newSpeed or newSpeed < 10 or newSpeed > 300 then speedValue.Text = tostring(flySpeed) return end flySpeed = newSpeed speedValue.Text = tostring(flySpeed) end) -------------------------------------------------- -- PC KEYBOARD INPUT -------------------------------------------------- local function getPCMoveVector() local x = 0 local z = 0 if UserInputService:IsKeyDown(Enum.KeyCode.A) then x = x - 1 end if UserInputService:IsKeyDown(Enum.KeyCode.D) then x = x + 1 end if UserInputService:IsKeyDown(Enum.KeyCode.W) then z = z - 1 end if UserInputService:IsKeyDown(Enum.KeyCode.S) then z = z + 1 end return Vector3.new(x, 0, z) end -------------------------------------------------- -- FLIGHT LOOP -------------------------------------------------- RunService.RenderStepped:Connect(function() if not flying then return end if not character or not character.Parent then return end if not humanoid or not rootPart then return end humanoid.WalkSpeed = 0 humanoid.JumpPower = 0 humanoid.JumpHeight = 0 humanoid.AutoRotate = false if humanoid:GetState() ~= Enum.HumanoidStateType.Physics then humanoid:ChangeState(Enum.HumanoidStateType.Physics) end updateHoverForce() -------------------------------------------------- -- CAMERA DIRECTION -------------------------------------------------- local cameraDirection = camera.CFrame.LookVector if cameraDirection.Magnitude > 0 then rootPart.CFrame = CFrame.lookAt( rootPart.Position, rootPart.Position + cameraDirection ) end -------------------------------------------------- -- MOVEMENT INPUT -------------------------------------------------- local moveVector = Vector3.zero local typing = UserInputService:GetFocusedTextBox() ~= nil if not typing then if UserInputService.KeyboardEnabled then local pcVector = getPCMoveVector() if pcVector.Magnitude > 0 then moveVector = pcVector elseif controls then moveVector = controls:GetMoveVector() end elseif controls then moveVector = controls:GetMoveVector() end end -------------------------------------------------- -- MOVE -------------------------------------------------- if moveVector.Magnitude < 0.05 then rootPart.AssemblyLinearVelocity = Vector3.zero rootPart.AssemblyAngularVelocity = Vector3.zero else local cameraRight = camera.CFrame.RightVector local cameraForward = camera.CFrame.LookVector local direction = (cameraRight * moveVector.X) + (cameraForward * -moveVector.Z) if direction.Magnitude > 0 then direction = direction.Unit rootPart.AssemblyLinearVelocity = direction * flySpeed end end -------------------------------------------------- -- STOP ANIMATIONS -------------------------------------------------- for _, track in ipairs(humanoid:GetPlayingAnimationTracks()) do if track.IsPlaying then track:Stop(0) end end end)