package routers import ( "context" "sync" ) var _ = sync.Mutex{} var _ = context.Background // // 伪造匹配 —— 让客户端点「开始」就能进搜打撤图。 // 为什么需要这一层:正式服的开局要过真实匹配服 / 队伍服,我们手上只有游戏服, // 补不出那条链路;而客户端点完开始就在等切图,没人应答它就卡在开始界面。 // 捐赠端 handoff 的做法就是「把这四条请求劫到 RaidType 19 上」,本文件是同一思路的实现。 // 四条通用开局请求(ClientToGameDelegate.lua 里都能找到): // AskStartSingleMatch 63347492 / StartBotMatch 63474603 / // StartMatchInTeam 63563208 / StartGameInTeam 63121362。 // ⛑⛑ 这四条是通用请求,不是搜打撤专用:别的玩法开局也走它们。 // 所以默认关(world.content.extraction.fakeMatch=false), // 只在面板勾上「伪造匹配」时生效,且改动只活在内存里 —— 重启一定回落到配置值。 // 开着的时候任何一次点开始都会被劫到 PreferredRaid。 // ⛑ 没有 Request 契约:这四条的参数在 dump 里是空壳,也没有可用的 lua writer 对照, // 所以一律裸接、只打 body 长度。把 midToReturnMessageReader 里没有 reader 的请求当成 // 「可以随便回」是对的,但反过来不要因为这里没报错就以为参数结构对了 —— 我们一根字段都没读。 // ⛑ [Handler] 写完必须把 methodId 加进 GameRouter.cs 的 // Enabled4229938MethodIds,否则是空注册 —— 请求不报错,只拿 typed-default void。 // func GameRouter_ExtractionMatch_OnAskStartSingleMatch(ctx context.Context, conn any, msg any) any { // Router implementation for GameRouter_ExtractionMatch_OnAskStartSingleMatch var zero any; return zero } func GameRouter_ExtractionMatch_OnStartBotMatch(ctx context.Context, conn any, msg any) any { // Router implementation for GameRouter_ExtractionMatch_OnStartBotMatch var zero any; return zero } func GameRouter_ExtractionMatch_OnStartMatchInTeam(ctx context.Context, conn any, msg any) any { // Router implementation for GameRouter_ExtractionMatch_OnStartMatchInTeam var zero any; return zero } func GameRouter_ExtractionMatch_OnStartGameInTeam(ctx context.Context, conn any, msg any) any { // Router implementation for GameRouter_ExtractionMatch_OnStartGameInTeam var zero any; return zero } // // 开局请求的公共收尾:先应答,再决定要不要把这次开局劫到搜打撤图。 // ⛑ 应答必须无条件发:这四条是 await 型,不回会让客户端那条调用永久挂住, // 表现是「点开始没反应」,而且日志里什么都没有。代价为零 —— handoff §6.3 的请求表里 // 没有这四条,说明 midToReturnMessageReader 里没有 reader, // 空 OK 不会像 SearchContainer 那样用 nil 覆盖客户端已有的好数据。 // func GameRouter_ExtractionMatch_HijackMatchToExtractionAsync(ctx context.Context, conn any, msg any, label string) any { // Router implementation for GameRouter_ExtractionMatch_HijackMatchToExtractionAsync var zero any; return zero }