gta6吧 关注:241,391贴子:4,579,310

UFO观光卡进度的根本原因和避免方法

只看楼主收藏回复

为了解决UFO观光卡进度的问题,楼主查看了相关代码,发现UFO观光完全与外贸出口绑定。外贸出口载具清单的刷新机制从该玩法上线之日起就存在问题,导致绑定了外贸出口的UFO观光现在也出现了相同的问题。为了避免遇到刷新问题,建议每天都在下午三点到次日早上八点之间上线。
以下是详细解释,其中涉及两个名词
UTC时间:落后北京时间8小时,即BJT = UTC + 8h。
(Unix)时间戳:当前时刻和1970年1月1日0时0分0秒(均为UTC时间)之间相差的秒数。


IP属地:广东1楼2022-10-19 17:55回复
    • 外贸天数
    精品贴外贸出口攻略的附录给出了外贸出口载具清单的计算过程。

    可以看出,车单的计算结果只由一个因素决定,那就是这个天数,不妨称之为外贸天数。外贸天数由如下公式得来:
    外贸天数 = (CBV_RESET_TIME − 6 * 3600) / 86400。
    可见外贸天数只由CBV_RESET_TIME决定。
    CBV_RESET_TIME(CBV意为Chalkboard Vehicle,黑板载具)储存该角色最近一次外贸出口刷新时的时间戳。举个例子,一名角色的外贸出口在今天(2022年10月19日)15:30成功刷新,那么他的CBV_RESET_TIME就等于1666164600。

    外贸天数的含义为CBV_RESET_TIME与UTC时间1970年1月1日6点之间相差的天数(一小时3600秒,一天86400秒)。数字6为Rockstar自行指定,沿用自每日任务、每日收藏品。这两种每日项目的重置时刻正是每天UTC时间6点,等于北京时间14点。从公式来看,外贸出口的重置时刻也应该是14点,但实测却是15点,原因将在后面叙述。式中的除法是整数除法,小数部分直接忽略。代入1666164600可算得外贸天数等于19284。


    IP属地:广东2楼2022-10-19 17:59
    回复
      与其说是绑定,不如说是借用了同一个屎山代码


      IP属地:福建来自Android客户端3楼2022-10-19 19:37
      回复


        IP属地:广东4楼2022-10-19 20:02
        回复
          • UFO天数
          2022年10月13日晚上,Rockstar更新了可调参数SSP2POSIX = 1665662400,从而启用了UFO观光活动。
          游戏在哪个点位刷新UFO,由此时是UFO活动的第几天决定,不妨称此为UFO天数。UFO天数的计算公式为:
          UFO天数 = 外贸天数− SSP2POSIX对应的天数。
          其中, SSP2POSIX对应的天数 = (SSP2POSIX − 6 * 3600) / 86400=19278,所以:
          UFO天数 = 外贸天数− 19278。
          接上面的例子,在10月19日15:30刷新外贸后,该角色的UFO天数 = 19284 – 19278 = 6。
          为了易读,玩家制作的UFO活动的日历已将序号加一处理。算得UFO天数等于6对应日历中的第7天。所以,该角色会一直刷到珍贵的第7号UFO,直到他的外贸出口更新。

          可以预见,在此次活动中,Rockstar不会再更改SSP2POSIX的值(从28号起情况有所不同,此处暂不展开),SSP2POSIX可视为一个常数。综上所述就可以得到本贴开篇的结论:UFO观光完全与外贸出口绑定。


          IP属地:广东6楼2022-10-19 20:06
          回复
            热乎的技术贴!支持支持(虽然因为bug已经错过了)


            IP属地:天津来自iPhone客户端7楼2022-10-19 20:07
            收起回复
              • CBV_RESET_TIME的更新机制
              从前面的叙述可以知道,CBV_RESET_TIME同时是外贸出口载具清单和UFO天数的唯一决定因素,而它却依照一种古怪的模式来判定是否需要更新,所以成为了所有问题的根源。相关代码如下。

              图中,currentyear/month/day/hour(年/月/日/时,下同)由当前的现实UTC时间换算而来,statyear/month/day/hour由CBV_RESET_TIME储存的时刻换算而来。该段return 1意味着需要更新CBV_RESET_TIME,return 0则意味着无需更新CBV_RESET_TIME。从图中可以看出,要更新CBV_RESET_TIME,有两种可能的途径。
              1.当前时间与CBV_RESET_TIME是同一天,且CBV_RESET_TIME换算得到的小时数stathour是0点(含)到6点(不含)之间,且当前时间是6点(含)到24点(不含)之间。
              2.当前时间与CBV_RESET_TIME不是同一天,且当前时间是7点(含)到24点(不含)之间。
              仍用前面的例子,现在尝试弄清一个问题:这个在10月19日15:30(UTC时间7:30)刷新了外贸的角色,下一次刷新外贸是什么时候?
              由CBV_RESET_TIME换算可以得到stathour=7,所以途径1不可能成立,只有途径2有可能成立。于是不难得到答案:从10月20日起,该角色首次在7点到24点之间上线就可以刷新下一次外贸。
              现在追问,下下次刷新外贸是什么时候?已知下次刷新必定位于7点到24点,所以途径1还是不可能成立,下下次刷新还是只能依靠途径2。
              可以进一步地下结论,该角色永远都只有在新一天的7点到24点才可以刷新外贸。
              即使假设该角色在某天因特定原因竟然在0点到6点之间更新了外贸,从而导致stathour≤6,根据代码中的判断流程,只需要再经过1到2次刷新,刷新时刻就会被重新限定到7点到24点之间。具体过程在此略过。
              UTC时间7点到24点,对应的就是北京时间15点到次日8点。


              IP属地:广东8楼2022-10-19 20:11
              收起回复
                • 建议
                想要避免UFO卡进度,就必须而且只需保证外贸出口按时刷新。能提供的建议只有一句话,已经在一楼给出了:每天都在下午三点到次日早上八点之间上线。
                由于目前不能排除还有其他因素影响CBV_RESET_TIME的更新,而且既有少量案例报告三点到八点上线也没能刷新,也有少量案例报告八点到三点上线也能刷新,这一条建议无法保证绝对正确。不过从过往经历来看,成功率还是相当高的。
                长期以来楼主自己确保外贸车单刷新的方法是三点在线,然后重启。虽然这个方法从未失败,不过目前没有从代码中看出三点时在线与离线有什么区别,因此仅供参考。


                IP属地:广东9楼2022-10-19 20:13
                回复


                  IP属地:广东10楼2022-10-19 20:17
                  回复
                    玩家上线后可以前往改装铺查看完整的外贸出口载具清单,或致电席桑达获取未出口的车辆清单,以确认外贸出口是否正常刷新。另外,车友会每日的一次性额外奖励的重置也与此绑定,所以也可以进入车友会并检查声望值是否增加。


                    IP属地:广东11楼2022-10-19 20:21
                    回复


                      IP属地:广东12楼2022-10-19 20:26
                      收起回复


                        IP属地:广东14楼2022-10-19 20:35
                        回复


                          IP属地:安徽来自Android客户端15楼2022-10-19 20:51
                          回复


                            IP属地:新疆16楼2022-10-19 20:58
                            回复
                              顶顶


                              IP属地:广东来自iPhone客户端20楼2022-10-19 23:23
                              回复