Adicionando um arquivo de configuração ao seu plugin do CounterStrikeSharp
Valores fixos no código servem para um teste, mas um plugin de verdade precisa de configurações: mensagens, limites, dados do banco. O CounterStrikeSharp pode criar e ler para você uma configuração JSON a partir de uma simples classe C#.
Por que usar uma configuração
Com uma configuração, o dono do servidor edita um arquivo de texto e recarrega, em vez de esperar você mudar o código e enviar uma nova versão. Ela também mantém segredos, como senhas, fora do código-fonte.
Descreva as configurações numa classe
Crie uma classe que herda de BasePluginConfig. Cada propriedade é uma configuração, e o valor atribuído é o padrão. JsonPropertyName fixa o nome usado no arquivo.
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;
}
Conecte-a ao plugin
Faça o plugin implementar IPluginConfig com a sua classe de configuração. O CounterStrikeSharp então lê o arquivo e chama OnConfigParsed antes de Load, entregando os valores carregados.
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; }}
Onde o arquivo é criado
Na primeira vez que o plugin carrega, o framework grava o arquivo com seus valores padrão em configs/plugins, numa pasta com o nome do plugin. Os donos do servidor editam esse arquivo.
Como o arquivo fica
O resultado é um arquivo JSON simples com uma entrada por propriedade. O dono pode alterar valores e deixar o resto como está.
{
"WelcomeMessage": "Welcome to the server!",
"MaxWarnings": 3
}
Use os valores
Leia as configurações pela propriedade Config em qualquer lugar do plugin, depois que a configuração for processada, por exemplo em Load ou num manipulador de evento.
Logger.LogInformation("Warnings allowed: {Max}", Config.MaxWarnings);
Coisas para lembrar
As mudanças no arquivo valem quando o plugin é carregado de novo, não instantaneamente. Se você renomear ou remover uma propriedade numa nova versão, avise os usuários, porque o arquivo antigo deles ainda tem os nomes antigos. E como a configuração é texto legível, não coloque nada que um admin não deva ver.
Este tutorial foi útil?
Barlap para a comunidade.