From 28de534bd44ad657d0a996822e5df4b8b5f27331 Mon Sep 17 00:00:00 2001 From: hahwu <31872165+hahwu@users.noreply.github.com> Date: Tue, 23 Dec 2025 11:52:20 +0800 Subject: [PATCH] 3 --- src/server/game/message_mgr.go | 11 +++++++++++ src/server/game/var_mgr.go | 22 ++++++++++++++-------- 2 files changed, 25 insertions(+), 8 deletions(-) diff --git a/src/server/game/message_mgr.go b/src/server/game/message_mgr.go index 0c880d47..f2f4ec25 100644 --- a/src/server/game/message_mgr.go +++ b/src/server/game/message_mgr.go @@ -108,7 +108,18 @@ func CatnipPartnerHandler(data *msg.Msg) (interface{}, error) { return nil, fmt.Errorf("invalid catnip partner data") } return G_GameLogicPtr.VarMgr.HandleCatnipPartner(m.Uid, m.Partner, m.GameId, m.EndTime) +} +func ReplyPlayerMsgSync(m *msg.Msg, reply interface{}) (interface{}, error) { + clone := m.Clone() + clone.To = m.From + clone.HandleType = msg.HANDLE_MOD_REPLY_PLAYER_MSG + clone.Extra = reply + messageMgrData := getMessageData() + if node, ok := messageMgrData.PlayerList[int64(m.From)]; ok { + go SendMsgToNodeAsync(clone, node) + } + return nil, nil } // 节点连接时,同步消息 diff --git a/src/server/game/var_mgr.go b/src/server/game/var_mgr.go index 9d4fb38b..a765998c 100644 --- a/src/server/game/var_mgr.go +++ b/src/server/game/var_mgr.go @@ -222,13 +222,16 @@ func SetVarDataHandler(m *msg.Msg) (interface{}, error) { func GetUserVarDataHandler(m *msg.Msg) (interface{}, error) { data := getVarData() + userVar := &VarExpireData{} if v, ok := m.Extra.(*msg.VarData); ok { if varData, ok := data.NewUseVar[m.From]; ok { - if userVar, ok := varData[v.Key]; ok { - return userVar, nil - } + userVar, _ = varData[v.Key] } - return nil, fmt.Errorf("var data not found for key %s", v.Key) + if userVar == nil { + userVar = &VarExpireData{} + } + ReplyPlayerMsgSync(m, userVar.D) + return userVar, nil } return nil, fmt.Errorf("invalid parameters for getting var data") } @@ -278,11 +281,14 @@ func SetUserVarDataHandler(m *msg.Msg) (interface{}, error) { func GetVarDataHandler(m *msg.Msg) (interface{}, error) { data := getVarData() - if v, ok := m.Extra.(msg.VarData); ok { - if varData, ok := data.NewVar[v.Key]; ok { - return varData.D, nil + varData := &VarExpireData{} + if v, ok := m.Extra.(*msg.VarData); ok { + varData, _ = data.NewVar[v.Key] + if varData == nil { + varData = &VarExpireData{} } - return nil, fmt.Errorf("var data not found for key %s", v.Key) + ReplyPlayerMsgSync(m, varData.D) + return varData, nil } return nil, fmt.Errorf("invalid parameters for getting var data") }