首頁 游戲

Minecraft指令手冊

第一百零六章 屬性修飾符 下-最終倍乘和/attribute指令

Minecraft指令手冊 你好MC 2211 2020-05-08 20:19:05

  在上一章,我們了解了Operation的『屬性增量』和『倍率增量』計算模式,還有一個『最終倍乘』。那什么是最終倍乘呢?

  『最終倍乘』是這樣計算的:

  R=C?×(1+A?)×(1+A?)×......×(1+A?)

  C?=C?×(1+a?+a?+.....+a?)

  C?=C+m?+m?+.....+m?

  R······最終結(jié)果

  A??...?······計算模式為『最終倍乘』的修飾符的Amount值

  a??...?······計算模式為『倍率增量』的修飾符的Amount值

  m??...?······計算模式為『屬性增量』的修飾符的Amount值

  C?······『倍率增量』計算結(jié)果

  C?······『屬性增量』計算結(jié)果

  舉個例子,假設(shè)現(xiàn)在有這些修飾符:

  {AttributeName:'generic.max_health',Amount:5.0,Operation:0}

  {AttributeName:'generic.max_health',Amount:3.0,Operation:0}

  {AttributeName:'generic.max_health',Amount:2.0,Operation:1}

  {AttributeName:'generic.max_health',Amount:1.5,Operation:1}

  {AttributeName:'generic.max_health',Amount:1.1,Operation:2}

  {AttributeName:'generic.max_health',Amount:0.1,Operation:2}

  當這些修飾符在一個玩家身上全部生效,且該名玩家的最大生命值僅僅受這些修飾符影響時,這名玩家的生命值上限將會從20.0點變成291.06點。這個『291.06』是這樣得出來的:

  [(20+5+3)×(1+2+1.5)]×(1+1.1)×(1+0.1)

  ↓先計算『屬性增量』↓

  [28×(1+2+1.5)]×(1+1.1)×(1+0.1)

  ↓再計算『倍率增量』↓

  126×(1+1.1)×(1+0.1)

  ↓最后計算『最終倍乘』↓

  291.06

  這就是『最終倍乘』,到這Operation的全部內(nèi)容也就講完了。

  但這不代表本章到此結(jié)束。還記得上一章提到的/attribute指令嗎?讓我們來了解下這指令如何使用:

  /attribute

  作用:可以更改和讀取屬性

  存在版本:Java1.16-今

  需要權(quán)限等級:Java-2

  需要作弊:是

  格式:

  /attribute <目標玩家/生物><屬性>[base] get [乘數(shù)]

  \\返回指定屬性的『總值』。如果指定了base,則返回『基值』\\

  /attribute <目標玩家/生物><屬性> base set <值>

  \\將指定屬性的『基值』設(shè)定為指定的值\\

  /attribute <目標玩家/生物><屬性> modifier add <UUID><名字><值>(add|multiply|multiply_base)

  \\如果沒有UUID相同的屬性修飾符,就給指定屬性添加上屬性修飾符\\

  /attribute <目標玩家/生物><屬性> modifier remove <UUID>

  \\移除指定屬性的具有指定UUID的修飾符\\

  /attribute <目標玩家/生物><屬性> modifier value get <UUID>[乘數(shù)]

  \\返回具有指定UUID的屬性修飾符的值\\

  使用這條指令可以很方便地修改實體的屬性,以及為實體添加上屬性修飾符。只不過由于/attribute指令是直接給實體添加上修飾符,沒有物品作為載體,所以在這邊添加的修飾符無需指定『欄位』參數(shù)。

  讓我們來試一試,直接修改屬性的值。比如,把我們的生命值上限改成40點:

  /attribute @s generic.max_health base set 40.0

  →實體xxx的屬性最大生命值的基值已設(shè)置為40.0

  很好,這下子我們就有40點生命值了。只不過要注意,玩家的屬性會在死亡后重置,也就是說如果你死一次,最大生命值就會變回20點。

  get子命令可以獲得我們屬性的總值或基值。總值也就是經(jīng)過修飾符修飾后最終的值,基值也就是沒有修飾過的初始值。比如:

  /attribute @s generic.max_health base get

  由于上面我們已經(jīng)把基值改成了40.0,因此這將會返回:

  →實體xxx的屬性最大生命值的基值為40.0

  等等,這個『乘數(shù)』參數(shù)有什么用?讓我們試一試:

  /attribute @s generic.max_health base get 2.0

  →實體xxx的屬性最大生命值的基值為40.0

  不難發(fā)現(xiàn),這個乘數(shù)參數(shù)沒有任何的用處.......呃,其實有用的。

  用在哪呢?execute的store子命令:

  ①/execute store result score @s health_max run attribute @s generic.max_health base get

 ?、?execute store result score @s health_max run attribute @s generic.max_health base get 2.0

  指令①的返回值為正常的40.0,也就是將我們自己在health_max計分項上的值改為40。指令②雖然給我們的消息是40.0,但實際返回的是80.0,計分項上的分數(shù)也會改為80。

  所以,『乘數(shù)』參數(shù)并不是沒有用,而是它的用處在于影響指令的返回值。

  修改屬性還是很簡單的。那使用/attribute給實體添加修飾符呢?讓我們再試一試:

  /attribute @s generic.max_health modifier add 1-1-1-1-1 A 1.0 add

  →為實體xxx的屬性最大生命值添加了修飾符00000001-0001-0001-0001-000000000001

  在上面的指令中,使用了『modifier』子命令的『add』子命令來添加一個修飾符,參數(shù)『1-1-1-1-1』指定了該修飾符的UUID,『A』指定了該修飾符的名稱,『1.0』指定了該修飾符的值,『add』指定了該修飾符的計算模式是『屬性增量』。其中得講一下的就是這個UUID參數(shù)。

  在這邊的UUID參數(shù),填寫的是『帶連字符的十六進制UUID』。這種形式的UUID很常見,它長下面這樣:

  xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx

  詳細內(nèi)容會在第一百一十章講到,在這邊你只需要把這東西當做填寫五個用連字符『-』連在一起的整數(shù)即可:

  1-1-1-1-1

  上面的『add』參數(shù)所在的位置,也可以填寫multiply_base(倍率增量)和multiply(最終倍乘),來改變運算模式。

  現(xiàn)在,讓我們看看的生命值上限是不是高達41.0:

  /attribute @s generic.max_health base get

  →實體xxx的屬性最大生命值的基值為40.0

  ?怎么還是40.0?啊,是用錯了,這獲取到的是基值,應(yīng)該把『base』參數(shù)去掉:

  /attribute @s generic.max_health get

  →實體xxx的屬性最大生命值的值為41.0

  很好,所以你現(xiàn)在會用/attribute給實體添加屬性修飾符了嗎?

  remove和value get兩個子命令的使用很簡單,讓我們試一試:

  /attribute @s minecraft:generic.max_health modifier value get 1-1-1-1-1 2.0

  →實體xxx的屬性最大生命值中修飾符00000001-0001-0001-0001-000000000001值為1.0

  上面這條指令會返回這個修飾符的值。并且由于指定了乘數(shù)為『2.0』,這條指令的返回值還會是『2.0』(1.0×2.0)。

  /attribute @s minecraft:generic.max_health modifier remove 1-1-1-1-1

  →為實體xxx的屬性最大生命值移除了修飾符00000001-0001-0001-0001-000000000001

  這樣子我們就刪掉了剛剛給我們自己添加的屬性修飾符,生命值上限回到了40.0。

  本章到此為止。

  附錄:/attribute歷史

  Java

  1.16——加入了/attribute

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