コンテンツにスキップ

Rust プラグイン入門:Oxide と Carbon の基本

結論: サーバーに Oxide か Carbon をインストールして、プラグインの .cs ファイルを oxide/plugins/ か carbon/plugins/ に入れます。再起動なしで自動で読み込まれ、設定ファイルは、初めて読み込まれたときに config フォルダーに現れます。

Rust のプラグインは C# のファイル(.cs)1 つで、モッディングフレームワークが専用サーバーの中でコンパイルして動かします。プラグインはサーバー側だけで動くので、プレイヤーは何もインストールしません。バニラのサーバーでは動かせません。先にサーバーに Oxide か Carbon が必要です。

どちらも同じ種類のプラグインを読み込み、どちらも同じゲームファイルにパッチを当てるので、サーバーに入れられるのは一度に片方だけです。

  • Oxide(uMod とも呼ばれます)は、昔からあるほうです。ファイルはサーバーの oxide/ フォルダーにあります。
  • Carbon は新しいほうで、Oxide 用に書かれたプラグインも読み込めます。ファイルは carbon/ フォルダーにあります。

Crucible Local Server は、サーバーを作るときにどちらかを代わりにインストールし、そのプラグインを Mods タブで管理します。Rust サーバーに Carbon か Oxide をインストールする方法を見てください。

プラグインファイルの置き場所

Section titled “プラグインファイルの置き場所”
内容OxideCarbon
プラグイン(.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 入りと表示します。

ほとんどのプラグインは、コマンドを、プラグインにちなんだ名前のパーミッション(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 コンソールコマンドの最後にあります。

これを、プラグインフォルダーに 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 にあります。

プラグインは、ゲーム内のものをゲーム内の名前で指定し、このサイトはそれをゲームから直接一覧にしています。

公開する前にプラグインをテストする

Section titled “公開する前にプラグインをテストする”

壊れたプラグインがプレイヤーの前に出ないように、まず、同じフレームワークと同じマップで、サーバーのローカルコピーで動かしてください。Crucible Local Server なら、Oxide か Carbon を入れた状態で、自分の PC でワンクリックで動かせます。