CounterStrikeSharpのプラグインに設定ファイルを追加する
コードに直接書いた値は動作確認には十分ですが、実用的なプラグインにはメッセージ、上限値、データベースの接続情報などの設定が必要です。CounterStrikeSharpは、シンプルなC#クラスからJSON設定ファイルを自動で作成し、読み込んでくれます。
設定ファイルを使う理由
設定ファイルがあれば、サーバー管理者はテキストファイルを編集して再読み込みするだけで済み、あなたがコードを変更して新バージョンを送るのを待たなくて済みます。パスワードのような秘密情報も、ソースコードに含めずに管理できます。
設定項目をクラスで定義する
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;
}
プラグインに結び付ける
プラグインに、自分の設定クラスを指定して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; }}
ファイルが作られる場所
プラグインが初めて読み込まれると、フレームワークは既定値を書き込んだファイルを、プラグイン名のフォルダーの中のconfigs/pluginsに作成します。サーバー管理者はこのファイルを編集します。
ファイルの見た目
できあがるのは、プロパティごとに1つのエントリーを持つシンプルなJSONファイルです。管理者は変更したい値だけを書き換え、ほかはそのままにできます。
{
"WelcomeMessage": "Welcome to the server!",
"MaxWarnings": 3
}
値を使う
設定の解析が終わったあとなら、Loadやイベントハンドラーなど、プラグイン内のどこからでも、Configプロパティから設定を読み取れます。
Logger.LogInformation("Warnings allowed: {Max}", Config.MaxWarnings);
覚えておきたいこと
ファイルの変更は、すぐには反映されず、プラグインを再読み込みしたときに適用されます。新バージョンでプロパティ名を変更したり削除したりする場合は、利用者に知らせてください。古いファイルには古い名前が残っているためです。また、設定ファイルは読めるテキストなので、管理者に見られては困る情報は入れないでください。
このチュートリアルは役に立ちましたか?
Barlap コミュニティのために。