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

56 lines
2.8 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
//
// 掉落物拾取的两个回执 —— 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
}