以前、GearSwap等でバフ/デバフの効果時間を正しく取得できなくなることについて、記事を書きました。
yyoshisaur.hatenablog.com
上記の記事では、次にカウンタが1周するのは2022年6月1日と書きました。そろそろカウンタが1周するので注意しておかないと、と思っていました。
この現象が発生する原因はパケット内効果時間を表す値をUNIX時間に変換するためのオフセットがハードコーディングされているためでした。
この問題について進展があったので、今回続編として書いています。
GearSwapでは、このオフセットをハードコーディングせず、incoming 0x037の"Timestamp"と"Time offset?"からオフセットを計算するように修正されました。
今後はGearSwapではバフ/デバフの効果時間がこの問題でおかしくなることはなさそうです。
(今のところ、修正はGearSwapのみでlibs/packets/fields.luaはそのままのようです。)
github.com
github.com
この修正の元ネタは以下のアドオンのようです。
github.com
local vana_time = p['Timestamp'] * 60 - math.floor(p['Time offset?']) state.offset = math.floor(os.time() - vana_time % 0x100000000 / 60)
2022/06/03 追記
libs/packets/fields.luaも更新されました。
こちらはオフセットの値の更新になったみたいです。
bufftime = function(ts) return fn(1009810800 + (ts / 60) + 0x100000000 / 60 * 9) -- increment last number every 2.27 years end
少しリファクタリングされて、マジックナンバーが減って分かりやすくなりました。
カウンタが1周した際は現在'9'の部分を+1させていけば良いようになりました。
次にカウンタが1周するのは、2024年09月07日です。