在村庄与掠夺更新后,每个交易项目的第一个收购项,也就是buy复合标签所规定的物品,其数量,也就是价格,会发生变化。所以我们有一个专门的公式来计算村民收购的第一个物品的最终数量,也就是价格的计算公式:
(此公式更新于2022年12月28日,仅适用于Java版)
当a≥0且V≥1时
e=-〔(5A + B + C - D - 5E)× p〕-〔((V-1)×0.0625+0.3)×m〕+f
y = clamp(〔a×p×m〕+m +e, 1 ,M)
当a<0且V≥1时
e=-〔(5A + B + C - D - 5E)× p〕-〔((V-1)×0.0625+0.3)×m〕+f
y = clamp( m +e, 1 , M )
当a≥0且V<1时
e=-〔(5A + B + C - D - 5E)× p〕+f
y = clamp(〔a×p×m〕+m +e , 1 , M )
当a<0且V<1时
e=-〔(5A + B + C - D - 5E)× p〕+f
y = clamp( m +e , 1 , M )
参数列表
a······该交易项目demand标签的值
f······该交易项目specialPrice标签在玩家打开交易界面之前的值
p······价格乘数
m······原价
y·······最终价格
e······该交易项目specialPrice标签的值
A······major_positive类言论强度
B······minor_positive类言论强度
C······trading类言论强度
D······minor_negative类言论强度
E······major_negative类言论强度
M······村民收购的第一个物品的堆叠上限
V······玩家的村庄英雄效果等级(V 1即无村庄英雄效果)
其中,作者自己定义的六角括号〔〕,代表此括号内的运算在得出结果后会被去除小数部分,只保留整数部分。比如〔18.5〕=18、〔-64.12〕=-65、〔0.1〕=0
上面的clamp(a,b,c)函数,则用来限制a介于b、c之间(b≤c)。比如:
clamp(34,1,3)=3
\\ 34超过了最大值3,所以输出3\\
clamp(12,8,88)=12
\\ 12介于8和88之间,所以还是输出12\\
clamp(-44,9,73)=9。
\\-44低于最小值9,所以输出9\\
你可能会感到疑惑:唉这个公式怎么和上一章的公式完全不一样啊?
这个问题很有趣。首先,上一章的公式仅仅只考虑了言论对价格的影响。仔细观察,你也会发现这里的公式中含有上一章的公式。那这有趣究竟在哪里呢?
上一章的公式来自Minecraft Wiki。在中文Minecraft Wiki的村民页面上,还有另一个价格计算公式。而这个公式,对于声望的计算,是完全不一样的!
y = m -〔(5A + B + C - D - 5E)× p〕
\\仅考虑言论的价格公式\\
y =〔a×p×m〕+〔p×D〕-〔p×C×10〕+e+m
a······该交易项目demand标签的值
p······价格乘数
e······该交易项目specialPrice标签的值
m······原价
C······trading类言论强度
D······minor_negative类言论强度
\\ Minecraft Wiki上的计算公式\\
于是,作者基于这两个公式,通过一些实验,总结出了上面的那个计算公式。
但不管如何,这个错误仍是一个较为严重的错误,因为它已经存在了很长时间,并有许多教程引用了这个公式,影响范围较大。
需要注意的是,上述公式都有涉及到言论系统,但言论系统目前(2022年12月28日)仅仅存在于Java版中,所以上述公式不一定适用于基岩版。
PS: 2022年12月4日,Minecraft Wiki的用户Nickid2018终于将百科的计算公式改了。新的计算公式如下:
e =声望影响的降价+村庄英雄效果影响的降价
y = clamp(m×〔1+a×p〕+e,1,M)
小主,这个章节后面还有哦,请点击下一页继续阅读,后面更精彩!