local UIS = game:GetService("UserInputService") local RS = game:GetService("RunService") local TW = game:GetService("TweenService") local player = game:GetService("Players").LocalPlayer local camera = workspace.CurrentCamera local SPEED, SPRINT_MULT, KEY = 60, 2.5, Enum.KeyCode.F local flying, bv, bg = false, nil, nil local function char() return player.Character or player.CharacterAdded:Wait() end local function root() return char():FindFirstChild("HumanoidRootPart") end local function hum() return char():FindFirstChildOfClass("Humanoid") end local screenGui = Instance.new("ScreenGui") screenGui.Name, screenGui.ResetOnSpawn, screenGui.ZIndexBehavior = "FlyUI", false, Enum.ZIndexBehavior.Sibling screenGui.Parent = player:WaitForChild("PlayerGui") local panel = Instance.new("Frame") panel.Size = UDim2.new(0, 160, 0, 200) panel.Position = UDim2.new(0, 16, 0, 16) panel.BackgroundColor3 = Color3.fromRGB(10, 10, 14) panel.BorderSizePixel = 0 panel.Parent = screenGui Instance.new("UICorner", panel).CornerRadius = UDim.new(0, 12) local stroke = Instance.new("UIStroke", panel) stroke.Color, stroke.Thickness, stroke.Transparency = Color3.fromRGB(60, 60, 80), 1.2, 0 local title = Instance.new("TextLabel") title.Size = UDim2.new(1, 0, 0, 36) title.Position = UDim2.new(0, 0, 0, 0) title.BackgroundTransparency = 1 title.Text = "✦ FLY" title.Font = Enum.Font.GothamBold title.TextSize = 13 title.TextColor3 = Color3.fromRGB(200, 200, 255) title.TextXAlignment = Enum.TextXAlignment.Center title.Parent = panel local divider = Instance.new("Frame") divider.Size = UDim2.new(0.8, 0, 0, 1) divider.Position = UDim2.new(0.1, 0, 0, 38) divider.BackgroundColor3 = Color3.fromRGB(50, 50, 70) divider.BorderSizePixel = 0 divider.Parent = panel local statusLabel = Instance.new("TextLabel") statusLabel.Size = UDim2.new(1, 0, 0, 24) statusLabel.Position = UDim2.new(0, 0, 0, 50) statusLabel.BackgroundTransparency = 1 statusLabel.Text = "STATUS: OFF" statusLabel.Font = Enum.Font.Gotham statusLabel.TextSize = 11 statusLabel.TextColor3 = Color3.fromRGB(120, 120, 150) statusLabel.TextXAlignment = Enum.TextXAlignment.Center statusLabel.Parent = panel -- Clickable speed label local speedBtn = Instance.new("TextButton") speedBtn.Size = UDim2.new(1, 0, 0, 20) speedBtn.Position = UDim2.new(0, 0, 0, 76) speedBtn.BackgroundTransparency = 1 speedBtn.Text = "SPEED: " .. SPEED speedBtn.Font = Enum.Font.Gotham speedBtn.TextSize = 11 speedBtn.TextColor3 = Color3.fromRGB(100, 100, 130) speedBtn.TextXAlignment = Enum.TextXAlignment.Center speedBtn.AutoButtonColor = false speedBtn.BorderSizePixel = 0 speedBtn.Parent = panel -- Speed input box (hidden by default) local speedBox = Instance.new("TextBox") speedBox.Size = UDim2.new(0, 110, 0, 20) speedBox.Position = UDim2.new(0.5, -55, 0, 76) speedBox.BackgroundColor3 = Color3.fromRGB(18, 18, 30) speedBox.Text = tostring(SPEED) speedBox.Font = Enum.Font.GothamBold speedBox.TextSize = 11 speedBox.TextColor3 = Color3.fromRGB(200, 200, 255) speedBox.PlaceholderText = "1 – 500" speedBox.PlaceholderColor3 = Color3.fromRGB(70, 70, 100) speedBox.TextXAlignment = Enum.TextXAlignment.Center speedBox.ClearTextOnFocus = true speedBox.BorderSizePixel = 0 speedBox.Visible = false speedBox.Parent = panel Instance.new("UICorner", speedBox).CornerRadius = UDim.new(0, 5) local boxStroke = Instance.new("UIStroke", speedBox) boxStroke.Color, boxStroke.Thickness = Color3.fromRGB(110, 110, 200), 1.2 local keyLabel = Instance.new("TextLabel") keyLabel.Size = UDim2.new(1, 0, 0, 20) keyLabel.Position = UDim2.new(0, 0, 0, 98) keyLabel.BackgroundTransparency = 1 keyLabel.Text = "BIND: [" .. KEY.Name .. "]" keyLabel.Font = Enum.Font.Gotham keyLabel.TextSize = 11 keyLabel.TextColor3 = Color3.fromRGB(100, 100, 130) keyLabel.TextXAlignment = Enum.TextXAlignment.Center keyLabel.Parent = panel local btn = Instance.new("TextButton") btn.Size = UDim2.new(0, 120, 0, 38) btn.Position = UDim2.new(0.5, -60, 1, -54) btn.BackgroundColor3 = Color3.fromRGB(30, 30, 50) btn.Text = "ENABLE FLY" btn.Font = Enum.Font.GothamBold btn.TextSize = 12 btn.TextColor3 = Color3.fromRGB(180, 180, 255) btn.BorderSizePixel = 0 btn.AutoButtonColor = false btn.Parent = panel Instance.new("UICorner", btn).CornerRadius = UDim.new(0, 8) local btnStroke = Instance.new("UIStroke", btn) btnStroke.Color, btnStroke.Thickness = Color3.fromRGB(70, 70, 120), 1.2 local function tweenBg(target, color) TW:Create(target, TweenInfo.new(0.25), {BackgroundColor3 = color}):Play() end local function commitSpeed() local val = tonumber(speedBox.Text) if val then SPEED = math.clamp(math.floor(val), 1, 500) end speedBox.Visible = false speedBtn.Visible = true speedBtn.Text = "SPEED: " .. SPEED end speedBtn.MouseEnter:Connect(function() speedBtn.TextColor3 = Color3.fromRGB(180, 180, 255) end) speedBtn.MouseLeave:Connect(function() speedBtn.TextColor3 = Color3.fromRGB(100, 100, 130) end) speedBtn.MouseButton1Click:Connect(function() speedBtn.Visible = false speedBox.Text = tostring(SPEED) speedBox.Visible = true speedBox:CaptureFocus() end) speedBox.FocusLost:Connect(commitSpeed) local function updateUI() if flying then statusLabel.Text, statusLabel.TextColor3 = "STATUS: ACTIVE", Color3.fromRGB(120, 255, 160) btn.Text, btn.TextColor3 = "DISABLE FLY", Color3.fromRGB(255, 140, 140) btnStroke.Color = Color3.fromRGB(180, 60, 60) tweenBg(btn, Color3.fromRGB(50, 20, 20)) tweenBg(panel, Color3.fromRGB(12, 14, 22)) else statusLabel.Text, statusLabel.TextColor3 = "STATUS: OFF", Color3.fromRGB(120, 120, 150) btn.Text, btn.TextColor3 = "ENABLE FLY", Color3.fromRGB(180, 180, 255) btnStroke.Color = Color3.fromRGB(70, 70, 120) tweenBg(btn, Color3.fromRGB(30, 30, 50)) tweenBg(panel, Color3.fromRGB(10, 10, 14)) end end btn.MouseEnter:Connect(function() tweenBg(btn, flying and Color3.fromRGB(70, 25, 25) or Color3.fromRGB(40, 40, 70)) end) btn.MouseLeave:Connect(function() tweenBg(btn, flying and Color3.fromRGB(50, 20, 20) or Color3.fromRGB(30, 30, 50)) end) local function enable() local r, h = root(), hum() if not r or not h then return end h.PlatformStand = true bv = Instance.new("BodyVelocity") bv.Velocity, bv.MaxForce, bv.Parent = Vector3.zero, Vector3.new(1e5,1e5,1e5), r bg = Instance.new("BodyGyro") bg.MaxTorque, bg.D, bg.P, bg.CFrame, bg.Parent = Vector3.new(1e5,1e5,1e5), 100, 1e4, r.CFrame, r flying = true; updateUI() end local function disable() flying = false if bv then bv:Destroy(); bv = nil end if bg then bg:Destroy(); bg = nil end local h = hum(); if h then h.PlatformStand = false end updateUI() end btn.MouseButton1Click:Connect(function() (flying and disable or enable)() end) UIS.InputBegan:Connect(function(i, gp) if not gp and i.KeyCode == KEY then (flying and disable or enable)() end end) RS.Heartbeat:Connect(function() if not flying then return end local r = root(); if not r then return end local sprinting = UIS:IsKeyDown(Enum.KeyCode.LeftShift) or UIS:IsKeyDown(Enum.KeyCode.RightShift) local spd = sprinting and SPEED * SPRINT_MULT or SPEED if speedBtn.Visible then speedBtn.Text = "SPEED: " .. spd end local cf, dir = camera.CFrame, Vector3.zero if UIS:IsKeyDown(Enum.KeyCode.W) then dir += cf.LookVector end if UIS:IsKeyDown(Enum.KeyCode.S) then dir -= cf.LookVector end if UIS:IsKeyDown(Enum.KeyCode.A) then dir -= cf.RightVector end if UIS:IsKeyDown(Enum.KeyCode.D) then dir += cf.RightVector end if UIS:IsKeyDown(Enum.KeyCode.Space) then dir += Vector3.yAxis end if UIS:IsKeyDown(Enum.KeyCode.LeftControl) or UIS:IsKeyDown(Enum.KeyCode.C) then dir -= Vector3.yAxis end bv.Velocity = dir.Magnitude > 0 and dir.Unit * spd or Vector3.zero bg.CFrame = CFrame.new(r.Position, r.Position + cf.LookVector) end) player.CharacterAdded:Connect(function() flying, bv, bg = false, nil, nil; updateUI() end)