來源:minecraft吧
作者:微笑的詐欺師
在閱讀此教程之前,請確保你會使用命令方塊的基礎功能
記分板是什麼
記分板是一個以/scoreboard 為首的一系列命令的組合
記分板中的專案其實就是一個變數
變數……嘛能理解吧 如果理解不了的話就把它看成一個未知數x
而這個x的值可以通過各種操作來改變
換句話說,記分板可以設定一個未知數x,改變它的值,然後再根據這個x的大小來作出相應的反應
這裡舉個例子
如果我想要用記分板來做個任務的話【RPG地圖】
我可以設定一個未知數x,起個名字叫【任務】,這時x=0
然後在完成任務時【比如交出某一物品,觸發某個機關】時,把這個x的值改成1
然後再做一個機關,當觸發時判定x的值是否是1,如果是的話就發出完成任務的資訊
那麼就是這樣,一個任務就做好了
當然這只是一個非常簡單的例子
下面我就會詳細地說這個例子是怎麼實現的
首先我們需要創建一個變數【也就是那個未知數x
/scoreboard objectives add RenWu dummy
這裡的RenWu是BL的名字
而那個dummy則是判定條件,這裡的dummy是虛擬變數
也就是說,這個變數是不受任何因素影響,只會被其他命令改變
左下角可以看到,我創建了一個變數
這個命令可以改變特定變數的值
而這裡我是將RenWu變數的值改成了1
相對的,如果我把set改成:
add=》加一
remove=>減一
而後面的1則是代表相應的值
而另外一個命令則可以檢測某個變數是否達到了某個值
比如如果我需要做出像是例子中的效果
【當變數=1時,輸出信號】
就可以這樣做:
/testfor @p[score_RenWu_min=1]
使用這個命令可以在命令方塊被通入信號時,判斷變數[RenWu]的值是否等於1
如果是的話,則向旁邊的比較器輸出信號
從而點亮紅石燈
而對於一開始的那個做任務的例子,現在也可以很輕鬆地做出來了
這是接受任務的地方
觸發機關時,創建【RenWu】這個變數,同時說一聲balabala=L=【沒錯我沒裝中文補丁……
而當我們的英雄費盡千辛萬苦來到了任務的終點時,他丟下了火把,觸發了機關
此時將那個變數的值改為1
而這個就是接收器了
用高頻的脈衝不斷地判斷變數的值
當它【終於】等於1時,向旁邊的比較器輸出信號
從而激發接下來的機關
比如123456啊什麼的對吧【恩
有的小夥伴就會說啦【你丫根本沒人在看吧喂
“LZSB,我直接在完成任務那裡做完成任務的機關不就好了,完爆LZ”
=L=……怎麼說呢
如果任務的完成條件不是1,而是3,4,5,6之類的呢?
也就是說,如果這個任務有多個完成的條件呢?
再或者,如果這個任務有很多的完成條件,但是完成任務時根本就不需要全部做完呢?
又或者,如果這個任務的每個目標加的分不一樣,而完成任務只是要求達到特定的分數呢?
這樣的情況下,用傳統的紅石電路是難以達到的【恩
而且別忘了,記分板不僅可以用來做任務
比如……等級系統?
沒錯=L=
就是傳統RPG中的等級系統
殺怪升級啊,升一級屬性會增強啊什麼的
這裡呢,就要用到另一種任務的判定條件【殺敵】了
這是wiki的解釋:
“擊殺數量 (totalKillCount)”: 當玩家殺死其他生物時分數會自動增加。
而我們就可以嘗試用這個系統做一個打怪/做任務升級的系統
/scoreboard objectives add Level totalKillCount
這個命令可以創建一個名為Level的變數
細心的小夥伴們可能會注意到
現在是晚上啦!!
————不鬧了
這裡的dummy改成了totalKillCount
而這個意味著
這個變數會隨著你擊殺其他生物而上升
/scoreboard objectives setdisplay sidebar Level
這個變數可以在你的視窗右邊持續地顯示這個變數的值
也就是說
你可以持續地在右邊看到你的經驗
沒錯我剛剛殺了一隻雞=L=
然後可以看到,我現在的經驗值是1
=L=又殺了一隻
現在是2了
testfor @p[score_Level_min=15]
喜聞樂見的升級判定
而這裡的命令則是代表,當你的經驗值在15以上時,觸發升級的電路
而這四個則分別代表不同的等級
他們要求的經驗值也不同,左下角可以看到
——注意這裡的經驗值指的是Level的值,而不是你正下方的那個經驗條……
通到一個按鈕上面
這裡不用高頻電路的原因呢……
艾瑪太卡了=L=
在我跑出去殺了一堆怪以後呢
回來這裡,右擊按鈕
leveled up!
沒錯我血條增加了噗咩哈哈哈【深井冰
哈啊啊~再來做個金錢系統吧
沒錯就是金錢
=L=用經驗條當貨幣的你們弱爆了
交易東西啊什麼的我就不說了……用售貨機,然後在輸出端設定給作為錢的變數增加特定的數值就好
這裡來講講怎麼把打怪得到的經驗換成錢
也就是說怎樣把一個變數的值移到另一個變數上面
差不多就是這樣子的結構了
首先,創建Money和level這兩個變數【Level就是前面提到的那個等級系統的變數
最左邊的命令方塊是
/testfor @p[score_Level_min=10]
判定玩家的經驗值是否大於10
如果是的話則激發右邊的兩個命令方塊
分別是:
/scoreboard players add @p Money 3000
/scoreboard players remove @p Level 10
這裡的意義是,
減掉玩家的十點經驗,
然後給玩家3000塊錢
恩就是這樣
啊對了 關於無線紅石
原版的確是可以用記分板做到無線紅石的效果的
打個比方
輸入端設定某變數的值為1
而接收器端就是用testfor做到當該變數為1時輸出紅石信號的效果
說實話……不怎麼穩定,如果玩家離開了載入的範圍,這貨馬上失效=L=
而實際的做法已經在前面有所提及了
如果不是空間非常緊張的話實在不推薦