每週挑戰於《贓車店》推出的兩天後,即 2023 年 12 月 14 日(星期四)啟用。完成每週挑戰,即可獲得 $100,000 遊戲幣獎勵和 10,000 聲望值獎勵。Rockstar 還會時常為每週挑戰添加限時服飾獎勵。每週挑戰可以於 “互動菜單 > 挑戰 > 每週挑戰” 查看。
然而,有不少玩家在完成每週挑戰的過程中遭遇了一些問題,導致無法順利獲取獎勵。本文將系統性地介紹每週挑戰的機制。
一、每週挑戰的更新系統
Rockstar 為每週挑戰使用的更新系統為 “每日下午三點更新系統”,這是一種於每日北京時間下午三點發生更新的系統,遊戲中有很多的每日輪換內容,例如外貿出口、槍支廂型車位置等,都在使用這一套系統。而由於每週挑戰一個星期只有更新一次的需求,故當遊戲每天更新每日輪換內容時,都會檢查當前是星期幾。而當且僅當當前處於星期四時,遊戲才會重置每週挑戰;如果當前不是星期四,則不會重置每週挑戰。
遊戲的每日輪換項目在玩家上線時才會更新。結合上述,這就造成一個問題,即若玩家想重置每週挑戰,那麼他們必須在星期四上線,否則每週挑戰就無法重置,進而無法被完成。
注意這裡的星期四是 UTC 時間,因而對於 UTC+8 的北京時間來說,星期四指的是北京時間星期四 8:00 至星期五 8:00 間。
二、每週挑戰的重置
玩家於北京時間星期四 8:00 至星期五 8:00 間上線就可以確保每週挑戰能夠重置。而至於每週挑戰在星期四的什麼時刻重置,由於其只是在重置每日輪換內容時順便重置,故這就要取決於當天的每日輪換內容在星期四的什麼時刻重置。下面我們對每日下午三點更新系統開展說明,並給出星期四的特例。
2.1 每日下午三點更新系統
遊戲中的每日下午三點更新系統的邏輯極其古怪,這主要是 Rockstar 在書寫代碼時的一些疏忽所導致的。
記 t0 是玩家上次上線的時間,t1 是現在的時間。下圖是下午三點系統的有關代碼,代碼默認採用 UTC 時間,不是北京時間。

