package msg import ( "rocommon" "rocommon/util" "roserver/baseserver/model" "roserver/serverproto" model2 "roserver/social/model" ) func init() { //聊天消息 serverproto.Handle_SOCIAL_CSChatMessageReq = model.HandleBackendMessage(func(ev rocommon.ProcEvent, cliId model.ClientID) { msg := ev.Msg().(*serverproto.CSChatMessageReq) util.InfoF("receive CSChatMessageReq msg:%v", msg) switch (serverproto.ChatMessageType)(msg.Type) { case serverproto.ChatMessageType_CMT_PERSONAL: ackMsg := &serverproto.SSChatMessageAck{ Error: int32(serverproto.ErrorCode_ERROR_OK), TargetId: msg.TargetId, Message: msg.Message, Type: msg.Type, } targetPlayer := model2.GetSocialPlayer(msg.TargetId) if targetPlayer != nil { //在线玩家处理 ntfMsg := &serverproto.SSChatMessageNtf{ TargetId: msg.TargetId, Type: msg.Type, Message: msg.Message, FromId: msg.FromId, } targetPlayer.SendGame(ntfMsg) } else { util.InfoF("target player not found:", msg.TargetId) //ackMsg.Error = int32(serverproto.ErrorCode_ERROR_FAIL) ackMsg.Error = int32(serverproto.ErrorCode_ERROR_CHAT_WORLD_TARGET_OFFLINE) } model.ServiceReplay(ev, ackMsg) case serverproto.ChatMessageType_CMT_WORLD: //发送给其他game服务器节点 ntfMsg := &serverproto.SSChatMessageNtf{ Type: msg.Type, Message: msg.Message, FromId: msg.FromId, } model2.SendToAllGameExcept(ntfMsg, msg.FromId.Uid) } }) //公会聊天 serverproto.Handle_SOCIAL_SSGuildChatMessageNtf = model.HandleBackendMessage(func(ev rocommon.ProcEvent, cliId model.ClientID) { msg := ev.Msg().(*serverproto.SSGuildChatMessageNtf) util.InfoF("receive SSGuildChatMessageNtf msg:%v", msg) ackMsg := &serverproto.SSChatMessageNtf{ Message: msg.Message, Type: msg.Type, FromId: msg.FromId, } for _, data := range msg.UidList { targetPlayer := model2.GetSocialPlayer(data) if targetPlayer != nil { ackMsg.TargetId = data targetPlayer.SendGame(ackMsg) } } }) //公会聊天 serverproto.Handle_SOCIAL_SSGuildNoticeMessageNtf = model.HandleBackendMessage(func(ev rocommon.ProcEvent, cliId model.ClientID) { msg := ev.Msg().(*serverproto.SSGuildNoticeMessageNtf) util.InfoF("receive SSGuildNoticeMessageNtf msg:%v", msg) ntfMsg := &serverproto.SSGuildNoticeToRoleNtf{} for _, data := range msg.UidList { targetPlayer := model2.GetSocialPlayer(data) if targetPlayer != nil { ntfMsg.SysMsg = msg.SysMsg ntfMsg.Uid = data targetPlayer.SendGame(ntfMsg) } } }) //获取私聊玩家在线状态 serverproto.Handle_SOCIAL_CSChatPlayerStateReq = model.HandleBackendMessage(func(ev rocommon.ProcEvent, cliId model.ClientID) { msg := ev.Msg().(*serverproto.CSChatPlayerStateReq) util.InfoF("receive CSChatPlayerStateReq msg:%v", msg) ackMsg := &serverproto.SCChatPlayerStateAck{} for _, data := range msg.TargetIdList { targetPlayer := model2.GetSocialPlayer(data) if targetPlayer != nil { ackMsg.StateList = append(ackMsg.StateList, &serverproto.PlayerStateInfo{ Uid: data, Online: true, }) } else { ackMsg.StateList = append(ackMsg.StateList, &serverproto.PlayerStateInfo{ Uid: data, Online: false, }) } } model.ServiceReplay(ev, ackMsg) }) //通过social->gmweb 发送给gm后台做聊天消息监控 serverproto.Handle_SOCIAL_SSWebGMChatMsgNtf = model.HandleBackendMessage(func(ev rocommon.ProcEvent, cliId model.ClientID) { msg := ev.Msg().(*serverproto.SSWebGMChatMsgNtf) util.InfoF("receive SSWebGMChatMsgNtf msg:%v", msg) model2.SendGmweb(msg) }) }