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/internal/gameserver/routers/game_router_extraction_match.go

61 lines
3.1 KiB
Go
Raw Permalink 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 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
}