CS2ScreenMenuAPI 3.0.5
See the version list below for details.
dotnet add package CS2ScreenMenuAPI --version 3.0.5
NuGet\Install-Package CS2ScreenMenuAPI -Version 3.0.5
<PackageReference Include="CS2ScreenMenuAPI" Version="3.0.5" />
<PackageVersion Include="CS2ScreenMenuAPI" Version="3.0.5" />
<PackageReference Include="CS2ScreenMenuAPI" />
paket add CS2ScreenMenuAPI --version 3.0.5
#r "nuget: CS2ScreenMenuAPI, 3.0.5"
#:package CS2ScreenMenuAPI@3.0.5
#addin nuget:?package=CS2ScreenMenuAPI&version=3.0.5
#tool nuget:?package=CS2ScreenMenuAPI&version=3.0.5
Config
# Screen Menu Configuration
[Settings]
FontName = "Tahoma Bold"
MenuType = "KeyPress"
Size = 25
PositionX = 0
PositionY = 0
HasExitOption = true
ShowResolutionOption = true
ShowDisabledOptionNum = true
ShowPageCount = true
FreezePlayer = true
ScrollPrefix = "\u2023"
[Settings.Resolutions."1920x1080"]
PositionX = -9.0
PositionY = 0.0
[Settings.Resolutions."1680x1050"]
PositionX = -8.2
PositionY = 0.0
[Settings.Resolutions."1600x900"]
PositionX = -9.0
PositionY = 0.0
[Settings.Resolutions."1440x1080"]
PositionX = -7.0
PositionY = 0.0
[Settings.Resolutions."1280x1080"]
PositionX = -6.0
PositionY = 0.0
[Settings.Resolutions."1280x720"]
PositionX = -9.0
PositionY = 0.0
[Settings.Resolutions."1280x1024"]
PositionX = -6.3
PositionY = 0.0
[Settings.Resolutions."1024x768"]
PositionX = -6.8
PositionY = 0.0
[Settings.Resolutions."800x600"]
PositionX = -7
PositionY = 0.0
[Controls]
ScrollUp = "W"
ScrollDown = "S"
Select = "E"
[Sounds]
Select = "menu.Select"
Next = "menu.Select"
Prev = "menu.Close"
Close = "menu.Close"
Volume = 1.0
[Lang.en]
Prev = "Back"
Next = "Next"
Close = "Close"
ControlInfo ="[{0}/{1}] Scroll\n[{2}] Select"
SelectRes = "Select Your Game Resolution"
ChangeRes = "Change Resolution"
NOTE: The config file creates automaticly when using a menu for the first time ex: !testmenu. It directly updates too so if you change the buttons and info and use !testmenu again it will be changed.
ANOTHER NOTE: When using the API in a plugin you don't need to do anything other than just adding the dll in the project and in the .csproj like this:
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net8.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="CounterStrikeSharp.API" Version="1.0.305" />
<Reference Include="CS2ScreenMenuAPI.dll" />
</ItemGroup>
</Project>
MenuExample
using System.Drawing;
using CounterStrikeSharp.API.Core;
using CounterStrikeSharp.API.Core.Attributes.Registration;
using CounterStrikeSharp.API.Modules.Commands;
using CS2ScreenMenuAPI;
using static CS2ScreenMenuAPI.MenuType;
using static CS2ScreenMenuAPI.PostSelect;
namespace Example
{
public class ExampleMenu : BasePlugin
{
public override string ModuleAuthor => "T3Marius";
public override string ModuleName => "TestScrenMenu";
public override string ModuleVersion => "1.0";
private int voteCount = 0;
public override void Load(bool hotReload)
{
}
public Menu TestMenu(CCSPlayerController player)
{
if (player == null)
return;
var menu = new CS2ScreenMenuAPI.Menu(player, this) // Creating the menu
{
Title = "TestMenu",
ShowDisabledOptionNum = false,
HasExitButon = true
PostSelect = PostSelect.Nothing
};
menu.AddItem($"Vote Option ({voteCount})", (p, option) =>
{
voteCount++;
p.PrintToChat($"Vote registered! Total votes: {voteCount}");
option.Text = $"Vote Option ({voteCount})";
menu.Refresh();
});
menu.AddItem("Enabled Option", (p, option) =>
{
p.PrintToChat("This is an enabled option!");
});
menu.AddItem("Disabled Option", (p, option) => { }, true);
menu.AddItem("Another Enabled Option", (p, option) =>
{
p.PrintToChat("This is another enabled option!");
});
menu.Display(); // Display the main menu
return menu
}
private void CreateSubMenu(CCSPlayerController player, Menu prevMenu)
{
Menu subMenu = new (player, this)
{
IsSubMenu = true,
PrevMenu = TestMenu // when you hit 7. Back it will send you to the TestMenu
};
subMenu.AddItem("SubOption 1", (p, o) =>
{
p.PrintToChat("SubOption 1!");
});
subMenu.Display();
}
}
}
MenuTypes
using System.Drawing;
using CounterStrikeSharp.API.Core;
using CounterStrikeSharp.API.Core.Attributes.Registration;
using CounterStrikeSharp.API.Modules.Commands;
using CS2ScreenMenuAPI;
using CS2ScreenMenuAPI.Enums;
namespace Example
{
public class ExampleMenu : BasePlugin
{
public override string ModuleAuthor => "T3Marius";
public override string ModuleName => "TestScrenMenu";
public override string ModuleVersion => "1.0";
public override void Load(bool hotReload)
{
}
[ConsoleCommand("css_menu_types")]
public void OnMenuTypes(CCSPlayerController player, CommandInfo info)
{
if (player == null)
return;
// KeyPress menu example
var keyPressMenu = new CS2ScreenMenuAPI.Menu(player, this)
{
Title = "Only key press menu",
MenuType = MenuType.KeyPress,
HasExitButon = true
};
keyPressMenu.AddItem("Key Press Option", (p, option) =>
{
p.PrintToChat("Selected from key press menu!");
});
// Uncomment to display this menu
// keyPressMenu.Display();
// Scroll menu example
var scrollMenu = new CS2ScreenMenuAPI.Menu(player, this)
{
Title = "Only Scroll menu",
MenuType = MenuType.Scrollable,
HasExitButon = true
};
scrollMenu.AddItem("Scroll Option", (p, option) =>
{
p.PrintToChat("Selected from scroll menu!");
});
// Uncomment to display this menu
// scrollMenu.Display();
// Both types menu example (default)
var bothTypesMenu = new CS2ScreenMenuAPI.Menu(player, this)
{
Title = "Menu with both key press and scrollable",
MenuType = MenuType.Both, // This is the default, so it's optional
HasExitButon = true
};
bothTypesMenu.AddItem("Option works with both", (p, option) =>
{
p.PrintToChat("Selected from menu supporting both input types!");
});
bothTypesMenu.Display();
}
}
You can use this API in your project by installing it from Manage NuGet Packages or add it with this command
dotnet add package CS2ScreenMenuAPI
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net5.0 was computed. net5.0-windows was computed. net6.0 was computed. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 was computed. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 was computed. 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. net10.0 was computed. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
| .NET Core | netcoreapp2.0 was computed. netcoreapp2.1 was computed. netcoreapp2.2 was computed. netcoreapp3.0 was computed. netcoreapp3.1 was computed. |
| .NET Standard | netstandard2.0 is compatible. netstandard2.1 was computed. |
| .NET Framework | net461 was computed. net462 was computed. net463 was computed. net47 was computed. net471 was computed. net472 was computed. net48 was computed. net481 was computed. |
| MonoAndroid | monoandroid was computed. |
| MonoMac | monomac was computed. |
| MonoTouch | monotouch was computed. |
| Tizen | tizen40 was computed. tizen60 was computed. |
| Xamarin.iOS | xamarinios was computed. |
| Xamarin.Mac | xamarinmac was computed. |
| Xamarin.TVOS | xamarintvos was computed. |
| Xamarin.WatchOS | xamarinwatchos was computed. |
This package has no dependencies.
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 |
|---|---|---|
| 3.1.1 | 513 | 7/25/2025 |
| 3.1.0 | 442 | 7/25/2025 |
| 3.0.9 | 198 | 7/5/2025 |
| 3.0.8 | 208 | 6/29/2025 |
| 3.0.7 | 270 | 6/17/2025 |
| 3.0.6 | 208 | 6/17/2025 |
| 3.0.5 | 375 | 4/23/2025 |
| 3.0.4 | 447 | 4/6/2025 |
| 3.0.3 | 262 | 4/2/2025 |
| 3.0.2 | 552 | 3/26/2025 |
| 3.0.1 | 316 | 3/14/2025 |
| 3.0.0 | 235 | 3/11/2025 |
| 2.9.0 | 239 | 3/3/2025 |
| 2.8.0 | 167 | 3/2/2025 |
| 2.7.0 | 146 | 3/1/2025 |
| 2.6.0 | 628 | 2/22/2025 |
| 2.5.0 | 147 | 2/22/2025 |
| 2.3.0 | 149 | 2/22/2025 |
| 2.2.0 | 176 | 2/21/2025 |
| 2.1.0 | 163 | 2/21/2025 |
| 2.0.0 | 174 | 2/20/2025 |
| 1.9.0 | 157 | 2/19/2025 |
| 1.8.0 | 180 | 2/19/2025 |
| 1.7.0 | 151 | 2/19/2025 |
| 1.6.0 | 165 | 2/17/2025 |
| 1.5.0 | 170 | 2/17/2025 |
| 1.4.0 | 147 | 2/16/2025 |
| 1.3.0 | 157 | 2/15/2025 |
| 1.0.0 | 171 | 2/22/2025 |