46 lines
2.1 KiB
Go
46 lines
2.1 KiB
Go
package routers
|
||
|
||
import (
|
||
"context"
|
||
"sync"
|
||
)
|
||
|
||
var _ = sync.Mutex{}
|
||
var _ = context.Background
|
||
|
||
//
|
||
// 行人路网的**问路应答** —— `AskClientNpcFindPath`(67974714),C→S INVOKE。
|
||
// 客户端在它自己要走路时会来问(我们服务端驱动的行人走 TaskWayPointMove,但由客户端
|
||
// 寻路的单位 —— 比如某些 NPC / 被撞墙打断的单位 —— 会真的来问)。
|
||
// ⛑️ 之前这条包走 `DefaultReturnCatalog` 兜底 = 永远回 `0xFF 01 FF 01`
|
||
// (两个空 list7)⇒ 等于告诉客户端"没有路" ⇒ 那条单位就站着不动。
|
||
// 契约真源(硬规则 22,双源吻合):
|
||
// ① `RPCDeserializeAuto.lua` `midToReturnMessageReader[67974714]`
|
||
// → `Base.ReadStruct(reader, Auto.Reader[688])`
|
||
// ② `Auto.Reader[688]` = `Points:list7<UXVector3>` + `Flags:list7<byte>`
|
||
// ③ 兜底字节 `FF 01 FF 01` = 两个空 list7,正好对上 ①②。
|
||
// 规划不出来(路网没覆盖 / 不连通 / 太远)就照旧回空路径 —— 宁可不动,也不要给穿墙直线。
|
||
//
|
||
func GameRouter_PedPath_AskClientNpcFindPath(ctx context.Context, conn any, msg any) any {
|
||
// Router implementation for GameRouter_PedPath_AskClientNpcFindPath
|
||
var zero any; return zero
|
||
}
|
||
|
||
func GameRouter_PedPath_AnswerNpcFindPathAsync(ctx context.Context, conn any, msg any) any {
|
||
// Router implementation for GameRouter_PedPath_AnswerNpcFindPathAsync
|
||
var zero any; return zero
|
||
}
|
||
|
||
//
|
||
// `AskAetherNpcUpdatePathForObstacle`(67228857) —— 行人撞墙求助。
|
||
// 这一步先只做「接住 + 打日志」:donor 整场只来 1 次,我们要先确认我们这里到底来不来、
|
||
// entityId 是不是我们发出去的那些行人。确认之后再给重规划(沿路网避开障碍点重发一条
|
||
// TaskWayPointMove)—— 现在盲写重规划,等于拿没验证过的触发条件去改走路逻辑。
|
||
// ⛑️ 不回执会让客户端一直等 ⇒ 无论如何都回一个空 OK。
|
||
//
|
||
func GameRouter_PedPath_AskAetherNpcUpdatePathForObstacle(ctx context.Context, conn any, msg any) any {
|
||
// Router implementation for GameRouter_PedPath_AskAetherNpcUpdatePathForObstacle
|
||
var zero any; return zero
|
||
}
|
||
|