Fly GUI
Key RequiredUniversal

Fly GUI

Universal ScriptMy_Own_ScriptMy_Own_Script 1.4K views 368 executesUpdated Jan 25, 2026
5.0/ 5(3 votes)
30100% Positive
Lua Script•215 lines (8498 chars)
local Players = game:GetService("Players")
local UserInputService = game:GetService("UserInputService")
local RunService = game:GetService("RunService")
local player = Players.LocalPlayer

-- UI CREATION
local FlyGuiMain = Instance.new("ScreenGui")
FlyGuiMain.Name = "FlyGui_Pro"
FlyGuiMain.ResetOnSpawn = false
FlyGuiMain.Parent = player:WaitForChild("PlayerGui")

local MainFrame = Instance.new("Frame")
MainFrame.Name = "Main"
MainFrame.Size = UDim2.new(0, 500, 0, 300)
MainFrame.Position = UDim2.new(0.5, -250, 0.5, -150)
MainFrame.BackgroundColor3 = Color3.fromRGB(25, 25, 25)
MainFrame.BorderSizePixel = 0
MainFrame.Active = true
MainFrame.Parent = FlyGuiMain

local function createBtn(name, text, pos, size, color, parent)
	local b = Instance.new("TextButton")
	b.Name = name
	b.Text = text
	b.Position = pos
	b.Size = size
	b.BackgroundColor3 = color
	b.BorderSizePixel = 0
	b.Font = Enum.Font.SourceSansBold
	b.TextColor3 = Color3.new(1, 1, 1)
	b.TextSize = 16
	b.Parent = parent
	return b
end

-- Header
local Title = createBtn("Title", "Fly Gui - Make by My_Own_Script", UDim2.new(0,0,0,0), UDim2.new(0.9,0,0.12,0), Color3.fromRGB(0, 153, 188), MainFrame)
local Close = createBtn("Close", "X", UDim2.new(0.9,0,0,0), UDim2.new(0.1,0,0.12,0), Color3.fromRGB(200, 0, 0), MainFrame)

-- Left Side (Controls)
local LeftPanel = Instance.new("Frame", MainFrame)
LeftPanel.Size = UDim2.new(0.5, 0, 0.88, 0)
LeftPanel.Position = UDim2.new(0, 0, 0.12, 0)
LeftPanel.BackgroundTransparency = 1

local StartBtn = createBtn("Start", "START FLY", UDim2.new(0.05,0,0.05,0), UDim2.new(0.9,0,0.18,0), Color3.fromRGB(255, 140, 0), LeftPanel)
local PlusBtn = createBtn("Plus", "+10", UDim2.new(0.05,0,0.25,0), UDim2.new(0.25,0,0.15,0), Color3.fromRGB(0, 32, 150), LeftPanel)
local SpeedDisp = createBtn("Disp", "Speed: 50", UDim2.new(0.35,0,0.25,0), UDim2.new(0.3,0,0.15,0), Color3.fromRGB(67, 133, 200), LeftPanel)
local MinusBtn = createBtn("Minus", "-10", UDim2.new(0.7,0,0.25,0), UDim2.new(0.25,0,0.15,0), Color3.fromRGB(204, 170, 0), LeftPanel)
local NoclipBtn = createBtn("Noclip", "Noclip: OFF", UDim2.new(0.05,0,0.45,0), UDim2.new(0.9,0,0.15,0), Color3.fromRGB(60, 60, 60), LeftPanel)
local ColorBtn = createBtn("Color", "Click here to Change ESP Color", UDim2.new(0.05,0,0.65,0), UDim2.new(0.9,0,0.3,0), Color3.fromRGB(45, 45, 45), LeftPanel)
ColorBtn.TextWrapped = true

-- Right Side (Player List)
local RightPanel = Instance.new("ScrollingFrame", MainFrame)
RightPanel.Size = UDim2.new(0.45, 0, 0.8, 0)
RightPanel.Position = UDim2.new(0.52, 0, 0.15, 0)
RightPanel.BackgroundColor3 = Color3.fromRGB(40, 40, 40)
RightPanel.BorderSizePixel = 0
RightPanel.CanvasSize = UDim2.new(0, 0, 0, 0)
local UIList = Instance.new("UIListLayout", RightPanel)