以下是上圖代碼的邏輯:
一、判斷 t1 − t0 是否大於等於 86400(即一天的秒數)。如果是,則判定為需要更新,否則繼續執行第二步。
二、判斷 t1 和 t0 是否在同一天裡,也就是判斷 y0 = y1 且 m0 = m1 且 d0 = d1 是否成立。
1. 如果 t1 和 t0 是同一天,則判斷 h0 < 6 且 h1 ≥ 6 是否成立。如果是,則判定為需要更新,否則判定為無需更新。
2. 如果 t1 和 t0 不是同一天,則判斷 h1 > 6 是否成立。如果是,則判定為需要更新,否則判定為無需更新。
下面進行分析。倘若玩家超過現實 24 小時沒有上線了,那麼遊戲就直接更新至當前的情況,關於這一部分的設定並無什麼問題;但是當 t1 − t0 < 86400 時,也就是玩家上次更新和當前時間小現實於 24 小時時,遊戲進行的判斷則很奇怪。
不難看出,UTC 6:00 是一個重要的時間點。根據代碼,當 h0 ∈ [0, 6) 時,若 h1 ∈ [h0, 6),則更新不會發生;只有當 h1 ≥ 6 時,更新才會發生。也就是說,若玩家上一次上線更新發生在 [0, 6),那麼,玩家在 6 點及以後上線便可完成更新。轉換成北京時間,我們得出了每日下午三點更新系統的第一條更新邏輯:
(I)若玩家一日首次上線在北京時間 8:00 至 14:00 間,則更新時間為當日 14:00。
回到 UTC 時間,若 h0 ∈ [6, 24) 呢?那麼在今天內都不會更新了,因為 h0 < 6 的條件已經不滿足了。不僅如此,事實上在明天的 [0, 6] 期間也不會更新。根據代碼,更新只會發生在次日且 h1 > 6 時。現在這就是古怪的地方,這裡的判斷使用了大於號,而不是大於等於號。由於 h1 是整數,故 h1 > 6 等價於 h1 ≥ 7,也就是說,更新時點被延後了一小時。這將形成一個特殊的時間段,即當 h0 ∈ [6, 7) 時,更新發生的時間不會是次日 7 點,因為此時 t1 − t0 將超過 86400,而 t1 − t0 若 ≥ 86400 就應該立刻更新,所以更新真正發生的時間是 h0 + 24 小時。轉換成北京時間,這對應了第二條更新邏輯:
(II)若玩家一日首次上線在北京時間 14:00 至 15:00 間,則更新時間為當日上線時刻 +1 日。
繼續回到 UTC 時間,當 h0 ∈ [7, 24) 時,根據代碼,更新發生的時間是次日 7 點。轉換成北京時間,這對應了第三條更新邏輯:
(III)若玩家一日首次上線在北京時間 15:00 至次日 8:00 間,則更新時間為次日 15:00。
此外,將玩家超過24小時不上線的情況考慮進來,得到第四條更新邏輯:
(IV)若玩家一日未上線,則更新時間為上線時刻。
2.2 每日下午三點更新系統的星期四特例
2.1 節說明了每日輪換內容的四條更新邏輯。接下來,為了推導每週挑戰的更新邏輯,我們將上述四條更新邏輯施以星期四的特例。令 “一日” 的起止範圍為北京時間 14:00 至次日 14:00,“當日” 為星期三,起止範圍為北京時間星期三 8:00 至星期四 8:00,“次日” 為星期四,起止範圍為北京時間星期四 8:00 至星期五 8:00。於是,每週挑戰的四條更新邏輯如下:
(I)若玩家一日首次上線在北京時間星期三 14:00 至 15:00 間,則每週挑戰重置時間為星期三上線時刻 +1 日至星期五 8:00間。
(II)若玩家一日首次上線在北京時間星期三 15:00 至星期四 8:00 間,則每週挑戰重置時間為星期四 15:00 至星期五 8:00 間。
(III)若玩家一日首次上線在北京時間星期四 8:00 至 14:00 間,則每週挑戰重置時間為星期四 14:00 至星期五 8:00 間。
(IV)若玩家一日未上線,則每週挑戰重置時間為北京時間星期四的上線時刻至 14:00 間,以及星期四 14:00 至星期五 8:00 間。
2.3 對條件(四)的說明
2.2 節說明了每週挑戰的四條更新邏輯,不過其中存在著一些問題。每週挑戰的更新是 “每日下午三點更新系統” 於星期四的一個特例,而其中,每日下午三點更新系統的起止範圍為北京時間 14:00 至次日 14:00,星期四的起止範圍為北京時間星期四 8:00 至星期五 8:00,故在北京時間星期四 8:00 至 14:00間,將產生一個特殊的情況,即,如果每週挑戰在北京時間星期四 8:00 至 14:00 間更新,那麼 14:00 後會怎樣?事實上,這就是條件(四)所要闡述的——若玩家在北京時間星期四的 8:00 以前超過現實 24 小時都沒有上過線,那麼,只要玩家在 8:00 後上線,就可以重置每週挑戰。特別地,如果玩家在北京時間 8:00 至 14:00 間在線,可以重置一次每週挑戰,然後在北京時間 14:00 至星期五 8:00 間再一次在線,就又可以重置一次每週挑戰。
這其中的原理正如第一章所說,每週挑戰的重置是遊戲每日輪換內容重置時的附屬,只有每日輪換內容重置時,每週挑戰才會重置。當玩家在北京時間 8:00 至 14:00 間上線時,根據每日下午三點更新系統,由於玩家已經超過現實 24 小時沒有上線,故遊戲將玩家的每日輪換內容更新至星期三,並判斷到現在是星期四,故重置每日挑戰;到了北京時間 14:00 時,根據每日下午三點更新系統,遊戲將玩家的每日輪換內容更新至星期四,並再一次判斷到今天是星期四,故再一次重置每日挑戰。也就是說,玩家利用每日下午三點更新系統以及星期四的時間差,在星期四內重置了兩次每週挑戰。在接下來的說明中我們會注意到,在星期四內重置兩次每週挑戰十分有用。
三、每週挑戰的更新
我們在第一章明確了每週挑戰能且僅能在北京時間星期四 8:00 至星期五 8:00 間重置這一特性,並在第二章對具體的重置時刻進行了說明。但是到此為止,每週挑戰只是重置,但內容還沒有更新,這是因為每週挑戰的內容更新完全依賴於遊戲當週活動更新,只有當週遊戲活動更新時,每週挑戰的內容才會更新。
3.1 每週活動的更新
遊戲每週活動的更新時刻一般為北京時間星期四 17 時或 18 時左右,故若玩家星期四於每週活動更新前的某一個時刻就重置了每週挑戰,例如 15:00,那麼當每週挑戰的內容隨著每週活動的更新而更新時,就可能會遭遇一些問題。事實上,根據新舊挑戰的數值大小關係,以及玩家是否完成了重置後的挑戰,玩家一共會遭遇到 4 種排列組合情況:
(I)若玩家星期四於每週活動更新前重置每週挑戰並完成了一部分進度,那麼玩家的舊挑戰數值將繼承到新挑戰數值中。若新每週挑戰所須的數值大於等於舊每週挑戰所須的數值,那麼 “互動菜單 > 挑戰 > 每週挑戰” 將顯示 “舊數值/新數值” 或空心方框,玩家繼續完成更多任務直到達成新挑戰的數值要求,即可完成新每週挑戰。
(II)若玩家星期四於每週活動更新前重置每週挑戰並完成了一部分進度,那麼玩家的舊挑戰數值將繼承到新挑戰數值中。若新每週挑戰所須的數值小於舊每週挑戰所須的數值,那麼 “互動菜單 > 挑戰 > 每週挑戰” 將顯示打勾方框,玩家即刻完成新每週挑戰。
(III)若玩家星期四於每週活動更新前重置每週挑戰並完成了每週挑戰,那麼玩家的舊挑戰數值將繼承到新挑戰數值中。若新每週挑戰所須的數值大於等於舊每週挑戰所須的數值,那麼 “互動菜單 > 挑戰 > 每週挑戰” 將顯示 “舊數值/新數值” 或空心方框,但是即便完成更多任務達成新挑戰的數值要求,也不能獲得獎勵,因為每週挑戰在一個重置週期內只被允許完成一次,而玩家將這一次的完成機會浪費在了舊挑戰上。
(IV)若玩家星期四於每週活動更新前重置每週挑戰並完成了每週挑戰,那麼玩家的舊挑戰數值將繼承到新挑戰數值中。若新每週挑戰所須的數值小於舊每週挑戰所須的數值,那麼 “互動菜單 > 挑戰 > 每週挑戰” 將顯示打勾方,但是玩家不能獲得獎勵,因為每週挑戰在一個重置週期內只被允許完成一次,而玩家將這一次的完成機會浪費在了舊挑戰上。
3.2 舊每週挑戰進度的繼承
根據上述,為了防止新每週挑戰無法完成,玩家可以選擇在星期四每週活動更新後才上線,或是在星期四每週活動更新前上線,但直到更新前都不要完成每週挑戰。特別是關於後者,由於 Rockstar 現在都會在北京時間每星期四的 3:00 至 4:00 間提前預告當週的活動內容,故玩家可以利用舊挑戰數值的繼承特性,來減緩新挑戰的完成壓力,特別是當新挑戰難度大於舊挑戰難度時。
例如,假設有一個星期的本週挑戰是 “完成 5 次出租車工作”,根據 Rockstar 的預告,下一個星期的挑戰是 “完成 5 項蠢人幫差事”。論耗時與難度而言,蠢人幫差事顯然比出租車工作要麻煩許多,因而我們可以選擇在星期四每週活動更新前上線,重置一下 “完成 5 次出租車工作” 的每週挑戰進度,並完成 4 次出租車工作。這樣,當每週活動更新後,數值 “4” 將繼承,於是 “完成 5 項蠢人幫差事” 的進度將直接被設定為 4,這樣我們只需要完成一項蠢人幫差事,舊可以完成每週挑戰了。甚至,倘若新的每週挑戰是 “完成 3 項蠢人幫差事”,而由於新數值 “3” 要小於舊數值 “4”,故當每週活動更新後,玩家直接就可以完成每週挑戰,一項蠢人幫差事都不用做。
3.3 無法完成新每週挑戰的修正
但是,倘若玩家在遊戲更新前不小心完成了 “完成 5 次出租車工作” 的每週挑戰,那麼在每週活動更新後玩家就不能獲取 “完成 5 項蠢人幫差事” 的新每週挑戰獎勵了。此外,如果玩家壓根就沒能在北京時間星期五 8:00 前上線,直接錯失了每週挑戰的重置機會,那麼玩家也同樣不能完成新每週挑戰並獲得獎勵。無論是哪種情況,如果玩家實在需要新每週挑戰的獎勵,根據前文所述的每週挑戰更新機制,玩家只能等到下一個星期四,並抓緊時間在每週活動更新前重置並完成每週挑戰,以取得每週挑戰的獎勵。但是如此一來,玩家下一個星期四的新每週挑戰就又無法完成了,就又只能拖到下下個星期四每週活動更新前。因而,如果玩家想拿到每一次的每週挑戰獎勵的話,都只能在每週活動快要結束時、新的每週活動更新前的那幾個小時去完成,特別是當每週挑戰捆綁了特殊服飾時,這種做法堪稱憋屈。
因而,這就是 2.4 節所說的 “在星期四內重置兩次每週挑戰十分有用” 的實際應用之處。例如,玩家因為不小心完成了舊挑戰或是沒能在星期四上線,導致 “完成 5 項蠢人幫差事” 這個每週挑戰無法完成, 那麼,根據前文所述的每週挑戰更新邏輯(四),玩家可以選擇在星期三一天內都不上線,然後在星期四的 8:00 至 14:00 間上線,這樣就可以重置 “完成 5 項蠢人幫差事” 的每週挑戰並去完成,接著在 14:00 至星期五 8:00 間,玩家還能有一次重置每週挑戰的機會,只要玩家確保這一次的重置順利無誤,那麼當新一週的每週活動更新時,玩家就可以有足足一個星期的時間去完成它了。
當然,如果玩家並不介意只能在星期四這一天完成每週挑戰的話,那麼反倒可以利用星期四能重置兩次每週挑戰的這一特性,每個星期三都不上線,然後每個星期四上線完成兩次每週挑戰。
四、總結
到此為止,本文已經完整說明了每週挑戰所使用的更新系統、每週挑戰在該更新系統基礎上的重置機制,以及每週挑戰的更新機制。本文所有的內容可以總結如下:
• 玩家必須於北京時間星期四 8:00 至星期五 8:00 間上線,才可重置每週挑戰。
• 玩家在星期四的何時可以重置每週挑戰,取決於玩家在以北京時間星期三 14:00 為起點、以北京時間星期四 14:00 為終點的、不包含北京時間星期三 14:00 之前的歷史信息的這一日內上線的時間模式。
◦ 一般地,可以認為每週挑戰的重置時間是北京時間星期四 14:00 至星期五 8:00 間。
◦ 特別地,若玩家一日未上線,那麼每週挑戰在北京時間星期四可以重置兩次,分別為北京時間星期四的上線時刻至 14:00 間,以及星期四 14:00 至星期五 8:00 間。
• 每週挑戰的內容隨每週活動的更新而更新,而每週活動一般於北京時間星期四 17 時或 18 時左右更新。若玩家在每週活動更新前重置了每週挑戰,那麼當每週活動更新後,舊每週挑戰將影響新每週挑戰。
◦ 若玩家沒有完成重置後的每週挑戰,那麼新每週挑戰可以完成。
◦ 若玩家完成了舊每週挑戰的部分進度,那麼舊挑戰數值將繼承到新挑戰中,玩家可以繼續完成新每週挑戰。
◦ 若玩家完成了舊每週挑戰,那麼新每週挑戰將無法被完成,直到下個星期四重置後。
五、評價
至此本文結束。每週挑戰作為 2023 年 12 月 12 日《贓車店》的更新內容之一,為在線模式注入了新鮮的周常內容,擴展了玩家的玩法。在出發點上,每週挑戰的引入無可指摘;而根據每週活動的特點來設定每週挑戰,並通過每週挑戰綁定特殊服飾的行為則更是點睛之筆,有效促進了玩家們對每週活動的關注度。然而,在涉及到底層的代碼邏輯上,每週挑戰的重置和更新機制上堪稱一場徹頭徹尾的悲劇。首先為更新系統的設定錯誤,每週挑戰完全不必採取每日下午三點更新系統,事實上可以採取無數種更加簡單的更新方式,例如通過可調參數來設定每週挑戰的更新,即可做到每週挑戰與每週活動同步更新,並避免重置後的舊挑戰進度影響至新挑戰;其次,遊戲裡的每日下午三點更新系統的邏輯因為一個等於號的遺漏而引發了極其古怪的更新邏輯,直接牽連了每週挑戰導致其更新邏輯也一同抽象晦澀;再次,即便每日下午三點更新系統不存在邏輯漏洞,每週挑戰作為每日下午三點更新系統於星期四的一個特例也導致了每週挑戰只能在星期四更新,而在其他時候都不能更新。這一環接一環,最終造成了每週挑戰具備了不堪卒讀的重置與更新機制。耗費了足足五千餘字寫下這篇文章的我和 @卡諾安 一致認為,這一連串的災難完全是由於 Rockstar 那幫社區大學飯桶實習生程序員能力不足所導致的。而 GTA 在線模式現在到底是由一群什麼樣的人在運營,從每週挑戰的實例中也可見一斑。
本文原作者為 @一日暮言葉 / @葉竹ovo,系受權發佈。
下文內容由 @穿越8Q 提供。
六、索賠
那麼新的問題來了:我達成了符合每週挑戰的要求,但由於重置機制的問題而沒有得到獎勵時,又該如何處理呢?答案是找客服寫工單要求補償。客服會檢查你的存檔進度併為你補償相應獎勵。
工單沒有特定的格式要求,客服將按你訪問網頁時使用的語言進行回覆,不必特意將工單翻譯成英文提交。如果你擔心客服看不懂中文,可以在網頁左下角切換語言,再以英文發送。這裡附一篇範例以供參考:
我的每週挑戰在完成任何活動之前已經被標記為已完成,且在完成後沒有為我發放獎勵。請核實問題並補償相應的獎勵。
My Weekly Challenge is marked as completed before completing any activity, and I didn't get the reward for it after completion. Please verify the issue and compensate my account with the reward.
提交成功後,賬號綁定的郵箱將收到一封受理回執。部分地區可能無法正常提交工單(例如點擊提交按鈕但沒有反應),可以使用加速器等網絡工具提交。此後,每當該案件有進展時,你的郵箱都會收到郵件提醒。如需進一步反饋問題,你可以回到客服支持網站的“個人中心”回覆案件,亦可直接回復提醒郵件。
客服將通過類似於修改存檔的方式為你提供補償:在下次進入遊戲時,遊戲會提示“Rockstar 遊戲服務已將您的 GTA 遊戲幣調整了 $***。” ,並把每週挑戰獎勵的服飾(如有)直接加入你的衣櫃。
不過,有時可能會出現服飾未入庫或發放不全的情況。未入庫可能是因為客服操作存檔時你恰好在線,導致入庫操作被覆蓋了。這種情況下,你只需要跟進工單,要求重發獎勵即可。發放不全的情況則較為特殊。例如,2024 年 5 月 2 日活動周的每週挑戰提供給女角色的獎勵是“布爾喬亞 T 恤”和“布爾喬亞扎腰 T 恤”兩件服飾,而通過客服申訴得到的獎勵只有扎腰款式。這有可能是因為遊戲默認給玩家發放扎腰款式,正常情況下,入庫扎腰款式會將原版也一併入庫,但客服的直接操作跳過了中間入庫原版服飾的環節,因此未能獲得原版服飾。但可惜的是,這些阿三客服並未正確認識該“遊戲特性”,目前也沒有成功補發的案例,尚無解決方法。
此外,檢查完成條件方面,個別榆木腦袋的客服還會犯一些常人無法想象的毛病:

素材 @募禕
我只能說,這幫客服不但不玩自家遊戲,對遊戲內容一無所知,他們的行事風格還非常具有官僚主義特色,走馬觀花,為了完成工作指標而草草了事,完全有與寫出前文垃圾代碼的社區大學飯桶實習生程序員勢均力敵的水平。
哎,Rockstar。
如果你對每週挑戰機制有任何的疑問,歡迎留言。