UU看書

第六十一章 /stats與指令的輸出結果

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

如果我們想要僅憑指令就弄出起床戰爭,別的先不說,單是檢測玩家人數是否達標就有點難搞。

我們在第三十六章知道了一條檢測實體的指令——testfor,也知道了testfor在命令方塊執行成功後輸出的紅石訊號強度等於探測到的實體數量。但是,如果僅僅靠輸出的紅石訊號做判斷,最大也就只能準確判斷014個,大於14的數量就無法判斷了。這時候我們該怎麼辦呢?

想一想,能否直接把testfor輸出的資訊同步到記分板上呢?

答案是肯定的。Mojang給了我們一條指令用於解決這個問題:stats

stats(僅存在於Java版113更新前,該指令已於Java113更新中移除)

作用:透過指令執行的結果來更改記分板上的分數

需要許可權等級:Java2

需要作弊:是

格式:

statsblocklt座標gtsetlt需要追蹤的結果型別gtlt被記分板追蹤的目標:目標選擇器gtlt計分項gt——跟蹤並獲取某個方塊執行指令的指定型別的結果,根據結果修改記分板上的分數

statsblocklt座標gtclearlt需要取消追蹤的結果型別gt——取消跟蹤某個方塊執行指令的指定型別結果

statsentitylt實體:目標選擇器gtsetlt需要追蹤的結果型別gtlt被記分板追蹤的目標:目標選擇器gtlt計分項gt——跟蹤並獲取指定實體執行指令的指定結果,根據結果修改記分板上的分數

statsentitylt實體:目標選擇器gtclearlt需要取消追蹤的結果型別gt——取消跟蹤指定實體執行指令的指定結果

那麼stats指令到底該如何使用呢?

指令的輸出結果有五種型別:

①指令執行成功的次數(SuccessCount)

②指令的查詢結果(QueryResult)

③受到該指令影響的物品數量(AffectedItems)

④受到該指令影響的實體數量(AffectedEntities)

⑤受到該指令影響的方塊數量(AffectedBlocks)

我們使用stats指令時,必須要指定我們到底想要讓stats指令獲取什麼型別的執行結果,因為每一種執行結果的值都可能不一樣。

比如使用clear指令檢測玩家揹包內有多少個指定物品時,如果我們獲取的是SuccessCount結果型別,那麼只會是1或0;而如果我們獲取的是AffectedItems,獲取到的就是物品的數量。

使用stats時,不僅要指定需要獲取什麼,還要指定兩個重要的東西:

①從哪兒獲取?

②輸出到哪兒?

stats指令可以跟蹤指定的方塊和實體來獲取執行在它們身上的指令的結果。看到“跟蹤”兩字沒有?沒錯,stats指令並不是立馬就獲取到執行指令的結果,而是先跟蹤指定的目標,比如一個命令方塊,只要這個命令方塊執行了指令,它就會將指令的結果輸出到指定的計分項當中。

stats指令會將得到的值輸出到指定的計分項並修改該計分項中指定目標的分數。比如stats獲取到的結果是13,它就會修改分數到13(除非指定的計分項是隻讀計分項)。

這就是stats的使用方法,看起來還是蠻簡單的。現在就讓我們實踐一下,熟悉一下具體的操作流程。

假設這是一個命令方塊,它位於座標12,24,81處——gt▦

我們要獲取整個伺服器現在一共有多少名玩家,首先就需要準備一個計分項以及一個正在被該計分項追蹤的目標。請注意,必須是在該計分項上有分數的目標,否則stats會無法修改分數(因為stats指令只能修改分數而不能新增追蹤目標)!

假設你已經準備好一個叫做information的計分項和一個正在被該計分項追蹤的虛假玩家players。現在,執行下面的指令:

statsblock122481setSuccessCountplayersinformation

此時遊戲會返回資訊:將SuccessCount項統計資訊儲存在了players的information上。這樣子寫可能會誤導一些玩家,實際上這時候才開始追蹤,並沒有開始獲取結果並修改記分板上的分數。

為了方便觀察,你可以把information計分項顯示在側邊欄或其他地方,然後在▦命令方塊處輸入:

testfora

最後拉下拉桿。假設此時線上玩家為3,你就會發現players的分數變成3了!

如果你拉下拉桿後伺服器又進入一名玩家,此時你再次執行命令方塊,你就會發現players的分數又變為4了!

使用起來是不是很簡單?別看用的時候很簡單,清理的時候可別搞錯了。

使用stats指令追蹤一個方塊或實體,如果我們沒有及時停止追蹤,遊戲就會一直追蹤下去!因此,請你最好在指令執行完成後再加一句:

statsblock122481clearSuccessCount

這句指令的意思是:停止追蹤▦命令方塊的SuccessCount類結果資訊

清除時請注意一點,結果型別一定要一樣!因為每一個追蹤項都是精細到結果型別的,結果型別填錯了就變成清理其他追蹤項,這點一定要注意!如果你忘記了結果型別,只能把五個型別全部清一遍(Mojang沒有提供查詢追蹤項的方式)。

這就是stats指令的用法。使用stats指令,你可以跟蹤獲取到方塊執行指令的結果、玩家執行指令的結果和作用在跟蹤目標上的execute子命令執行的結果,並根據這些結果修改記分板上的分數。

對了,使用stats時請注意一點,跟蹤的目標有沒有被其他正處於迴圈當中的execute指令影響到,如果有的話,獲取到的結果就會被汙染!!!

現在你會用stats了嗎?我們下一章見。

stats歷史

Java

18——加入了stats指令

113——移除了stats指令,改用更先進的execute儲存子命令。關於execute在Java113更新後的使用方式,我們下一卷會講到。

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

新書推薦

夢幻西遊,這暴擊好無解 網遊之王朝崛起 極限之路,游泳之神 無職重生 夢魘遊戲 網遊:這個盜賊明明超強卻過分謹慎 家裡的貓貓開口說話後