-- LOGIC VARIABLES
local flying, noclip = false, false
local speed = 50
local espTarget = "None" 
local espColor = Color3.fromRGB(255, 0, 0)
local ctrl = {f = 0, b = 0, l = 0, r = 0, u = 0, d = 0}

-- DRAG LOGIC
local dragging, dragStart, startPos
Title.InputBegan:Connect(function(input)
	if input.UserInputType == Enum.UserInputType.MouseButton1 then
		dragging = true; dragStart = input.Position; startPos = MainFrame.Position
		input.Changed:Connect(function() if input.UserInputState == Enum.UserInputState.End then dragging = false end end)
	end
end)
UserInputService.InputChanged:Connect(function(input)
	if dragging and input.UserInputType == Enum.UserInputType.MouseMovement then
		local delta = input.Position - dragStart
		MainFrame.Position = UDim2.new(startPos.X.Scale, startPos.X.Offset + delta.X, startPos.Y.Scale, startPos.Y.Offset + delta.Y)
	end
end)

-- ESP CLEAR FUNCTION
local function clearAllESP()
	espTarget = "None"
	for _, p in pairs(Players:GetPlayers()) do
		if p.Character and p.Character:FindFirstChild("ESPHighlight") then
			p.Character.ESPHighlight.Enabled = false
		end
	end
end

