36 lines
2.2 KiB
Go
36 lines
2.2 KiB
Go
package methods
|
||
|
||
//
|
||
// 改装店(Smokey Drift / ApplyCar)购买链的 wire 契约。
|
||
// <para>每一个字段顺序都对着客户端自己的读写器核过(LuaGen/AutoGen):
|
||
// C2S 看 ClientToGameDelegate.lua 的 *_Serializer,S2C 看
|
||
// RPCDeserializeAuto.lua 的 midToReturnMessageReader。</para>
|
||
// <para>⛑⛑ 上游 donor(repair-shop.zip)在 63699253 上把 inline/complex 标反了:
|
||
// 它把返回体 NpcShopCommodityInfo 标成非 inline(会写 0xFF),把里面的
|
||
// RefreshState 标成 inline(不写 0xFF);而客户端是
|
||
// Base.ReadStruct(reader, Auto.Reader[638]) + Base.ReadComplex(reader, Auto.Reader[328])
|
||
// —— 正好相反。这里按客户端为准(取证第一优先),donor 那份照抄会导致整条返回体错位。</para>
|
||
//
|
||
// Args of AskNpcShopCommodityInfo (63699253, Invoke): {shopid:u32}
|
||
// (ClientToGameDelegate.lua:5242,只有一个 WritePrimitive u32)。
|
||
// 店铺刷新状态 = Auto.Reader[328],9 个 u32。
|
||
// 客户端用 Base.ReadComplex 读它 ⇒ 单独出现时要带 0xFF。
|
||
//
|
||
// Return of AskNpcShopCommodityInfo = Auto.Reader[638]。
|
||
// 客户端是 Base.ReadStruct ⇒ 整个返回体没有 presence 字节,所以这里必须 Inline。
|
||
//
|
||
// Args of AskBuyModifyParts (63701165, Invoke → void):
|
||
// {shopid, vehicleid, commodityiddict(dict7), removedparttypes(list7)}
|
||
// (ClientToGameDelegate.lua:5267 —— WriteDict7Bit + WriteList7Bit)。
|
||
// Args of AskBuyCommodities (63614427, Invoke → void):{shopid, commodityiddict(dict7)}
|
||
// (ClientToGameDelegate.lua:4612)。4S 店的整单购买;回调只读错误码。
|
||
// Args of AskBuyCommodity (63970007, Invoke → void):{shopid, commodityid, count}
|
||
// (ClientToGameDelegate.lua:7216;09-24 实机 12 字节:70DA9B05 30789D05 01000000)。
|
||
// Args of AskVehicleShopDestroyParking (63613647, Invoke → void):{shopid}
|
||
// (ClientToGameDelegate.lua:4604)。客户端把停在那的预览车收掉了。
|
||
//
|
||
// Return of AskVehicleShopSpawnVehicle (63497070):
|
||
// midToReturnMessageReader[63497070] = function(reader) local r0 = reader.ReadUInt64(reader) end
|
||
// ⇒ 返回体就是裸 8 字节 u64,不能带 presence 字节(所以 Inline + 单字段)。
|
||
//
|