小屋創作

日誌2014-05-04 12:35

小坤的記分板教學 - 最後更新 20171005

作者:小坤


在談起任何的指令以前,我們先來講解一下何謂記分板

不知道各位是不是有看過成績登記表?
每個學生的成績,大概像這個樣子

以上範例純屬虛構,如有雷同純屬巧合

老師想要登記各位同學建築技術的成績
於是他建立了這個表格以便可以快速了解各位同學的成績狀況




然而,在 Minecraft 中也有這種機制

首先,我們建立建築記分板




記分板添加指令
/scoreboard objectives add build dummy
代表要求記分板(scoreboard)物件項目(objectives)
添加(add)一個叫做build的項目
而且只能以指令來更改這個值(dummy)




記分板的命名 即使以中文作為名稱,指令依然會執行成功,
但在目標選擇子嵌入目標選擇子時會產生問題
記分板的命名限制 不可以與現存的記分板重複
最多十六字元,即八個中文字
顯示名稱
記分板添加指令可以加入顯示名稱
加入顯示名稱: /scoreboard objectives add build dummy 建築
命名限制最多三十二字元,即十六個中文字
移除記分板 記分板移除指令: /scoreboard objectives remove build
這行指令代表要求記分板(scoreboard)物件項目(objectives)
移除(remove)一個叫做build的項目



接著我們加入玩家



記分板添加指令
/scoreboard players set kyob1010 build 0
這行指令代表要求記分板(scoreboard)中的玩家項目(players)
設置(set)一個叫做kyob1010的玩家build記分板上的分數為0

補充
記分板可以記錄的數值範圍在 -2147483648 ~ 2147483647

實體都可以擁有記分板分數

可以加入NBTtag作為選擇玩家的依據
舉例
/scoreboard players set kyob1010 build 0 {NBTtag組}
/scoreboard players add kyob1010 build 1 {NBTtag組}
/scoreboard players remove kyob1010 build 1 {NBTtag組}

注意
如果沒有利用設值加入玩家
那麼在某些地方詢問記分板值的時候可能會發生錯誤
就像你問老師的建築分數是多少
老師就沒有自己的分數
你還要問老師的分數是多少



記分板提供了加與減的功能


/scoreboard players add kyob1010 build 1
這行指令代表要求記分板(scoreboard)中的玩家項目(players)
添加(add)一個叫做kyob1010的玩家build記分板上的分數1

/scoreboard players remove kyob1010 build 1
這行指令代表要求記分板(scoreboard)中的玩家項目(players)
減少/移除(remove)一個叫做kyob1010的玩家build記分板上的分數1

補充
被加/減的記分板數值一定要是非負整數
奇幻戰神(jason3085)補充 0 也可以,故修正成非負整數



如果我想要把某個玩家
從某個記分板上移除又該怎麼做

/scoreboard players reset <玩家> [記分板]
這行指令代表要求記分板(scoreboard)中的玩家項目(players)
重設(reset)一個玩家
換句話說把這個玩家直接從記分板系統上移除

如果沒有給記分板參數的話
那麼代表將該玩家在所有的記分板上移除

補充
玩家參數支援 *
意思是所有記分板上的玩家
/scoreboard players reset *



有時候老師會希望把成績張貼給大家看,記分板提供了三個位置擺放記分板
  • 畫面的旁邊(sidebar)
  • 玩家清單(list)
  • 名字下方(belowname)

畫面的旁邊(sidebar)

玩家清單(list)

名字下方(belowname)


也就是

/scoreboard objectives setdisplay sidebar build
這行指令代表要求記分板(scoreboard)物件項目(objectives)
設置展示位置(setdisplay)畫面的旁邊(sidebar)
而這個物件項目是build

補充

如果想要將旁邊的顯示移除,那麼就將空記分板顯示
也就是 /scoreboard objectives setdisplay sidebar

