MySQL: Online
Load: Low
Sandbox: Running

Chat- és konzolparancsok készítése CounterStrikeSharp-pal

A parancsok általában az első dolog, amellyel a játékosok kapcsolatba kerülnek. A CounterStrikeSharpban a parancs egyszerűen egy metódus egy attribútummal a fölött, és ugyanaz a parancs beírható a konzolba vagy a chatbe. Ez az útmutató egy egyszerű hello paranccsal indul, és védett, argumentumos parancsokig jut el.

1

Hogyan működnek a parancsok

A parancs egy [ConsoleCommand] attribútummal megjelölt metódus. A keretrendszer a bővítmény betöltésekor regisztrálja, eltávolításakor törli. Minden css_-sel kezdődő nevű parancs háromféleképpen érhető el: a konzolon css_hello néven, a chatben pedig !hello vagy /hello formában. A perjeles változat elrejti az üzenetet a többi játékos elől.

2

Az első parancsod

A metódus megkapja a parancsot futtató játékost és egy CommandInfo objektumot, amellyel az argumentumokat olvashatod és válaszolhatsz. A játékos üres, ha a parancsot a szerverkonzolon írták be, ezért ezt ellenőrizd először.

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

Miért lehet a játékos null

Ha a parancsot a szerverkonzolba írod, nincs mögötte játékos. Ha a kódod ellenőrzés nélkül használja a játékost, összeomlik. Vagy kilépsz a metódusból a konzol esetén, ahogy fent, vagy úgy írod meg a kódot, hogy a szerverrel is működjön.

4

Argumentumok és használat

A CommandHelper attribútum leírja, hogyan kell használni a parancsot: az argumentumok minimális számát, egy rövid használati szöveget és azt, hogy ki futtathatja. Ha a játékos rosszul adja meg az argumentumokat, a CounterStrikeSharp maga mutatja meg a használatot. A GetArg(1) az első argumentum, mert a parancs neve a 0. argumentum.

[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

Parancsok lambdával

A parancsot a Load metódusban is regisztrálhatod attribútum helyett. Ez kényelmes kis parancsoknál, vagy amikor a parancs neve konfigurációs fájlból jön.

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

Korlátozd a parancsot jogosultsággal

A RequiresPermissions hozzáadásával a parancsot csak a jelzővel, például @css/kick joggal rendelkező játékosoknak engedélyezed. Aki nem rendelkezik vele, automatikusan elutasításra kerül. A jogokat az admins.json-ben osztod ki, ahogy az adminná válásról szóló útmutatónk leírja.

[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

Színes chatüzenetek

A ChatColors segítségével a PrintToChat-tel küldött üzenet részeit színezheted. A szöveget kezdd szóközzel, ahogy a példában, különben az első szín esetleg nem jelenik meg jól. A ChatColors a CounterStrikeSharp.API.Modules.Utils névtérben található.

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

Gyakori hibák

Az a parancs, amely sosem válaszol, többnyire vagy nem rendelkezik a css_ előtaggal, ezért nincs a chatben, vagy kivételt dob, mert a játékos null volt. Ne feledd azt sem, hogy a neveknek egyedinek kell lenniük: ha két bővítmény ugyanazt a parancsot regisztrálja, a viselkedés kiszámíthatatlan, ezért adj a sajátodnak megkülönböztető nevet.

Hasznos volt ez az útmutató?

Az oldal 0.016 másodperc alatt generálódott
CounterStrikeSharp Web Compiler V1.0 - Készült által RomaniaBarlap a közösségért.