fix(gameserver): answer UI-gating cmds the 4.6.51 client stalls on
First real-client session (2026-10-07 01:00) showed the client walking and attacking but UI interactions stalling: ~120 CsReq dropped with no reply. - auto-empty responder: any unknown CsReq with a Cmd-enum ScRsp pair now gets an empty ScRsp, except the danger families (GridFight/ChessRogue/ EvolveBuild/ChimeraDuel/Jukebox/CycleScore) which must stay dropped (client Sync(nil) NREs on empty, per the Rust lessons) - GetUnreleasedBlockInfo: the Endgame entry waits on this - 4.6.51 wire is CsReq 4190 -> ScRsp 4112 retcode tag 14 (the Rust build answered 4130, an id this client never sends) - SetClientPaused acked (client pauses itself when opening menus/map) - explicit handlers: TakeQuestReward, GetFirstTalkNpc, QuitBattle, GetMapRotationData (Amphoreus teleport pillars), GetPamSkinData, GetAllServerPrefsData/UpdateServerPrefsData, GetHeartDialInfo, GetPetData, GetShopList - SendRaw now logs (dummy/raw replies were invisible in gameserver.log) - cmdpairs.go: req->rsp id pairs generated from the Cmd enum (865 pairs), stable across message renames - smoke test extended: 4190->4112 and SetClientPaused ack verified
This commit is contained in:
1 parent
580717c3d8
commit
91ee027eb7
8 files changed
+1154
-115
No files matched your search
@@ -164,6 +164,8 @@ func (s *Session) SendRaw(pkt *NetPacket) error {
|
||||
if s.closed.Load() {
|
||||
return nil
|
||||
}
|
||||
PacketLog(fmt.Sprintf("[PACKET SEND RAW] cmd_id: %d %s (len: %d)", pkt.CmdType, goproto.NameByCmdID[pkt.CmdType], len(pkt.Body)))
|
||||
|
||||
payload := pkt.Encode()
|
||||
|
||||
s.kcpMu.Lock()
|
||||
|
||||
Reference in new issue
Block a user