Как да добавите конфигурационен файл към плъгина си за CounterStrikeSharp
Стойностите, вписани в кода, стигат за тест, но истинският плъгин се нуждае от настройки: съобщения, ограничения, данни за базата. CounterStrikeSharp може да създава и чете вместо вас JSON конфигурация от обикновен C# клас.
Защо конфигурация
С конфигурация собственикът на сървъра редактира текстов файл и презарежда, вместо да чака вие да промените кода и да изпратите нова версия. Освен това тайните, като паролите, остават извън изходния код.
Опишете настройките в клас
Създайте клас, който наследява 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;
}
Свържете го с плъгина
Накарайте плъгина да имплементира 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; }}
Къде се създава файлът
При първото зареждане на плъгина framework-ът записва файла с вашите стойности по подразбиране в configs/plugins, в папка с името на плъгина. Собствениците на сървъри редактират този файл.
Как изглежда файлът
Резултатът е прост JSON файл с по един запис за всяко свойство. Собственикът може да променя стойностите и да оставя останалите непокътнати.
{
"WelcomeMessage": "Welcome to the server!",
"MaxWarnings": 3
}
Ползвайте стойностите
Четете настройките от свойството Config навсякъде в плъгина, след като конфигурацията е обработена, например в Load или в обработчик на събитие.
Logger.LogInformation("Warnings allowed: {Max}", Config.MaxWarnings);
Неща, които да помните
Промените във файла се прилагат, когато плъгинът се зареди отново, а не веднага. Ако преименувате или премахнете свойство в нова версия, предупредете потребителите, защото старият им файл все още има старите имена. А понеже конфигурацията е четим текст, не слагайте там нищо, което не искате админ да вижда.
Беше ли полезно това ръководство?
Barlap за общността.