複製鏈接
請複製以下鏈接發送給好友

計分板

(遊戲《Minecraft》中的一種指令和特殊功能)

鎖定
計分板,又稱記分板,是遊戲《Minecraft》中的一種指令,指令單詞為scoreboard。計分板系統是一套通過命令操縱的複雜遊戲機制。主要為地圖作者與服務器運營者準備,可用多種形式追蹤、設置並列出玩家及實體的分數。 [1]  這些命令管理記分板的目標、玩家和隊伍。 [1] 
中文名
計分板
外文名
scoreboard [1] 
別    名
記分板
權限限制
操作員

計分板基本信息

計分板PC

PC的計分板有三個分支,分別是objectives、players和teams。 [2] 
原文
遊戲內譯名
分支
作用
objectives
計分項/記分項
列出已創建的計分項(記分項)
add
增加一個計分項(記分項)
remove
刪除一個計分項(記分項)
setdisplay
修改計分項(記分項)顯示位置
players
玩家
set
設置玩家某計分項的分數
add
增加玩家的某個計分項的分數
remove
減少玩家的某個計分項的分數
list
列出某個玩家所有計分項的分數
reset
重置玩家某計分項的分數
test
檢測某位玩家的計分板分數
tag
給某位玩家加標籤
teams
隊伍
list
列出所有隊伍
add
創建一個隊伍
remove
刪除一個隊伍
empty
清除某隊的人
join
將玩家加入某隊伍
leave
將玩家退出某隊伍
option
設置某個隊伍
表格信息來源 [2] 
一張計分板的截圖 一張計分板的截圖
objectives
objectives在遊戲中的意思是“計分項”,作用為控制計分板的計分項目。該分支又分為分為add、remove、list和setdisplay。 [3] 
  • add的作用是增加一個計分項目。在創建時,需要填入“名稱”和“類型”,還有一個“顯示的名稱”(格式見下一個一級目錄)。名稱是計分項目的名稱。類型準確的説是準則,是指該計分項目是如何獲得分數的。類型有好幾種,具體見以下表格:
準則
版本限制
描述
可否編輯
dummy
虛擬型
只能通過命令修改分數,諸如死亡等遊戲行為並不能修改分數。這可以被用來製作事件的標記、映射和通貨。
trigger
觸發器
僅Java版
只能通過命令修改分數,諸如死亡等遊戲行為並不能修改分數。/trigger能夠用於設置/增減使用trigger作準則的記分項。如果以trigger為準則的記分項沒有對玩家啓用,則該玩家使用該/trigger命令會失敗。成功使用過一次/trigger成功之後,該玩家的該命令將重新被關閉。注意/trigger可以在不允許作弊的情況下被非管理員的普通玩家使用。這可以比較方便地通過/tellraw來製作功能面板。
deathCount
死亡次數
僅Java版
當玩家死亡時,分數會自動增加。
playerKillCount
殺人數量
僅Java版
當玩家殺死其他玩家時分數會自動增加。
totalKillCount
殺怪數量
僅Java版
當玩家殺死其他生物時分數會自動增加。
health
生命值
僅Java版
普通玩家會在0~20之間。代表玩家擁有紅心數量的兩倍。在玩家第一次改變血量前會顯示為0。額外的血或者傷害吸收的血也會計算在血量中,也就是説當獲得了傷害吸收或者生命提升的信標效果後生命值可以超過20。
xp
經驗值
僅Java版
對應玩家擁有的經驗值。
level
等級
僅Java版
對應玩家當前的經驗等級。
food
飽和度
僅Java版
在0~20之間,代表玩家擁有的飽和度。在玩家第一次改變飽和度前會顯示為0。
air
空氣值
僅Java版
在0~300之間;代表潛水的玩家所存餘的空氣,對應玩家的空氣NBT標籤。
armor
盔甲值
僅Java版
在0~20之間;代表玩家擁有的盔甲值。在玩家第一次更換盔甲前會顯示為0。
表格信息來源 [1] 
“顯示的名稱”指這個計分項目對外顯示的名稱。
  • remove的作用是刪除一個計分項目。刪除時,只需要填上計分項目的名稱即可(格式見下一個一級目錄)。
  • list的作用是列出已創建的計分項目,包括顯示的名字。
  • setdisplay的作用是設置一個計分項目顯示的位置。顯示的位置有三種,分別是belowName、sidebar和list。belowname是在玩家的名稱牌之下,在他們的頭之上,於記分項的顯示名稱(display name)後面顯示分數。在10個方塊後面、玩家潛行時隱藏。在單人遊戲中不可見。;sidebar是在屏幕的右側顯示。在列表的最上方顯示記分項的顯示名稱(display name),並顯示玩家的高分榜。值得注意的是,即使玩家離線,如果在該記分項下存在一定分數也會在"側邊欄"中進行顯示,並且沒有痕跡的玩家也不會被顯示。除此之外,以#開頭的偽造的玩家名稱在任何情況下都不會在側邊欄可見。;list是顯示在玩家列表中以黃色文字在玩家名稱後顯示分數信息(默認為 Tab 鍵),並不會顯示記分項名稱。注意,每個位置只能放一個計分板。 [1] 
