チームのキル数を合計して表示する方法 – ゼロから自作するPvP作成講座 part1【Minecraft】
マルチプレイの楽しみ方の一つである「PvP」を、自分で最初から作ってみませんか?
今回はチーム戦のPvPを作る上で重要な「チーム全体のキル数を集計して表示する」仕組みの作り方を解説します。4チームの場合、クロックで実行するコマンドはわずか5つだけ。コマンド初心者の方にも分かりやすいように、ゼロからPvPを作る手順のうち基本的な「スコアのカウント」を解説いたします。
「チームのキル数を合計して表示」ってどんな感じ?
(▲の画像はこちらの記事で紹介した「Missle Wars」のロビーです)
皆さん、PvPはお好きですか? この前、『面白くて奥が深いPvPミニゲーム5選』という記事を出しましたね。あの記事ではちょっと変わった遊び方のPvPを紹介しましたが、やっぱり普通にキル数を競うPvPも楽しそうなので、自分で作ってみることにしました。皆さんも、自分だけのPvPを作ってみませんか?
只今私はPvPワールドを少しづつ作っているのですが、とりあえず4チームに分かれて”チームのキル数の合計を競う”というシンプルなPvPにしようと考えました。そこで、ある問題が…
「個人のキル数」を表示させる方法は、かなり昔のこちらの記事で解説していますね。それはそれでいいのですが、チーム戦となるとチームでスコアを合計して表示させたいですよね… どうすれば良いんでしょうか。
そんな声に応えるべく、私が一瞬で解決方法を開発しました。上図のように、画面の右側にはチーム全員のキル数がリアルタイムで合計されて表示されます。一人一人のキル数を確認したい時は、Tabキーを押せば表示されるプレイヤー一覧の、黄色い数字を見れば個人のスコアが確認できます。
もちろん、この「チームのキル数」は試合が終わった後に表示させることもできます。リアルタイムで戦況を確認できるようにするか、結果発表でドバーンと発表するかはあなたのお好みで。
まずは下準備。チームとスコアボードを作成しよう
それでは、何もない状態からシンプルなチーム戦のPvPを作っていきます。まずは「チーム」と「スコアボード」を作らないといけません。これから約20のコマンドをチャット欄で入力して準備します。
- 対戦用の4つの「チーム」を作成するコマンド(チャット欄で実行)
- /scoreboard teams add Red
/scoreboard teams add Blue
/scoreboard teams add Yellow
/scoreboard teams add Green▲「Red」「Blue」「Yellow」「Green」の4種類のチームを作成します。
- それぞれのチームの「色」を設定するコマンド
- /scoreboard teams option Red color dark_red
/scoreboard teams option Blue color dark_blue
/scoreboard teams option Yellow color yellow
/scoreboard teams option Green color green▲ここで各チームに色を設定すれば、所属しているプレイヤーの名前がその色に染まります。
- PvPを動かすのに必要な「スコアボード」を作成するコマンド
- /scoreboard objectives add killCount playerKillCount 個人のキル数
/scoreboard objectives add teamKills dummy チームのキル数
/scoreboard objectives add dummyKill playerKillCount▲それぞれのスコアボードがどのような働きをするかは、後ほど解説します。
- 「チームのキル数」を表示するためのおまじないコマンド
- /scoreboard teams join Red red
/scoreboard teams join Blue blue
/scoreboard teams join Yellow yellow
/scoreboard teams join Green green
▲この後画面右側にチームのキル数を表示するのですが、本来ここはプレイヤーのスコアを表示する場所なので、ダミーの「red/blue/yellow/green」さんを各チームに参加させています。
さあ、準備が大体整いました。試しに以下のコマンドを実行して、スコアを表示させてみましょう。
/scoreboard objectives setdisplay sidebar teamKills
あれ、何も表示されませんね。実は、ここで表示させようとしている「teamKills」スコアはみんなまだ空っぽなので何も表示されないのです。0でも何でもいいので、数値をセットすれば表示されます。
- チームのキル数を表示させるために0の値をセットするコマンド
- /scoreboard players set red teamKills 0
/scoreboard players set blue teamKills 0
/scoreboard players set yellow teamKills 0
/scoreboard players set green teamKills 0▲見て分かるとおり、ここでは「red/blue/yellow/green」さん(架空のプレイヤー)の「teamKills」スコアをセットしています。つまりこの架空のプレイヤー達のスコアが、そのまま「チームのキル数」として表示されているわけです。←ここ重要!
- プレイヤー一覧に個人のキル数を表示させるコマンド
- /scoreboard objectives setdisplay list killCount
▲「list」はプレイヤー一覧の黄色い数字のことです。そこに「killCount」スコア、つまり個人のキル数を表示させます。
- プレイヤーをチームに参加させるコマンド
- /scoreboard teams join Red <参加させる人(@pなども可)>
/scoreboard teams join Blue <参加させる人(@pなども可)>
/scoreboard teams join Yellow <参加させる人(@pなども可)>
/scoreboard teams join Green <参加させる人(@pなども可)>▲プレイヤーをチームに参加させないと何も出来ません。チームに参加しない場合は、個人のキル数は分かりますがチームへスコアが加算されないのでご注意下さい。
約20個のコマンドの入力、お疲れ様でした。さあ、次の章でいよいよスコアを集計する仕掛けを作ります。
キルしたらチームのスコアを1増やしていく仕組みと回路の解説
ここからは簡単な回路、というかコマンドブロックの機械を作ります。まずはお決まりのfillクロックから。以下のコマンドを入力して、真ん中に赤石ブロックを挟めばクロックが起動します。
「A」に入力するコマンド | /fill ~ ~-1 ~ ~3 ~-1 ~ redstone_block |
---|---|
「B」に入力するコマンド | /fill ~ ~1 ~ ~3 ~1 ~ stone |
先ほどのクロック回路に加えて、右側に「1」~「5」のコマンドブロックをくっつけます。この「1」~「5」の順番には意味があって、中身のコマンドが入れ替わったりすると例えば青チームだけスコアが増えないなどの問題が発生してしまいます。以下、図のコマンドブロックの場所とコマンドの内容が完全に合うようにして下さい!
「1」に入力するコマンド |
---|
/scoreboard players operation red teamKills += @a[team=Red] dummyKill 計算機能「oparation」を使います。ここでは、赤チームのプレイヤーの「dummyKill」を「red」さんの「teamKill」に足し算しています。お前は何を言っているんだ、という方は後述する図解へ。 |
「2」に入力するコマンド |
/scoreboard players operation yellow teamKills += @a[team=Yellow] dummyKill 「1」と同じことを黄色チームでも常時行います。詳細は図解へ。 |
「3」に入力するコマンド |
/scoreboard players operation blue teamKills += @a[team=Blue] dummyKill 「1」「2」と同じことを青チームでも常時行います。詳細は図解へ。 |
「4」に入力するコマンド |
/scoreboard players operation green teamKills += @a[team=Green] dummyKill 「1」「2」「3」と同じこ とを緑チームでも常時行います。詳細は図解へ。 |
「5」に入力するコマンド |
/scoreboard players set @a[score_dummyKill_min=1] dummyKill 0 キルすると勝手に増える「dummyKill」スコアが1を超えたら、即座に0に戻します。 |
文章だけでは仕組みがさっぱり分からないので、いつもの雑パワポ図解です。
まず、準備の段階で「dummyKill」というスコアボードを作成しましたが、実はあのスコアは誰かをキルすると1増える仕様になっています。(これはscoreboardコマンドの機能) 誰かが他の人をキルすると、「dummyKill」が1増えます。それを回路のコマンドで、架空のプレイヤーの「teamKills」に足し算していました。
キルすると増える「dummyKill」スコアを「teamKills」に足し算するのですが、このまま放置しておくと「dummyKill」がキルする度に増えてしまい、チームのキル数が異常に増加します。そこで、dummyKillスコアは1になったら即座に「5」のコマンドブロックによって0に戻るようにしています。
このスコア集計システムは、キルする度にダミーのキル数スコアを増やし、それをチームのキル数のスコアに足し算して、ダミーのキル数スコアを0に戻して… を繰り返して動きます。合計というより加算し続けていくのです。
PvPをゼロから自作するために、色々な仕組みの解説を書く予定
最近、PvPに関連したコマンド解説の記事をよく書いていますね。実は私、Twitterのプロフィールに書いてある通り、ゼロからPvPミニゲームを作っている最中なんです。ですのでこれから、「制限時間をカウントダウンして試合終了させる」「チームのスコアを比較してランキングを作り、賞品を渡す」「風船を割ったら得点が入る」などの色々な仕掛けの構想を練っている所です。今後のコマンド解説をご期待ください!
いかがでしたか。PvP作成の基礎を理解して頂けたら幸いです。
「これはどうするの?」などコメント待ってます。
最近書いたコマンド解説記事
12件のコメント
-
D2016年2月5日スコアボードを消す方法が知りたいです。
-
匿名2016年2月5日スコアボードのオブジェクトごと消してしまうのでしょうか。それなら /scoreboard objectives remove スコア名 でデータごと消えます。 数値は消さずに、画面右側の表示を消す場合は、まず適当な名前のオブジェクトを作成して今表示しているスコアボードに代わって表示させましょう。 /scoreboard objectives add a dummy /scoreboard objectives setdisplay sidebar a 次に、オブジェクト「a」をデータごと消します。 /scoreboard objectives remove a こうすることで、既存のスコアボードの表示だけを消すことができます。
-
KK2016年2月21日初めまして。さんのコマンドを参考に作らせて頂いているのですが、どうしても記事コマンドを組むと「@4個のブロックで満たしました」というログが大量に流れてしまいます。初心者故何が原因なのかわからず・・・消す方法、原因などわかりますでしょうか・・・
-
匿名2016年2月22日説明不足で申し訳ないです。 /gamerule commandBlockOutput false を自分で実行して下さい。
-
KK2016年2月22日返答有難う御座います!できましたっ><*
-
RK2016年4月7日1.9でPvP鯖作る参考にさせていただいてるんですが 右のスコアボードの数値を0にリセットはどうすればいいでしょう?
-
Kaz2016年8月10日記事であるように、結果発表を表示するにはどうすればいいのでしょうか?
-
tururin2016年12月15日キルカウントのクロックをPvP終了時に停止させるにはどうしたらいいでしょうか
-
でんでん (Minecraft ID:denden0816)2017年3月2日対戦用の4つの「チーム」を作成するコマンド(チャット欄で実行) /scoreboard teams add Red /scoreboard teams add Blue /scoreboard teams add Yellow /scoreboard teams add Green ▲「Red」「Blue」「Yellow」「Green」の4種類のチームを作成します。 ↑の「Yellow」の色がピンクです
-
マグトロ2017年5月5日コマンドの演算機能でキル数の多い方を検知できないでしょうか
-
原宿ドッグ2017年7月18日チーム別の人数を表示させる方法ってありますでしょうか?
-
実況者syouryu@柱島の提督2018年1月27日scoreboard teams list [チーム名] チーム名とチームの人数のリストを表示します。チーム名が指定された場合、チームに属する全てのプレイヤー名を表示します。