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
27 lines
775 B
Go
27 lines
775 B
Go
package gameserver
|
|
|
|
import (
|
|
"testing"
|
|
|
|
goproto "gac-hkrpg-go/protocol/proto"
|
|
)
|
|
|
|
func TestDispatchMapsRegistered(t *testing.T) {
|
|
t.Logf("typedHandlers=%d dummyResponses=%d rawHandlers=%d", len(typedHandlers), len(dummyResponses), len(rawHandlers))
|
|
if len(dummyResponses) == 0 {
|
|
t.Fatal("dummyResponses is EMPTY - handlers_raw.go init did not run")
|
|
}
|
|
if len(rawHandlers) == 0 {
|
|
t.Fatal("rawHandlers is EMPTY")
|
|
}
|
|
if _, ok := dummyResponses[17]; !ok {
|
|
t.Fatal("GetVideoVersionKeyCsReq (17) not in dummyResponses")
|
|
}
|
|
if _, ok := dummyResponses[uint16(goproto.CmdIDByName["GetSecretKeyInfoCsReq"])]; !ok {
|
|
t.Fatal("GetSecretKeyInfoCsReq not in dummyResponses")
|
|
}
|
|
if _, ok := rawHandlers[8115]; !ok {
|
|
t.Fatal("8115 GetSwitchHandData not in rawHandlers")
|
|
}
|
|
}
|