This repository has been archived on 2026-10-31. You can view files and clone it. You cannot open issues or pull requests or push a commit.
Files
Ananta-ps/pkg/protocol/methods/teleport_methods.go
T

40 lines
2.4 KiB
Go
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
package methods
//
// Teleport wire contracts for client 4229938. Field order is the wire order,
// verified against lua/LuaGen/AutoGen/RPCSerializeAuto.lua (WriteTeleportOption,
// WritePreTeleportOption, WriteUXVector3) and dump.cs TeleportOption (33016) /
// PreTeleportOption (33015).
//
//
// Server -> client SyncTeleport (64030755) payload.
// ⛑⛑ 不是 Inline(2026-09-26 14:1x 实机修):客户端
// RPCDeserializeAuto.lua:1674 是
// Base.ReadComplex(reader, Auto.Reader[287]) ⇒ 载荷前面必须有一个 0xFF presence 字节。
// 之前标成 Inline ⇒ 少 1 字节 ⇒ 客户端报
// UXBinaryReader ReadBuffer invalid size=4 remain=3 at ReadTeleportOption
// (想读 4 字节的 MapEntranceId 时只剩 3 字节,正好差那 1 字节)。
// 顶层非 Inline 后 UxSerializer.Serialize 会自动写 0xFF,推送侧不用改。
// donor(repair-shop.zip)的 TeleportOption 同样是 [UxContract](非 Inline)。
//
//
// Server -> client SyncPreTeleportOption (64167855) payload, 同时也是 AskTeleport 的参数。
// Same layout as the client arg.
// ⛑⛑ 不是 Inline(2026-09-26 14:1x 实机修,改装店进不去的根因):
// C2S 侧客户端 ClientToGameDelegate.lua:1475 用
// SerializeBase.WriteComplex(writer, option, WritePreTeleportOption, "option", false)
// ⇒ 参数体第一个字节就是 0xFF。之前标成 Inline ⇒ TryGetArgs 整体错位 1 字节 ⇒
// 服务端一路打 [TELEPORT] AskTeleport undecodable bytes=128,
// 既不记 PendingTeleportId 也不 echo,客户端卡在 loading 事务里(连带主驾驶的下车交互一起没了)。
// 实机抓包(2026-09-26 14:13:01,前 64B)逐字段对得上:
// FF 08000000(configId=8) 00×8(teleportId=0) 01(ForceClear)
// 1E000000(TimeLineDration=30) 00×12(position 全零) 00000000(facing)
// 14+"loading_garage_in02"(Int7 长度 20 ⇒ 19 字符) 01(customBeforeTrans) …
// ⛑ 字符串用 string?(默认 null):null 写 00、空串写 01,
// 与 donor 一致,也保证「读进来什么就 echo 回去什么」。
//
// Client -> server AskTeleport (63175104) invoke arg. Parsed with TryGetArgs (best-effort).
// Client -> server ReportPreTeleportFinish (63032762) invoke arg.
// Client -> server ReportPostTeleportFinish (63682240) notify args.
// Client -> server GM Teleport (62733679): UXRPCMethodArgs62733679 = (x, z) floats.