Mikage's Channel
美翳のサイト
2017/8/13 作成 最終更新日:2022/04/02
・擬似死亡
■内容
スコアで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
死亡したプレイヤーにリスポーンタグをつけます。