players
players在遊戲中的翻譯為玩家,作用是控制玩家的分數。該分支又分為list、add、remove、set和reset。
  • list是列出某個玩家的所有計分板他所擁有的分數。
  • add是增加某個玩家的某項計分板的分數,在後面有一個NBT標籤,用於根據玩家身上的NBT標籤加分,比如當目標手持某物品時加分 [3] 
  • remove是減少某位玩家的某個計分板的分數,在後面也有一個NBT標籤,也可以根據玩家身上的NBT標籤減分,比如當目標手持某物品時減分 [3] 
  • set是設置玩家某計分項的分數,需要填入玩家ID、要設置的計分項目名稱和設置的分數。在後面還有一個NBT標籤,還是可以根據玩家身上的NBT標籤設置分數,比如當目標手持某物品時設置為多少分。
  • reset是重置某個玩家的計分板,後面的“項目名字”可填可不填。填了就是隻重置該項計分板玩家所擁有的分數,不填就是重置所有的計分板玩家所擁有的分數。
  • operation是將某兩個的某計分板項目的分數進行計算,可以使用+(相加)、-(相減)、*(相乘)、/(相除)和=(複製)。
  • test是檢測某位或多位玩家的某個計分項目的分數是否在指定範圍內,如果是,則成功,反之,失敗。
teams
teams在遊戲中的翻譯為隊伍,有分為list、add、remove、empty、join、leave和option。
  • list是列出所有已創建的隊伍及顯示的名稱。
  • add是創建一個隊伍,需要填入“隊名”和“顯示的名字”(跟創建一個計分項目差不多)。
  • remove是刪除一個隊伍,需要填入“隊名”。
  • join是加入一個隊伍,需要填入要加入的隊伍名和加入的玩家(不填即為自己)。
  • leave是退出隊伍,需要填入退出的玩家ID(不填即為自己)。
  • empty是將某隊的所有玩家退出該隊伍,需要填入隊名。
  • option是設置一個隊伍,分為friendlyfire、color和seeFriendlyInvisibles。在設置時,需要先填入隊名。friendlyfire翻譯是誤傷的意思,數值有true和false,意思是開和關。color是設置隊伍的顏色,可以按Tab鍵選擇顏色。seeFriendlylnvisibles是設置是否可以看到自己隊伍的人隱身,它的數值有true和false,true則是可見,false則是關閉可見。
信息來源 [3] 

計分板PE

PE的計分板功能相對於PC來説,比較少。PE的計分板(scoreboard)分為objectives和players。除了比java版少了大部分準則,其他的基本一樣。

計分板格式

objectives分支格式
list:/scoreboard objectives list
remove:/scoreboard objectives remove <計分項目名稱>
add:/scoreboard objectives add <計分項目名稱> <計分項目類型> [顯示的名稱]
setdisplay:
PC版 /scoreboard objectives setdisplay <顯示位置> [顯示的計分項目名稱] [排序方法]
如果不打名稱,會刪除在那個位置顯示的計分項目。
(注:“<>”是必須要填,“[]”是可以不用填)
players分支格式
set:/scoreboard players set <玩家名稱> <要設置分數的計分項目名稱> <設置的分數> [NBT標籤]
add:/scoreboard players add <玩家名稱> <要增加分數的計分項目名稱> <增加的分數> [NBT標籤]
remove:/scoreboard players remove <玩家名稱> <要減去分數的計分項目名稱> <減去的分數> [NBT標籤]
reset:/scoreboard players reset <玩家名稱> [要重置的項目名稱]
list:/scoreboard players list <玩家名稱>
test:/scoreboard players test <玩家名稱> <要檢測的計分項目名稱> <最小值> <最大值>
operation:/scoreboard players operation <玩家1名稱> <要計算的計分項目> <計算方式> <玩家2名稱> <要計算的計分項目>
random:/scoreboard players random <玩家> <計分項目> <隨機數的最小值> <隨機數的最大值>
(注:“<>”為必須要寫,“[]”為可以不寫)
teams分支格式(僅PC版)
list:/scoreboard teams list
add:/scoreboard teams add <隊名> [顯示的名字]
remove:/scoreboard teams remove <隊名>
join:/scoreboard teams join <隊名> [玩家ID]
玩家id不寫為自己
leave:/scoreboard teams leave [玩家id]
empty:/scoreboard teams empty <隊名>
(注:“<>”為必須要寫,“[]”為可以不寫)
option分分支格式
/scoreboard option <隊名> <數值>
下面格式的前半部分重複的(是上面的格式)用“......”來表示。
/...... friendfire <true|false>
/...... color <顏色英文>
/......eeFriendlyInvisibles <true|false>
格式信息來源 [2] 

