Rust プラグイン入門:Oxide と Carbon の基本
結論: サーバーに Oxide か Carbon をインストールして、プラグインの .cs ファイルを oxide/plugins/ か carbon/plugins/ に入れます。再起動なしで自動で読み込まれ、設定ファイルは、初めて読み込まれたときに config フォルダーに現れます。
Rust のプラグインは C# のファイル(.cs)1 つで、モッディングフレームワークが専用サーバーの中でコンパイルして動かします。プラグインはサーバー側だけで動くので、プレイヤーは何もインストールしません。バニラのサーバーでは動かせません。先にサーバーに Oxide か Carbon が必要です。
Oxide か Carbon か
Section titled “Oxide か Carbon か”どちらも同じ種類のプラグインを読み込み、どちらも同じゲームファイルにパッチを当てるので、サーバーに入れられるのは一度に片方だけです。
- Oxide(uMod とも呼ばれます)は、昔からあるほうです。ファイルはサーバーの
oxide/フォルダーにあります。 - Carbon は新しいほうで、Oxide 用に書かれたプラグインも読み込めます。ファイルは
carbon/フォルダーにあります。
Crucible Local Server は、サーバーを作るときにどちらかを代わりにインストールし、そのプラグインを Mods タブで管理します。Rust サーバーに Carbon か Oxide をインストールする方法を見てください。
プラグインファイルの置き場所
Section titled “プラグインファイルの置き場所”| 内容 | Oxide | Carbon |
|---|---|---|
プラグイン(.cs) | oxide/plugins/ | carbon/plugins/ |
各プラグインの設定(.json) | oxide/config/ | carbon/configs/ |
| プラグインが保存するデータ | oxide/data/ | carbon/data/ |
| プラグインのメッセージ、言語別 | oxide/lang/ | carbon/lang/ |
| ログ | oxide/logs/ | carbon/logs/ |
フォルダーは RustDedicated.exe の隣にあり、フレームワークを入れた状態でサーバーを初めて起動したときに現れます。プラグインは、初めて読み込まれたときに自分の設定ファイルを書き出します。それを編集してから、プラグインをリロードしてください。
読み込み、リロード、アンロード
Section titled “読み込み、リロード、アンロード”.cs ファイルをプラグインフォルダーに入れると、フレームワークが再起動なしで、自動でコンパイルして読み込みます。ファイルを変更するとリロードされ、削除するとアンロードされます。そのあとサーバーコンソールに、Loaded plugin Hello World v1.0.0 by YourName のような行が出ます。コードが間違っていれば、コンパイルエラーが出ます。
サーバーコンソールか RCON から、手動でもできます。
- Oxide:
oxide.load Name、oxide.reload Name、oxide.unload Name、oxide.plugins(どれもo.load、o.reloadなどでも使えます)。 - Carbon:
c.load Name、c.reload Name、c.unload Name、c.plugins。
Name は、.cs を除いたファイル名です。Oxide が動いているサーバーは、自分で Mod 入りと表示します。
パーミッション
Section titled “パーミッション”ほとんどのプラグインは、コマンドを、プラグインにちなんだ名前のパーミッション(hello.use、kits.admin)で守っています。Oxide は 2 つのグループから始まります。全プレイヤーが入っている default と、サーバーの管理者用の admin です。
oxide.grant user <name or SteamID> <permission>は、1 人のプレイヤーにパーミッションを与えます。oxide.grant group default <permission>は、全員に与えます。oxide.revokeは、同じ形で取り消します。oxide.usergroup add <name or SteamID> <group>は、プレイヤーをグループに入れ、oxide.group add <group>は新しいグループを作ります。
Oxide のすべてのコマンドとその効果は、Rust コンソールコマンドの最後にあります。
最初のプラグイン
Section titled “最初のプラグイン”これを、プラグインフォルダーに HelloWorld.cs として保存します。読み込まれたときにコンソールへ 1 行、プレイヤーが参加するたびに 1 行を書き出し、チャットの /hello に返事をします。
namespace Oxide.Plugins{ [Info("Hello World", "YourName", "1.0.0")] [Description("Says hello when a player types /hello in chat.")] public class HelloWorld : RustPlugin { private void OnServerInitialized() { Puts("Hello World is running."); }
private void OnPlayerConnected(BasePlayer player) { Puts($"{player.displayName} joined."); }
[ChatCommand("hello")] private void HelloCommand(BasePlayer player, string command, string[] args) { SendReply(player, $"Hello, {player.displayName}!"); } }}各部分の役割:
- ファイル名とクラス名は、一致している必要があります(
HelloWorld.cs、class HelloWorld)。 [Info]はプラグインのタイトル、作者、バージョンを指定し、読み込み時にコンソールに表示されます。- フックの名前が付いたメソッドは、ゲーム内でそれが起きたときに実行されます。
OnServerInitializedはサーバーの起動が終わったとき(すでに動いているならすぐ)、OnPlayerConnectedはプレイヤーが参加したときです。フレームワークは名前でそれらを探すので、綴りを間違えると、エラーなしでメソッドが実行されません。 [ChatCommand("hello")]は、メソッドをチャットコマンドにします。Putsはサーバーコンソールに書き出し、SendReplyは 1 人のプレイヤーにチャットメッセージを送ります。
同じファイルは Carbon でも動きます。フックの全リストと、それぞれが受け取るものは、Oxide のドキュメント docs.oxidemod.com にあります。
プラグインが使う名前と ID
Section titled “プラグインが使う名前と ID”プラグインは、ゲーム内のものをゲーム内の名前で指定し、このサイトはそれをゲームから直接一覧にしています。
- アイテムは shortname(
rifle.ak、wood)で: Rust アイテム一覧。 - エンティティはプレハブのパス(
assets/prefabs/deployable/large wood storage/box.wooden.large.prefab)で: Rust ゲームリファレンスの下にあるプレハブのページ。 - サーバー設定は convar 名(
server.maxplayers)で: Rust サーバー変数。
公開する前にプラグインをテストする
Section titled “公開する前にプラグインをテストする”壊れたプラグインがプレイヤーの前に出ないように、まず、同じフレームワークと同じマップで、サーバーのローカルコピーで動かしてください。Crucible Local Server なら、Oxide か Carbon を入れた状態で、自分の PC でワンクリックで動かせます。
