すべての記事

Discordのロールプレイサーバーでショップ、在庫、銀行を管理する方法(D&D、DayZ、GTA RP)

CordBaseチーム

D&Dやロールプレイのサーバーなら、CordBaseのテーブルをプレイヤーの所持品用(アイテム1つにつき1行で、持ち主を記録)とショップの在庫用(アイテム1つにつき1行で、個数を記録)に1つずつ用意します。プレイヤーはスラッシュコマンドで確認し、スタッフは/shop update ... _mode:Decrementで個数を変えます。在庫を記録するもので、ショップを運営するものではありません。

ほとんどのサーバーは、ピン留めしたメッセージ、スプレッドシート、経済Botのどれかから始めます。ピン留めしたメッセージは2人が同時に編集すると壊れますし、スプレッドシートはDiscordの外にあり、経済Botはポイントで物を買う仕組みを前提に作られています。このガイドでは代わりに、私たちが作っているCordBaseで、Discordの中にシンプルな記録を用意します。所持品とショップは10分ほどでできます。

プレイヤーにキャラクターシートも必要なら、無料のキャラシテンプレート作成ツールで、D&D 5e、ロールプレイ、ファンタジー、SF向けのコピペ用シートを作れます。

完成するもの

  • 各キャラクターの持ち物を記録する/inventoryコマンド(add、query、view、update、delete、leaderboard)。
  • 商人の在庫と価格を記録する/shopコマンド。
  • 必要なら、メンバーごとの預金と貸付を単純な数値で記録する/bankコマンド。
  • プレイヤーは確認だけでき、個数を変えられるのはスタッフだけにするロールの権限。

ステップ1:キャラクターごとの所持品を用意する

所持品の部分は、ギルド倉庫のガイドと同じセットアップです。在庫管理テンプレート(item、quantity、owner、rarity、notes)をインストールし、スラッグをinventoryに変更して、プレイヤーに閲覧、GMやスタッフのロールに編集を与えます。ロールプレイのサーバーでは、ギルド倉庫よりも大切な点が2つあります。

1つ目に、updateやviewなどのコマンドでは、テーブルの最初のテキスト列だけが表示される一覧から行を選びます。MaraとJossの両方がHealing Potionを持っていると同じ行が2つ並ぶので、アイテム名に持ち主を入れてください:Healing Potion (Mara)。owner列では引き続きメンバーで絞り込めます。

2つ目に、編集権限は自分の行だけでなくすべての行が対象なので、編集権限を持つプレイヤーは誰の所持品でも編集できます。編集はスタッフだけにして、プレイヤーには閲覧を与えてください。

/inventory add item:Healing Potion (Mara) quantity:3 owner:@Mara rarity:Common

/inventory update row:Healing Potion (Mara) quantity:1 _mode:Decrement

/inventory query owner:@Maraは、Maraの持ち物をすべて一覧表示します。queryは新しい行から順に(標準で10件、limitで最大25件)、最初の4列だけを表示するので、大切な列は前に置いてください。加算は足し、減算は引き、設定(デフォルト)は値を置き換えます。

ステップ2:ショップの在庫テーブルを追加する

Freeプランではテーブルを2個使えるので、所持品とショップで収まります。ダッシュボードでShopというテーブルを作り、次の列を追加します:item(テキスト、必須)、stock(数値、必須)、price(数値)、category(選択肢。Weapons、Ammo、Medicalなど自分で決めた選択肢)、notes(テキスト)。列の種類は作成後に変更できないので、個数と価格は数値にしてください。

  • /shop add item:Bandage stock:40 price:25 category:Medical
  • /shop update row:Bandage stock:1 _mode:Decrementは、販売1件を記録します。ロールプレイの中で売買があったときにスタッフが実行します。
  • /shop update row:Bandage stock:20 _mode:Incrementは、入荷を記録します。
  • /shop update row:Bandage price:30は、価格を変更します。
  • /shop query stock:0は、売り切れのアイテムを一覧表示します(「未満」ではなく完全一致です)。

