-- Mega GUI Full local player = game.Players.LocalPlayer local Players = game:GetService("Players") local Workspace = game:GetService("Workspace") local RunService = game:GetService("RunService") local UserInputService = game:GetService("UserInputService") local HttpService = game:GetService("HttpService") -- Variables local humanoidRootPart local savedPos = nil local guiVisible = false local dragging = false local dragInput, dragStart, startPos local showCoords = false local espEnabled = false local highlights = {} -- Highlight instances local nameTags = {} -- BillboardGuis for players local espBoxes = {} local guiToggleKey = Enum.KeyCode.K -- default -- Persistent settings local DataFolder = player:WaitForChild("PlayerGui"):FindFirstChild("MegaGUISettings") if not DataFolder then DataFolder = Instance.new("Folder") DataFolder.Name = "MegaGUISettings" DataFolder.Parent = player:WaitForChild("PlayerGui") end local settingsFile = DataFolder:FindFirstChild("Settings") if not settingsFile then settingsFile = Instance.new("StringValue") settingsFile.Name = "Settings" settingsFile.Value = "" settingsFile.Parent = DataFolder end local settings = { toggleKey = guiToggleKey.Name } local function saveSettings() settings.toggleKey = guiToggleKey.Name settingsFile.Value = HttpService:JSONEncode(settings) end local function loadSettings() if settingsFile.Value ~= "" then local success, loaded = pcall(function() return HttpService:JSONDecode(settingsFile.Value) end) if success and loaded.toggleKey then local keyEnum = Enum.KeyCode[loaded.toggleKey] if keyEnum then guiToggleKey = keyEnum end end end end loadSettings() -- GUI Setup local gui = Instance.new("ScreenGui") gui.Name = "MegaGUI" gui.ResetOnSpawn = false gui.Parent = player:WaitForChild("PlayerGui") local frame = Instance.new("Frame") frame.Size = UDim2.new(0, 450, 0, 500) frame.Position = UDim2.new(0, 10, 0, 10) frame.BackgroundColor3 = Color3.fromRGB(20,20,20) frame.BackgroundTransparency = 0.2 frame.Visible = guiVisible frame.Parent = gui local corner = Instance.new("UICorner") corner.CornerRadius = UDim.new(0,10) corner.Parent = frame -- Close Button local closeBtn = Instance.new("TextButton") closeBtn.Size = UDim2.new(0,30,0,30) closeBtn.Position = UDim2.new(1,-35,0,5) closeBtn.BackgroundColor3 = Color3.fromRGB(255,0,0) closeBtn.Text = "X" closeBtn.Font = Enum.Font.Code closeBtn.TextScaled = true closeBtn.TextColor3 = Color3.fromRGB(255,255,255) closeBtn.Parent = frame closeBtn.MouseButton1Click:Connect(function() frame.Visible = false guiVisible=false end) -- Tabs local tabNames = {"Main","Players","Teleport","Settings","Credits"} local tabFrames = {} for i, name in pairs(tabNames) do local tabBtn = Instance.new("TextButton") tabBtn.Size = UDim2.new(0, 80, 0, 30) tabBtn.Position = UDim2.new(0, 5 + (i-1)*85, 0, 5) tabBtn.Text = name tabBtn.Font = Enum.Font.Code tabBtn.TextScaled = true tabBtn.BackgroundColor3 = Color3.fromRGB(0,170,255) tabBtn.TextColor3 = Color3.fromRGB(255,255,255) tabBtn.Parent = frame local tabFrame = Instance.new("Frame") tabFrame.Size = UDim2.new(1,-10,1,-50) tabFrame.Position = UDim2.new(0,5,0,40) tabFrame.BackgroundTransparency = 1 tabFrame.Visible = (i==1) tabFrame.Parent = frame tabFrames[name] = tabFrame tabBtn.MouseButton1Click:Connect(function() for _, f in pairs(tabFrames) do f.Visible=false end tabFrame.Visible = true end) end -- === MAIN TAB === local mainTab = tabFrames["Main"] -- ESP Toggle local espBtn = Instance.new("TextButton") espBtn.Size = UDim2.new(0.4,0,0,40) espBtn.Position = UDim2.new(0.05,0,0,10) espBtn.Text = "Toggle ESP" espBtn.Font = Enum.Font.Code espBtn.TextScaled = true espBtn.BackgroundColor3 = Color3.fromRGB(0,170,255) espBtn.TextColor3 = Color3.fromRGB(255,255,255) espBtn.Parent = mainTab espBtn.MouseButton1Click:Connect(function() espEnabled = not espEnabled espBtn.Text = espEnabled and "ESP ON" or "ESP OFF" end) -- Fly / Noclip local flyBtn = Instance.new("TextButton") flyBtn.Size = UDim2.new(0.4,0,0,40) flyBtn.Position = UDim2.new(0.55,0,0,10) flyBtn.Text = "Fly/Noclip" flyBtn.Font = Enum.Font.Code flyBtn.TextScaled = true flyBtn.BackgroundColor3 = Color3.fromRGB(0,170,255) flyBtn.TextColor3 = Color3.fromRGB(255,255,255) flyBtn.Parent = mainTab local flying = false flyBtn.MouseButton1Click:Connect(function() flying = not flying flyBtn.Text = flying and "Fly/Noclip ON" or "Fly/Noclip OFF" end) -- === PLAYERS TAB === local playersTab = tabFrames["Players"] local playerListFrame = Instance.new("ScrollingFrame") playerListFrame.Size = UDim2.new(1,-10,1,-10) playerListFrame.Position = UDim2.new(0,5,0,5) playerListFrame.CanvasSize = UDim2.new(0,0,0,0) playerListFrame.ScrollBarThickness = 6 playerListFrame.BackgroundTransparency = 1 playerListFrame.Parent = playersTab local uiListLayout = Instance.new("UIListLayout") uiListLayout.Padding = UDim.new(0,5) uiListLayout.Parent = playerListFrame local function updatePlayerList() for _, child in pairs(playerListFrame:GetChildren()) do if child:IsA("TextButton") then child:Destroy() end end local yOffset=0 for _, plr in pairs(Players:GetPlayers()) do if plr ~= player then local btn = Instance.new("TextButton") btn.Size = UDim2.new(1,0,0,30) btn.Position = UDim2.new(0,0,0,yOffset) btn.Text = "TP to "..plr.Name btn.TextScaled = true btn.Font = Enum.Font.Code btn.BackgroundColor3 = Color3.fromRGB(255,85,85) btn.TextColor3 = Color3.fromRGB(255,255,255) btn.Parent = playerListFrame btn.MouseButton1Click:Connect(function() if humanoidRootPart and plr.Character and plr.Character:FindFirstChild("HumanoidRootPart") then humanoidRootPart.CFrame = plr.Character.HumanoidRootPart.CFrame end end) yOffset = yOffset+35 end end playerListFrame.CanvasSize = UDim2.new(0,0,0,yOffset) end updatePlayerList() Players.PlayerAdded:Connect(updatePlayerList) Players.PlayerRemoving:Connect(updatePlayerList) -- === TELEPORT TAB === local teleportTab = tabFrames["Teleport"] local coordsLabel = Instance.new("TextLabel") coordsLabel.Size = UDim2.new(1, -10, 0, 50) coordsLabel.Position = UDim2.new(0,5,0,5) coordsLabel.BackgroundTransparency = 1 coordsLabel.TextColor3 = Color3.fromRGB(0,255,170) coordsLabel.TextScaled = true coordsLabel.Font = Enum.Font.Code coordsLabel.Text = "" coordsLabel.Parent = teleportTab local showCoordsBtn = Instance.new("TextButton") showCoordsBtn.Size = UDim2.new(0.45,0,0,40) showCoordsBtn.Position = UDim2.new(0.05,0,0,60) showCoordsBtn.Text = "Show Coords" showCoordsBtn.Font = Enum.Font.Code showCoordsBtn.TextScaled = true showCoordsBtn.BackgroundColor3 = Color3.fromRGB(0,170,255) showCoordsBtn.TextColor3 = Color3.fromRGB(255,255,255) showCoordsBtn.Parent = teleportTab local saveCoordsBtn = Instance.new("TextButton") saveCoordsBtn.Size = UDim2.new(0.45,0,0,40) saveCoordsBtn.Position = UDim2.new(0.5,0,0,60) saveCoordsBtn.Text = "Save Coords" saveCoordsBtn.Font = Enum.Font.Code saveCoordsBtn.TextScaled = true saveCoordsBtn.BackgroundColor3 = Color3.fromRGB(0,170,255) saveCoordsBtn.TextColor3 = Color3.fromRGB(255,255,255) saveCoordsBtn.Parent = teleportTab showCoordsBtn.MouseButton1Click:Connect(function() showCoords = not showCoords showCoordsBtn.Text = showCoords and "Hide Coords" or "Show Coords" end) saveCoordsBtn.MouseButton1Click:Connect(function() if humanoidRootPart then savedPos = humanoidRootPart.Position end end) -- === SETTINGS TAB === local settingsTab = tabFrames["Settings"] local keyLabel = Instance.new("TextLabel") keyLabel.Size = UDim2.new(0.4,0,0,30) keyLabel.Position = UDim2.new(0,5,0,10) keyLabel.BackgroundTransparency = 1 keyLabel.TextScaled = true keyLabel.Font = Enum.Font.Code keyLabel.TextColor3 = Color3.fromRGB(255,255,255) keyLabel.Text = "Toggle Key:" keyLabel.Parent = settingsTab local keyBox = Instance.new("TextBox") keyBox.Size = UDim2.new(0.5,0,0,30) keyBox.Position = UDim2.new(0.45,0,0,10) keyBox.ClearTextOnFocus = false keyBox.TextScaled = true keyBox.Font = Enum.Font.Code keyBox.Text = guiToggleKey.Name keyBox.Parent = settingsTab local saveBtn = Instance.new("TextButton") saveBtn.Size = UDim2.new(0.45,0,0,30) saveBtn.Position = UDim2.new(0,5,0,50) saveBtn.Text = "Save Settings" saveBtn.Font = Enum.Font.Code saveBtn.TextScaled = true saveBtn.BackgroundColor3 = Color3.fromRGB(0,170,0) saveBtn.TextColor3 = Color3.fromRGB(255,255,255) saveBtn.Parent = settingsTab saveBtn.MouseButton1Click:Connect(saveSettings) local loadBtn = Instance.new("TextButton") loadBtn.Size = UDim2.new(0.45,0,0,30) loadBtn.Position = UDim2.new(0.5,0,0,50) loadBtn.Text = "Load Settings" loadBtn.Font = Enum.Font.Code loadBtn.TextScaled = true loadBtn.BackgroundColor3 = Color3.fromRGB(0,85,255) loadBtn.TextColor3 = Color3.fromRGB(255,255,255) loadBtn.Parent = settingsTab loadBtn.MouseButton1Click:Connect(function() loadSettings() keyBox.Text = guiToggleKey.Name end) keyBox.FocusLost:Connect(function(enterPressed) if enterPressed then local keyName = keyBox.Text local success, keyEnum = pcall(function() return Enum.KeyCode[keyName] end) if success and keyEnum then guiToggleKey = keyEnum keyBox.Text = guiToggleKey.Name else keyBox.Text = guiToggleKey.Name end end end) -- === CREDITS TAB === local creditsTab = tabFrames["Credits"] local creditsLabel = Instance.new("TextLabel") creditsLabel.Size = UDim2.new(1,0,1,0) creditsLabel.Position = UDim2.new(0,0,0,0) creditsLabel.BackgroundTransparency = 1 creditsLabel.TextScaled = true creditsLabel.Font = Enum.Font.Code creditsLabel.TextColor3 = Color3.fromRGB(0,255,255) creditsLabel.Text = "Cheat Menu\nCreated by: Joshy\nThanks for using it!" creditsLabel.Parent = creditsTab -- === Character Tracking === local function onCharacterAdded(character) humanoidRootPart = character:WaitForChild("HumanoidRootPart") if savedPos then humanoidRootPart.CFrame = CFrame.new(savedPos) end end player.CharacterAdded:Connect(onCharacterAdded) if player.Character then onCharacterAdded(player.Character) end -- === Draggable GUI === local function updateInput(input) 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 frame.InputBegan:Connect(function(input) if input.UserInputType == Enum.UserInputType.MouseButton1 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) frame.InputChanged:Connect(function(input) if input.UserInputType == Enum.UserInputType.MouseMovement then dragInput = input end end) UserInputService.InputChanged:Connect(function(input) if dragging and input == dragInput then updateInput(input) end end) -- === Render Loop for Coords & ESP === RunService.RenderStepped:Connect(function() -- Coords if guiVisible and showCoords and humanoidRootPart then local pos = humanoidRootPart.Position coordsLabel.Text = string.format("X: %.2f\nY: %.2f\nZ: %.2f", pos.X,pos.Y,pos.Z) else coordsLabel.Text = "" end -- ESP if espEnabled then for _, plr in pairs(Players:GetPlayers()) do if plr.Character and plr.Character:FindFirstChild("HumanoidRootPart") then -- Highlight if not highlights[plr] then local hl = Instance.new("Highlight") hl.FillTransparency = 0.7 hl.OutlineTransparency = 0 hl.OutlineColor = (plr.Team==player.Team) and Color3.fromRGB(0,255,0) or Color3.fromRGB(255,0,0) hl.Adornee = plr.Character hl.Parent = gui highlights[plr] = hl end end end else for _, hl in pairs(highlights) do if hl then hl:Destroy() end end highlights = {} end end) -- === GUI Toggle Key === UserInputService.InputBegan:Connect(function(input,gameProcessed) if gameProcessed then return end if input.KeyCode == guiToggleKey then guiVisible = not guiVisible frame.Visible = guiVisible end end)