MySQL: Online
Load: High
Sandbox: Running

Cum creezi comenzi de chat și de consolă în CounterStrikeSharp

Comenzile sunt de obicei primul lucru cu care interacționează jucătorii. În CounterStrikeSharp o comandă este doar o metodă cu un atribut deasupra, iar aceeași comandă se poate scrie în consolă sau în chat. Ghidul pornește de la o comandă hello simplă și ajunge la comenzi protejate, cu argumente.

1

Cum funcționează comenzile

O comandă este o metodă marcată cu [ConsoleCommand]. Framework-ul o înregistrează când pluginul se încarcă și o scoate când pluginul se descarcă. Orice comandă al cărei nume începe cu css_ este disponibilă în trei feluri: în consolă ca css_hello, iar în chat ca !hello sau /hello. Varianta cu slash ascunde mesajul de ceilalți jucători.

2

Prima ta comandă

Metoda primește jucătorul care a rulat comanda și un obiect CommandInfo, folosit ca să citești argumentele și să răspunzi. Jucătorul este gol când comanda a fost scrisă în consola serverului, deci verifică asta mai întâi.

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

De ce poate fi jucătorul null

Când scrii comanda în consola serverului, nu există niciun jucător în spatele ei. Dacă folosești jucătorul fără verificare, codul se blochează. Fie ieși din metodă pentru consolă, ca mai sus, fie scrii codul astfel încât să meargă și pentru server.

4

Argumente și mod de utilizare

Atributul CommandHelper descrie cum trebuie folosită comanda: numărul minim de argumente, un text scurt de utilizare și cine o poate rula. Dacă jucătorul greșește argumentele, CounterStrikeSharp îi arată singur modul de utilizare. GetArg(1) este primul argument, pentru că numele comenzii este argumentul 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

Comenzi cu lambda

Poți înregistra o comandă și în metoda Load, în loc să folosești un atribut. E util pentru comenzi mici sau când numele comenzii vine dintr-un fișier de configurare.

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

Restricționează o comandă cu permisiuni

Adaugă RequiresPermissions ca să permiți comanda doar jucătorilor cu un flag, de exemplu @css/kick. Cei fără flag sunt refuzați automat. Flagurile se atribuie în admins.json, așa cum explică ghidul nostru despre cum devii 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

Mesaje colorate în chat

ChatColors îți permite să colorezi părți dintr-un mesaj trimis cu PrintToChat. Începe textul cu un spațiu, ca în exemplu, altfel prima culoare poate să nu se afișeze corect. ChatColors se află în CounterStrikeSharp.API.Modules.Utils.

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

Greșeli frecvente

O comandă care nu răspunde niciodată fie nu are prefixul css_, deci nu e disponibilă în chat, fie aruncă o excepție fiindcă jucătorul era null. Ține minte și că numele trebuie să fie unice: dacă două pluginuri înregistrează aceeași comandă, comportamentul e imprevizibil, deci dă-i comenzii tale un nume distinctiv.

A fost util acest tutorial?

Pagină generată în 0.011 secunde
CounterStrikeSharp Web Compiler V1.0 - Realizat cu de RomaniaBarlap pentru comunitate.