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_npc_phone_drop.go
T

55 lines
2.8 KiB
Go
Raw Normal View History

package routers
import (
"context"
"sync"
)
var _ = sync.Mutex{}
var _ = context.Background
//
// 掉落物拾取的两个回执 —— 2026-09-25 接入。
// 起因:用户回报「路人 NPC 手里的手机能打落拾取,但他们的 BBChat 点不开」。
// 掉手机这件事客户端本地就能做(GM 命令 DebugEnableDropPhoneWhenDeath,
// 补丁和工具/ClientGmCommands.txt:320),掉出来的手机是客户端自己生成的 SceneItem;
// 但拾取时它发了两个 INVOKE 给服务端:
// <code>
// AskPickUpSceneItemTransferToItem (67297154) u64 sceneitemuid
// AskEnemyItemPickUp (67453017) u64 enemyinstanceid + i32 binditemsindex
// </code>
// 这两个 MethodId 在本服务端零 handler、也不在白名单(全项目 grep 只命中 MethodId.cs),
// ⇒ 走 DefaultUnknownInvoke 兜底或直接 await 挂起(硬规则 94)。
// 本文件只回空 OK,不做内容。理由(见 2026-09-25 记忆 §路人手机调研):
// NPC 手机里的聊天一个字节都不走服务端 ——
// GUI/Chat/RandomChatManager.lua:13 GetChatId(npcId, itemId) 用
// AgentConfig.GetConfig(npcId) 的 AppearanceTag / BodyTag / SexType / JobTag 去匹配
// 35 行 NPCChatAtmosphereNewConfig(84028000-84028034),按 60/Weight 加权
// 随机挑 1 条 NPCChatConfig 聊天链,然后打开面板。
// ⇒ 想让"每个人手机不一样",要动的是 npcId(AgentConfig id),不是往服务端塞文本。
// ⛑ 注册的 kind 用 Both:按 AskControlAgent 那次的教训,同族 RPC 会有 NOTIFY 变体,
// 只注册 Invoke 就是静默丢包;ReturnEmptyOkAsync 对 NOTIFY 是 no-op。
//
//
// AskPickUpSceneItemTransferToItem(67297154) —— 把场景里的掉落物收进背包。
// 客户端本地掉落、本地回收,服务端没有 SceneItem 账本(我们从未推过
// SyncEnemyBeginSceneItemDrop 68357238 / SyncDropBelonging 68316751),
// 所以这里能做的只有<a href="硬规则 94">放行</a>:不回执,拾取动作 await 到超时。
//
func GameRouter_NpcPhoneDrop_OnAskPickUpSceneItemTransferToItem(ctx context.Context, conn any, msg any) any {
// Router implementation for GameRouter_NpcPhoneDrop_OnAskPickUpSceneItemTransferToItem
var zero any; return zero
}
//
// AskEnemyItemPickUp(67453017) —— 从敌人/NPC 身上拿走第 N 件携带物(belonging)。
// 官方完整链是 SyncAgentBelongings → SyncDropBelonging(68316751) →
// SyncEnemyBeginSceneItemDrop(68357238) → 本包。我们只发过第一步
// (GameRouter.HackNpc.cs 给路人递手机),后两步是 T3-9 的整块待办。
// 客户端仍会自发这个包 ⇒ 同样只放行。
//
func GameRouter_NpcPhoneDrop_OnAskEnemyItemPickUp(ctx context.Context, conn any, msg any) any {
// Router implementation for GameRouter_NpcPhoneDrop_OnAskEnemyItemPickUp
var zero any; return zero
}