太吾绘卷吧 关注:254,604贴子:4,690,814
  • 15回复贴,共1

上次被吞了,这次分开发,发完之前请不要插楼
1.建筑工作效率显示错误,所需造诣显示不正确
多亏吧友提醒,不然我自己一时半会发现不了。
我自己的mod算完数值,会把结果(校验值)显示出来,和官方显示的数值做比较,上个版本官方加了工作效率的显示,我一看跟我算的一样,就没多注意。


IP属地:浙江1楼2022-10-16 08:58回复
    预料之外的是,官方算的也也也是错的!
    就以这个牧场为例,实际效率应该是56%


    IP属地:浙江2楼2022-10-16 08:59
    回复
      这是因为经营类建筑(也就是需要走进度条的建筑)需求的造诣实际分三种:
      1.最大武学造诣(练功房系列专供)
      2.”建筑“的”所需造诣“ (其他建筑)
      3.”建筑“产出的'资源“的”所需造诣“(同时产出资源的建筑)
      以牧场为例,牧场产出食物/织物 ,牧场的建筑所需造诣是杂学,而食材的所需造诣是厨艺,织物的所需造诣是织锦,牧场实际使用的造诣根据你选择的资源在厨艺/织锦中二选一
      UpdateShopManagersNew中,官方前端显示的效率调用了后端的(9,100)这个方法

      也就是后端的GetBuildingAttainment,这里面是根据"最大武学造诣"/"建筑所需造诣"计算的:


      IP属地:浙江3楼2022-10-16 09:01
      收起回复
        而后端实际过月时增加进度的代码在SerialUpdate,shopProgress就是经营进度(此处不是百分比),这里计算分了两部分
        1、对于所有<不产出资源>的经营类建筑,就跟前端一样用GetBuildingAttainment计算经营进度的增加量,这个函数使用"最大武学造诣"/"建筑所需造诣"
        2、产出资源的经营类建筑则在UpdateResourceBlock里更新的,也就是更新资源点的时候顺带把旁边的建筑更新了,里面使用的是"产出资源的所需造诣"

        也就是说后端根据情况使用了三种不同造诣,前端则总是使用"建筑所需造诣"/"最大武学造诣",所以显示的效率有问题。
        解决方法很简单,就是后端函数自己判断是哪种建筑,根据情况返回正确的造诣。


        IP属地:浙江4楼2022-10-16 09:02
        回复
          牧场、知客亭等建筑,在选人的时候统统显示杂学的原因也是同样的,没有跟后端使用同样的逻辑判断造诣类型,就不细说了。
          彩蛋:
          既然GetBuildingAttainment是计算"最大武学造诣"/"建筑所需造诣",那计算”资源所需造诣“应该调用谁呢?
          答案是GetAttainmentOfBuilding
          没错,GetAttainmentOfBuilding和GetBuildingAttainment这两兄弟干的是不同的活


          IP属地:浙江5楼2022-10-16 09:03
          回复
            2.
            没有2了,哪来那么多bug可以报
            发完了


            IP属地:浙江6楼2022-10-16 09:04
            收起回复
              你不发在bug汇报帖或者官网,根本没人看得到,何况今天他们休息


              IP属地:陕西来自Android客户端7楼2022-10-16 09:06
              收起回复
                收到


                IP属地:云南来自Android客户端8楼2022-10-16 09:09
                收起回复
                  建造类游戏玩多了,对最大化利用生产力执念很深,所以发现了这问题


                  IP属地:福建来自Android客户端9楼2022-10-16 09:24
                  收起回复
                    所以知客亭实际只看武学造诣么


                    IP属地:江苏来自Android客户端10楼2022-10-16 09:48
                    回复


                      IP属地:广东11楼2022-10-16 15:22
                      回复