
PvPを自作する講座の第三回です。今回は、試合開始時にプレイヤーをフィールドに配置し、一定時間が経過したら10,9,8...3,2,1とカウントダウンをして、試合が終了したらロビーに戻る、という一連の流れの作り方を解説していきます。以前にカウントダウンタイマーの回路は解説しましたが、あれよりもっとコンパクトで、設定や操作も簡単なので是非お試し下さい。
今回作るPvPの流れやカウントダウンとはどんな物?
前回のPvP作成講座では、簡単にチーム分けできる装置を作りました。今回は、試合を開始してプレイヤーを配置し、一定時間が経過したら試合を終了してロビーに戻る、というPvPの一連の流れを作っていきます。
OPがボタンを押すと試合が始まります。第一回で作った赤/緑/黄/青チームのプレイヤーが、それぞれのチームごとに決まった位置に、バランスよくフィールドに配置されます。と同時に「START!!!」と表示。

一定時間が経過すると、画面中央に「10、9、8、7...」とカウントダウンが表示されます。試合を終了するまでカウントダウンは続きます。もちろん試合の制限時間や文字の色は自由に設定できます。

試合が終了すると、一時的にスペクテイターモードになって戦場を眺めることができます。この間はみんな透明で攻撃することはできません。例えば自分の撃った矢の外れ具合を後から見たりできます。
まずはチームやスコアボードを準備しよう
- PvP作成講座 Part1をお読みになった前提で解説します
//exr-nap.sakura.ne.jp/www.napoan.com/display-team-total-killscore/
この記事では、▲のPart1をお読みになった前提で解説を進めていきます。チームを作成したり、スコアをカウントする方法はPart1,2で解説していますので、本格的にPvP制作がしたい方はぜひお読み下さい。
そして今回も新しいスコアボードを作成します。カウントダウン用です。
- 試合の残り時間をカウントするためのオブジェクトを作成するコマンド
- /scoreboard objectives add NapoanTimer dummy
PvPの基本的な流れを作るのに必要なのは、このスコアボードとチーム4つ[Red,Blue,Green,Yellow]だけです。(キル数の表示など機能を増やすには別途でスコアボードが必要です。)
試合とカウントダウンを開始するコマンド/回路の解説

それでは早速コマンドブロックを配置していきましょう。「A」~「H」までの合計8つのコマンドブロックを、2つづつ分けて設置して回路を繋げます。そして「B」のコマンドブロックにボタンを付けておきましょう。
「A」に入力するコマンド |
---|
/title @a times 5 45 5 ゲームスタート時の「START!」の表示時間を設定します。 |
「B」に入力するコマンド |
/summon armor_stand ~ ~1 ~ {CustomName:"TimerStand",Marker:1} このコマンドブロックの上に、残り時間をカウントするための防具立てを召喚します。「Marker:1」を付ければクリエイティブモードで叩いても撤去できなくなります。 |
「C」に入力するコマンド |
/title @a title {"text":"START!!!","color":blue,"bold":"true"} ゲーム開始の合図の「START!!!」という文章を大きく表示します。 |
「D」に入力するコマンド |
/scoreboard players set @e[type=armor_stand,name=TimerStand,c=1] NapoanTimer 400 「B」で召喚した「TimerStand」という防具立ての、「NapoanTimer」スコアを400にセットします。ここで設定した数値÷20が試合時間の秒数になります。 |
「E」に入力するコマンド |
/spreadplayers 赤チームの配置座標x z 0.5 3 false @a[team=Red] 赤チームのプレイヤーをフィールドに配置します。詳細は後述。 |
「F」に入力するコマンド |
/spreadplayers 青チームの配置座標x z 0.5 3 false @a[team=Blue] |
「G」に入力するコマンド |
/spreadplayers 緑チームの配置座標x z 0.5 3 false @a[team=Green] |
「H」に入力するコマンド |
/spreadplayers 黄チームの配置座標x z 0.5 3 false @a[team=Yellow] |

