MySQL: Online
Load: Low
Sandbox: Ready

Как да създавате чат и конзолни команди в CounterStrikeSharp

Командите обикновено са първото, с което играчите си взаимодействат. В CounterStrikeSharp командата е просто метод с атрибут отгоре, а една и съща команда може да се въведе в конзолата или в чата. Ръководството тръгва от проста команда hello и стига до защитени команди с аргументи.

1

Как работят командите

Командата е метод, маркиран с [ConsoleCommand]. Framework-ът я регистрира, когато плъгинът се зареди, и я премахва, когато се разтовари. Всяка команда, чието име започва с css_, е достъпна по три начина: в конзолата като css_hello, а в чата като !hello или /hello. Вариантът с наклонена черта скрива съобщението от другите играчи.

2

Вашата първа команда

Методът получава играча, който е изпълнил командата, и обект CommandInfo, чрез който четете аргументите и отговаряте. Играчът е празен, когато командата е въведена в конзолата на сървъра, затова проверете първо това.

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

Защо играчът може да е null

Когато въведете командата в конзолата на сървъра, зад нея няма играч. Ако кодът ви ползва играча без проверка, се чупи. Или излизате от метода при конзола, както по-горе, или пишете кода така, че да работи и за сървъра.

4

Аргументи и начин на употреба

Атрибутът CommandHelper описва как трябва да се ползва командата: минимален брой аргументи, кратък текст за употреба и кой може да я изпълнява. Ако играчът сбърка аргументите, CounterStrikeSharp сам му показва начина на употреба. GetArg(1) е първият аргумент, защото името на командата е аргумент 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

Команди с ламбда

Можете да регистрирате команда и в метода Load, вместо да ползвате атрибут. Удобно е за малки команди или когато името на командата идва от конфигурационен файл.

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

Ограничете команда с права

Добавете RequiresPermissions, за да разрешите командата само на играчи с флаг, например @css/kick. Тези без него се отказват автоматично. Флаговете се задават в admins.json, както обяснява нашето ръководство как да станете админ.

[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

Цветни съобщения в чата

ChatColors ви позволява да оцветявате части от съобщение, изпратено с PrintToChat. Започнете низа с интервал, както в примера, иначе първият цвят може да не се покаже правилно. ChatColors се намира в CounterStrikeSharp.API.Modules.Utils.

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

Чести грешки

Команда, която никога не отговаря, обикновено или няма префикса css_ и затова не е достъпна в чата, или хвърля изключение, защото играчът е бил null. Помнете и че имената трябва да са уникални: ако два плъгина регистрират една и съща команда, поведението е непредсказуемо, затова дайте на вашата отличително име.

Беше ли полезно това ръководство?

Страницата е генерирана за 0.011 секунди
CounterStrikeSharp Web Compiler V1.0 - Направено с от RomaniaBarlap за общността.