メインコンテンツまでスキップ

Crate

重み付き報酬、仮想キー、マイルストーン、カードを選ぶ開封ミニゲームを備えた戦利品クレート。

プライベートv0.0.2経済とクラフト
必要TypeWriter0.9BasicGUI

BornToCraft ネットワーク向けに作られた拡張機能です。参照用にドキュメント化されており、配布されていません。

概要​

Crate は、サーバーにルートクレートを追加します。クレートは、それぞれにレアリティを持つ報酬のリストを持ち、プレイヤーは仮想キーを消費して開封します。当選する報酬は、アニメーションが始まる前にサーバー側で抽選されるため、開封中にプレイヤーが何をしても、結果を変えることはできません。クレートを開けるとマイルストーンにカウントされ、一定回数の開封後に、追加の報酬をトリガーできます。

報酬は TypeWriter のトリガーなので、アイテムを渡す、コマンドを実行する、コスメティックを付与する、シーケンスを開始する、といったことができます。開封の様子は、プレイヤーの目の前のワールド内に、浮かぶアイテムディスプレイによる報酬のプレビュー、またはカード選びのミニゲームとして表示されます。メニューでは、プレイヤーがクレートと、それぞれが出し得る報酬を閲覧できます。

このエクステンションは、TypeWriter の BTC ビルド(BTC Core、Paper/Folia)上で動作し、ここでは参考情報として文書化されています。

機能​

  • 重み付き報酬 — レアリティに重みがあり、各報酬の確率がメニューに表示されます。
  • 仮想キー — キーはクレートのデータアーティファクトでプレイヤーごとにカウントされ、開封のたびに 1 つ消費されます。
  • 安全な開封 — キーは先に確保され、報酬が公開されたときにのみ消費されます。切断、タイムアウト、再起動があった場合は返却されます。
  • マイルストーン — 一定回数の開封後に、追加の報酬をトリガーします。
  • カードのミニゲーム — 報酬がすでに決まっている状態で、プレイヤーが伏せられたカードのグリッドから 1 枚をめくります。
  • ワールド内のプレビュー — 報酬が、PAGINATED、FLEX、SIMPLE のレイアウトで、任意の NPC とホログラム付きでプレイヤーの周囲に浮かびます。
  • メニュー — グローバルなクレートメニューと、クレートごとの報酬メニュー。フレーム、ページ送り、カスタムボタンを備えています。
  • 統計 — 開封回数、キー、使用したキー、最後の開封、マイルストーンを、プレースホルダーとして利用できます。

インストール​

  1. TypeWriter の Basic エクステンションと GUI エクステンション(BTC ビルドでは GuiAndDialogs)をインストールします。これらがないと、Crate は読み込まれません。
  2. Crate の JAR を plugins/Typewriter/extensions/ に配置し、サーバーを再起動します。
  3. スタッフに、「パーミッション」セクションのパーミッションを付与します。

はじめに​

3 つの報酬を持つクレートを作成し、自分にキーを付与します。

  1. TypeWriter の Web パネルでマニフェストページを開き、Crate Data アーティファクトを追加します。生成された artifactId は保持し、クレートごとに 1 つのアーティファクトを使用します。
  2. Crate エントリーを追加します。dataArtifact にアーティファクトを設定し、noKeyMessage を記述します。
  3. rarities に、重み 70 の Common と、重み 30 の Rare を追加します。
  4. rewards に 3 つの報酬を追加します。それぞれに、rarity、プレビューに表示する item、name を設定し、action に報酬を渡すトリガーを指定します。item を自動的に渡すには grantItem をオンのままにし、アクションがアイテムを渡す場合はオフにします。
  5. rewardSlots に、報酬メニューのインベントリスロット(0 から数えます)を、たとえば 10-12 のように列挙します。報酬スロットがないクレートは、開封を拒否します。
  6. icon に、グローバルメニュー内のクレートの x と y、item、name を設定します。
  7. クレートを指す Open Crate アクションを追加し、NPC、ブロック、アイテムからトリガーします。
  8. Publish してから、/tw crate give <crate entry id> 5 を実行して、クレートを開きます。クレートを閲覧するには /tw crate menu を使用します。
報酬メニューでの報酬のクリック

クレートの報酬メニューでは、報酬をクリックすると、キーを消費することも統計に記録されることもなく、その報酬の action が直接トリガーされます。報酬のアクションが価値のあるものを渡す場合は、プレイヤーが報酬メニューにアクセスできないようにするか、メニューをスタッフ専用にしてください。

キーの付与

キーは /tw crate give <crate> <amount> [targets] で追加します。キー専用のアクションはありませんが、コマンドアクションでこのコマンドを実行できます。たとえば、クエストの報酬やショップから実行できます。

仕組み​

報酬の確率は、そのレアリティの重みを、すべての報酬の重みの合計で割ったものです。レアリティが rarities に記載されていない報酬の重みは 1 です。報酬が公開されると、キーが消費され、開封回数と使用キー数のカウンターが増え、通過したマイルストーンが発火し、その後、アイテムが渡され(grantItem がオンの場合)、報酬の action が実行されます。プレイヤーは、同時に 1 つの開封しか行えません。

