天才一秒记住【第一中文网】地址:www.dyzww.cc
t wiki的用户Nickid2018终于将百科的计算公式改了。新的计算公式如下:
e =声望影响的降价+村庄英雄效果影响的降价
y = clamp(mx〔1+axp〕+e,1,m)
a······该交易项目demand标签的值
p······价格乘数
e······该交易项目specialprice标签的值
m······原价
m······村民收购的第一个物品的堆叠上限
这个公式与上面作者自己得出的公式相差不大,但仍有一个可能的问题:
e(specialprice)的值的计算方式可能有误
要说明为什么有这个问题,我们得先了解一下specialprice的机制。
当一名玩家打开村民的交易界面时,游戏会计算每个交易项目的实际价格。这时候,游戏会先计算言论和村庄英雄效果的影响,并将它们的值加到每个交易项目的specialprice标签中。第二步,游戏才会根据demand等其他标签,综合计算出每个交易项目的值。在这个过程中,specialprice标签会加到计算的值中。第三步,也就是向玩家展示这些交易项目。最后,当玩家关闭村民的交易界面时,游戏会把每个交易项目的specialprice标签清零。
也就是说,如果要使得交易打折,specialprice的值必须要为负。
但是,如果根据minecraft wiki的计算方式,specialprice为负的情况只有一种可能:村民对于玩家具有过多的负面言论。而这是不可能的。
当然,我们也别过多纠结这个问题,该改正的总会改正,只不过是时间问题。我们更加需要关心的有两件事情:
1.我们肯定不希望我们自定义的商品价格被随意改变,所以我们该怎么办呢?
2.specialprice的性质可以弄出什么效果呢?
对于第一个问题,我们的解决方法很简单——仔细观察上面的公式,我们不难发现『p价格乘数』都是一个及其重要的变量。
既然是『乘数』,如果我们把这东西改为0,那问题是不是就解决了?
试一试!当p=0时
e =-〔(5A + b + c - d - 5E)x 0〕-〔((V-1)x0.0625+0.3)xm〕+f
e =-〔((V-1)x0.0625+0.3)xm〕+f
y = clamp(〔ax0xm〕+m -〔((V-1)x0.0625+0.3)xm〕+f, 1 ,m)
y = clamp(m -〔((V-1)x0.0625+0.3)xm〕+f, 1 ,m)
不难发现,就算p=0解决了大多数问题,但村庄英雄效果和specialprice的原始值仍然会影响到价格。但村庄英雄效果毕竟是很难得到的,specialprice的原始值又是只能通过命令改变,所以总体上来说影响很小。
总结下来,相比更新之前,我们在新版本中自定义村民交易,还需要注意将价格乘数pricemultiplier设为0.0(有没有一种可能,不设置其实也默认是0)。举个例子:
\/summon villager ~~~{Villagerdata:{level:6,profession:“minecraft:farmer“},offers:{Recipes:[{rewardExp:1,maxUses:,b
本章未完,请点击下一章继续阅读!若浏览器显示没有新章节了,请尝试点击右上角↗️或右下角↘️的菜单,退出阅读模式即可,谢谢!