CS2MenuManager 1.0.10
See the version list below for details.
dotnet add package CS2MenuManager --version 1.0.10
NuGet\Install-Package CS2MenuManager -Version 1.0.10
<PackageReference Include="CS2MenuManager" Version="1.0.10" />
<PackageVersion Include="CS2MenuManager" Version="1.0.10" />
<PackageReference Include="CS2MenuManager" />
paket add CS2MenuManager --version 1.0.10
#r "nuget: CS2MenuManager, 1.0.10"
#addin nuget:?package=CS2MenuManager&version=1.0.10
#tool nuget:?package=CS2MenuManager&version=1.0.10
CS2MenuManager is a flexible and user-friendly menu system developed for Counter-Strike 2 using the CounterStrikeSharp library. This project provides server administrators and developers with the ability to create customisable menus. It is easy to use for players and easy to configure and extend 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
Nuget
Installation
- Download:
- Download the latest release from GitHub Releases or Nuget.
- Install the files:
- Extract the contents of the downloaded ZIP file to the
addons/counterstrikesharp/shared
folder.
- Configure the settings:
- Adjust the settings in the
config.toml
file in theaddons/counterstrikesharp/shared/CS2MenuManager/
directory.
- Restart server:
- Restart your server for the changes to take effect. You will need to use this API in your plugins.
Usage
Creating Menus
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
, ScreenMenu
, PanoramaVote
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);
Adding Submenus
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;
}
Post-Select Actions
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;
});
Setting Menu Time
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
};
Panorama Vote Menu
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);
And callbacks
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;
}
}
References
This project was prepared with the help of the following sources.
ChatMenu
,ConsoleMenu
,CenterHtmlMenu
⇒ CounterStrikeSharp by roflmuffinWasdMenu
⇒ WasdMenuAPI by Interesting-exeScreenMenu
⇒ CS2ScreenMenuAPI by T3MariusPanoramaVote
⇒ SLAYER_PanoramaVote by zakriamansoor47
Images
Chat Menu
Console Menu
CenterHtmlMenu
Wasd Menu
Screen Menu
Panorama Vote
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | net8.0 is compatible. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. net9.0 was computed. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. |
-
net8.0
- CounterStrikeSharp.API (>= 1.0.307)
- Tomlyn (>= 0.19.0)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
Version | Downloads | Last updated |
---|---|---|
1.0.28 | 181 | 4/2/2025 |
1.0.27 | 182 | 3/31/2025 |
1.0.26 | 162 | 3/30/2025 |
1.0.25 | 108 | 3/29/2025 |
1.0.24 | 83 | 3/29/2025 |
1.0.23 | 98 | 3/29/2025 |
1.0.22 | 131 | 3/27/2025 |
1.0.21 | 115 | 3/26/2025 |
1.0.20 | 115 | 3/26/2025 |
1.0.19 | 460 | 3/25/2025 |
1.0.18 | 459 | 3/25/2025 |
1.0.17 | 410 | 3/24/2025 |
1.0.11 | 144 | 3/22/2025 |
1.0.10 | 71 | 3/22/2025 |
1.0.9 | 62 | 3/22/2025 |
1.0.8 | 56 | 3/22/2025 |
1.0.7 | 58 | 3/22/2025 |
1.0.6 | 134 | 3/20/2025 |
1.0.5 | 133 | 3/20/2025 |
1.0.4 | 134 | 3/20/2025 |
1.0.3 | 130 | 3/20/2025 |
1.0.2 | 138 | 3/20/2025 |
1.0.1 | 141 | 3/20/2025 |