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_companion_bind.go

44 lines
1.9 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
//
// 把一个已经在场的单位接进客户端原生的随从 AI。
// ⛑⛑ 2026-10-01 取证:这套协议主线服务端一行都没实现过,但客户端侧是全的 ——
// 随从的跟随、协战、UI 全由客户端 C# 状态机负责,服务端只需要把两个包推下去。
// 在此之前主线只能把随从当成「不打人的敌人」生成,表现就是挂着血条、打不死、能被玩家锁定。
// 两个包(签名都取自官方 dump.cs 的 IGameSceneToClient 抽象声明,不是猜的):
// SyncAgentCompanionAI(ulong pid, bool isCompanionAI) = 68277327 (dump.cs:1900945)
// SyncCompanionMaster(ulong companionId, ulong masterId) = 68813982 (dump.cs:1901368)
// 为什么不自己写跟随:客户端 lua 里找不到这两个方法名以外的任何实现
// (lua.zip 只有 RPCMethodIdToName 里有名字,实现在 C# 侧),自己驱动等于重新实现一遍
// 官方的行为树 —— 性价比远低于把原生开关打开。
//
//
// 收起随从头顶的血条:SyncAddUnitState(68026128) + HideHp。
// 与 GameRouter.EnemyHpBar.cs:55 逐字段对齐(Id / State / EffectFreezeState)。
//
func GameRouter_CompanionBind_NotifyCompanionHideHpAsync(ctx context.Context, session *GameSession, uid uint64) any {
// Router implementation for GameRouter_CompanionBind_NotifyCompanionHideHpAsync
var zero any; return zero
}
//
// 把 绑给当前操控的角色。
//
//
// 由 SpawnAgentAsync 返回的单位 uid。必须已经 spawn 完 —— 客户端消费方会用
// masterId / agentId 去 SceneDataMgr 里查单位,spawn 包没落地就查不到。
//
func GameRouter_CompanionBind_BindCompanionAsync(ctx context.Context, companionUid uint64) any {
// Router implementation for GameRouter_CompanionBind_BindCompanionAsync
var zero any; return zero
}