top of page

​・擬似死亡

​■内容

スコアでHPを作成する事で、

​マイクラ内での死亡イベントを発生させずに、死亡イベントを起こす、

​MMORPG系統のシステムです。

解説の見方

XXX:Y:Zという構造。

■XXXはコマンドブロックの種類

​・ICB :インパルスコマンドブロック

・CCB:チェインコマンドブロック

・RCB:リピートコマンドブロック

■Yは条件の状態

・N:条件なし

・C:条件付き

■Zは実行の状態

・N:動力が必要

・P:常時実行

​​仕掛けの全体図はこんな感じです。

最初に実行するコマンド群

まず、必要なスコアボードを作成、初期値の設定を行います。

​手動でも構いません。

 

scoreboard objectives add HP dummy

HPの作成を行います。

scoreboard objectives add maxHP dummy

最大HPの作成を行います。

scoreboard objectives add waitRespawnTime dummy

死んでから、復活するまでの時間計測に使います。

scoreboard objectives add dmgt stat.damageTaken dmgt

ダメージ計算に使用します。

scoreboard players set @a HP 250

HPの初期値を設定します。

scoreboard players set @a maxHP 250

最大HPの初期値を設定します。

1~6のコマンド

■回路1
RCBNN:scoreboard players remove @a[tag=respawn] waitRespawnTime 1

リスポーンタグが設定されている場合、待ち時間を減らします。

■回路2
RCBNN:scoreboard players operation @a[score_dmgt_min=1] HP -= @a[score_dmgt_min=1] dmgt

ダメージを1以上受けている場合、それをHPから減らします。


CCBNP:scoreboard players set @a[score_dmgt_min=1] dmgt 0

HPを減らしたら、受けたダメージをリセットします。

■回路3
RCBNN:title @a[tag=respawn] actionbar {"text":"10秒後にリスポーンします。","color":"yellow","bold":"true"}

リスポーンタグがついてるプレイヤーにメッセージを表示します。
 

CCBNP:execute @a[tag=respawn,score_waitRespawnTime=199] ~ ~ ~ particle flame ~ ~1 ~ 0 0 0 0 1 force @a 57 0

復活待ちのプレイヤーには炎のパーティクルを発生させます。

CBNP:execute @a[tag=respawn,score_waitRespawnTime=1] ~ ~ ~ scoreboard players set @s waitRespawnTime 200

リスポーンタグがついていて待機時間が1以下のものは初期値200に戻します。

■回路4
RCBNN:scoreboard players test @a[tag=respawn] waitRespawnTime 1 1

復活待ち時間が1まで減っているか確認します。していれば、次のコマンドが行われます。


CCBCP:tp @a[tag=respawn] @e[name=reSpawn]

復活待ちプレイヤーをリスポーン地点にtpします。

あらかじめリスポーン地点にはreSpawnと言う名前のアーマースタンドを置いておきます。


CCBCP:scoreboard players tag @e[tag=respawn] remove respawn

リスポーンタグを取り除きます。


CCBCP:execute @e[name=reSpawn] ~ ~ ~ gamemode a @a[m=3,r=2] 

復活したプレイヤーをスペクテイターモードからアドベンチャーモードに変更します。

■回路5
RCBNN:execute @a[tag=death] ~ ~ ~ particle iconcrack ~ ~1 ~ 0.3 0.5 0.3 0.2 300 force @a 57 0

死亡したプレイヤーから、パーティクルを出します。


CCBNP:execute @a[tag=death] ~ ~ ~ particle explode ~ ~1 ~ 0 0 0 0.2 10 force @a 57 0

​死亡したプレイヤーから、パーティクルを出します。


CCBNP:execute @a[tag=death] ~ ~ ~ playsound block.glass.break master @a ~ ~ ~ 1 0.1 1
​死亡したプレイヤーから音をならします。

CCBNP:execute @a[tag=death] ~ ~ ~ playsound entity.firework.blast master @p ~ ~ ~ 1 0.7 1

​死亡したプレイヤーから、音をならします。
 

CCBNP:scoreboard players tag @a[tag=death] remove death

​死亡タグを取り除きます。

 

■回路6
RCBNN:scoreboard players tag @a[score_HP=0] add death

HPが0になったプレイヤーに、死亡タグをつけます。

CCBCP:scoreboard players operation @a[tag=death] HP = @a[tag=death] maxHP

死亡したプレイヤーのHPをリセットします(HPを最大HPと同じにする)。

CCBCP:title @a[tag=death] title {"text":"YOU ARE DEAD","color":"red","bold":"true"}

死亡したプレイヤーにメッセージを表示します。
 

CCBCP:gamemode sp @a[tag=death]

死亡したプレイヤーをスペクテイターに変更します。

CCBCP:effect @a[tag=death] 15 11 5

死亡したプレイヤーに盲目をつけます。

CCBCP:scoreboard players tag @a[tag=death] add respawn

​死亡したプレイヤーにリスポーンタグをつけます。

「1-4-2-6-5-3」の順に起動してください。そうしないと正常に動作しません。

■解説(複雑なので、うまく説明できていない可能性があります。ご了承ください)

処理を簡潔に説明すると

・ダメージを受けるとHPが減少する。

・HPが0になると死亡フラグ(deathタグ)がつく。

・死亡タグがついたら死亡処理が行われた後、

 復活待ち処理に切り替わる(respawnタグをつけて、deathタグを消す)

 

・復活時間が0の時、200(10秒)がセットされる。

・復活待ち処理中、復活時間は1秒につき20のペースで減少する。(10秒です)

・1になった時、復活処理が行われ、待ち時間はその後、0になる。

ということになります。

bottom of page