local Players = game:GetService("Players") local RunService = game:GetService("RunService") local UserInputService = game:GetService("UserInputService") local Stats = game:GetService("Stats") local CoreGui = game:GetService("CoreGui") local Player = Players.LocalPlayer local Mouse = Player:GetMouse() local Camera = workspace.CurrentCamera for _, old in ipairs(CoreGui:GetChildren()) do if old.Name == "F3_Final_Fixed" then old:Destroy() end end local sg = Instance.new("ScreenGui", CoreGui) sg.Name = "F3_Final_Fixed" sg.IgnoreGuiInset = true local function makeDraggable(obj) local dragging, dragInput, dragStart, startPos obj.InputBegan:Connect(function(input) if input.UserInputType == Enum.UserInputType.MouseButton1 or input.UserInputType == Enum.UserInputType.Touch then dragging = true dragStart = input.Position startPos = obj.Position input.Changed:Connect(function() if input.UserInputState == Enum.UserInputState.End then dragging = false end end) end end) obj.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 obj.Position = UDim2.new( startPos.X.Scale, startPos.X.Offset + delta.X, startPos.Y.Scale, startPos.Y.Offset + delta.Y ) end end) end local btn = Instance.new("TextButton", sg) btn.Size = UDim2.new(0, 80, 0, 30) btn.Position = UDim2.new(0, 10, 0, 10) btn.Text = "F3 MENU" btn.BackgroundColor3 = Color3.fromRGB(45, 45, 45) btn.TextColor3 = Color3.new(1, 1, 1) btn.Font = Enum.Font.SourceSansBold btn.BorderSizePixel = 0 makeDraggable(btn) local frame = Instance.new("Frame", sg) frame.Size = UDim2.new(0, 300, 0, 480) frame.Position = UDim2.new(0, 10, 0, 50) frame.BackgroundColor3 = Color3.new(0, 0, 0) frame.BackgroundTransparency = 0.4 frame.BorderSizePixel = 0 frame.Active = true makeDraggable(frame) local info = Instance.new("TextLabel", frame) info.Size = UDim2.new(1, -20, 0, 200) info.Position = UDim2.new(0, 10, 0, 10) info.BackgroundTransparency = 1 info.TextColor3 = Color3.new(1, 1, 1) info.TextXAlignment = Enum.TextXAlignment.Left info.TextYAlignment = Enum.TextYAlignment.Top info.Font = Enum.Font.Code info.TextSize = 13 info.RichText = true local function makeGraph(name, yPos, color) local label = Instance.new("TextLabel", frame) label.Text = name label.Size = UDim2.new(1, 0, 0, 15) label.Position = UDim2.new(0, 10, 0, yPos - 18) label.TextColor3 = color label.BackgroundTransparency = 1 label.TextSize = 10 label.Font = Enum.Font.Code label.TextXAlignment = Enum.TextXAlignment.Left local gFrame = Instance.new("Frame", frame) gFrame.Size = UDim2.new(1, -20, 0, 40) gFrame.Position = UDim2.new(0, 10, 0, yPos) gFrame.BackgroundColor3 = Color3.new(0, 0, 0) gFrame.BackgroundTransparency = 0.7 local bars = {} for i = 1, 30 do local b = Instance.new("Frame", gFrame) b.Size = UDim2.new(1/30, -1, 0.1, 0) b.Position = UDim2.new((i-1)/30, 0, 1, 0) b.AnchorPoint = Vector2.new(0, 1) b.BackgroundColor3 = color b.BorderSizePixel = 0 bars[i] = b end return bars end local fBars = makeGraph("FPS PERFORMANCE", 250, Color3.new(0, 1, 0)) local tBars = makeGraph("TPS (PHYSICS)", 310, Color3.new(1, 1, 0)) local pBars = makeGraph("NETWORK PING", 370, Color3.new(0, 0.8, 1)) local gizmo = Instance.new("Frame", sg) gizmo.Size = UDim2.new(0, 80, 0, 80) gizmo.Position = UDim2.new(1, -100, 0, 20) gizmo.BackgroundTransparency = 1 local function addAxis(color, name) local a = Instance.new("Frame", gizmo) a.Size = UDim2.new(0, 2, 0, 30) a.BackgroundColor3 = color a.AnchorPoint = Vector2.new(0.5, 0.5) local t = Instance.new("TextLabel", a) t.Text = name; t.TextColor3 = color; t.Size = UDim2.new(0,10,0,10); t.Position = UDim2.new(0,0,0,-12); t.BackgroundTransparency = 1 return a end local axX, axY, axZ = addAxis(Color3.new(1,0,0),"X"), addAxis(Color3.new(0,1,0),"Y"), addAxis(Color3.new(0,0,1),"Z") local fpsH, tpsH, pngH = {}, {}, {} local lastT = tick() local fr = 0 RunService.RenderStepped:Connect(function() if not frame.Visible then return end fr = fr + 1 if tick() - lastT >= 1 then local fps = fr local tps = workspace:GetRealPhysicsFPS() local png = Stats.Network.ServerStatsItem["Data Ping"]:GetValue() local function updateH(tab, val, bars, max) table.insert(tab, val); if #tab > 30 then table.remove(tab, 1) end for i, v in ipairs(tab) do if bars[i] then bars[i].Size = UDim2.new(1/30, -1, math.clamp(v/max, 0.1, 1), 0) end end end updateH(fpsH, fps, fBars, 60) updateH(tpsH, tps, tBars, 60) updateH(pngH, png, pBars, 300) fr = 0; lastT = tick() end local root = Player.Character and Player.Character:FindFirstChild("HumanoidRootPart") local hum = Player.Character and Player.Character:FindFirstChild("Humanoid") local speed = root and (root.Velocity * Vector3.new(1,0,1)).Magnitude * 1.097 or 0 info.Text = string.format( "[ SYSTEM ]\nFPS: %d | Ping: %s\nTPS: %.1f | Mem: %.1f MB\n\n" .. "[ PLAYER ]\nXYZ: %.1f, %.1f, %.1f\nSpeed: %.1f km/h\nState: %s\n\n" .. "[ CURSOR ]\nTarget: %s\nDist: %.1f", fpsH[#fpsH] or 0, Stats.Network.ServerStatsItem["Data Ping"]:GetValueString(), workspace:GetRealPhysicsFPS(), Stats:GetTotalMemoryUsageMb(), root and root.Position.X or 0, root and root.Position.Y or 0, root and root.Position.Z or 0, speed, hum and tostring(hum:GetState()):gsub("Enum.HumanoidStateType.", "") or "N/A", Mouse.Target and Mouse.Target.Name:sub(1,15) or "None", (root and Mouse.Target) and (root.Position - Mouse.Target.Position).Magnitude or 0 ) local cf = Camera.CFrame local function rot(gui, vec) local loc = cf:VectorToObjectSpace(vec) gui.Position = UDim2.new(0.5 + (loc.X * 0.4), 0, 0.5 - (loc.Y * 0.4), 0) gui.Rotation = math.deg(math.atan2(loc.X, loc.Y)) gui.BackgroundTransparency = loc.Z < 0 and 0 or 0.7 end rot(axX, Vector3.new(1,0,0)); rot(axY, Vector3.new(0,1,0)); rot(axZ, Vector3.new(0,0,1)) end) btn.MouseButton1Click:Connect(function() frame.Visible = not frame.Visible gizmo.Visible = frame.Visible end) UserInputService.InputBegan:Connect(function(i, p) if not p and i.KeyCode == Enum.KeyCode.F3 then frame.Visible = not frame.Visible gizmo.Visible = frame.Visible end end)