MySQL: Online
Load: Low
Sandbox: Ready

CounterStrikeSharpのプラグインに設定ファイルを追加する

コードに直接書いた値は動作確認には十分ですが、実用的なプラグインにはメッセージ、上限値、データベースの接続情報などの設定が必要です。CounterStrikeSharpは、シンプルなC#クラスからJSON設定ファイルを自動で作成し、読み込んでくれます。

1

設定ファイルを使う理由

設定ファイルがあれば、サーバー管理者はテキストファイルを編集して再読み込みするだけで済み、あなたがコードを変更して新バージョンを送るのを待たなくて済みます。パスワードのような秘密情報も、ソースコードに含めずに管理できます。

2

設定項目をクラスで定義する

BasePluginConfigを継承したクラスを作ります。プロパティ1つが設定1項目で、代入した値が既定値になります。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

ファイルの見た目

できあがるのは、プロパティごとに1つのエントリーを持つシンプルなJSONファイルです。管理者は変更したい値だけを書き換え、ほかはそのままにできます。

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

値を使う

設定の解析が終わったあとなら、Loadやイベントハンドラーなど、プラグイン内のどこからでも、Configプロパティから設定を読み取れます。

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

覚えておきたいこと

ファイルの変更は、すぐには反映されず、プラグインを再読み込みしたときに適用されます。新バージョンでプロパティ名を変更したり削除したりする場合は、利用者に知らせてください。古いファイルには古い名前が残っているためです。また、設定ファイルは読めるテキストなので、管理者に見られては困る情報は入れないでください。

利用者に知らせずにバージョン間でプロパティ名を変えるのは避けてください。更新した管理者が、気づかないうちに設定を失ってしまいます。

このチュートリアルは役に立ちましたか?

1人がこのチュートリアルを役に立ったと答えています
ページは 0.011 秒で生成されました
CounterStrikeSharp Web Compiler V1.0 - Made with 作成: RomaniaBarlap コミュニティのために。