「配置座標x z」と書きましたが、例えばこんなPvP用のフィールドを用意して、赤/青/緑/黄それぞれのスポーン地点を決めます。そこのx座標とz座標だけをspreadplayersコマンドに書くと、指定した座標を中心にプレイヤーがバランスよく配置されます。座標に続いて「0.5 3」と書いていますが、「プレイヤーを0.5ブロック間隔で並べて、最大で3ブロック半径の範囲に配置する」という意味です。
- プレイヤーを配置するspreadplayersコマンドの書き方
- /spreadplayers x座標 z座標 配置間隔 最大半径 チームをまとめるか(true|false) ターゲット
この記事はページ分割されています
/gamerule commandblockoutput falseが実行されません
/gamerule commandBlockOutput false
▲小文字/大文字に気を付けて下さい。
それとランチャーやサーバー上のログに残したくない時は
/gamerule logAdminCommands false
を実行します。
エンティティがみつかりません。ってでました
FEHGのcommandがエンティティがみつかりませんとでます
それと15個のcommandブロックが機能しません。
>FEHGのcommandがエンティティがみつかりませんとでます
参加しているチームの名前は「Red」「Blue」「Green」「Yellow」のいずれかに当てはまっているでしょうか?
>それと15個のcommandブロックが機能しません。
fillクロックが動いていないということでしょうか? いずれにせよスコアボードとチームが記事内と同じ名前で作成できているかどうか確認してみて下さい。
確認しましたが。同じようになっています
15個のこまんどぶろっくについて↑
FEHGのコマンドブロックがエンティティになるのはRed….blueとすべてにあてはまっています
ワールド拝見しました、色々修正しました。
詳細はワールド内の本に書いてありますのでダウンロードしてご確認下さい▼
https://www.dropbox.com/s/grzgywg2z819156/PvP%E3%83%AF%E3%83%BC%E3%83%AB%E3%83%89%28%E4%BF%AE%E6%AD%A3%E3%81%97%E3%81%BE%E3%81%97%E3%81%9F%29.zip?dl=1
ありがとうございます
確認します
ちなみに コマンドブロックにボタンを置いてstartするのではなく
チームの横に「上のボタンを押すと開始します」って看板にいれて
ボタンを押すと開始されるにはどうすればいいですか?
本じゃなくてボタン形式で行いたいのですが
/setblock 606 89 -1361 redstone_block 0 replace
▲このコマンドを実行すれば色々な方法でゲーム開始できますので、コマンドブロックにこのコマンドを入れて回路を繋げたり、看板にコマンドを設定したりしてお使いください。
ちなみに途中参加したい場合はどうすればいいですか?
そのままTPでよろしいのですか?
たとえば現在ゲームが開始されています。途中参加は可能です。5秒後テレポートします。。ってできます?
あと ゲームが開始されていません。。とか
途中参加したい場合は直接テレポートして構いませんが、チームへの参加を忘れずに。
5秒後テレポートします、はチャットにそういうメッセージを流して、単純にリピーターで遅延させてtpすればいいと思います。
ゲームが開始されていないと参加できない、という仕様にするには、途中参加のtpコマンドを
/execute @e[name=TimerStand,c=1] ~ ~ ~ tp @a[参加場所x,y,z,参加させる半径] 試合場所x y z
とすれば「ゲーム開始時に召喚されているタイマースタンドがtpさせる」仕様になります。
それと開始されていません、はtestforコマンドでTimerStandがいるか判定してNOTでメッセージを流して下さい。
エラーになります
TimerStandという名前の防具立てが存在しない場合は常にエラーを吐きます。ゲームを開始すると防具立てが召喚されるので実行できるようになるはずです。
タイマースタンドは召喚されていました
/execute @e[name=TimerStand,c=1] ~ ~ ~ tp @a[647,98,-1437,10] x y z
です。[]内は空白ではなくコンマを使います。
NOT回路とTPする回路がいまいちなので修正をおねがいします。
http://fast-uploader.com/file/7012290134126/
修正しました。
https://www.dropbox.com/s/e78t5cf2n82z17u/pvp_world_edited.zip?dl=0
本当にありがとうございます。
また わからないところがあったら聞きたいとおもいます。
しかし,自分で考えることも大切なので人に頼ることよりも自分で考えて,分からなかったら聞きます。その時はご迷惑をかけるかもしれませんが。よろしくお願いします。
コメント 2016/02/29
このコマンドを打つとタイマーが表示されるはずですが表示されません
/scoreboard objectives setdisplay NapoanTimer
/scoreboard listで確認しましたが NapoanTimerはありました。
何が問題ですか?
そのほか
/scoreboard objectives setdisplay hpと打ち込んだのですがうまくいってません
/scoreboard objectives setdisplay sidebar NapoanTimer
/scoreboard objectives setdisplay sidebar hp
です。”sidebar”を忘れてますよ!
そうでした。忘れてました( ゚д゚)
自分はこれでいける。〜と思ったけどできなかったので聞きました。
ありがとうございます。
ちなみに終了させるコマンドはどれでしたっけ?
アイテムをおくと○の勝ちといれて終了されるのをつくりたいと思っているので。
ふたつ スコアボードを表示されるにはどうすれば?
スコアボードの値を表示する場所として、sidebar(画面右側)、list(Tabキー押下で表示されるプレイヤー名一覧)、belowName(頭上のプレイヤー名の下)が用意されています。
/scoreboard objectives setdisplay sidebar スコア名
/scoreboard objectives setdisplay list スコア名
/scoreboard objectives setdisplay belowName スコア名
という風に場所を分ければ、最大3種類のスコアボードを表示させることが出来ます。
キル数の代わりに時間を表示することはできますか?
サイドバーにタイマーを表示させるとUUIDが出てきてしまいます。
UUIDの部分を「残り ??」のように「残り」と表示させたいのですがどうしたら良いでしょうか?
無効なjson: malformed JSON at line column 28と出ました
同じく・・・
title @a title {“text”:”–“,”color”:–,”bold”:”true”}
の部分が間違っているようです
おそらく{“text”:”–“,”color”:”–“,”bold”:”true”}
だと思います
防具建て以外もできませんか?1.7.10で行いたいのですが…
無理ですね
残り時間をカウントダウン→試合終了、ロビーに戻すコマンドの解説
のfillコマンド以外をクロックで実行しても
エンティティの種類「armor_stand」は無効です
と出てできません…
1.11以前ではArmorStandですよ
4つ質問です
1 ハイピクセルみたいに
チーム選択のところで12人入ったら5,4,3,2,1,start(startはわかっています)とする方法がどうすればいいですか? titleでお願いします
2 一つのチームに4人目が入ろうとすると
“そのチームは満員です!”
とtellrawで表示する方法を教えてください
3 流れを完全自動化するにはどうすればいいですか
4 入っている人(scoreboard teams に所属)を定期的にtellraw で表示するにはどうすればいいですか
長文失礼しました。
これには、関係ないんですけど例えば羊に3マスいない近づくと死ぬみたいなコマンドは、どうすればいいんですか
/execute @e[type=sheep] ~ ~ ~ kill @a[r=3]
そういうときは発想を逆転させてみてください。「羊が3ブロック以内のプレイヤーを殺す」コマンドを書けば良いんです。
もしよければうちの鯖来てもらうことって可能でしょうか?こまんど設定できればお願いしたいです