在談起任何的指令以前,我們先來講解一下何謂記分板
不知道各位是不是有看過成績登記表?
每個學生的成績,大概像這個樣子
以上範例純屬虛構,如有雷同純屬巧合
老師想要登記各位同學建築和技術的成績
於是他建立了這個表格以便可以快速了解各位同學的成績狀況
然而,在 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)
如果沒有給記分板參數的話
那麼代表將該玩家在所有的記分板上移除
補充
/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)
這樣當玩家的血量被更動時
這個記分板也會與玩家的血量同步更動
判據有非常多中,以下為常用的
- health : 血量
- deathCount : 死亡次數
- playerKillCount : 當玩家殺死其他玩家時分數會增加
- totalKillCount : 當玩家殺死其他生物時分數會增加
- dummy : 只希望以指令來更動這個記分板的值
附註
你不能對著綁於health判據的記分板設值
因為那必須要代表血量
補充
將有關於物品ID的判據全部更改為名稱
名字的欄位可以使用縮寫
也就是@p(最近的玩家)、@a(所有玩家)、@r(隨機玩家)、@e(所有實體)
關於更詳細的目標選擇器可以觀看這篇文章
補充
玩家選擇標籤只會針對在線上的玩家
如果要對所有加入記分板的玩家(不論是否在線上)作修改記分板那麼請使用 *
也就是/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)
虛擬玩家支援
有念公民的應該知道有個東西叫做法人
法人的意思是在法律上假裝有這個人
以下範例純屬虛構,如有雷同純屬巧合
我們會在新聞上聽到台積電對鴻海提告
卻不會聽到張忠謀對郭台銘提告
這是因為在法律上台積電和鴻海被視為一個人
在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)
將TeamRED的build記分板執行加法運算(+=)
被運算的另一個數值是玩家(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也可以使用這個指令
隊伍記分板
記分板還支援了隊伍的功能