制作レシピ / RPG:ゾンビ討伐クエストをコマンドで作る
RPG:ゾンビ討伐クエストをコマンドで作る
プレイヤー別の討伐カウント、受注状態、報酬の重複防止まで作るRPG制作用コマンドレシピ。
対象:Minecraft Java Edition 1.21.1(このページの例)|掲載例は構文資料と照合した学習用サンプルです。Minecraft実機での動作保証・全バージョン検証を意味しません。
更新日:
作る仕組みと完成条件
依頼を受けたプレイヤーがゾンビを5体倒すと、エメラルドを3個だけ受け取る仕組みです。受注・討伐数・報酬済み状態をプレイヤーごとに分離します。単なる /give の紹介ではなく、RPGの進行管理の最小例です。
| 内部名 | 用途 |
|---|---|
mq_zombie | プレイヤーごとのゾンビ討伐数 |
mq_active | クエスト受注中を示すタグ |
mq_paid | 二重報酬防止のタグ |
コマンドを実行する前に、チートを許可したテストワールドをバックアップしてください。Java版以外や別バージョンへそのまま転用しないでください。
初期化:一度だけ実行
/scoreboard objectives add mq_zombie minecraft.killed:minecraft.zombieこのコマンドは同じワールドで一度だけ使います。すでに同名のObjectiveがある場合はエラーになりますが、既存データが消えたわけではありません。dummyではなく、ゾンビ討伐回数を自動記録する統計条件を選ぶ点が重要です。
受注:NPCのボタンなどから実行
/scoreboard players set @p mq_zombie 0
/tag @p remove mq_paid
/tag @p add mq_activeこれらは順番に実行します。チェーンコマンドブロックでつなぐ場合は、タグを削除する行が失敗しても最後まで進むよう、後続のブロックを「無条件」に設定してください。例ではNPCの近くにあるボタンを想定し、@pを使用しています。コマンド実行位置に最も近いプレイヤーが対象となるので、遠隔操作する仕組みではプレイヤーの指定方法を変更してください。すでに進行中の人へ再び実行するとカウントがゼロに戻ります。
達成判定:繰り返し・チェーンコマンドブロック
/give @a[tag=mq_active,tag=!mq_paid,scores={mq_zombie=5..}] minecraft:emerald 3
/tag @a[tag=mq_active,tag=!mq_paid,scores={mq_zombie=5..}] add mq_paid- 1行目は「リピート・無条件・常時実行」のコマンドブロックに設定。
- 2行目は1行目から矢印方向につなぎ「チェーン・条件付き・常時実行」に設定。
- 達成条件を満たしたプレイヤーには報酬が渡り、同じtickの後続処理でタグが付くため、次回以降は対象外になります。
この例では手持ちが満杯ならアイテムが地面に出る場合があります。より堅牢な配布システムではインベントリ条件も別途管理してください。
画面上で試す
以下は上の2つの判定コマンドについて、討伐数と報酬数を安全な範囲で変更する補助フォームです。自動作成はコマンドの文字列のみで、Minecraftへ直接実行する機能ではありません。
2人プレイと再起動での確認
- Aだけクエストを受注し、Bは受注しない。Bがゾンビを倒しても報酬が出ないことを確認。
- Aが5体を倒すとエメラルドを一度だけ獲得することを確認。
- その場で20秒以上待っても、2回目の報酬が出ないことを確認。
- ワールドを保存・再起動し、
mq_paidが保持されるか確認。 - 再受注した際、討伐数のリセットと再報酬が意図どおりか確認。
この確認手順は利用者がゲーム内で実施するためのものです。運営が全手順を実機確認したとする表示ではありません。
この先の作り込み
受注状態・討伐数・報酬受け取り済みの状態を分けて管理します。報酬処理の後に受け取り済みを記録し、同じプレイヤーに何度も配られないことを確認してください。