UU看書

第四十三章 players——記分板商店

天才一秒記住【UU看書】地址:www.uukanshu.co

test,之前見過,意為“探測”、“檢測”。透過test,可以探測一個變數的分數是否在一個區間內。我們就得透過它,來防止欠賬的事情發生。

(注意,test子命令在Java113更新中被移除。現在僅Java1122及以下版本和基岩版擁有該子命令)

現在已經有了“”這個貨幣,並且作者有100萬(遊戲裡)。假設現在有一個物品,價值120萬(什麼東東這麼貴)。如果這個記分板商店就是一個scoreboard—players—remove加上give,那麼作者也會買成功,但是變成了20萬(欠了20萬美元)。

但是,Minecraft裡可沒有自帶還債機制,所以作者能夠一直扣下去。

為了防止這種事情的發生,我們就需要用到test子命令。其格式是:

testlt目標選擇器gtlt計分項gtlt最小值gtlt最大值gt

注意,在Java版有test的時候,格式確實如上,“最大值”引數是選填的。但在基岩版中,“最大值”引數是必填的。

假設我們要使用test檢測玩家“李四250”是否能夠購買這個120萬美元的東西,我們就需要執行指令:

scoreboardplayerstest李四2501200000

其中,最大值被替換為了星號。這個“星號”是什麼意思呢?

當最小值填時,代指2147483648;當最大值填時,代指2147483647。

也就是說,這個scoreboardplayerstest李四2501200000,實際上是scoreboardplayerstest李四25012000002147483647。

所以這條指令的意思是:

檢測玩家“李四250”在計分項上的分數是否大於等於1200000(並小於2147483647)。

如果成功,那麼遊戲會提示“分數xxx在1200000到2147483647範圍內”。

如果失敗,則會在“在”字前加個“不”字,並將整個訊息的顏色改為紅色。

在命令方塊中檢測成功也會輸出訊號,進而啟用接下來的命令方塊。

我們記分板商店的原理之一就是這個。命令方塊如下襬放即可做成簡單的記分板商店:

A→B→C

A(脈衝,不受制約無條件,紅石控制需要紅石):

scoreboardplayerstestplt物品單價gt

B(連鎖,條件制約有條件的,保持開啟始終活動):

scoreboardplayersremoveplt物品單價gt

C(連鎖,條件制約有條件的,保持開啟始終活動):

giveplt物品idgt1

這是最簡單的記分板商店,其購買流程如下:

玩家按下拉桿啟用A→A執行指令,檢測玩家是否能夠購買→如果能,啟用B如果不能,結束購買→B執行指令,扣除玩家虛擬幣,並啟用C→C執行指令,給予物品給玩家→購買成功

這種記分板商店還有許多待完善之處:

①由於使用p選取最近玩家,B和C可能將指令執行到錯誤的玩家上

②遠處的玩家也可以碰到拉桿,但命令方塊可能不會將指令執行到該玩家身上

③成功和失敗都沒有訊息提示

解決辦法也很簡單:

一、目標選擇器加上x、y、z引數指定執行中心,加上r或dx、dy、dz指定執行範圍。

二、將每個購買專案單獨做成一間1×1的鐵門間,門內放測重壓力板(如有裝mod,可以使用夸克模組內的黑曜石壓力板,更加安全)。

三、可以在A前面再加上兩個命令方塊D和E,在C後面加上F,即D→E→A→B→C→F。把A改為連鎖,不受制約無條件,保持開啟始終活動。D、E和F如下:

D(脈衝,不受制約無條件,紅石控制需要紅石):

scoreboardplayerstestplt物品單價1gt

E(連鎖,條件制約有條件的,保持開啟始終活動):

tellrawp“text““購買失敗“,“color““red“

F(連鎖,條件制約有條件的,保持開啟始終活動):

tellrawp“text““購買成功“,“color““green“

其原理就是在檢測檢測玩家是否能夠購買前檢測玩家是否不能購買。如果確實不能,發出訊息“購買失敗”。以及在玩家購買成功後傳送“購買成功”的訊息。

注意,在這裡,D和E不能放在A、B、C、F之後,即不能:

A→B→C→F→D→E

這主要是因為這是就變成了在檢測玩家是否能購買後再檢測一遍是否不能購買。不要小看這一前一後的問題,如果這名玩家能購買,購買成功後就不能再購買一個了,那麼這個商店就會先後發出“購買成功”、“購買失敗”兩條訊息。

現在,你知道如何做一個最基礎的記分板商店了吧?這東西在網易租貸服中可大有用處。(畢竟網易租貸服可加不了什麼mod或外掛,只能靠指令)

記分板簡要歷史:

Java

15——加入了記分板

172——計分項的準則現在可以使用統計選單中的資料了

18——現在非玩家也能被記分板追蹤並擁有分數了;為players下的reset子命令加入了“計分項”引數;統計類準則可以使用ID名了;加入了隊伍擊殺相關準則以及其他的一堆準則;為players下的add、set和remove子命令加入了NBT引數;為operation加入了、gt、lt和gtlt操作。

182——又加入了一堆準則

19——加入了statsneakTime、xp、food、armor、level和air等準則。

113——準則大改;加入了scoreboardobjectivesmodify子命令。

基岩版

170——加入了被閹割的記分板和dummy準則。

如遇章節錯誤,請點選報錯(無需登陸)

新書推薦

全民遠征:副職也能帶贏全人類 傳奇幽影 惡魔系統之坑坑更有愛 訓練嗎朋友,玩命的那種 方舟日記 林夕煜宸妖夫在上免費閱讀全文 無限入侵,一人一刀滅一界