メニュー​

  • グローバルメニュー — /tw crate menu で開きます。クレートごとに 1 つのアイコンを、アイコンの x(0 から 8)と y(0 から 5)の位置に表示し、アイコンをクリックすると、そのクレートの報酬メニューが開きます。任意の Crate Main Menu エントリーで、サイズ、タイトル、フレーム、ボタン、1 ページあたりのアイテム数、ページ送り矢印用に確保する列を設定します。
  • 報酬メニュー — アイコンをクリックするか、Open Crate Menu アクションで開きます。rewardSlots にある報酬を、名前、ロア、任意の確率行とレアリティ行(chanceLore と rarityLore、{chance} と {rarity} を使用)とともに表示します。guiLayout は PAGINATED、FLEX(中央揃え、4 列)、SIMPLE のいずれかです。frameItem、itemsPerPage、paginationColumn でフレームとページ送りを調整し、buttons でアクション付きのカスタムボタンを追加します。

ボタンにはタイプ(INFORMATION、NEXT、PREVIOUS、FILL)と位置があります。FILL ボタンは、すべての空きスロットにコピーされます。crate_button: マーカー(CRATE_OPEN、CRATE_PREVIEW、CRATE_GLOBAL_BROWSE、CRATE_REWARD_SLOT、NAV_BACK、NAV_CLOSE)は GUI エディターで提供されますが、このバージョンでは、プレースホルダーアイテムを表示するだけです。

設定​

Crate に設定ファイルはありません。すべてエントリーで設定します。プレイヤーデータは Crate Data アーティファクトに保存されます。キー、開封回数、使用キー数、最後の開封時刻、マイルストーン、保留中の開封です。書き込みは非同期で行われ、クラッシュで残った保留中の開封は、起動時に復旧されます(キーは返却されます)。

コマンド​

すべてのコマンドは TypeWriter コマンドのサブコマンドであるため、/typewriter または /tw で始まります。<crate> はクレートのエントリーで、自動補完されます。

コマンド説明パーミッション
/tw crate menuグローバルクレートメニューを開きます。typewriter.crate.menu
/tw crate open <crate>キーを 1 つ使って、クレートを開きます。typewriter.crate.open
/tw crate give <crate> [targets]自分または選択したプレイヤーに、キーを 1 つ付与します。typewriter.crate.give
/tw crate give <crate> <amount> [targets]複数のキーを付与します。typewriter.crate.give
/tw crate remove <crate> [targets]キーを 1 つ削除します。プレイヤーが持っている場合のみ。typewriter.crate.remove
/tw crate remove <crate> <amount> [targets]複数のキーを削除します。プレイヤーが十分に持っている場合のみ。typewriter.crate.remove

基本パーミッション typewriter.crate が、コマンド全体を保護します。エクステンションは、メニューのクリックで使用される内部コマンド /cratemenu を登録しますが、手で入力するためのものではありません。

パーミッション​

パーミッション許可される内容
typewriter.crate/tw crate コマンドへのアクセス。
typewriter.crate.menu/tw crate menu。
typewriter.crate.open/tw crate open。
typewriter.crate.give/tw crate give。
typewriter.crate.remove/tw crate remove。

プレースホルダー​

これらは、crate エクスパンションの MiniPlaceholders タグです。id は、クレートのエントリー ID に置き換えてください。不明なクレートは、空の値を返します。

プレースホルダー戻り値
<crate_openings:id>プレイヤーによる、このクレートの開封回数。
<crate_keys:id>プレイヤーが持っているキー。
<crate_keys_used:id>プレイヤーが使用したキー。
<crate_last_open:id>最後の開封の時刻。1970 年 1 月 1 日からのミリ秒。
<crate_milestone:id>到達した最も高いマイルストーン。

hologramLines では、代わりにトークン {openings}、{keys}、{last_open}、{milestone} を使用します。

エントリー​

6 件のエントリー(拡張機能のソースから生成)。

アクション2
アーティファクト1
マニフェスト3

トラブルシューティング​

"This crate is not configured correctly"。 クレートが検証に失敗しました。サーバーログに理由が一覧表示されます。報酬がない、レアリティの重みが無効(0 より大きくなければなりません)、rewardSlots がない、またはスロットが 0 から 53 の範囲外か重複している、ボタンや icon が 9 × 6 のグリッドの外にある、マイルストーンが 0 回か重複している、などです。同じチェックが起動時にも実行され、警告が書き込まれます。

プレイヤーに noKeyMessage が表示される。 プレイヤーがそのクレートのキーを持っていないか、クレートに dataArtifact がありません。/tw crate give でキーを付与し、アーティファクトのリンクを確認してください。

"You are already opening a crate"。 そのプレイヤーの開封が進行中です。報酬が公開されるか、プレイヤーが切断すると終了します。

開封後に、統計とキーが変わらない。 これらが変わるのは、報酬が公開されたときのみです。それより前にプレイヤーが退出したり、サーバーが停止したりした場合は、キーが返却され、カウンターは変わりません。

プレビューに何も表示されない、または間違った報酬が表示される。 プレビューは、各報酬の item を使用します。item が空の報酬はスキップされ、preview.maxVisibleRewards が同時に表示される数を制限します。preview.distance と *Location のオフセットで、ディスプレイの位置を動かせます。

カードのミニゲームが始まらない。 クレートの minigame フィールドに、Crate Minigame: Cards エントリーをリンクしてください。columns は最大 10、rows も最大 10 で、cardCount の上限は 100 です。

報酬が 2 回渡される。 action がアイテムを渡さない場合にのみ、grantItem をオンにしてください。

関連エクステンション​

  • GUI — クレートメニューで使用されるメニューエンジン。