可以讓不同的隊伍看到不同的記分板
顯示位置像是 sidebar.team.<color>
代表說在某個顏色的隊伍上顯示



有時候老師不想要自己手動登記所有同學的分數
因此他會要求小老師來幫忙他紀錄

我們可以將記分板與某個判斷依據綁起來
例如build記分板就和建築考試的分數綁起來
或是Health(血量)記分板就和health(血量)判據綁起來

/scoreboard objectives add Health health
這行指令代表要求記分板(scoreboard)物件項目(objectives)
添加(add)一個叫做Health的項目
另外我想以玩家的血量(health)來更改這個值

這樣當玩家的血量被更動時
這個記分板也會與玩家的血量同步更動

判據有非常多中,以下為常用的
  • health : 血量
  • deathCount : 死亡次數
  • playerKillCount : 當玩家殺死其他玩家時分數會增加
  • totalKillCount : 當玩家殺死其他生物時分數會增加
  • dummy : 只希望以指令來更動這個記分板的值
附註
你不能對著綁於health判據的記分板設值
因為那必須要代表血量

補充
大量判據
將有關於物品ID的判據全部更改為名稱



名字的欄位可以使用縮寫
也就是@p(最近的玩家)、@a(所有玩家)、@r(隨機玩家)、@e(所有實體)

關於更詳細的目標選擇器可以觀看這篇文章

【Minecraft】【指令】目標選取器


補充
玩家選擇標籤只會針對在線上的玩家
如果要對所有加入記分板的玩家(不論是否在線上)作修改記分板
那麼請使用 *
也就是/scoreboard players set * build 0



記分板資料嵌入玩家選擇子的方法

@p[score_build=1]
代表這個玩家的build記分板的值最高只能有 1 ,也就是 <= 1

@p[score_build_min=1]
代表這個玩家的build記分板的值最低要有 1 ,也就是 >= 1

@p[score_build=10,score_build_min=1]
代表這個玩家的build記分板的值最高只能有 10 而且最低要有 1
也就是 1 <= build記分板的數值 <=10

特殊用法
@p[score_build=1,score_build_min=1]
代表這個玩家的build記分板的值最高只能有 1 而且最低要有 1
也就是 build記分板的數值 一定要 1



我該如何知道現在地圖上面的記分板有哪一些

請輸入以下指令
/scoreboard objectives list
這行指令代表要求記分板(scoreboard)物件項目(objectives)
顯示清單(list)

補充
/scoreboard objectives list <玩家>
這行指令代表要求記分板(scoreboard)物件項目(objectives)
顯示清單(list)上特定玩家的記分板數值




虛擬玩家支援

有念公民的應該知道有個東西叫做法人
法人的意思是在法律上假裝有這個人

以下範例純屬虛構,如有雷同純屬巧合
我們會在新聞上聽到台積電對鴻海提告
卻不會聽到張忠謀對郭台銘提告

這是因為在法律上台積電和鴻海被視為一個人



在Minecraft裡面
也有紅隊藍隊這樣的法人
而這樣的人要怎麼樣加入記分板呢

/scoreboard players set TeamRED build 0
我們當作TeamRED是一個人
讓他也可以進入記分板

但是有時候我們雖然想要把這個數值記錄下來
卻不想要讓他出現在顯示區域
畢盡他真的不是一個人

我們就在TeamRED前面加上一個 #
也就是
/scoreboard players set #TeamRED build 0
這樣這個虛擬的人就不會被顯示出來了



【1.8】
以往我們使用/testfor來偵測是不是有這樣一個特定的人
但是虛擬人物本身並不是一個人
我們又要如何監控他的數值呢?

我們使用
/scoreboard players test <player> <objective> <min> [Max]
這行指令代表要求記分板(scoreboard)中的玩家項目(players)
測試(test)某個玩家(player)某個記分板(objective)上的分數
最低是(min)而且最高是(Max)