計分板發展歷史

Java版
1.5
13w04a
加入了計分板
13w05a
加入了隊伍相關功能
1.7.2
13w36a
加入了統計相關記分項準則
1.8
14w02a
除了玩家外的實體也能加入隊伍並擁有記分項分數了
14w06a
加入了trigger隊伍擊殺相關記分項準則
加入了/scoreboard players enable
"*" 可以用作玩家名稱參數代表所有正被記分板追蹤的玩家了
為/scoreboard players reset加入了 "objective"參數
統計記分項準則使用ID名而不使用ID了
加入了achievement.overpowered記分項準則
14w07a
加入了/scoreboard players operation與/scoreboard players test
以"#"開頭的虛擬玩家的分數不再顯示於側邊欄
加入了指定隊伍的側邊欄顯示位置
加入了nametagVisibility隊伍選項
14w10a
加入了deathMessageVisibility隊伍選項
為/scoreboard players set,/scoreboard players add,與/scoreboard players remove加入了dataTag參數
加入了stat.crouchOneCm,stat.sprintOneCm,與stat.timeSinceDeath記分項準則
14w25a
為/scoreboard players operation加入了=,<,與>
14w29a
玩家/實體在側邊欄名字的第二順序依照字母表儲存
14w30a
加入了stat.talkedToVillager與stat.tradedWithVillager記分項準則
?
為/scoreboard players operation加入了><
1.8.2
加入了cauldronFilled,stat.cauldronUsed,stat.armorCleaned等記分項準則
1.9
15w32a
加入了stat.sneakTime記分項準則
15w32b
加入了/scoreboard players tag
加入了xp,food,與air記分項類型
15w33a
加入了stat.pickup與stat.drop記分項準則
加入了 thearmor,level記分項類型
15w36a
加入了collisionRule
1.13
pre7
加入了/scoreboardobjectives modify
1.13.1
18w31a
記分板的計算符號%=從%被更改為Math.floorMod
基岩版
1.7
beta 1.7.0.2
加入了記分板部分功能
加入了dummy準則
網易PE版
2018聖誕節更新
加入了計分板的部分功能
加入了dummy準則
表格信息來源 [1] 

計分板實際作用

作用1:計分板計時器
計分板計時器相對於傳統的紅石循環計時器佔地面積更小,更簡單。
例子一:10秒倒計時
主要原理:
紅石循環1秒,命令方塊就被激活一次,減少(remove)1分數。當到達0分數時,循環命令塊檢測(test)到,輸出信號,重新將該虛擬玩家的分數設置(set)為10,這樣循環下去。
例子二:計分板時鐘
主要原理:
紅石循環1秒,命令方塊就被激活一次,給“秒”增(add)加1分數。當到達60分數(test)時,將“秒”設置(set)回0,給“分”增加(add)1分數。當“分”達到60時(test),將“分”設置(set)回0,給“時”增加(add)1分數。當“時”達到24時(test),將“時、分、秒”重新設置(set)回0。
作用2:計分板商店
計分板貨商店比clear商店要好的地方在於不會吞幣,不會佔用揹包空間。(僅對於購買而言)
主要原理:
如果玩家需要購買貨物,可以首先檢測(可依照“/scoreboard test 玩家名 記分板名稱 商品價格”這一格式)最近的玩家貨幣是否達到了單價,如果是,則發送紅石信號,激活下一個命令塊。然後刪除(/scoreboard remove 玩家名 記分板名稱 商品價格)最近的玩家商品單價的分數,最後給予(可使用“/give”這一指令)最近的玩家商品。 [4] 
相應的,如果玩家需要要賣出自己的東西,也可以使用類似的方式,不過傳統的漏斗商店效率低(漏斗每秒只能傳輸2.5個物品,在貨物數量大的時候低效是尤為顯著的),此時可以借用部分clear商店的思路:首先建立一個循環型命令方塊,以每秒10個的速度清除(可使用“/clear 玩家名 商品名 特殊值 1”這一指令防止吞貨物),而後每吞掉一個貨物,就為這個玩家加上指定數量的分數(也就是貨幣,可以用指令“/scoreboard add 玩家名 記分板名稱 商品價格),這樣只需要2個命令方塊便可以實現售賣型商店。但請注意,為防止玩家貨物賣光後(即/clear指令無法執行時)仍在為玩家添加貨幣,一定要把第二個命令方塊設置為“有條件的”(即必須前一個命令方塊內指令可以成功執行時才執行該命令方塊內的指令)
參考資料