_modeは、1回のコマンドで指定したすべての数値に適用されます。stockとpriceを一緒に減算で送ると、両方が下がります。別々のコマンドで変更してください。

車の販売店なら、同じ形でvehicle、stock、price、dealerの列(種類はメンバー)を作れば、/shop query dealer:@Kadeで1人の販売員の在庫を表示できます。

在庫はマイナスになることがあります。0で減算を止める仕組みはないので、気になるなら個数を確認してください。

ステップ3:銀行と貸付を単純な記録として管理する(任意)

Bankというテーブルを作り、account(テキスト、必須。行の選択欄に表示されるよう最初に置きます)、member(メンバー)、balance(数値)、loan_owed(数値)、notes(テキスト)の列を追加します。所持品とショップで無料のテーブル2個をすでに使っているので、この3個目にはProが必要です。

  • /bank add account:Mara member:@Mara balance:500 loan_owed:0
  • /bank update row:Mara balance:200 _mode:Incrementは、預金を記録します。
  • /bank update row:Mara loan_owed:100 _mode:Decrementは、返済を記録します。
  • /bank leaderboard column:loan_owedは、借金の多い順に並べます。

利息、返済期日、自動の送金はありません。数値はスタッフが入力します。変更履歴もありません。viewで分かるのは、誰が行を作り、最後にいつ変更されたかで、以前の値は分かりません。記録を残したいなら、Transactionsテーブル(account、amount、kind、date)を追加し、お金が動くたびに1行追加してください。ギルド全体の共有の資金を管理したい場合は、ギルド倉庫のガイドを見てください。

ほかのツールのほうが向いている場合

CordBaseには、ショップの会計も、プレイヤーが稼いだり使ったりする通貨も、メンバー間の支払いもありません。コマンドは常にテーブル名と決まった操作の組み合わせなので、独自の/withdrawは作れません。メッセージも読まないので、チャットに「-100 arrows」と入力しても何も起きません。メンバーがコインを稼いでストアで買い物をする仮想の経済が欲しいなら、UnbelievaBoatのような経済Botを使ってください。ルールやダイスが必要なら、AvraeのようなTRPG向けのBotを使ってください(キャラシBotのガイドを参照)。数式が必要ならスプレッドシートのほうが向いています。

知っておきたい上限

  • Free:テーブル2個、それぞれ100行。Pro($8/月):テーブル無制限、1テーブルあたり10,000行、一括編集。Max($15/月):50,000行。CSV・JSONエクスポートはすべてのプランで使えます。料金を見てください。
  • 1テーブルあたり最大25列。テーブルはDiscordではなくWebで設計します。
  • 各メンバーが実行できるコマンドは10秒あたり5回までです。
  • 現在CSVインポートはないので、既存のリストはaddかダッシュボードで入力します。
  • すべてのオプションはコマンドリファレンスにあります。

よくある質問

/withdrawコマンドを作ったり、プレイヤーが自分でアイテムを買えるようにしたりできますか?

できません。各テーブルには、テーブル名の下にadd、query、view、update、delete、leaderboardという決まった操作が付きます。いちばん近いのは/shop update row:... stock:1 _mode:Decrementで、編集権限がある人なら誰でも実行できます。プレイヤーに代金が請求されることはなく、通貨も動きません。

各プレイヤーが自分の所持品だけを見たり編集したりするようにできますか?

権限としてはできません。閲覧権限がある人はテーブル全体を検索でき、編集権限がある人はどの行でも変更できます。メンバーは/inventory query owner:@yournameで自分のアイテムだけに絞り込めます。

Freeプランに収まりますか?

所持品とショップのテーブルは収まります。Freeではそれぞれ100行のテーブルを2個使えるからです。銀行のような3個目のテーブルには、Pro($8/月)が必要です。