MySQL: Online
Load: High
Sandbox: Running

为你的 CounterStrikeSharp 插件添加配置文件

写死在代码里的数值用来测试没问题,但一个真正的插件需要各种设置:消息、上限、数据库连接信息。CounterStrikeSharp 可以根据一个普通的 C# 类,为你自动生成并读取 JSON 配置。

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 会读取文件,并在 Load 之前调用 OnConfigParsed,把已加载的值交给你。

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

使用这些值

配置解析完成后,你可以在插件的任何地方(例如 Load 或事件处理程序中)通过 Config 属性读取设置。

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

需要记住的事

文件的改动会在插件重新加载时生效,而不是立即生效。如果在新版本中重命名或移除了某个属性,请告知用户,因为他们旧的文件里还是旧的名称。另外,配置是可读的文本,不要把不想让管理员看到的内容放进去。

不同版本之间不要在不通知的情况下更改属性名称,否则升级的服主会在毫无察觉的情况下丢失自己的设置。

这篇教程对你有帮助吗?

有 1 位用户觉得这篇教程有用
页面生成耗时 0.015 秒
CounterStrikeSharp Web Compiler V1.0 - 制作工具 由 RomaniaBarlap 为社区打造。