package methods // // 改装店(Smokey Drift / ApplyCar)购买链的 wire 契约。 // 每一个字段顺序都对着客户端自己的读写器核过(LuaGen/AutoGen): // C2S 看 ClientToGameDelegate.lua 的 *_Serializer,S2C 看 // RPCDeserializeAuto.lua 的 midToReturnMessageReader。 // ⛑⛑ 上游 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 那份照抄会导致整条返回体错位。 // // 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 + 单字段)。 //