MySQL: Online
Load: Low
Sandbox: Ready

Pravljenje četovskih i konzolnih komandi u CounterStrikeSharp-u

Komande su obično prvo sa čime igrači stupaju u interakciju. U CounterStrikeSharp-u komanda je jednostavno metoda sa atributom iznad, a ista komanda može da se ukuca u konzolu ili u čet. Ovaj vodič polazi od jednostavne hello komande i stiže do zaštićenih komandi sa argumentima.

1

Kako komande rade

Komanda je metoda označena sa [ConsoleCommand]. Framework je registruje kad se plagin učita i uklanja kad se plagin ukloni. Svaka komanda čije ime počinje sa css_ dostupna je na tri načina: u konzoli kao css_hello, a u četu kao !hello ili /hello. Varijanta sa kosom crtom sakriva poruku od ostalih igrača.

2

Vaša prva komanda

Metoda prima igrača koji je pokrenuo komandu i objekat CommandInfo koji služi za čitanje argumenata i odgovaranje. Igrač je prazan kada je komanda ukucana u konzolu servera, zato prvo proverite to.

using CounterStrikeSharp.API.Core;
using CounterStrikeSharp.API.Core.Attributes.Registration;
using CounterStrikeSharp.API.Modules.Commands;

public class CommandsPlugin : BasePlugin
{
    public override string ModuleName => "Commands Example";
    public override string ModuleVersion => "1.0.0";

    [ConsoleCommand("css_hello", "Says hello to the player")]    public void OnHelloCommand(CCSPlayerController? player, CommandInfo commandInfo)
    {
        if (player == null) return;

        commandInfo.ReplyToCommand($"Hello, {player.PlayerName}!");    }
}
3

Zašto igrač može biti null

Kada komandu ukucate u konzolu servera, iza nje nema igrača. Ako vaš kod koristi igrača bez provere, puca. Ili izađite iz metode kada dolazi iz konzole, kao gore, ili napišite kod tako da radi i za server.

4

Argumenti i način upotrebe

Atribut CommandHelper opisuje kako komanda treba da se koristi: minimalan broj argumenata, kratak tekst uputstva i ko može da je izvrši. Ako igrač pogreši argumente, CounterStrikeSharp mu sam prikazuje uputstvo. GetArg(1) je prvi argument, jer je ime komande argument 0.

[ConsoleCommand("css_greet", "Greets another player by name")]
[CommandHelper(minArgs: 1, usage: "<name>", whoCanExecute: CommandUsage.CLIENT_ONLY)]
public void OnGreetCommand(CCSPlayerController? player, CommandInfo commandInfo)
{
    var name = commandInfo.GetArg(1);
    commandInfo.ReplyToCommand($"Hello, {name}!");
}
5

Komande sa lambdom

Komandu možete registrovati i u metodi Load umesto da koristite atribut. Zgodno je za male komande ili kada ime komande dolazi iz konfiguracionog fajla.

public override void Load(bool hotReload)
{
    AddCommand("css_ping", "Replies with pong", (player, commandInfo) =>
    {
        commandInfo.ReplyToCommand("pong");
    });
}
6

Ograničite komandu dozvolama

Dodajte RequiresPermissions da komandu dozvolite samo igračima sa flagom, na primer @css/kick. Oni koji ga nemaju automatski se odbijaju. Flagovi se dodeljuju u admins.json, kako objašnjava naš vodič o tome kako postati admin.

[ConsoleCommand("css_kickme", "Example of a protected command")]
[RequiresPermissions("@css/kick")]
public void OnKickMeCommand(CCSPlayerController? player, CommandInfo commandInfo)
{
    commandInfo.ReplyToCommand("You have the @css/kick flag.");
}
7

Obojene poruke u četu

ChatColors vam omogućava da obojite delove poruke poslate preko PrintToChat. Počnite string razmakom, kao u primeru, inače se prva boja možda neće prikazati ispravno. ChatColors se nalazi u CounterStrikeSharp.API.Modules.Utils.

player.PrintToChat($" {ChatColors.Green}Hello, {player.PlayerName}!");
8

Česte greške

Komanda koja nikad ne odgovara obično nema prefiks css_, pa ne postoji u četu, ili baca izuzetak jer je igrač bio null. Zapamtite i da imena moraju biti jedinstvena: ako dva plagina registruju istu komandu, ponašanje je nepredvidivo, zato svojoj komandi dajte prepoznatljivo ime.

Da li vam je ovaj vodič bio koristan?

Stranica generisana za 0.011 sekundi
CounterStrikeSharp Web Compiler V1.0 - Napravljeno sa od RomaniaBarlap za zajednicu.