骑马与砍杀吧 关注:729,823贴子:14,726,434
  • 7回复贴,共1

深夜睡不着,来发点物品基础价格计算公式。以盔甲为例。

只看楼主收藏回复

上代码图




IP属地:山东1楼2022-06-12 03:40回复
    代码位置:TaleWorlds.Core.dll中搜索CalculateValue,然后在左边找到DefaultItemValueModel项。
    要注意,在item.xml中是可以直接定义物品的价格的,xml中的价格会覆盖公式计算的价格。
    决定物品的价格的因素有物品种类;物品质量(appearance,在xml文件中设置);物品层级(由攻击力防御力速度等等决定)这三项。
    物品价格计算的公式为return (int)(num2 * num * (1f + 0.2f * (item.Appearance - 1f)) + 100f * MathF.Max(0f, item.Appearance - 1f))。其中num2代表物品种类系数,num代表物品层级系数,item.Appearance为物品质量。
    首先,物品种类即物品是武器还是头甲或者马匹或者交易物,每样东西有自己的系数,如下图所示(这个图中数据并不是官方数据),图中的num2即为物品种类系数。
    其次,物品质量是在xml中直接写好的,但是武器类是没有质量的。这点我也不知道怎么算


    IP属地:山东3楼2022-06-12 04:02
    回复
      最后就是大头物品层级系数,在CalculateTier这一项下面可以看到各个物品的层级系数计算方法
      我以护甲计算为例。如下图

      armorComponent即为护甲值,后面的LegArmor之类的东西则表示部位,可以看到身甲的层级是身体护甲值*1+手臂护甲值*+腿护甲值*1+头护甲值*1.2(虽然身甲并不提供护甲值)。最后得出的数据再*0.1-0.4,得到的就是护甲的层级。

      上图为从层级到层级系数的计算。先再层级和7.5直接选一个最小值。然后在选中值和-1选一个最大值。然后以2.75为底数,最大值为指数进行幂运算。得到的结果就是层级系数。


      IP属地:山东4楼2022-06-12 04:13
      回复
        马匹层级的计算就是看他那四项属性和是否是驮畜,驮畜是一个固定值。
        马甲是0。
        武器的层级是最麻烦的分为可锻造武器和不可锻造武器两部分。
        不可锻造武器分为远程武器,弹药,盾牌三部分。这个都是由属性值再加上一些特殊的词条决定的,类似护甲,大家可以自己看看。我上个图

        可锻造武器的层级系数由锻造层级(num)和近战层级(num2)共同决定。锻造层级取决于消耗的原料;近战层级取决于属性值再加上一些特殊的词条,但是公式很长很长。。。
        下面是近战层级

        下面是锻造层级


        IP属地:山东5楼2022-06-12 04:32
        回复
          我把这改成了对数函数,游戏体验好多了


          IP属地:湖南来自Android客户端6楼2022-06-12 15:30
          收起回复
            1.8 的代码改动好大。。。


            IP属地:山东7楼2022-06-12 19:35
            回复
              把appearence影响去掉就好了,打的mod里一堆乱七八糟appearence数值和赋的天价价格,一个个改太麻烦了


              IP属地:安徽来自iPhone客户端8楼2023-07-09 02:36
              回复