首頁(yè) 游戲

Minecraft指令手冊(cè)

第四十二章 players——管理變量(分?jǐn)?shù))

Minecraft指令手冊(cè) 你好MC 965 2020-01-23 18:41:22

  在上一章,我們了解了如何管理一個(gè)計(jì)分項(xiàng)。在一個(gè)計(jì)分項(xiàng)中存在有多個(gè)玩家(或非玩家),每個(gè)玩家(或非玩家)都有一個(gè)屬于自己的變量(分?jǐn)?shù))。那么我們?cè)撊绾喂芾磉@些變量(分?jǐn)?shù))呢?

  這就需要用到scoreboard的players子命令,即/scoreboard players ...

  /scoreboard players

  作用:控制記分板上計(jì)分項(xiàng)的變量(分?jǐn)?shù))

  格式:

  /scoreboard players ...

  ... add <目標(biāo)選擇器><計(jì)分項(xiàng)><增加的分?jǐn)?shù)>[NBT(僅Java1.13之前)]——將所選玩家(或非玩家)在指定計(jì)分項(xiàng)中的分?jǐn)?shù)增加指定值

  ... remove <目標(biāo)選擇器><計(jì)分項(xiàng)><減少的分?jǐn)?shù)>[NBT(僅Java1.13之前)]——將所選玩家(或非玩家)在指定計(jì)分項(xiàng)中的分?jǐn)?shù)減少指定值

  ... set <目標(biāo)選擇器><計(jì)分項(xiàng)><分?jǐn)?shù)>[NBT(僅Java1.13之前))]——將所選玩家(或非玩家)在指定計(jì)分項(xiàng)中的分?jǐn)?shù)設(shè)置為指定值

  ... reset <目標(biāo)選擇器>[計(jì)分項(xiàng)]——將所選玩家(或非玩家)在記分板上的全部數(shù)據(jù)(或指定計(jì)分項(xiàng)上的數(shù)據(jù))完全清除(注意不是清零,而是清除)。目標(biāo)選擇器可用*代指所有玩家和非玩家。

  ... list [目標(biāo)選擇器]——列出所有正在被記分板追蹤的玩家(或非玩家)。如果指定了玩家(或非玩家),那么將會(huì)列出選取的玩家(或非玩家)們?cè)谟浄职迳系乃袛?shù)據(jù)。

  ... get <目標(biāo)選擇器><計(jì)分項(xiàng)>——[僅Java1.13及以上版本]獲取指定單個(gè)玩家(或非玩家)在指定計(jì)分項(xiàng)上的分?jǐn)?shù)

  ... test <目標(biāo)選擇器><計(jì)分項(xiàng)><最小值>[<最大值>]——[僅Java1.12.2及之前和基巖版]檢測(cè)所選玩家(或非玩家)在指定計(jì)分項(xiàng)的分?jǐn)?shù)是否大于等于最小值并且小于等于最大值。最小值和最大值均可使用*來(lái)代指-2147483648(最小值使用*)或2147483647(最大值使用*或不填)。

  ... operation <目標(biāo)選擇器1><運(yùn)算計(jì)分項(xiàng)1><操作><目標(biāo)選擇器2><運(yùn)算計(jì)分項(xiàng)2>——將目標(biāo)選擇器1參數(shù)中所選玩家(或非玩家)的指定計(jì)分項(xiàng)的分?jǐn)?shù)與目標(biāo)選擇器2參數(shù)中所選玩家(或非玩家)的指定計(jì)分項(xiàng)的分?jǐn)?shù)進(jìn)行一些操作

  ... enable <目標(biāo)選擇器><觸發(fā)器類計(jì)分項(xiàng)>——[僅Java版]允許所選玩家(或非玩家)對(duì)指定觸發(fā)器類計(jì)分項(xiàng)使用一次/trigger指令。

  ... random <目標(biāo)選擇器><計(jì)分項(xiàng)><最小值><最大值>——[僅基巖版]將所選玩家(或非玩家)的指定計(jì)分項(xiàng)分?jǐn)?shù)隨機(jī)設(shè)置為設(shè)定范圍內(nèi)的任何整數(shù)值。

  通過(guò)players子命令,我們可以set(設(shè)置)、add(添加)、remove(刪除)、list(列出)、get(獲?。?、reset(重置)、operation(操作)、test(檢測(cè))、random(隨機(jī))和enable(觸發(fā)器)。這些東西的內(nèi)容很多,我們今天就只研究基本的,也就是上面我們提出的問(wèn)題:如何管理變量(分?jǐn)?shù))。

  管理變量,就得先有變量,不然管理啥呢?我們知道,一個(gè)玩家(或非玩家)被一個(gè)計(jì)分項(xiàng)計(jì)入后最多只能有一個(gè)屬于自己的變量(分?jǐn)?shù))。而一個(gè)計(jì)分項(xiàng)創(chuàng)建之初是什么也沒有計(jì)入的,也就是說(shuō)這個(gè)計(jì)分項(xiàng)沒有一個(gè)變量,空空如也。

  為了給這個(gè)計(jì)分項(xiàng)添加一個(gè)變量,也就是計(jì)入一個(gè)玩家(或非玩家),我們就需要用到add這個(gè)子命令:

  ... add <目標(biāo)選擇器><計(jì)分項(xiàng)><增加的分?jǐn)?shù)>[NBT(僅Java1.13之前)]

  增加的分?jǐn)?shù)至少為0。當(dāng)然,就算為0,這也算是計(jì)入該計(jì)分項(xiàng)了。

  實(shí)際上,使用remove、operation和set也可以達(dá)到同樣的計(jì)入效果。

  比如,你要把你自己計(jì)入到“金錢”計(jì)分項(xiàng)中,就需要:

  /scoreboard players add/remove/set @s 金錢 0

  如果你將一個(gè)還未計(jì)入“金錢”計(jì)分項(xiàng)的玩家的分?jǐn)?shù)增加5會(huì)怎樣?

  其實(shí)不會(huì)怎么樣。正如正常人的一般思維,剛剛計(jì)入計(jì)分項(xiàng)的玩家(或非玩家)其分?jǐn)?shù)是從0開始算起。也就是說(shuō),給那名玩家添加5金錢實(shí)際上會(huì)先讓他計(jì)入該計(jì)分項(xiàng),此時(shí)他的分?jǐn)?shù)為0,然后再將他的分?jǐn)?shù)+5變成5。

  這里的“金錢”計(jì)分項(xiàng)是作者自己編的,你想要運(yùn)行上面的例子就得先自己創(chuàng)建一個(gè)叫金錢的計(jì)分項(xiàng)。

  計(jì)入之后,我們?cè)撊绾螠p少分?jǐn)?shù)呢?這就要用到remove(刪除):

  ... remove <目標(biāo)選擇器><計(jì)分項(xiàng)><減少的分?jǐn)?shù)>[NBT(僅Java1.13之前)]

  比如我想要將玩家“張三666”在“金錢”計(jì)分項(xiàng)中的分?jǐn)?shù)減少10,這就需要執(zhí)行:

  /scoreboard players remove 張三666 金錢 10

  假設(shè)他原本的分?jǐn)?shù)是3。執(zhí)行該指令過(guò)后,他的分?jǐn)?shù)就變?yōu)榱?7。

  需要注意。記分板的分?jǐn)?shù)其值是個(gè)Int整形類變量,也就是其值的范圍只能是-2147483648~2147483647。如果一個(gè)玩家的分?jǐn)?shù)已經(jīng)是-2147483648,你再減去個(gè)1,他的分?jǐn)?shù)就會(huì)變?yōu)?147483647。關(guān)于為什么會(huì)這樣,以及Int整形究竟是個(gè)什么,你以后就會(huì)了解到。

  如果你對(duì)此很感興趣,那么你可以跳到后面135~140章嘗試你是否能夠理解。

  分?jǐn)?shù)可以增加和減少,當(dāng)然也可以快速設(shè)定為指定的值。這時(shí)候就要用到set:

  ... set <目標(biāo)選擇器><計(jì)分項(xiàng)><分?jǐn)?shù)>[NBT(僅Java1.13之前)]

  設(shè)置成功后,該變量的數(shù)將會(huì)變成設(shè)置的分?jǐn)?shù)。比如我想要將“張三666”的“金錢”設(shè)為2,就可以:

  /scoreboard players set 張三666 金錢 2

  你可能注意到了,在本章開頭列出的格式中,還有一個(gè)reset(重置)。這個(gè)reset可和set沒多大關(guān)系,因?yàn)閞eset是重置(更準(zhǔn)確的說(shuō)是清除數(shù)據(jù))。其格式如下:

  ... reset <目標(biāo)選擇器>[計(jì)分項(xiàng)]

  舉個(gè)例子,假設(shè)我們運(yùn)行了下面的指令:

  /scoreboard players reset 張三666

  你就會(huì)驚奇地發(fā)現(xiàn)“張三666”的名字從右邊側(cè)欄的“金錢排行榜”中消失了。這并不是說(shuō)他被擠出了該排行榜,或是他的分?jǐn)?shù)被重置為了0,而是他的所有在記分板上的數(shù)據(jù)全部沒掉并且記分板也不再跟蹤他,直到他重新計(jì)入到某個(gè)計(jì)分項(xiàng)中。

  這哪里是reset啊,這簡(jiǎn)直是clear啊!

  如果你不信,你可以試試/scoreboard list 張三666(列出張三666在記分板上的數(shù)據(jù))或/scoreboard get 張三666(獲取張三666的分?jǐn)?shù)),看看你能不能再次找到他的數(shù)據(jù)。

  這確實(shí)太狠了。如果你只想clear掉他在“金錢”計(jì)分項(xiàng)中的數(shù)據(jù),在“張三666”后面加上“金錢”即可,即:/scoreboard players reset 張三666 金錢

 ?。▽?shí)際上還可以更狠。目標(biāo)選擇器使用*可以代指所有正在被追蹤的目標(biāo),也就是說(shuō)/scoreboard players reset *可以完全清除整個(gè)記分板上所有玩家和非玩家的數(shù)據(jù))

  你現(xiàn)在可以嘗試弄一個(gè)你自己的虛擬貨幣用于服務(wù)器中。

  這個(gè)貨幣的名稱自己想。作者想的是:$。

  沒錯(cuò),名字允許你填$等符號(hào)。我們就以這個(gè)符號(hào)為名字舉例子,輸入并運(yùn)行下面的指令:

  /scoreboard objectives add $ dummy §a$

  (Java版:

  /scoreboard objectives add $ dummy {“text“:“$“,“color“:“yellow“})

  你就成功創(chuàng)建了一個(gè)叫做$的虛擬貨幣!

  作者現(xiàn)在沒錢,所以作者我要給自己錢:

  /scoreboard players add @s $ 1000000

  OK,現(xiàn)在作者有100萬(wàn)美元了?。ó?dāng)然是游戲里)。

  現(xiàn)在你可以嘗試做一個(gè)記分板商店。我們運(yùn)用clear指令和scoreboard指令結(jié)合即可建成一個(gè)收購(gòu)商店(使用物品換取虛擬幣)。而使用scoreboard和give指令可以建成一個(gè)用虛擬幣購(gòu)買實(shí)物的商店。

  但是,計(jì)分項(xiàng)的分?jǐn)?shù)可以是負(fù)數(shù)!我們既然要搞虛擬貨幣,就要防止這種負(fù)數(shù)欠賬的事情發(fā)生。

  此時(shí),test子命令就派上用場(chǎng)了!

按 “鍵盤左鍵←” 返回上一章  按 “鍵盤右鍵→” 進(jìn)入下一章  按 “空格鍵” 向下滾動(dòng)
目錄
目錄
設(shè)置
設(shè)置
書架
加入書架
書頁(yè)
返回書頁(yè)
指南