From 50c6c07140cc130f2503c54b38ffbf4fe1912ec5 Mon Sep 17 00:00:00 2001 From: hahwu <31872165+hahwu@users.noreply.github.com> Date: Tue, 23 Dec 2025 16:16:01 +0800 Subject: [PATCH] 5 --- src/server/game/GameLogic.go | 7 ++--- src/server/game/champship_mgr.go | 5 ++-- src/server/game/message_handler.go | 2 +- src/server/game/message_mgr.go | 41 +++++++++++++++++++++++------- src/server/game/mod/msg/Msg.go | 26 ++++++++++--------- 5 files changed, 51 insertions(+), 30 deletions(-) diff --git a/src/server/game/GameLogic.go b/src/server/game/GameLogic.go index 01c9d06a..98b6f46c 100644 --- a/src/server/game/GameLogic.go +++ b/src/server/game/GameLogic.go @@ -935,11 +935,8 @@ func (ad *GameLogic) GetStartTime() int64 { } func NotifyPlayer(Uid int, m *MsgMod.Msg) { - p := G_GameLogicPtr.GetPlayer(int64(Uid)) - if p == nil || p.stop { - return - } - p.Send(m) + m.To = Uid + CenterPlayerMsgHandler(m) } func Destroy() { diff --git a/src/server/game/champship_mgr.go b/src/server/game/champship_mgr.go index 2eec44f1..e245fc8d 100644 --- a/src/server/game/champship_mgr.go +++ b/src/server/game/champship_mgr.go @@ -115,9 +115,8 @@ func (c *ChampshipMgr) Init() { } func (c *ChampshipMgr) NotifyAll(m *msg.Msg) (interface{}, error) { - G_GameLogicPtr.NotifyAll(&msg.Msg{ - Type: msg.HANDLE_TYPE_CHAMPSHIP_NOTIFY, - }) + m.HandleType = msg.HANDLE_MOD_PLAYER_MSG + NotifyAllPlayerMsg(m) return nil, nil } diff --git a/src/server/game/message_handler.go b/src/server/game/message_handler.go index 0aa35ac0..0c21aa20 100644 --- a/src/server/game/message_handler.go +++ b/src/server/game/message_handler.go @@ -704,7 +704,7 @@ func NotifyChampshipResult(Uid, Rank int) { SendT: GoUtil.Now(), Extra: []int{Rank, GoUtil.GetServerOpenDay()}, } - FriendMgrSend(Msg) + CenterPlayerMsgHandler(Msg) } } diff --git a/src/server/game/message_mgr.go b/src/server/game/message_mgr.go index 9c560a9e..9d077517 100644 --- a/src/server/game/message_mgr.go +++ b/src/server/game/message_mgr.go @@ -76,6 +76,24 @@ func (m *MessageMgr) MessageMgrInit() { m.Use(RecoveryMiddleware()) m.Use(LoggingMiddleware()) m.Use(TimeoutMiddleware(5 * time.Second)) + m.NodeRegister() + m.CenterRegister() +} + +// 注册处理器 +func (s *MessageMgr) RegisterHandler(HandlerType int, fun MessageHandlerFunc) { + s.handler[HandlerType] = fun +} + +func (m *MessageMgr) NodeRegister() { + if conf.Server.ServerType == "node" { + m.RegisterHandler(msg.HANDLE_MOD_PLAYER_MSG, MessageHandlerFunc(PlayerMsgHandler)) + m.RegisterHandler(msg.HANDLE_MOD_REPLY_PLAYER_MSG, MessageHandlerFunc(PlayerReplyMsgHandler)) + m.RegisterHandler(msg.HANDLE_MOD_CLUSTER_SYNC, MessageHandlerFunc(ClusterSyncHandler)) + } +} + +func (m *MessageMgr) CenterRegister() { if conf.Server.ServerType == "center" { m.RegisterHandler(msg.HANDLE_MOD_PLAYER_LOGIN, MessageHandlerFunc(PlayerLoginHandler)) m.RegisterHandler(msg.HANDLE_MDO_PLAYER_LOGOUT, MessageHandlerFunc(PlayerLogoutHandler)) @@ -86,23 +104,28 @@ func (m *MessageMgr) MessageMgrInit() { m.RegisterHandler(msg.HANDLE_MOD_USER_VAR_SET, MessageHandlerFunc(SetUserVarDataHandler)) m.RegisterHandler(msg.HANDLE_MOD_USER_VAR_GET, MessageHandlerFunc(GetUserVarDataHandler)) m.RegisterHandler(msg.HANDLE_MOD_CATNIP_PARTNER, MessageHandlerFunc(CatnipPartnerHandler)) - } else { - m.RegisterHandler(msg.HANDLE_MOD_PLAYER_MSG, MessageHandlerFunc(PlayerMsgHandler)) - m.RegisterHandler(msg.HANDLE_MOD_REPLY_PLAYER_MSG, MessageHandlerFunc(PlayerReplyMsgHandler)) - m.RegisterHandler(msg.HANDLE_MOD_CLUSTER_SYNC, MessageHandlerFunc(ClusterSyncHandler)) + m.RegisterHandler(msg.HANDLE_MDO_CHAMPSHIP_INRANK, MessageHandlerFunc(ChampshipInRankHandler)) } } -// 注册处理器 -func (s *MessageMgr) RegisterHandler(HandlerType int, fun MessageHandlerFunc) { - s.handler[HandlerType] = fun -} - func getMessageData() *MessageData { return G_GameLogicPtr.MessageMgr.data.(*MessageData) } // ----------------------------------- 处理函数实现 --------------------------- +func NotifyAllPlayerMsg(m *msg.Msg) { + messageMgrData := getMessageData() + for PlayerId, node := range messageMgrData.PlayerList { + m.To = int(PlayerId) + go SendMsgToNodeAsync(m, node) + } +} + +func ChampshipInRankHandler(data *msg.Msg) (interface{}, error) { + G_GameLogicPtr.ChampshipMgr.inRank(data) + return nil, nil +} + func CatnipPartnerHandler(data *msg.Msg) (interface{}, error) { m, ok := data.Extra.(*CatnipPartner) if !ok { diff --git a/src/server/game/mod/msg/Msg.go b/src/server/game/mod/msg/Msg.go index d8dd02cc..70892f83 100644 --- a/src/server/game/mod/msg/Msg.go +++ b/src/server/game/mod/msg/Msg.go @@ -32,18 +32,20 @@ var MSG_ZERO_UPDATE = &Msg{Type: SERVER_ZERO_UPDATE} var MSG_NOON_UPDATE = &Msg{Type: SERVER_NOON_UPDATE} const ( - HANDLE_MOD_PLAYER_MSG = 20001 // 玩家消息 - HANDLE_MOD_CLUSTER_MSG = 20002 // 集群消息 - HANDLE_MOD_PLAYER_LOGIN = 20003 // 玩家登录消息 - HANDLE_MOD_COMSUME_MSG = 20004 // 消费消息 - HANDLE_MOD_CLUSTER_SYNC = 20005 // 集群同步消息 - HANDLE_MDO_PLAYER_LOGOUT = 20006 // 玩家登出消息 - HANDLE_MOD_VAR_GET = 20007 // 获取变量 - HANDLE_MOD_VAR_SET = 20008 // 设置变量 - HANDLE_MOD_CATNIP_PARTNER = 20009 // 猫薄荷伙伴 - HANDLE_MOD_USER_VAR_GET = 20010 // 获取玩家变量 - HANDLE_MOD_USER_VAR_SET = 20011 // 设置玩家变量 - HANDLE_MOD_REPLY_PLAYER_MSG = 20012 // 回复玩家消息 + HANDLE_MOD_PLAYER_MSG = 20001 // 玩家消息 + HANDLE_MOD_CLUSTER_MSG = 20002 // 集群消息 + HANDLE_MOD_PLAYER_LOGIN = 20003 // 玩家登录消息 + HANDLE_MOD_COMSUME_MSG = 20004 // 消费消息 + HANDLE_MOD_CLUSTER_SYNC = 20005 // 集群同步消息 + HANDLE_MDO_PLAYER_LOGOUT = 20006 // 玩家登出消息 + HANDLE_MOD_VAR_GET = 20007 // 获取变量 + HANDLE_MOD_VAR_SET = 20008 // 设置变量 + HANDLE_MOD_CATNIP_PARTNER = 20009 // 猫薄荷伙伴 + HANDLE_MOD_USER_VAR_GET = 20010 // 获取玩家变量 + HANDLE_MOD_USER_VAR_SET = 20011 // 设置玩家变量 + HANDLE_MOD_REPLY_PLAYER_MSG = 20012 // 回复玩家消息 + HANDLE_MDO_CHAMPSHIP_INRANK = 20013 // 锦标赛入榜 + HANDLE_MOD_CHAMPSHIP_RANK_INFO = 20014 // 锦标赛排名信息 ) const (