![]() |
VOOZH | about |
dotnet add package CS2MenuManager --version 1.0.42
NuGet\Install-Package CS2MenuManager -Version 1.0.42
<PackageReference Include="CS2MenuManager" Version="1.0.42" />
<PackageVersion Include="CS2MenuManager" Version="1.0.42" />Directory.Packages.props
<PackageReference Include="CS2MenuManager" />Project file
paket add CS2MenuManager --version 1.0.42
#r "nuget: CS2MenuManager, 1.0.42"
#:package CS2MenuManager@1.0.42
#addin nuget:?package=CS2MenuManager&version=1.0.42Install as a Cake Addin
#tool nuget:?package=CS2MenuManager&version=1.0.42Install as a Cake Tool
CS2MenuManager is a modern, extensible and easy to use menu system for Counter-Strike 2 based on the CounterStrikeSharp library. It provides server administrators and developers with powerful tools to create interactive and customisable menu interfaces. Designed for both ease of use and flexibility, it provides intuitive controls for players and easy configuration for administrators.
If you would like to donate or need assistance with the plugin, feel free to contact me via Discord, either privately or on my server.
Discord nickname: schwarper
Discord link : Discord server
addons/counterstrikesharp/ folder.config.toml file in the addons/counterstrikesharp/shared/CS2MenuManager/ directory.You can create any type of menu. All menu types have a similar structure. Here's an example of how to create a Chat Menu:
Supported menus: ChatMenu, ConsoleMenu, CenterHtmlMenu, WasdMenu, PanoramaVote, PlayerMenu
ChatMenu menu = new("Title", this);
menu.AddItem("Option 1", (p, o) =>
{
p.PrintToChat("You selected option 1");
});
menu.AddItem("Option 2X", DisableOption.DisableShowNumber);
menu.AddItem("Option 3X", DisableOption.DisableHideNumber);
menu.Display(player);
You can add submenus to any menu. Here's how to link a submenu:
menu.PrevMenu = AnySubMenu();
private static CenterHtmlMenu AnySubMenu()
{
CenterHtmlMenu menu = new("Title", this);
//...
return menu;
}
You can set the behavior after selecting an option using PostSelectAction. The default is to close the menu after selection.
menu.AddItem("Option After Reset", (p, o) =>
{
o.PostSelectAction = PostSelectAction.Reset;
});
You can set the time for the menu. When the time is up, the menu is automatically closed.
menu.Display(menu, 10);
// OR
ConsoleMenu menu = new("Console Menu", this)
{
MenuTime = 20
};
The title may not be very descriptive. You can use the PlayerMenu class to show the player the menu that the player has chosen. In other words, the player chooses which menu to open. He can do this with !mm or the command you set. You need to have the CS2MenuManager_MenuManager plugin installed and a database connection.
PlayerMenu menu = new(Localizer.ForPlayer(player, "MenuManager Title"), this);
menu.AddItem(Localizer.ForPlayer(player, "Change Resolution"), (p, o) =>
{
ResolutionManager.ResolutionMenuByType(typeof(PlayerMenu), player, this, menu)
.Display(player, 0);
});
menu.AddItem(Localizer.ForPlayer(player, "Change Menu Type"), (p, o) =>
{
MenuTypeManager.MenuTypeMenuByType(typeof(PlayerMenu), player, this, menu)
.Display(player, 0);
});
menu.Display(player, 0);
The PanoramaVote menu allows you to create interactive vote menus using the Panorama UI. Here's an example:
var menu = new PanoramaVote("#SFUI_vote_panorama_vote_default", "Hold on, Let me Cook", VoteResultCallback, VoteHandlerCallback, this)
{
VoteCaller = player // null is the server.
};
menu.DisplayVoteToAll(20);
public bool VoteResultCallback(YesNoVoteInfo info)
{
/*
public int TotalVotes;
public int YesVotes;
public int NoVotes;
public int TotalClients;
public Dictionary<int, (int, int)> ClientInfo = [];
*/
if (info.YesVotes > info.NoVotes)
{
Server.PrintToChatAll("Vote passed!");
return true;
}
Server.PrintToChatAll("Vote failed!");
return false;
}
public void VoteHandlerCallback(YesNoVoteAction action, int param1, CastVote param2)
{
switch (action)
{
case YesNoVoteAction.VoteAction_Start:
Server.PrintToChatAll("Vote started!");
break;
case YesNoVoteAction.VoteAction_Vote:
var player = Utilities.GetPlayerFromSlot(param1);
if (player == null) return;
player.PrintToChat("You voted: " + (param2 == CastVote.VOTE_OPTION1 ? "Yes" : "No"));
break;
case YesNoVoteAction.VoteAction_End:
switch ((YesNoVoteEndReason)param1)
{
case YesNoVoteEndReason.VoteEnd_Cancelled:
Server.PrintToChatAll("Vote Ended! Cancelled");
break;
case YesNoVoteEndReason.VoteEnd_AllVotes:
Server.PrintToChatAll("Vote Ended! Thank you for participating.");
break;
case YesNoVoteEndReason.VoteEnd_TimeUp:
Server.PrintToChatAll("Vote Ended! Time is up.");
break;
}
break;
}
}
ChatMenu,ConsoleMenu,CenterHtmlMenu ⇒ CounterStrikeSharp by roflmuffinWasdMenu ⇒ WasdMenuAPI by Interesting-exePanoramaVote ⇒ SLAYER_PanoramaVote by zakriamansoor47| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net8.0 net8.0 is compatible. net8.0-android net8.0-android was computed. net8.0-browser net8.0-browser was computed. net8.0-ios net8.0-ios was computed. net8.0-maccatalyst net8.0-maccatalyst was computed. net8.0-macos net8.0-macos was computed. net8.0-tvos net8.0-tvos was computed. net8.0-windows net8.0-windows was computed. net9.0 net9.0 was computed. net9.0-android net9.0-android was computed. net9.0-browser net9.0-browser was computed. net9.0-ios net9.0-ios was computed. net9.0-maccatalyst net9.0-maccatalyst was computed. net9.0-macos net9.0-macos was computed. net9.0-tvos net9.0-tvos was computed. net9.0-windows net9.0-windows was computed. net10.0 net10.0 was computed. net10.0-android net10.0-android was computed. net10.0-browser net10.0-browser was computed. net10.0-ios net10.0-ios was computed. net10.0-maccatalyst net10.0-maccatalyst was computed. net10.0-macos net10.0-macos was computed. net10.0-tvos net10.0-tvos was computed. net10.0-windows net10.0-windows was computed. |
This package is not used by any NuGet packages.
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 1.0.42 | 772 | 2/2/2026 |
| 1.0.41 | 549 | 10/21/2025 |
| 1.0.40 | 352 | 9/23/2025 |
| 1.0.39 | 1,469 | 8/4/2025 |
| 1.0.38 | 199 | 8/4/2025 |
| 1.0.37 | 267 | 7/7/2025 |
| 1.0.36 | 321 | 6/26/2025 |
| 1.0.35 | 323 | 6/3/2025 |
| 1.0.34 | 209 | 5/31/2025 |
| 1.0.33 | 183 | 5/24/2025 |
| 1.0.32 | 369 | 5/15/2025 |
| 1.0.31 | 314 | 5/15/2025 |
| 1.0.30 | 491 | 5/12/2025 |
| 1.0.29 | 272 | 5/7/2025 |
| 1.0.28 | 450 | 4/2/2025 |
| 1.0.27 | 285 | 3/31/2025 |
| 1.0.26 | 276 | 3/30/2025 |
| 1.0.25 | 229 | 3/29/2025 |
| 1.0.24 | 183 | 3/29/2025 |
| 1.0.23 | 191 | 3/29/2025 |