using CounterStrikeSharp.API; using CounterStrikeSharp.API.Core; using CounterStrikeSharp.API.Core.Attributes; using CounterStrikeSharp.API.Core.Attributes.Registration; using CounterStrikeSharp.API.Modules.Admin; using CounterStrikeSharp.API.Modules.Commands; namespace WithCommands; [MinimumApiVersion(80)] public class WithCommandsPlugin : BasePlugin { public override string ModuleName => "Example: With Commands"; public override string ModuleVersion => "1.0.0"; public override string ModuleAuthor => "CounterStrikeSharp & Contributors"; public override string ModuleDescription => "A simple plugin that registers some commands"; public override void Load(bool hotReload) { // All commands that are prefixed with "css_" will automatically be registered as a chat command without the prefix. // i.e. `css_ping` can be called with `!ping` or `/ping`. // Commands can be registered using the instance `AddCommand` method. AddCommand("css_ping", "Responds to the caller with \"pong\"", (player, commandInfo) => { // The player is null, then the command has been called by the server console. if (player == null) { commandInfo.ReplyToCommand("pong server"); return; } commandInfo.ReplyToCommand("pong"); }); } // Commands can also be registered using the `Command` attribute. [ConsoleCommand("css_hello", "Responds to the caller with \"pong\"")] // The `CommandHelper` attribute can be used to provide additional information about the command. [CommandHelper(minArgs: 1, usage: "[name]", whoCanExecute: CommandUsage.CLIENT_AND_SERVER)] [RequiresPermissions("@css/cvar")] public void OnHelloCommand(CCSPlayerController? player, CommandInfo commandInfo) { // The first argument is the command name, in this case "css_hello". commandInfo.GetArg(0); // css_hello // The second argument is the first argument passed to the command, in this case "name". // The `minArgs` helper parameter is used to ensure that the second argument is present. var name = commandInfo.GetArg(1); commandInfo.ReplyToCommand($"Hello {name}"); } // Permissions can be added to commands using the `RequiresPermissions` attribute. // See the admin documentation for more information on permissions. [RequiresPermissions("@css/kick")] [CommandHelper(minArgs: 1, usage: "[id]", whoCanExecute: CommandUsage.CLIENT_AND_SERVER)] public void OnSpecialCommand(CCSPlayerController? player, CommandInfo commandInfo) { var id = commandInfo.GetArg(1); Server.ExecuteCommand($"kick {id}"); } }