121 lines
5.5 KiB
Go
121 lines
5.5 KiB
Go
package routers
|
||
|
||
import (
|
||
"context"
|
||
"sync"
|
||
)
|
||
|
||
var _ = sync.Mutex{}
|
||
var _ = context.Background
|
||
|
||
// World entry and client-driven scene loading barriers.
|
||
func GameRouter_World_GetWorldState(ctx context.Context, rpcCtx *RpcContext) any {
|
||
// Router implementation for GameRouter_World_GetWorldState
|
||
var zero any; return zero
|
||
}
|
||
|
||
func GameRouter_World_ArmWorldEntry4229938(ctx context.Context, state any) any {
|
||
// Router implementation for GameRouter_World_ArmWorldEntry4229938
|
||
var zero any; return zero
|
||
}
|
||
|
||
func GameRouter_World_SendInitialGameState(ctx context.Context, rpcCtx *RpcContext) any {
|
||
// Router implementation for GameRouter_World_SendInitialGameState
|
||
var zero any; return zero
|
||
}
|
||
|
||
func GameRouter_World_SendEnterSceneIfNeeded(ctx context.Context, rpcCtx *RpcContext) any {
|
||
// Router implementation for GameRouter_World_SendEnterSceneIfNeeded
|
||
var zero any; return zero
|
||
}
|
||
|
||
//
|
||
// 把存档里的 raid 补成一组能进的 (instance, universe)。
|
||
// 2026-09-27:存档现在直接带 instance/universe;旧存档(06-27 之前写的)只有 raid,
|
||
// 这里按「主城用配置、其余查场景 preset」补齐。查不到 ⇒ false ⇒ 调用方放弃恢复,
|
||
// 走配置出生点 —— 宁可回出生点,也不要拿一个错误的 instance 进图。
|
||
//
|
||
func GameRouter_World_TryResolveSavedScene(ctx context.Context, raidId uint32, instanceId uint64, universeId uint32, resolvedInstance uint64, resolvedUniverse uint32) bool {
|
||
// Router implementation for GameRouter_World_TryResolveSavedScene
|
||
return true
|
||
}
|
||
|
||
func GameRouter_World_CommitWorldEntryCreateHeroData4229938(ctx context.Context, rpcCtx *RpcContext, generation int32) bool {
|
||
// Router implementation for GameRouter_World_CommitWorldEntryCreateHeroData4229938
|
||
return true
|
||
}
|
||
|
||
func GameRouter_World_OnLoadSceneCompleted(ctx context.Context, rpcCtx *RpcContext, sceneId uint64, sessionId uint64) any {
|
||
// Router implementation for GameRouter_World_OnLoadSceneCompleted
|
||
var zero any; return zero
|
||
}
|
||
|
||
func GameRouter_World_OnLoadGameResourcesCompleted(ctx context.Context, rpcCtx *RpcContext, sceneId uint64) any {
|
||
// Router implementation for GameRouter_World_OnLoadGameResourcesCompleted
|
||
var zero any; return zero
|
||
}
|
||
|
||
func GameRouter_World_OnLoadingFinished(ctx context.Context, rpcCtx *RpcContext, sceneId uint64, sessionId uint64) any {
|
||
// Router implementation for GameRouter_World_OnLoadingFinished
|
||
var zero any; return zero
|
||
}
|
||
|
||
//
|
||
// 潜水解锁(gameplay.divingMode == "on")—— 让所有角色能下潜,而不只是水面游泳。
|
||
// 只负责门控那一半:通过 SyncRunGmUtils(66042045) 让客户端反射执行
|
||
// LX6.Utils.GmUtils 的潜水开关(默认 EnableDive,可配 ForceDive /
|
||
// SetUnderWaterFilter)。客户端实现是 GameGMToClientImpl.SyncRunGmUtils
|
||
// (RVA 0x12752F10,真实现),按 methodName 反射解析,执行全程在客户端进程内。
|
||
// 服务端没有专用 S2C 能代替它 —— DiveManager.CheckIsEnableDiving() 读的是
|
||
// 客户端静态字段 enableInGamePlay。
|
||
// 氧气那一半不在这里:由 CharacterCapabilities.GlobalCapabilityBuffIds 挂的
|
||
// 52606233「潜水服buff」(不会掉氧气且更快恢复)随角色 buff 快照下发,切角色会自动重发。
|
||
//
|
||
func GameRouter_World_PublishDivingUnlockAsync(ctx context.Context, rpcCtx *RpcContext) any {
|
||
// Router implementation for GameRouter_World_PublishDivingUnlockAsync
|
||
var zero any; return zero
|
||
}
|
||
|
||
//
|
||
// 官方远程 GM 反射通道的公共推送口 —— SyncRunGmUtils(66042045)。
|
||
// 客户端 GameGMToClientImpl(RVA 0x12752F10 真实现)按 methodName 反射调用
|
||
// LX6.Utils.GmUtils 的静态方法,执行全程在客户端进程内,服务端只发一次 Notify。
|
||
//
|
||
func GameRouter_World_PublishGmCommandsAsync(ctx context.Context, rpcCtx *RpcContext, tag string, methods []any, args []any) any {
|
||
// Router implementation for GameRouter_World_PublishGmCommandsAsync
|
||
var zero any; return zero
|
||
}
|
||
|
||
//
|
||
// Re-apply the landing pose for a scene switch into the raid/instance the client was already
|
||
// running.
|
||
// When both ends of a switch are the same raid+instance the client reloads the level but keeps
|
||
// the avatar at its current coordinates — SyncEnterScene's position only seeds a hero spawn,
|
||
// and no spawn happens because the level is already there. Sending SetPositionType.Teleport
|
||
// after the entry flow reached ready is what actually moves the player, and doing it here
|
||
// (rather than next to SyncEnterScene) guarantees the freshly respawned unit already exists.
|
||
//
|
||
func GameRouter_World_PublishSceneLandingAsync(ctx context.Context, rpcCtx *RpcContext) any {
|
||
// Router implementation for GameRouter_World_PublishSceneLandingAsync
|
||
var zero any; return zero
|
||
}
|
||
|
||
//
|
||
// Reveal the whole world map by unlocking fog on every scene the config knows about.
|
||
// The login payload field PlayerClientInfoAchievement.SceneFogMaps is a dead end: no client
|
||
// code reads it for fog state (MapSystem_FogMap asks MapFogDataMgr, which is fed exclusively
|
||
// by the S2C below). Verified in-game — 212 fog entries at login changed nothing.
|
||
// The S2C's first argument is a **sceneId** (RaidConfig.SceneId, e.g. 20001222), not a raid
|
||
// id: MapFogDataMgr.IsInFog(sceneId, x, z) is the only lookup the fog view performs.
|
||
//
|
||
func GameRouter_World_PublishMapFogUnlockAsync(ctx context.Context, rpcCtx *RpcContext) any {
|
||
// Router implementation for GameRouter_World_PublishMapFogUnlockAsync
|
||
var zero any; return zero
|
||
}
|
||
|
||
func GameRouter_World_OnLoadedInSameScene(ctx context.Context, rpcCtx *RpcContext) any {
|
||
// Router implementation for GameRouter_World_OnLoadedInSameScene
|
||
var zero any; return zero
|
||
}
|
||
|