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

60 lines
3.1 KiB
Go
Raw Permalink Normal View History

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 的请求当成
// 「可以随便回」是对的,但反过来<u>不要</u>因为这里没报错就以为参数结构对了 —— 我们一根字段都没读。
// ⛑ [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
}