52 lines
2.5 KiB
Go
52 lines
2.5 KiB
Go
package routers
|
||
|
||
import (
|
||
"context"
|
||
"sync"
|
||
)
|
||
|
||
var _ = sync.Mutex{}
|
||
var _ = context.Background
|
||
|
||
//
|
||
// 对话启动线:`IGameSceneToClient.AskStartDialog(uint dialogId, DialogParameter param, bool interrupt)`
|
||
// — methodId 63754798 (0x03CCD22E, dump.cs:1871038)。
|
||
// 这条以前完全没有 handler,客户端落到 typed-default 兜底,回包是 e=0 0b:
|
||
// err 位是 0,但包体 0 字节。而客户端封装是
|
||
// DoAskStartDialog(dialogId, param, dialogSource, isBreaking, Action<uint> cb)(dump.cs:693697)
|
||
// —— 它 await 的是一个 uint 返回值,不是空包。
|
||
// 实测后果:`unknown-methods.log` 里这条堆了 261 条 INVOKE(09-15 起,10 天,至少 10 个不同
|
||
// dialogId);拨「Call vehicle」时能看到 AskStartDialog 之后卡 20 秒才继续发
|
||
// AskPhoneContactOptionAction,而同场景「Express Depot」因为路径短,record → option →
|
||
// AskSummonVehicle 在同一秒内完成 —— 那 20 秒就是客户端在等这个永远不来的 uint。
|
||
// 所以这里只做一件事:补回那个缺失的 uint,取值 0(=成功)。对话内容本身全在客户端本地
|
||
// (拨通后是客户端 ShowGeneralDialog(dialogId)),服务端没有条件数据可供判定,
|
||
// 一律按成功回是最贴近官方的默认值。
|
||
// 日志保留原始 hex,便于离线确认各个 dialogId 的实际触发情况。
|
||
//
|
||
func GameRouter_Dialog_AskStartDialog(ctx context.Context, conn any, msg any) any {
|
||
// Router implementation for GameRouter_Dialog_AskStartDialog
|
||
var zero any; return zero
|
||
}
|
||
|
||
//
|
||
// 对话推进动作:`IGameSceneToClient.AskDoDialogAction(uint dialogId)` — methodId 63723634
|
||
// (0x03CC5872, dump.cs:1726318)。返回 `UXRPCTask`(void),所以回空 OK 即可。
|
||
// 实测请求体 4 字节(一个 uint dialogId,例 `BA08FB02`)。
|
||
// ⛑ 不回 = 客户端 await 卡死(unknown-methods.log 里 INVOKE 有记录)。
|
||
//
|
||
func GameRouter_Dialog_AskDoDialogAction(ctx context.Context, conn any, msg any) any {
|
||
// Router implementation for GameRouter_Dialog_AskDoDialogAction
|
||
var zero any; return zero
|
||
}
|
||
|
||
//
|
||
// 强制结束对话:`IGameSceneToClient.AskForceFinishDialog()` — methodId 63010951
|
||
// (0x03C17887, dump.cs:1726324)。返回 `UXRPCTask`(void),**请求体 0 字节**(无参数)。
|
||
//
|
||
func GameRouter_Dialog_AskForceFinishDialog(ctx context.Context, conn any, msg any) any {
|
||
// Router implementation for GameRouter_Dialog_AskForceFinishDialog
|
||
var zero any; return zero
|
||
}
|
||
|