メッセージ用コマンド(sayとtellとtestfor)を世界一丁寧に解説【Minecraft】
マイクラPE1.0.5ではついにコマンドブロックが追加され、待望のあの仕掛けが作れるようになりました。そう…「近寄ると警告が流れる仕掛け」です。今回は、1.0.5で追加されたコマンドブロックとtestforコマンドを使った作り方を画像付きで丁寧に解説します。
目次
アップデート「1.0.5」の内容まとめはこちら
- マインクラフトPE 1.0.5のアップデート内容まとめ
http://doanryo.com/wp/pe-105-update/
今回の記事では、バージョン1.0.5で実装された(される)ばかりの「コマンドブロック」と、新コマンド「testforコマンド」を使って記事を作成します。まずはバージョン1.0.5のアップデート内容をチェックすることをお勧めします。
近寄るとメッセージを表示する仕掛けの作り方
▲アニメーション画像です。こんな風に、近寄ると「門番」から「近寄るな!」と言われる仕掛けを作っていきます。
では早速仕掛けを作っていきましょう。
※初めてコマンドブロックを使う方のために、当記事はこのブログ史上もっとも丁寧丁寧丁寧に書くと決めているよ
コマンドブロックを入手
まずはコマンドブロックを入手…といってもクリエイティブモードのアイテム一覧からは入手できないので、チャット欄でコマンドを使って入手する必要があります。チャット画面を開いて以下のコマンドを入力してください。
- コマンドブロックを入手するコマンド
- /give @p command_block
入手できない場合は、「-」と「_」を間違えたり、全角スペースを打ってしまっていないか確認しましょう。
コマンドブロックを並べて設置
コマンドブロックを手に持って、同じ向きに2つ並べて設置します。コマンドブロックはプレイヤーの方を向くようになっています。
1つ目のコマンドブロックの中身を設定
2つ並んだコマンドブロックのうち、根本の方のコマンドブロックをタップして画面を開きましょう。
画面を開いたら、「ブロックのタイプ(Block Type)」を反復(リピート)に切り替えましょう。
するとコマンドブロックの色が紫色に変わりました。これが「反復(リピート)モード」のコマンドブロックです。
もう一度同じコマンドブロックを開いて、今度は「レッドストーン(Redstone)」を常にアクティブ(Always Active)に切り替えましょう。
さあ、コマンドを入手します。右上の+マークがあるコマンド欄をタップして、以下のコマンドを入力してください。全て半角英数ですよ! くれぐれも全角で打たないように。
- 反復(リピート)モードのコマンドブロックに入力するコマンド
- /testfor @a[r=5]
testforコマンドを初めて書く方のために、仕組みを説明します。testforコマンドは▲こんな風に/testfor <セレクター>(<>は実際には入力しません)という構文で書きます。(NBTタグを忘れてるじゃんとお思いの方、残念ですが1.0.5現在PEではNBTタグを書くことはできません><)
testforコマンドは、指定したターゲットが存在するかどうかを判定するコマンドです。今回の場合、「半径5ブロック以内に近づいたかどうか」を判定するために、「半径5ブロック以内のプレイヤー」をターゲットとして書いているのです。
今回はあらゆるプレイヤーを対象にするので、@aというセレクターを書いています。
セレクターの後にくっつけて、四角カッコで囲んだ「引数(ひきすう)」を書きます。このr=5は「r引数(ひきすう)」と言って、最大半径を指定しています。他にも最小半径を指定するrmなど、色々な引数が存在します。詳しくはこちらのページをご覧下さい。
コマンドブロックから流れるログを無効化
コマンドを入力したらコマンドブロックの画面を閉じましょう。…ってなんだこりゃ、「@: ○○が見つかりました」でログが埋め尽くされてしまいました! それもそのはず、「常にアクティブ」の反復(リピート)コマンドブロックなので、常に判定して結果をつぶやきまくるのです。邪魔なので消し方を教えます。
- コマンドブロックのチャット欄へのログ出力を無効化するコマンド(チャット欄で実行してね!)
/gamerule commandblockoutput false
※PC版と違い、全て小文字で入力しちゃって大丈夫です。
バージョン1.0.5で追加されたgameruleコマンドです。この場合はcommandblockoutput、つまりコマンドブロックのログ出力をfalse=無効化しています。
このコマンドを実行すると、その時点でコマンドブロックはチャットにメッセージを流さなくなります。配布ワールドでは、こうすることでコマンドブロックの動作を隠しているんです。
2つ目のコマンドブロックの中身を設定しよう
1つ目のコマンドブロックは設定完了です。次は2つ目のコマンドブロックを開いて設定していきましょう。
2つ目は1つ目と違い、チェーン(Chain)モードに設定します。なぜなら1つ目のコマンドブロックと連動させるから。
さらに、その下の「Condition」欄を条件付き(Conditional)に切り替えましょう。これを忘れるとtestforコマンドを書いた意味が無くなるので注意。
さあ、2つ目のコマンドを入力します。
- チェーンモードのコマンドブロックに入力する2つ目のコマンド
- /say 近寄るな!
※sayとメッセージの間は半角スペースです!
コマンドを入力したらコマンドブロックの画面を閉じましょう。
ちょっと待って! 1回だけメッセージを流すならコンパレーターを使おう
5m以内に近づくと「近寄るな!」と出るのですが… なんと毎秒20もの頻度でメッセージが放送されています。なぜなら反復(リピート)コマンドブロックが常時判定し、それをそのまま「チェーン」しているから。
作ってもらっておいて申し訳ないんですが、「近づくとメッセージを出す」仕掛けでチェーンコマンドブロックを使うとこうなってしまうんです。じゃあどうすればいいんでしょう?
そこで、チェーンコマンドブロックの場所に「レッドストーンコンパレーター」を設置して、その先に新しい衝撃(インパルス)モードで無条件(Unconditional)でレッドストーンが必要のコマンドブロックを設置しましょう。設置した衝撃(インパルス)モードのコマンドブロックには、以下のコマンドを入力します。
- 新しい衝撃(インパルス)モードのコマンドブロックに入力するコマンド
- /say 近寄るな!
※sayとメッセージの間は半角スペースです!
さっきチェーンコマンドブロックで作ってみた時と一緒のコマンドですね。
すると半径5ブロック以内に入った時にコンパレーターがONになり、その時だけメッセージが放送されます。これならメッセージが邪魔になりませんね。
RPGワールドに必須、「@」ではなく好きな名前をメッセージに入れるには
メッセージの先頭には「[@]」が入ります。なんでかといいますと、送り主のコマンドブロックの名前を設定していないからです。
sayコマンドを設定したコマンドブロックを開いて、左上の欄に「門番」など適当な名前を書きましょう。
すると「[門番]近寄るな!」といった風に、メッセージの送り主の名前が変わります。
メッセージを流す相手を絞り込むには
実はこのままだと、マルチプレイの場合は全員にメッセージが送られてしまいます。近寄った人だけにメッセージを送るには、どうすればいいんでしょうか。
コンパレーターの先のコマンドブロックを開いて、以下のコマンドに書き換えて下さい。
- 半径5m以内に近寄った人だけにメッセージを送るコマンド
- /tell @a[r=5] 近寄るな!
※半角スペースです! 全角スペースを入れないように注意!
特定の人だけにメッセージを送るには、tellコマンドを使います。こちらはsayコマンドと違って、メッセージの前にターゲットを書きます。▲の例では「半径5m以内のすべてのプレイヤー」が対象です。(@pと書いてしまうと対象が一人だけになってしまいます)
tellコマンドの場合、sayコマンドのメッセージと違って「○○にささやかれました」と表示されます。ささやくってなんかしっくりこないですが我慢我慢。
いかがでしたか。コンパレーターの先のコマンドブロックの内容を変えれば、他にも様々な仕掛けが作れます。(例: 近寄るとレッドストーンブロックが設置されさらに仕掛けが動く) どんどん応用して、自分だけの仕掛けを作りましょう!
告知: コマンドをもっと極めたいなら、この本がおすすめ!
マイクラのコマンドに少しでも興味をお持ちの方々に朗報です。コマンドをもっと学ぶのにぴったりな本が発売されました。
- みんな大好き!マインクラフト るんるんプログラミング コマンドブロック編
http://www.socym.co.jp/book/1078
「オン・オフの信号を出し続けるクロック回路を作ろう!」「コマンドブロックでよく使うコマンド」「テレポート装置を作る」「『executeコマンド』を使って、いろいろな仕掛けを作ってみよう!」「コマンドを極めれば、こんな配布ワールドを作れる!」など、レッドストーンの基本からコマンドの応用まで、ありとあらゆる解説が詰まった本となっています。応用編の「6章」は私が執筆しました。作例のワールドもダウンロードできます!
さらにこの本では、仕掛けを作るだけでなく、配布ワールドやサーバーとして公開する手順も解説されています。憧れの配布ワールド作りを始めるのにもぴったりですね。
気になった方はぜひ上のリンクからチェックしてみて下さい!
10件のコメント
-
01 202017年3月20日アプデ早くね?w
-
でんでん (Minecraft ID:denden0816)2017年3月21日最近ブログ更新早いですねー。 昨日1.7.10のOptifneの記事が出てきたかと思ったら、 PEのコマンド回路説明。 これぐらいのペースで記事を投稿してほしい... といっても、"これぐらいのペース"ってコンピュータ並ですねw ドロイドさんが記事を投稿しているようですねw
-
イカ松@松難民2017年3月22日新宝島で草
-
ぽ2017年3月22日testforの仕組みの説明のところ、testrotになってますよ
-
匿名2017年3月22日ご指摘ありがとうございます、修正しました
-
ポテトプリッツ2017年3月29日PC版と同じ操作にしてくれないかなぁTABキーで座標が出せればいいのにそれとF3とF3+Hも...
-
ikeya kyouji2017年4月9日testforの時にある特定のプレイヤーだけを検出する事はできますか?
-
龍紋瓷彩沙蘭2017年6月9日testforコマンドの範囲指定ができないんですがどうしたらいいですか? /testfor @a[r=5] って打っても無効なコマンドになってしまいます。
-
Hugo games2017年9月2日同じです!
-
けんたDx2017年9月26日この記事は嘘です! この通りにやってもコマンド出力されません!この記事を書いた人は詐欺師です!