ナポアンドットコム 
/ UPDATE :
POSTED BY :
napoan

チームのキル数を合計して表示する方法 - ゼロから自作するPvP作成講座 part1

チームのスコアを合計表示

マルチプレイの楽しみ方の一つである「PvP」を、自分で最初から作ってみませんか?
今回はチーム戦のPvPを作る上で重要な「チーム全体のキル数を集計して表示する」仕組みの作り方を解説します。4チームの場合、クロックで実行するコマンドはわずか5つだけ。コマンド初心者の方にも分かりやすいように、ゼロからPvPを作る手順のうち基本的な「スコアのカウント」を解説いたします。

乗るだけでチーム分けできる装置の作り方 Part2 >>

「チームのキル数を合計して表示」ってどんな感じ?

ミサイルゲームのロビー

(▲の画像はこちらの記事で紹介した「Missle Wars」のロビーです)
皆さん、PvPはお好きですか? この前、『面白くて奥が深いPvPミニゲーム5選』という記事を出しましたね。あの記事ではちょっと変わった遊び方のPvPを紹介しましたが、やっぱり普通にキル数を競うPvPも楽しそうなので、自分で作ってみることにしました。皆さんも、自分だけのPvPを作ってみませんか?


4チームでキル数を競います

只今私は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クロックの作り方

ここからは簡単な回路、というかコマンドブロックの機械を作ります。まずはお決まりの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」に足し算していました。

スコアを集計する仕組み2

キルすると増える「dummyKill」スコアを「teamKills」に足し算するのですが、このまま放置しておくと「dummyKill」がキルする度に増えてしまい、チームのキル数が異常に増加します。そこで、dummyKillスコアは1になったら即座に「5」のコマンドブロックによって0に戻るようにしています。
このスコア集計システムは、キルする度にダミーのキル数スコアを増やし、それをチームのキル数のスコアに足し算して、ダミーのキル数スコアを0に戻して... を繰り返して動きます。合計というより加算し続けていくのです。


PvPをゼロから自作するために、色々な仕組みの解説を書く予定

PvPの仕掛けを色々作ってます

最近、PvPに関連したコマンド解説の記事をよく書いていますね。実は私、Twitterのプロフィールに書いてある通り、ゼロからPvPミニゲームを作っている最中なんです。ですのでこれから、「制限時間をカウントダウンして試合終了させる」「チームのスコアを比較してランキングを作り、賞品を渡す」「風船を割ったら得点が入る」などの色々な仕掛けの構想を練っている所です。今後のコマンド解説をご期待ください!

乗るだけでチーム分けできる装置の作り方 Part2 >>

最後までお読み頂きありがとうございました

いかがでしたか。PvP作成の基礎を理解して頂けたら幸いです。
「これはどうするの?」などコメント待ってます。


最近書いたコマンド解説記事

 

Tweet

コメント

記事の内容が最新のものと異なる場合があります。ご了承ください。

“チームのキル数を合計して表示する方法 - ゼロから自作するPvP作成講座 part1” への12件のフィードバック

  1. より:

    スコアボードを消す方法が知りたいです。

    • 匿名 より:

      スコアボードのオブジェクトごと消してしまうのでしょうか。それなら
      /scoreboard objectives remove スコア名
      でデータごと消えます。
      数値は消さずに、画面右側の表示を消す場合は、まず適当な名前のオブジェクトを作成して今表示しているスコアボードに代わって表示させましょう。
      /scoreboard objectives add a dummy
      /scoreboard objectives setdisplay sidebar a
      次に、オブジェクト「a」をデータごと消します。
      /scoreboard objectives remove a
      こうすることで、既存のスコアボードの表示だけを消すことができます。

  2. KK より:

    初めまして。さんのコマンドを参考に作らせて頂いているのですが、どうしても記事コマンドを組むと「@4個のブロックで満たしました」というログが大量に流れてしまいます。初心者故何が原因なのかわからず・・・消す方法、原因などわかりますでしょうか・・・

  3. RK より:

    1.9でPvP鯖作る参考にさせていただいてるんですが
    右のスコアボードの数値を0にリセットはどうすればいいでしょう?

  4. Kaz より:

    記事であるように、結果発表を表示するにはどうすればいいのでしょうか?

  5. tururin より:

    キルカウントのクロックをPvP終了時に停止させるにはどうしたらいいでしょうか

  6. でんでん (Minecraft ID:denden0816) より:

    対戦用の4つの「チーム」を作成するコマンド(チャット欄で実行)
    /scoreboard teams add Red
    /scoreboard teams add Blue
    /scoreboard teams add Yellow
    /scoreboard teams add Green
    ▲「Red」「Blue」「Yellow」「Green」の4種類のチームを作成します。
    ↑の「Yellow」の色がピンクです

  7. マグトロ より:

    コマンドの演算機能でキル数の多い方を検知できないでしょうか

  8. 原宿ドッグ より:

    チーム別の人数を表示させる方法ってありますでしょうか?

    • 実況者[email protected]柱島の提督 より:

      scoreboard teams list [チーム名]
      チーム名とチームの人数のリストを表示します。チーム名が指定された場合、チームに属する全てのプレイヤー名を表示します。

コメントを残す

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください

EXR-Network
Powered by EXR-Network
%d人のブロガーが「いいね」をつけました。