-- ESP REFRESH SYSTEM
local function updateESP()
	local allPlayers = Players:GetPlayers()
	local selectedList = {}

	if espTarget == "None" then
		clearAllESP()
		return
	elseif espTarget == "Everyone" then
		selectedList = allPlayers
	elseif espTarget == "Random" then
		if #allPlayers > 1 then
			local r; repeat r = allPlayers[math.random(#allPlayers)] until r ~= player
			selectedList = {r}
		end
	else
		local p = Players:FindFirstChild(espTarget)
		if p then selectedList = {p} end
	end

	-- Disable others
	for _, p in pairs(allPlayers) do
		if p.Character and p.Character:FindFirstChild("ESPHighlight") then
			p.Character.ESPHighlight.Enabled = false
		end
	end

	-- Apply New
	for _, p in pairs(selectedList) do
		if p ~= player and p.Character then
			local h = p.Character:FindFirstChild("ESPHighlight") or Instance.new("Highlight", p.Character)
			h.Name = "ESPHighlight"
			h.FillColor = espColor
			h.Enabled = true
		end
	end
end

-- UPDATE PLAYER LIST UI
local function refreshPlayerList()
	for _, v in pairs(RightPanel:GetChildren()) do if v:IsA("TextButton") then v:Destroy() end end
	
	local function addListBtn(name, targetVal, color)
		local b = createBtn(name, name, UDim2.new(0,0,0,0), UDim2.new(1,0,0,30), color or Color3.fromRGB(50,50,50), RightPanel)
		b.MouseButton1Click:Connect(function()
			espTarget = targetVal
			updateESP()
		end)
	end

	-- Added unESP All (Clear) button
	addListBtn("[ UN-ESP ALL ]", "None", Color3.fromRGB(150, 0, 0))
	addListBtn("[ EVERYONE ]", "Everyone", Color3.fromRGB(0, 100, 0))
	addListBtn("[ RANDOM ]", "Random", Color3.fromRGB(100, 100, 0))
	
	for _, p in pairs(Players:GetPlayers()) do
		if p ~= player then addListBtn(p.Name, p.Name) end
	end
	RightPanel.CanvasSize = UDim2.new(0,0,0, UIList.AbsoluteContentSize.Y)
end

Players.PlayerAdded:Connect(refreshPlayerList)
Players.PlayerRemoving:Connect(refreshPlayerList)
refreshPlayerList()

-- BUTTONS
StartBtn.MouseButton1Click:Connect(function()
	if flying then flying = false else
		flying = true; StartBtn.Text = "STOP FLY"
		local char = player.Character; local root = char.HumanoidRootPart
		local bg = Instance.new("BodyGyro", root); bg.maxTorque = Vector3.new(9e9, 9e9, 9e9); bg.P = 9e4
		local bv = Instance.new("BodyVelocity", root); bv.maxForce = Vector3.new(9e9, 9e9, 9e9)
		task.spawn(function()
			while flying do RunService.RenderStepped:Wait()
				char.Humanoid.PlatformStand = true; local cam = workspace.CurrentCamera.CFrame
				bv.velocity = ((cam.LookVector * (ctrl.f + ctrl.b)) + (cam * CFrame.new(ctrl.l + ctrl.r, (ctrl.u + ctrl.d), 0).Position - cam.Position)).Unit * speed
				bg.cframe = cam
				if (ctrl.f+ctrl.b+ctrl.l+ctrl.r+ctrl.u+ctrl.d) == 0 then bv.velocity = Vector3.new(0,0,0) end
			end
			bg:Destroy(); bv:Destroy(); char.Humanoid.PlatformStand = false; StartBtn.Text = "START FLY"
		end)
	end
end)

NoclipBtn.MouseButton1Click:Connect(function()
	noclip = not noclip
	NoclipBtn.Text = noclip and "Noclip: ON" or "Noclip: OFF"
	NoclipBtn.BackgroundColor3 = noclip and Color3.fromRGB(0, 150, 0) or Color3.fromRGB(60, 60, 60)
end)

local colors = {Color3.new(1,0,0), Color3.new(0,1,0), Color3.new(0,0,1), Color3.new(1,1,0), Color3.new(1,0,1), Color3.new(0,1,1)}
local colorIdx = 1
ColorBtn.MouseButton1Click:Connect(function()
	colorIdx = (colorIdx % #colors) + 1
	espColor = colors[colorIdx]
	ColorBtn.TextColor3 = espColor
	updateESP()
end)

PlusBtn.MouseButton1Click:Connect(function() speed += 10; SpeedDisp.Text = "Speed: "..speed end)
MinusBtn.MouseButton1Click:Connect(function() speed = math.max(0, speed-10); SpeedDisp.Text = "Speed: "..speed end)

-- INPUTS
UserInputService.InputBegan:Connect(function(i, g) if g then return end
	if i.KeyCode == Enum.KeyCode.W then ctrl.f = 1 elseif i.KeyCode == Enum.KeyCode.S then ctrl.b = -1
	elseif i.KeyCode == Enum.KeyCode.A then ctrl.l = -1 elseif i.KeyCode == Enum.KeyCode.D then ctrl.r = 1
	elseif i.KeyCode == Enum.KeyCode.E then ctrl.u = 1 elseif i.KeyCode == Enum.KeyCode.Q then ctrl.d = -1 end
end)
UserInputService.InputEnded:Connect(function(i)
	if i.KeyCode == Enum.KeyCode.W or i.KeyCode == Enum.KeyCode.S then ctrl.f, ctrl.b = 0, 0
	elseif i.KeyCode == Enum.KeyCode.A or i.KeyCode == Enum.KeyCode.D then ctrl.l, ctrl.r = 0, 0
	elseif i.KeyCode == Enum.KeyCode.E or i.KeyCode == Enum.KeyCode.Q then ctrl.u, ctrl.d = 0, 0 end
end)

RunService.Stepped:Connect(function()
	if noclip and player.Character then
		for _, v in pairs(player.Character:GetDescendants()) do if v:IsA("BasePart") then v.CanCollide = false end end
	end
end)

Close.MouseButton1Click:Connect(function() FlyGuiMain:Destroy() flying = false noclip = false end)

Features & Information

- You can Fly - You can Noclip - You can change Fly Speed - You can ESP players - You can change ESP Color
#fly gui#GUI#noclip#ESP#FLY SPEED

Community Comments (1)

deplocksxzdeplocksxzJan 25, 2026

w

More Scripts for Universal Scripts