-- Mod Menu - Fully Fixed (Combat/Survival removed) local player = game.Players.LocalPlayer local gui = Instance.new("ScreenGui") gui.Parent = player:WaitForChild("PlayerGui") gui.Name = "ModMenu" gui.ResetOnSpawn = false local frame = Instance.new("Frame") frame.Size = UDim2.new(0, 200, 0, 400) frame.Position = UDim2.new(0.5, -100, 0.5, -200) frame.BackgroundColor3 = Color3.fromRGB(46, 46, 46) frame.BorderSizePixel = 1 frame.BorderColor3 = Color3.fromRGB(60, 60, 60) frame.Active = true frame.Draggable = true frame.Parent = gui local title = Instance.new("TextLabel") title.Size = UDim2.new(1, 0, 0, 30) title.BackgroundColor3 = Color3.fromRGB(36, 36, 36) title.Text = "Mod Menu" title.TextColor3 = Color3.fromRGB(220, 220, 220) title.TextSize = 18 title.Font = Enum.Font.SourceSansBold title.Parent = frame local closeButton = Instance.new("TextButton") closeButton.Size = UDim2.new(0, 30, 0, 30) closeButton.Position = UDim2.new(1, -30, 0, 0) closeButton.BackgroundColor3 = Color3.fromRGB(255, 0, 0) closeButton.Text = "X" closeButton.TextColor3 = Color3.fromRGB(255, 255, 255) closeButton.Parent = frame closeButton.MouseButton1Click:Connect(function() gui:Destroy() end) -- ScrollingFrame local content = Instance.new("ScrollingFrame") content.Parent = frame content.Position = UDim2.new(0, 0, 0, 30) content.Size = UDim2.new(1, 0, 1, -30) content.BackgroundTransparency = 1 content.ScrollBarThickness = 5 local contentLayout = Instance.new("UIListLayout") contentLayout.Parent = content contentLayout.SortOrder = Enum.SortOrder.LayoutOrder contentLayout.Padding = UDim.new(0, 5) contentLayout:GetPropertyChangedSignal("AbsoluteContentSize"):Connect(function() content.CanvasSize = UDim2.new(0, 0, 0, contentLayout.AbsoluteContentSize.Y + 10) end) -- Variables local toggles = {speedBoost = false, infiniteJump = false, fly = false, noClip = false, speedBypassCFrame = false, espHighlight = false, espBypass = false, instantProximity = false} local connections = {} local originalCollisions = {} local originalHoldDurations = {} local espHighlights = {} local espHighlightConnections = {} local espBillboards = {} local espBillboardConnections = {} -- Fixed Category System local function createCategory(name) local catFrame = Instance.new("Frame") catFrame.Parent = content catFrame.BackgroundTransparency = 1 catFrame.Size = UDim2.new(1, 0, 0, 30) local catLayout = Instance.new("UIListLayout") catLayout.Parent = catFrame catLayout.SortOrder = Enum.SortOrder.LayoutOrder catLayout.Padding = UDim.new(0, 5) local catButton = Instance.new("TextButton") catButton.Size = UDim2.new(1, 0, 0, 30) catButton.BackgroundColor3 = Color3.fromRGB(60, 60, 60) catButton.Text = name .. " ▼" catButton.TextColor3 = Color3.fromRGB(220, 220, 220) catButton.TextSize = 16 catButton.Parent = catFrame local subFrame = Instance.new("Frame") subFrame.Parent = catFrame subFrame.BackgroundTransparency = 1 subFrame.Size = UDim2.new(1, 0, 0, 0) subFrame.Visible = true local subLayout = Instance.new("UIListLayout") subLayout.Parent = subFrame subLayout.SortOrder = Enum.SortOrder.LayoutOrder subLayout.Padding = UDim.new(0, 5) local function updateSizes() subFrame.Size = UDim2.new(1, 0, 0, subLayout.AbsoluteContentSize.Y) catFrame.Size = UDim2.new(1, 0, 0, catLayout.AbsoluteContentSize.Y) end subLayout:GetPropertyChangedSignal("AbsoluteContentSize"):Connect(updateSizes) catButton.MouseButton1Click:Connect(function() subFrame.Visible = not subFrame.Visible catButton.Text = name .. (subFrame.Visible and " ▼" or " ►") updateSizes() end) task.defer(updateSizes) local function addSubButton(subName, callback) local button = Instance.new("TextButton") button.Size = UDim2.new(1, -10, 0, 40) button.Position = UDim2.new(0, 5, 0, 0) button.BackgroundColor3 = Color3.fromRGB(46, 46, 46) button.Text = subName button.TextColor3 = Color3.fromRGB(220, 220, 220) button.TextSize = 16 button.Parent = subFrame button.MouseButton1Click:Connect(callback) end return addSubButton end local movementAddButton = createCategory("Movement") local visualsAddButton = createCategory("Visuals") local miscAddButton = createCategory("Misc") -- Movement movementAddButton("Toggle Speed Boost", function() toggles.speedBoost = not toggles.speedBoost if player.Character and player.Character:FindFirstChild("Humanoid") then player.Character.Humanoid.WalkSpeed = toggles.speedBoost and 50 or 16 end end) movementAddButton("Toggle Infinite Jump", function() toggles.infiniteJump = not toggles.infiniteJump if toggles.infiniteJump then connections.infiniteJump = game:GetService("UserInputService").JumpRequest:Connect(function() if player.Character then player.Character:FindFirstChildOfClass("Humanoid"):ChangeState("Jumping") end end) else if connections.infiniteJump then connections.infiniteJump:Disconnect() end end end) movementAddButton("Toggle Fly Mode", function() toggles.fly = not toggles.fly if player.Character and player.Character:FindFirstChild("HumanoidRootPart") then local root = player.Character.HumanoidRootPart local humanoid = player.Character.Humanoid if toggles.fly then humanoid.PlatformStand = true connections.flyBodyVelocity = Instance.new("BodyVelocity") connections.flyBodyVelocity.MaxForce = Vector3.new(math.huge, math.huge, math.huge) connections.flyBodyVelocity.Parent = root connections.flyBodyGyro = Instance.new("BodyGyro") connections.flyBodyGyro.MaxTorque = Vector3.new(math.huge, math.huge, math.huge) connections.flyBodyGyro.Parent = root connections.fly = game:GetService("RunService").RenderStepped:Connect(function() local cam = workspace.CurrentCamera local dir = Vector3.new() local uis = game:GetService("UserInputService") if uis:IsKeyDown(Enum.KeyCode.W) then dir += cam.CFrame.LookVector end if uis:IsKeyDown(Enum.KeyCode.S) then dir -= cam.CFrame.LookVector end if uis:IsKeyDown(Enum.KeyCode.A) then dir -= cam.CFrame.RightVector end if uis:IsKeyDown(Enum.KeyCode.D) then dir += cam.CFrame.RightVector end if uis:IsKeyDown(Enum.KeyCode.Space) then dir += Vector3.new(0,1,0) end if uis:IsKeyDown(Enum.KeyCode.LeftControl) then dir -= Vector3.new(0,1,0) end connections.flyBodyVelocity.Velocity = dir.Magnitude > 0 and dir.Unit * 50 or Vector3.new() connections.flyBodyGyro.CFrame = cam.CFrame end) else humanoid.PlatformStand = false if connections.fly then connections.fly:Disconnect() end if connections.flyBodyVelocity then connections.flyBodyVelocity:Destroy() end if connections.flyBodyGyro then connections.flyBodyGyro:Destroy() end end end end) movementAddButton("Toggle No Clip", function() toggles.noClip = not toggles.noClip if player.Character then if toggles.noClip then originalCollisions = {} for _, part in ipairs(player.Character:GetDescendants()) do if part:IsA("BasePart") then originalCollisions[part] = part.CanCollide part.CanCollide = false end end connections.noClip = game:GetService("RunService").Stepped:Connect(function() for _, part in ipairs(player.Character:GetDescendants()) do if part:IsA("BasePart") then part.CanCollide = false end end end) else if connections.noClip then connections.noClip:Disconnect() end for part, state in pairs(originalCollisions) do if part and part.Parent then part.CanCollide = state end end originalCollisions = {} end end end) movementAddButton("Toggle Speed Bypass (CFrame)", function() toggles.speedBypassCFrame = not toggles.speedBypassCFrame if toggles.speedBypassCFrame then connections.speedCFrame = game:GetService("RunService").Heartbeat:Connect(function(dt) if player.Character and player.Character:FindFirstChild("HumanoidRootPart") then local root = player.Character.HumanoidRootPart local hum = player.Character.Humanoid if hum.MoveDirection.Magnitude > 0 then root.CFrame = root.CFrame + hum.MoveDirection * 34 * dt end end end) else if connections.speedCFrame then connections.speedCFrame:Disconnect() end end end) -- Visuals visualsAddButton("Toggle ESP Highlight", function() toggles.espHighlight = not toggles.espHighlight if toggles.espHighlight then for _, p in ipairs(game.Players:GetPlayers()) do if p ~= player and p.Character then local hl = Instance.new("Highlight") hl.FillTransparency = 1 hl.OutlineColor = Color3.fromRGB(255, 0, 0) hl.Parent = p.Character espHighlights[p] = hl end end espHighlightConnections.playerAdded = game.Players.PlayerAdded:Connect(function(p) if p == player then return end if p.Character then local hl = Instance.new("Highlight") hl.FillTransparency = 1 hl.OutlineColor = Color3.fromRGB(255, 0, 0) hl.Parent = p.Character espHighlights[p] = hl end p.CharacterAdded:Connect(function(char) local hl = Instance.new("Highlight") hl.FillTransparency = 1 hl.OutlineColor = Color3.fromRGB(255, 0, 0) hl.Parent = char espHighlights[p] = hl end) end) else for _, v in pairs(espHighlights) do if v then v:Destroy() end end espHighlights = {} for _, v in pairs(espHighlightConnections) do if v then v:Disconnect() end end espHighlightConnections = {} end end) visualsAddButton("Toggle ESP Bypass (Billboard)", function() toggles.espBypass = not toggles.espBypass if toggles.espBypass then for _, p in ipairs(game.Players:GetPlayers()) do if p ~= player and p.Character then task.spawn(function() local head = p.Character:WaitForChild("Head", 5) if head then local bg = Instance.new("BillboardGui") bg.Adornee = head bg.Size = UDim2.new(0, 200, 0, 50) bg.StudsOffset = Vector3.new(0, 2, 0) bg.AlwaysOnTop = true local txt = Instance.new("TextLabel") txt.Size = UDim2.new(1,0,1,0) txt.BackgroundTransparency = 1 txt.Text = p.Name txt.TextColor3 = Color3.fromRGB(255, 0, 0) txt.Parent = bg bg.Parent = head espBillboards[p] = bg end end) end end espBillboardConnections.playerAdded = game.Players.PlayerAdded:Connect(function(p) if p == player then return end p.CharacterAdded:Connect(function(char) task.spawn(function() local head = char:WaitForChild("Head", 10) if head then local bg = Instance.new("BillboardGui") bg.Adornee = head bg.Size = UDim2.new(0, 200, 0, 50) bg.StudsOffset = Vector3.new(0, 2, 0) bg.AlwaysOnTop = true local txt = Instance.new("TextLabel") txt.Size = UDim2.new(1,0,1,0) txt.BackgroundTransparency = 1 txt.Text = p.Name txt.TextColor3 = Color3.fromRGB(255, 0, 0) txt.Parent = bg bg.Parent = head espBillboards[p] = bg end end) end) end) else for _, v in pairs(espBillboards) do if v then v:Destroy() end end espBillboards = {} for _, v in pairs(espBillboardConnections) do if v then v:Disconnect() end end espBillboardConnections = {} end end) -- Misc miscAddButton("Teleport to Spawn", function() if player.Character then player.Character:MoveTo(workspace:WaitForChild("SpawnLocation").Position) end end) miscAddButton("Toggle Instant Proximity", function() toggles.instantProximity = not toggles.instantProximity if toggles.instantProximity then originalHoldDurations = {} for _, prompt in ipairs(game:GetDescendants()) do if prompt:IsA("ProximityPrompt") then originalHoldDurations[prompt] = prompt.HoldDuration prompt.HoldDuration = 0 end end connections.instantProximity = game.DescendantAdded:Connect(function(desc) if desc:IsA("ProximityPrompt") then originalHoldDurations[desc] = desc.HoldDuration desc.HoldDuration = 0 end end) else if connections.instantProximity then connections.instantProximity:Disconnect() end for prompt, dur in pairs(originalHoldDurations) do if prompt and prompt.Parent then prompt.HoldDuration = dur end end originalHoldDurations = {} end end) miscAddButton("Reset Character", function() if player.Character then player.Character:BreakJoints() end end) -- Toggle with M game:GetService("UserInputService").InputBegan:Connect(function(input) if input.KeyCode == Enum.KeyCode.M then frame.Visible = not frame.Visible end end) -- Welcome Notification local notifGui = Instance.new("ScreenGui") notifGui.ResetOnSpawn = false notifGui.Parent = player:WaitForChild("PlayerGui") local notifFrame = Instance.new("Frame") notifFrame.Size = UDim2.new(0, 420, 0, 90) notifFrame.Position = UDim2.new(0.5, -210, 0.08, 0) notifFrame.BackgroundColor3 = Color3.fromRGB(30, 30, 30) notifFrame.Parent = notifGui Instance.new("UICorner", notifFrame).CornerRadius = UDim.new(0, 12) local notifText = Instance.new("TextLabel") notifText.Size = UDim2.new(1, -20, 1, -20) notifText.Position = UDim2.new(0, 10, 0, 10) notifText.BackgroundTransparency = 1 notifText.Text = "Hello welcome to mod menu hope you will enjoy it! :3" notifText.TextColor3 = Color3.fromRGB(255, 255, 255) notifText.TextSize = 20 notifText.Font = Enum.Font.GothamBold notifText.TextWrapped = true notifText.Parent = notifFrame local sound = Instance.new("Sound") sound.SoundId = "rbxassetid://138118203571469" sound.Volume = 0.6 sound.Parent = notifGui sound:Play() task.delay(6, function() notifGui:Destroy() end) print("Mod Menu loaded! Press M to toggle.")