補充
如果想要表示記分板的最大或是最小數值
也就是只規定最大不規定最小
或是只規定最小不規定最大
那麼使用 * 填入最大或是最小的格子



有時候我們會想要把記分板的數值加起來
比如說TeamRED有自己的隊伍分數
然後隊伍分數是來自隊員的分數加總

這時候我們就可以使用以下指令
/scoreboard players operation <玩家1> <記分板> <算術運算子(op=)> <玩家2> <記分板>
/scoreboard players operation TeamRED build += member build 1
這行指令代表要求記分板(scoreboard)中的玩家項目(players)
運算(operation)
TeamREDbuild記分板執行加法運算(+=)
被運算的另一個數值是玩家(member)build記分板上的分數

講白了就是 (後來的TeamRED的build) = TeamRED的build + 玩家的build

運算子共有五種
  • += :加法
  • -= : 減法
  • *= : 乘法
  • /= :除法
  • %= :餘,也就是前面的會變成除法剩下的餘數
  • = :指派運算,也就是把前面的值變成和後面的一樣
  • < :小於運算,如果後面的比前面還要小,那麼將前面的數值變為後面的數值
  • > :大於運算,如果後面的比前面還要大,那麼將前面的數值變為後面的數值
  • >< :交換運算,交換前面和後面的數值

補充
記分板可以不用一樣

有人會想既然他就是做運算
為什麼不要用單一個運算子
而要後面加上等於
這其實是程式語言上面的用法



Trigger 與 Tellraw 的關係

任何被創造出來的事物
都是為了解決實際上遇到的問題

在【1.7】時
/tellraw內嵌的指令按鈕
必需要觸發者本身有權限可以使用

如果可以觸發的話
只要重覆按下按鈕就可以被重複觸發

為了解決這個問題
在【1.8】時新增了一個判據trigger
與指令/scoreboard players enable <玩家> <trigger>
和指令/trigger <物件> <設置或增加> <值>

trigger系統有點像是老師抽屜
你需要獲得老師給的鑰匙才能打開抽屜

首先我們先將記分板和老師的抽屜綁起來
/scoreboard objectives add build trigger

接著
如果老師想給你這抽屜的鑰匙
那麼就要用這樣的指令
/scoreboard players enable @p build
這個指令讓你可以打開一次老師的抽屜
獲得更動裡面的物品一次的權限

接著
你使用以下的指令來更改他
/trigger build set 0
/trigger build add 1
被更動過的trigger類型記分板會恢復到不能更動的狀態

這個指令最大的價值在於
只要獲得存取權
即使不是OP也可以使用這個指令



隊伍記分板

記分板還支援了隊伍的功能
考慮到版面問題在此不做介紹

相關教學移至

【Minecraft】【指令】【記分板】小坤的隊伍教學





參考資料




小坤指令相關文章
我該如何得到最新最好的資料

74

59

LINE 分享

相關創作

【CTM | Untold Stories 5】Calamity Canyon ── 寸草不生的災厄峽谷

麥塊開服教學【二】最初的開始:LuckPerms是個啥?

Minecraft進度

留言

開啟 APP

face基於日前微軟官方表示 Internet Explorer 不再支援新的網路標準,可能無法使用新的應用程式來呈現網站內容,在瀏覽器支援度及網站安全性的雙重考量下,為了讓巴友們有更好的使用體驗,巴哈姆特即將於 2019年9月2日 停止支援 Internet Explorer 瀏覽器的頁面呈現和功能。
屆時建議您使用下述瀏覽器來瀏覽巴哈姆特:
。Google Chrome(推薦)
。Mozilla Firefox
。Microsoft Edge(Windows10以上的作業系統版本才可使用)

face我們了解您不想看到廣告的心情⋯ 若您願意支持巴哈姆特永續經營,請將 gamer.com.tw 加入廣告阻擋工具的白名單中,謝謝 !【教學】