切換
舊版
前往
大廳
主題

[解密][任務-金鷹計畫]地圖設計解密02

極巨龍神塔奇 | 2016-04-16 04:33:26 | 巴幣 6 | 人氣 472

[任務-金鷹計畫]地圖設計解密02【04/16】
 
上一篇:傳送門
 
我又要解密更多東西嘍~
今天解密的東西皆由我獨自開發
而上次的內容也只有自定義工作台是參考其他地圖的作品
 
3.電梯系統(更新版)
這是一個玩家不必拿東西或按按鈕就可以自動執行的電梯系統,但這有用到repeating_command_block,在1.9版本後這是一個很方便的新東西,但如同我前面說的,他很會吃系統資源,所以少少用就好,或者,必須要用時再用。

電梯系統會佔據掉兩個方塊的使用權,也就是說,這兩個方塊不能用在其他玩家可以到達的地方,上樓方塊及下樓方塊。
我所選用的上樓方塊是prismarine (dv=1),當玩家在此方塊上處於跳躍狀態,會被傳送到較高樓層;而下樓方塊是prismarine (dv=0),當玩家在此方塊上處於潛行狀態,會被傳送到較低樓層。
前置作業:設定記分板
/scoreboard objectives add Jump stat.jump(根據玩家跳躍更新Jump記分板)
/scoreboard objectives add ElevatorUp dummy(是否正在上樓)
/scoreboard players set @a ElevatorUp 0(使玩家被記分板追蹤,0為否)
/scoreboard objectives add GoingUpstairs dummy(是否可以執行上樓)
/scoreboard players set @a GoingUpstairs 1(使玩家被記分板追蹤,1為是)
 
/scoreboard objectives add Crouch stat.sneakTime(根據玩家潛行更新Crouch記分板)
/scoreboard objectives add ElevatorDown dummy(是否正在下樓)
/scoreboard players set @a ElevatorDown 0(使玩家被記分板追蹤,0為否)
/scoreboard objectives add GoingDownstairs dummy(是否可以執行下樓)
/scoreboard players set @a GoingDownstairs 1(使玩家被記分板追蹤,1為是)
 

上樓:
從左邊開始說明,反覆進行/scoreboard players test @a Jump 1 *的測試,當有任何玩家開始跳躍時,便會得到SuccessCount的值,由comparator導出,為了不讓玩家感受到立刻傳送,我加入repeater delay=2的稍稍延遲,並利用比repeater_command_block還慢些的連閃持續執行(更新:舊版的電梯系統在系統不穩時會連續傳送)/execute @a[score_Jump_min=1,score_ElevatorUp=0,score_GoingUpstairs_min=1] ~ ~ ~ detect ~ ~-1 ~ minecraft:prismarine 1 /scoreboard players set @p ElevatorUp 1利用score_Jump_min=1(有跳躍)、score_ElevatorUp=0(非正在使用)、score_GoingUpstairs_min=1(可以使用)測試是否為電梯使用者(更新:舊版的電梯系統在多人或連續樓層時會誤判),確認完之後由/scoreboard players set @a Jump 0重置玩家資料,並執行/execute @a[score_ElevatorUp_min=1,score_GoingUpstairs_min=1] ~ ~ ~ detect ~ ~-1 ~ minecraft:prismarine 1 /tp @p ~ ~4 ~將玩家傳送上樓,注意這個指令是Conditional。在傳送完成後接續執行/execute @a[score_ElevatorUp_min=1,score_GoingUpstairs_min=1] ~ ~ ~ detect ~ ~-1 ~ minecraft:prismarine 1 /scoreboard players set @p GoingUpstairs 0,將GoingUpstairs設為0,避免重複傳送。
所有執行完畢後,執行/playsound sound source @a[score_ElevatorUp=1,score_ElevatorUp_min=1] ~ ~ ~ volume pitch minimumvolume給玩家聽音效,並以/scoreboard players set @a ElevatorUp 0/scoreboard players set @a GoingUpstairs 1重置玩家狀態。
 
下樓:
和上樓原理相同,只是將參數改掉,這裡僅列出指令。
->/scoreboard players test @a Crouch 1 *
 
->/execute @a[score_Crouch_min=1,score_ElevatorDown=0,score_GoingDownstairs_min=1] ~ ~ ~ detect ~ ~-1 ~ minecraft:prismarine 0 /scoreboard players set @p ElevatorDown 1
->/scoreboard players set @a Crouch 0
->/execute @a[score_ElevatorDown_min=1,score_GoingDownstairs_min=1] ~ ~ ~ detect ~ ~-1 ~ minecraft:prismarine 0 /tp @p ~ ~-4 ~
->/execute @a[score_ElevatorDown_min=1,score_GoingDownstairs_min=1] ~ ~ ~ detect ~ ~-1 ~ minecraft:prismarine 0 /scoreboard players set @p GoingDownstairs 0
 
->/playsound sound source @a[score_ElevatorDown=1,score_ElevatorDown_min=1] ~ ~ ~ volume pitch minimumvolume
->/scoreboard players set @a ElevatorDown 0
->/scoreboard players set @a GoingDownstairs 1
 
4.反和平模式裝置
顧名思義,這個裝置可以防止玩家使用和平模式來減少遊戲難度
這是一個立體結構,對某些人可能會解讀比較吃力
整體看起來像這樣

 
下面的那層

 
製作原理:
當玩家設定遊戲模式為和平時,敵對的怪物大多數會被刪除而消失,此時運用pressure_plate的反感應(平常被壓下,感應時為不壓下)可以偵測怪物的消失。
在怪物消失後,將遊戲模式自動切換成預設模式。
 
※此裝置功能:可設定開啟/關閉反和平、有title警告、開啟時有提示音
先做下半部

 
上半部比較簡單

 
兩張圖要一起理解
當PigZombie因調整成和平模式消失時,往下的repeater的訊號會消失,連帶往上的repeater訊號也跟著消失,使得redstone_torch開啟,觸發位於其前方的command_block執行/difficulty normal將遊戲難度復原成初始值(若要為可調式可以參考自動天氣維持器的作法),同時觸發上方的command_block執行/summon PigZombie x y z {Silent:1,HealF:0.1f,PersistenceRequired:1,Attributes:[{Name:generic.movementSpeed,Base:0},{Name:generic.followRange,Base:0}]},在pressure_plate上方召喚無攻擊性、無移動能力、不產生聲音的PigZombie,使其踩下pressure_plate,復原狀態。
當lever為開(輸出訊號)時,會強制將下方的redstone_wire固定在有訊號的狀態,此時不論pressure_plate是否被壓下,訊號皆不會影響向上repeater及redstone_torch的狀態,也不會更新遊戲難度或重生PigZombie,故lever打開為反和平模式裝置關閉。並且,lever上方的command_block會執行/tp @e[r=10,type=PigZombie] ~ -100 ~,以移除PigZombie,預防在再度開啟時或切換難度時導致預期外的錯誤。(若用/kill指令有可能會產生掉落物,如rotten_flesh、gold_nugget等)
注意其中兩個播放音效的command_block皆是在開啟時或重新生成PigZombie被觸發,關閉時無音效播放。
 
下一篇:待續
送禮物贊助創作者 !
0
留言

創作回應

塔打
我做的蓄力跳躍會跟這個衝突到吧~QQ
2016-04-16 10:12:58
啊軒(*´∀`)~♥
可以不衝突,只要當玩家進入電梯範圍加上TAG,然後在你本身的蓄力跳躍加分條件加上!TAG
當然電梯和跳躍要做成兩組項目
2016-04-16 20:09:51

更多創作