MySQL: Online
Load: Medium
Sandbox: Ready

Как добавить файл конфигурации в плагин CounterStrikeSharp

Значения, прописанные в коде, годятся для теста, но настоящему плагину нужны настройки: сообщения, лимиты, данные для подключения к базе. CounterStrikeSharp умеет сам создавать и читать JSON-конфигурацию по обычному классу C#.

1

Зачем нужна конфигурация

С конфигурацией владелец сервера правит текстовый файл и перезагружает плагин, а не ждёт, пока вы измените код и пришлёте новую версию. Кроме того, секреты вроде паролей остаются вне исходного кода.

2

Опишите настройки в классе

Создайте класс, наследующий BasePluginConfig. Каждое свойство — это настройка, а присвоенное значение — значение по умолчанию. JsonPropertyName задаёт имя, которое будет в файле.

using System.Text.Json.Serialization;
using CounterStrikeSharp.API.Core;

public class MyConfig : BasePluginConfig
{
    [JsonPropertyName("WelcomeMessage")]
    public string WelcomeMessage { get; set; } = "Welcome to the server!";

    [JsonPropertyName("MaxWarnings")]
    public int MaxWarnings { get; set; } = 3;
}
3

Свяжите его с плагином

Пусть плагин реализует IPluginConfig с вашим классом конфигурации. Тогда CounterStrikeSharp прочитает файл и вызовет OnConfigParsed до Load, передав вам загруженные значения.

public class MyPlugin : BasePlugin, IPluginConfig<MyConfig>{
    public override string ModuleName => "Config Example";
    public override string ModuleVersion => "1.0.0";

    public MyConfig Config { get; set; } = new();
    public void OnConfigParsed(MyConfig config)    {        Config = config;    }}
4

Где создаётся файл

При первой загрузке плагина фреймворк записывает файл с вашими значениями по умолчанию в configs/plugins, в папку с именем плагина. Владельцы серверов редактируют именно этот файл.

counterstrikesharp
configs
plugins
ConfigExample
ConfigExample.json
5

Как выглядит файл

Получается простой JSON-файл с одной записью на каждое свойство. Владелец может изменить значения и оставить остальное как есть.

{
  "WelcomeMessage": "Welcome to the server!",
  "MaxWarnings": 3
}
6

Используйте значения

Читайте настройки из свойства Config в любом месте плагина после разбора конфигурации, например в Load или в обработчике события.

Logger.LogInformation("Warnings allowed: {Max}", Config.MaxWarnings);
7

Что стоит помнить

Изменения в файле применяются при следующей загрузке плагина, а не мгновенно. Если в новой версии вы переименуете или удалите свойство, предупредите пользователей: в их старом файле остались прежние имена. А поскольку конфигурация — читаемый текст, не кладите в неё ничего, что не должен видеть админ.

Никогда не меняйте имя свойства между версиями без предупреждения. Владельцы, которые обновятся, потеряют свои настройки, даже не заметив этого.

Было ли это руководство полезным?

1 пользователь счёл это руководство полезным
Страница сформирована за 0.012 секунд
CounterStrikeSharp Web Compiler V1.0 - Сделано с от RomaniaBarlap для сообщества.