top of page

職業を追加する

​THE DUNGEONでは幾つかのスコア(scoreboard)を参照することで職業を実装しています。

スコアの詳しい使い方は以下のページなどを参考にして頂くものとしてここでは扱いません。

Minecraft日本wiki スコアボード

また、一部、executeコマンドを使用している部分があります。

そちらについても別サイトの解説をご参考ください。

なぁぽんのマイクラ -【コマンド解説】executeコマンドで色んな仕掛けを作ろう 【Minecraft】

プレイヤーに対してメッセージを送信するtellrawコマンドを作成する場合、以下のサイトが便利です。

Minecraft tools - /tellraw editer for Minecraft

スコア名一覧

​THE DUNGEONで扱われているスコア名の一覧です。

先頭に付いている文字はスコアの種類です。(D:dummy T:trigger S:stat(詳細は文中))

(D)LvStep:下位職業、上位職業の選択状態を記録するスコアです。

Lv5未満のとき0、Lv5以上で下位職業を未選択のとき1、Lv5以上で下位職業を選択済みのとき2

Lv10以上で上位職業を未選択のとき3、Lv10以上で上位職業を選択済みのとき4、というように遷移させます。

(T)Lv5choice:選択した下位職業の番号です。

デフォルトでは戦士が1、僧侶が2、弓使いが3、盗賊が4、特殊が5になっています。

(T)Lv10choice:選択した上位職業の番号です。

1~3が戦士の上位職、4~6が僧侶、7~9が弓使い、10~12が盗賊、13以降が特殊になっています。

(D)hasSpecial:ショップで購入した《特殊》の上位職の数を記録するスコアです。

下位職業の選択メニューのアルゴリズム

​まず始めに以下のコマンドで「Lvが5以上かつ、LvStepが0(=さっきまでLv5未満だった)プレイヤー」に

対して「Lv5choice」の編集権限を与えます。

/scoreboard players enable @a[lm=5,score_LvStep_min=0,score_LvStep=0] Lv5choice

次に、同じ条件のプレイヤーに対して、tellrawで職業選択メニューを表示させます。

/tellraw @a[lm=5,score_LvStep_min=0,score_LvStep=0]

["",

{"text":"Lv5に到達しました!","color":"yellow"},

{"text":"\n好きなクラスを選択してください\n"},

{"text":"[戦士]","color":"red","clickEvent":{"action":"run_command","value":"/trigger Lv5choice set 1"}},

{"text":"\n"},

{"text":"[僧侶]","color":"blue","clickEvent":{"action":"run_command","value":"/trigger Lv5choice set 2"}},

{"text":"\n"},

{"text":"[弓使い]","color":"green","clickEvent":{"action":"run_command","value":"/trigger Lv5choice set 3"}},

{"text":"\n"},

{"text":"[盗賊]","color":"yellow","clickEvent":{"action":"run_command","value":"/trigger Lv5choice set 4"}}]

次に、《特殊》の上位職を一体以上持っている(score_hasSpecial_min=1)プレイヤーに対して、

《特殊》を選択するためのメニューを表示します。

/tellraw @a[lm=5,score_LvStep_min=0,score_LvStep=0,score_hasSpecial_min=1]

["",{"text":"[特殊]","color":"light_purple","clickEvent":{"action":"run_command","value":"/trigger Lv5choice set 5"}}]

最後にLvStepの値を1(Lv5以上で職業を未選択)に変更して終了です。

/scoreboard players add @a[lm=5,score_LvStep_min=0,score_LvStep=0] LvStep 1

選択後処理のアルゴリズム(戦士の例)

​まず始めに以下のコマンドで「LvStepが1で戦士(Lv5choiceが1)を選択したプレイヤー」に対して、

戦士を選択した旨のメッセージを表示します。

/tellraw @a[score_LvStep_min=1,score_LvStep=1,score_Lv5choice_min=1,score_Lv5choice=1] ["",{"text":"あなたは"},{"text":"《戦士の加護》","color":"red"},{"text":"を得た!\n"},{"text":"(常に攻撃力増加Ⅰのバフが掛かります)","color":"gray"}]

次に、「LvStepが1で戦士(Lv5choiceが1)を選択したプレイヤー」以外のプレイヤーに対して

(戦士を選択したプレイヤーを中心に、rm=2(半径2ブロックより外)のプレイヤー)

そのプレイヤーがクラスボーナスを得た旨のメッセージを表示させます。

/execute @a[score_LvStep_min=1,score_LvStep=1,score_Lv5choice_min=1,score_Lv5choice=1] ~ ~ ~ tellraw @a[rm=2] ["",{"selector":"@p"},{"text":"は"},{"text":"《戦士》","color":"red"},{"text":"のクラスボーナスを得た!"}]

最後に、LvStepを1(Lv5以上で未選択)から2(Lv5以上で選択済み)に変更します。

/scoreboard players add @a[score_LvStep_min=1,score_LvStep=1,score_Lv5choice_min=1,score_Lv5choice=1] LvStep 1

戦士のバフ効果のアルゴリズム

下位職業の選択が終わった時点でプレイヤーのスコアは以下のようになっています。

LvStep:2(下位職業選択済み)

Lv5choice:選択した職業の番号

Lv5choiceの番号を参照すれば、選択した職業を持つプレイヤーに効果を与えることができます。

例えば、戦士(Lv5choiceが1)​のプレイヤーに対して「攻撃力増加」のバフを与えるのなら以下のようになります。

/effect @a[score_Lv5choice_min=1,score_Lv5choice=1] minecraft:strength 5 0 true

蛇足ですが、もし上位職業になったときに下位職業の効果を失わせたい場合、LvStepの値を参照して、

上位職業の選択をしていないとき(LvStepが3以下のとき)だけ効果が得られるようにします。

/effect @a[score_Lv5choice_min=1,score_Lv5choice=1,score_LvStep=3] minecraft:strength 5 0 true

配布ワールドでのコマンドブロックの配置

以下の画像の位置に配置されています。

職業の能力の作成の際にはご参考ください。

(コマンドブロック内で扱われているスコアを追加するコマンドブロックも一緒に設置されています。

なんのstatを参照しているのかわからない場合はそちらをご確認ください)

bottom of page