《BE1.8.1対応》スコアボードの便利機能を解説!スコアボード応用編【初級コマンド講座 #11】

どうも、初級コマンド講座第11回です。
今回は、スコアボードの少し難しい応用的な機能の解説をしていきます。
スコアボードの基本的な知識は知っているという前提で解説します。前回の記事で/scoreboardコマンドに関する基本的な知識は解説していますので、自信のない方は先に見ておくことをおすすめします。

前回の初級コマンド講座はこちら!


1.スコアの値が指定した範囲の中にあるかどうかを検知する

実は、エンティティのスコアの値を検知する方法は、前回紹介したscores引数だけではありません。
スコアボードのtest機能を使えば、スコアの値を検知することができます。

スコアの値が~以上~以下の範囲にあるかどうかを検知するコマンド

/scoreboard players test [ターゲット] [オブジェクティブ名(英数字のみ)] 〈最小値〉 〈最大値〉

([ ]内は任意のセレクター・名前/〈〉内は半角数字のみ/入力時[ ]〈〉は不要)

このコマンドは、ターゲットで指定したエンティティのスコアが最小値以上最大値以下の範囲の値になっていれば成功の扱いになり、出力がされます。

例えば、

/scoreboard players test @p test1 1 10

を実行した場合、近くのプレイヤーのtest1のオブジェクティブのスコアの値が1~10の範囲内だった場合、コマンドが成功になります。

これを利用して、スコアが指定した値の範囲内になっていたらまた別のコマンドを実行する、ということができます。
しかし、ほとんどの場合はscores引数で事足りてしまうので、あまり使うことのない機能でもあります。


2.スコアを指定した範囲内のランダムな値に変更する

スコアボードコマンドには、対象のスコアをランダムな値に変更する機能があります。

スコアをランダムな値に変更するコマンド

/scoreboard players random [ターゲット] [オブジェクティブ名] 〈最小値〉 〈最大値〉

([ ]内は任意のセレクター・名前/〈〉内は半角数字のみ/入力時[ ]〈〉は不要)

このコマンドは、ターゲットで指定したエンティティのスコアを最小値~最大値の範囲内のランダムな値に変更するコマンドです。
例えば、

/scoreboard players random @p test1 1 10

を実行した場合、近くのプレイヤーのスコアの値を1~10の範囲内のランダムな値に変更します。
この機能を使えば、サイコロなどといったランダム機構は簡単に作ることができます。


3.スコアの値を計算する

スコアボードには、2つのスコアの値を演算するoperationという機能があります。

2つのスコアの値を演算するコマンド

/scoreboard players operation [ターゲット1] [オブジェクティブ名1] {演算子} [ターゲット2] [オブジェクティブ名2]

([ ]内は任意のセレクター・名前/{ }内は特定の記号/入力時[ ]{ }は不要)

ターゲット1のオブジェクティブ1のスコアの値 と ターゲット2のオブジェクティブ2のスコアの値 を、演算子で指定した計算方法で演算します。

ここでは、計算する2つの値は、xyに置き換えて説明していきます

演算子

まず演算子とは、簡単に言うとどういう計算をするかを指定するためのものです。
入れられる演算子は9種類あり、それぞれ行う演算が違います。

演算子 行う演算
+= xの値とyの値を足した値をxに代入する
-= xの値をyの値で引いた値をxに代入する
*= xの値とyの値を掛けた値をxに代入する
/= xの値をyの値で割った値をxに代入する
%= xの値をyの値で割った値の余りをxに代入する
= xの値をyの値にする
> xの値がyの値よりも小さければxの値をyの値にする
< xの値がyの値よりも大きければxの値をyの値にする
>< xの値とyの値を入れ替える

><の演算子を除き、演算結果はxに代入されます。基本的にyの値は変わりません

試しに、+=で演算してみましょう。
test1とtest2の2つのオブジェクティブを作り、プレイヤーにtest1には3、test2には5をセットします。

この場合、プレイヤーのtest1のスコアがx、test2の値がyとなります

画面横にtest1の値を表示して、以下のコマンドを実行しましょう。

/scoreborad players operation @p test1 += @p test2

実行すると、プレイヤーのtest1のスコア(x)が8になります。test2のスコア(y)は変わりません。

このように、x+y、今回の場合だと3+5の結果がx、つまりtest1のスコアに代入されましたね。
このように、演算の結果はxに代入されます。別のx以外のスコアに代入できるわけではないので気を付けてください。

スコアを変数として扱うことができるので、使い方によってはかなり便利な機能です。(低能の筆者には使い道が思い浮かばないですが)


これでスコアボードの解説は終わりです。
スコアボードは難しいですが、使えるようになると一気にコマンドの幅が広がるので、覚えて損はないコマンドだと思います。
ちなみにスコアボードタイマーの作り方は別記事のほうが見やすいと思ったので、近いうちに別の記事として出したいと思っています。
スコアボードの次は、1.8の新要素 /functionコマンドの使い方です。関数(ファンクション)の作り方など、わからない方は必見です。
では、閲覧ありがとうございました。


前の講座↓

次の講座↓