32 lines
1.1 KiB
Go
32 lines
1.1 KiB
Go
package models
|
||||
|
|
|
|||
|
|
import (
|
|||
|
|
"encoding/json"
|
|||
|
|
"sync"
|
|||
|
|
)
|
|||
|
|
|
|||
|
|
var _ = json.RawMessage{}
|
|||
|
|
var _ = sync.Mutex{}
|
|||
|
|
|
|||
|
|
//
|
|||
|
|
// 手写字节的 SyncGameSwitchToClient_3(53940944) 载荷。
|
|||
|
|
// 为什么不能用 UxSerializer:payload 是 Dictionary<string, UXObject>,
|
|||
|
|
// value 是多态静态对象(tp 单字节 + payload),UxSerializer 不支持。
|
|||
|
|
// 线格式由 donor 反汇编 UXRPCMethodArgs53940944.Read @ RVA 0x9AB5450 确认,别再改:
|
|||
|
|
// <code>
|
|||
|
|
// [Int7 计数] // Read7BitEncodedInt(),无 0xFF、无终止符
|
|||
|
|
// 计数 × { [UxString key]; [tp:1][payload] } // value 前没有存在标记
|
|||
|
|
// </code>
|
|||
|
|
// tp = 2 是 bool(跳转表 RVA 0x1DAC878,tp∈[2,8]),payload 为 1 字节。
|
|||
|
|
// 203 项 → 约 4.9 KB。
|
|||
|
|
// ⛔⛔ 发送时必须走 Connection.NotifyRawAsync(methodId, byte[]):
|
|||
|
|
// 用 NotifyAsync<T> 且 T = byte[] 会按 UX 缓冲区多写 3 字节(0xFF + varint(len+1)),
|
|||
|
|
// 客户端把 FF 8A 26 当计数 ⇒ 整体错位。
|
|||
|
|
//
|
|||
|
|
type GameSwitchCodec struct {
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
const (
|
|||
|
|
GameSwitchCodec_TypeTagBool byte = 2
|
|||
|
|
)
|
|||
|
|
|