package msg import ( "rocommon" "rocommon/util" "roserver/baseserver/model" model2 "roserver/game/model" "roserver/serverproto" ) func init() { //webgm serverproto.Handle_GAME_SSWebGMBanNtf = model.HandleBackendMessage(func(ev rocommon.ProcEvent, cliId model.ClientID) { msg := ev.Msg().(*serverproto.SSWebGMBanNtf) util.InfoF("receive SSWebGMBanNtf msg=%v", msg) banRole := model2.RoleMag.GetRoleFromUUid(msg.BanUid) if banRole == nil { banRole = model2.RoleMag.GetRoleFromOffline(msg.BanUid) } if banRole != nil { if msg.BanType == 1 { banRole.BanRole(msg.IsBan, msg.BanTime, model2.CheatType_GMWEB) } else if msg.BanType == 2 { banRole.BanRoleChat(msg.IsBan, msg.BanTime, model2.CheatType_GMWEB) } } }) //来自webgm的走马灯公告 serverproto.Handle_GAME_SSWebGMNoticeNtf = model.HandleBackendMessage(func(ev rocommon.ProcEvent, cliId model.ClientID) { msg := ev.Msg().(*serverproto.SSWebGMNoticeNtf) util.InfoF("receive SSWebGMNoticeNtf msg=%v", msg) model2.RoleMag.SetGMNoticeInfo(msg) }) //gmweb->social->game 服务器维护(强制所有玩家下线) serverproto.Handle_GAME_SSWEBGMServerMaintainNtf = model.HandleBackendMessage(func(ev rocommon.ProcEvent, cliId model.ClientID) { msg := ev.Msg().(*serverproto.SSWEBGMServerMaintainNtf) util.InfoF("receive SSWEBGMServerMaintainNtf msg=%v", msg) model2.RoleMag.ServerMaintain(msg.State) }) //gmweb->social->all game 服务器配置文件热加载 serverproto.Handle_GAME_SSServerConfigReloadNtf = model.HandleBackendMessage(func(ev rocommon.ProcEvent, cliId model.ClientID) { msg := ev.Msg().(*serverproto.SSServerConfigReloadNtf) util.InfoF("receive SSServerConfigReloadNtf msg=%v", msg) model2.ServerReloadConfig(msg.CfgList) model2.RoleMag.ServerReloadConfigNtf(msg.CfgList) }) //gmweb->social->all game 背包内道具删除 serverproto.Handle_GAME_SSWebGMDelItemNtf = model.HandleBackendMessage(func(ev rocommon.ProcEvent, cliId model.ClientID) { msg := ev.Msg().(*serverproto.SSWebGMDelItemNtf) util.InfoF("receive SSWebGMDelItemNtf msg=%v", msg) role := model2.RoleMag.GetRoleFromUUid(msg.Uid) if role == nil { role = model2.RoleMag.GetRoleFromOffline(msg.Uid) } if role != nil { role.(*model2.Role).WebGMDelItem(msg.DelItemList) } }) //webgm //获取好友系统列表信息(不包括推荐列表信息) serverproto.Handle_GAME_CSFriendReq = model.HandleBackendMessage(func(ev rocommon.ProcEvent, cliId model.ClientID) { msg := ev.Msg().(*serverproto.CSFriendReq) role := model2.RoleMag.GetRoleOrKick(cliId, ev) if role == nil { return } util.InfoF("uid=%v receive CSFriendReq msg=%v", role.GetUUid(), msg) role.(model2.RoleSocialOuter).FriendReq(msg.Type) }) //添加关注(添加好友,这边添加好友是单向的) serverproto.Handle_GAME_CSFriendAddReq = model.HandleBackendMessage(func(ev rocommon.ProcEvent, cliId model.ClientID) { msg := ev.Msg().(*serverproto.CSFriendAddReq) role := model2.RoleMag.GetRoleOrKick(cliId, ev) if role == nil { return } util.InfoF("uid=%v receive CSFriendAddReq msg=%v", role.GetUUid(), msg) role.(model2.RoleSocialOuter).FriendAdd(msg.AddUid) }) //from social 根据错误码处理发送关注失败,放到db中做处理 serverproto.Handle_GAME_SSFriendAddAck = model.HandleBackendMessage(func(ev rocommon.ProcEvent, cliId model.ClientID) { msg := ev.Msg().(*serverproto.SSFriendAddAck) role := model2.RoleMag.GetRoleFromUUid(msg.FromUid) if role == nil { role = model2.RoleMag.GetRoleFromOffline(msg.FromUid) if role == nil { return } } util.InfoF("uid=%v receive SSFriendAddAck msg=%v", role.GetUUid(), msg) //social未找到直接发送给db处理 if msg.Error == int32(serverproto.ErrorCode_ERROR_SOCIAL_NOT_FIND_SERVICE_ID) { ssDBReqMsg := &serverproto.SSDBFriendAddFansReq{ FromUid: msg.FromUid, AddUid: msg.AddUid.Uid, } role.(*model2.Role).SendDb(ssDBReqMsg) } else if msg.Error != int32(serverproto.ErrorCode_ERROR_OK) { //添加关注不成功 ackMsg := serverproto.SCFriendAddAck{ Error: msg.Error, } role.ReplayGate(ackMsg, true) } else { //添加对方的粉丝列表成功 role.(*model2.Role).GetRoleSocial().HandlerSubList(true, msg.AddUid.Uid, msg.AddUid) } }) //from db添加到对方粉丝列表消息回复 serverproto.Handle_GAME_SSDBFriendAddFansAck = model.HandleBackendMessage(func(ev rocommon.ProcEvent, cliId model.ClientID) { msg := ev.Msg().(*serverproto.SSDBFriendAddFansAck) util.InfoF("receive SSDBFriendAddFansAck msg=%v", msg) role := model2.RoleMag.GetRole(cliId) if role == nil { return } if msg.Error == int32(serverproto.ErrorCode_ERROR_OK) { role.(*model2.Role).GetRoleSocial().HandlerSubList(true, msg.AddUid.Uid, msg.AddUid) } else { ackMsg := &serverproto.SCFriendAddAck{ Error: msg.Error, } role.ReplayGate(ackMsg, true) } }) //from social来自其他服务器的添加关注请求 serverproto.Handle_GAME_SSFriendAddReq = model.HandleBackendMessage(func(ev rocommon.ProcEvent, cliId model.ClientID) { msg := ev.Msg().(*serverproto.SSFriendAddReq) util.InfoF("receive SSFriendAddReq msg=%v", msg) addRole := model2.RoleMag.GetRoleFromUUid(msg.AddUid) if addRole == nil { addRole = model2.RoleMag.GetRoleFromOffline(msg.AddUid) } //角色信息未找到,返回social并返回game,交给db处理 if addRole == nil { ackMsg := &serverproto.SSFriendAddAck{ Error: int32(serverproto.ErrorCode_ERROR_SOCIAL_NOT_FIND_SERVICE_ID), FromUid: msg.FromUid.Uid, AddUid: &serverproto.CommonPlayerBriefInfo{Uid: msg.AddUid}, } model.ServiceReplay(ev, ackMsg) } else { ackMsg := &serverproto.SSFriendAddAck{ Error: int32(serverproto.ErrorCode_ERROR_OK), FromUid: msg.FromUid.Uid, } addRoleSocial := addRole.(*model2.Role).GetRoleSocial() ret := addRoleSocial.CanAddFansList(msg.FromUid.Uid) if ret != serverproto.ErrorCode_ERROR_OK { ackMsg.AddUid = &serverproto.CommonPlayerBriefInfo{Uid: msg.AddUid} } else { addRoleSocial.HandlerFansList(true, msg.FromUid.Uid, msg.FromUid) addRoleBfInfo := &serverproto.CommonPlayerBriefInfo{} addRole.(*model2.Role).GetRoleBriefInfo(addRoleBfInfo) ackMsg.AddUid = addRoleBfInfo } model.ServiceReplay(ev, ackMsg) } }) //取消关注 serverproto.Handle_GAME_CSFriendDelReq = model.HandleBackendMessage(func(ev rocommon.ProcEvent, cliId model.ClientID) { msg := ev.Msg().(*serverproto.CSFriendDelReq) role := model2.RoleMag.GetRoleOrKick(cliId, ev) if role == nil { return } util.InfoF("uid=%v receive CSFriendDelReq ms=%v", role.GetUUid(), msg) role.(model2.RoleSocialOuter).FriendDel(msg.DelUid) }) //from social在social上没有找到对应玩家信息 serverproto.Handle_GAME_SSFriendDelAck = model.HandleBackendMessage(func(ev rocommon.ProcEvent, cliId model.ClientID) { msg := ev.Msg().(*serverproto.SSFriendDelAck) util.InfoF("receive SSFriendDelAck msg=%v", msg) //role := model2.RoleMag.GetRole(cliId) //if role == nil { // return //} //role.(model2.RoleSocialOuter).FriendDel(msg.DelUid) delRole := model2.RoleMag.GetRoleFromUUid(msg.DelUid) if delRole == nil { delRole = model2.RoleMag.GetRoleFromOffline(msg.DelUid) } //数据库操作 if delRole == nil { ssDBMsg := &serverproto.SSDBFriendDelFansNtf{ FromUid: msg.FromUid, DelUid: msg.DelUid, } model2.SendDb(ssDBMsg) } else { delRole.(*model2.Role).GetRoleSocial().HandlerFansList(false, msg.FromUid, nil) } }) //from social来自其他game服务器的删除粉丝列表请求(从delUid中移除粉丝fromUid) serverproto.Handle_GAME_SSFriendDelReq = model.HandleBackendMessage(func(ev rocommon.ProcEvent, cliId model.ClientID) { msg := ev.Msg().(*serverproto.SSFriendDelReq) util.InfoF("receive SSFriendDelReq msg=%v", msg) delRole := model2.RoleMag.GetRoleFromUUid(msg.DelUid) if delRole == nil { delRole = model2.RoleMag.GetRoleFromOffline(msg.DelUid) } //数据库操作 if delRole == nil { ssDBMsg := &serverproto.SSDBFriendDelFansNtf{ FromUid: msg.FromUid, DelUid: msg.DelUid, } model2.SendDb(ssDBMsg) } else { delRole.(*model2.Role).GetRoleSocial().HandlerFansList(false, msg.FromUid, nil) } }) //添加/删除屏蔽名单(添加和删除同一条协议,不在黑名单中加入黑名单,在黑名单中移除黑名单) serverproto.Handle_GAME_CSFriendBlackReq = model.HandleBackendMessage(func(ev rocommon.ProcEvent, cliId model.ClientID) { msg := ev.Msg().(*serverproto.CSFriendBlackReq) role := model2.RoleMag.GetRoleOrKick(cliId, ev) if role == nil { return } util.InfoF("uid=%v receive CSFriendBlackReq msg=%v", role.GetUUid(), msg) role.(model2.RoleSocialOuter).FriendBlack(msg.BlackUid) }) //获取推荐好友列表 serverproto.Handle_GAME_CSFriendRecommendReq = model.HandleBackendMessage(func(ev rocommon.ProcEvent, cliId model.ClientID) { msg := ev.Msg().(*serverproto.CSFriendRecommendReq) role := model2.RoleMag.GetRoleOrKick(cliId, ev) if role == nil { return } util.InfoF("uid=%v receive CSFriendRecommendReq msg=%v", role.GetUUid(), msg) role.(model2.RoleSocialOuter).FriendRecommend() }) //搜索玩家 serverproto.Handle_GAME_CSFriendSearchReq = model.HandleBackendMessage(func(ev rocommon.ProcEvent, cliId model.ClientID) { msg := ev.Msg().(*serverproto.CSFriendSearchReq) role := model2.RoleMag.GetRoleOrKick(cliId, ev) if role == nil { return } util.InfoF("uid=%v receive CSFriendSearchReq msg=%v", role.GetUUid(), msg) role.(model2.RoleSocialOuter).FriendSearch(msg.TargetName) }) //from db serverproto.Handle_GAME_SSGetUidByRoleNameAck = model.HandleBackendMessage(func(ev rocommon.ProcEvent, cliId model.ClientID) { msg := ev.Msg().(*serverproto.SSGetUidByRoleNameAck) util.InfoF("receive SSGetUidByRoleNameAck msg=%v", msg) role := model2.RoleMag.GetRole(cliId) if role == nil { return } ssMsg := &serverproto.SSOnlineStateReq{ ProType: 1, //表示search操作 BriefInfoList: append(msg.BriefInfoList), } if len(msg.BriefInfoList) > 0 { role.(*model2.Role).SendSocial(ssMsg) } else { ackMsg := &serverproto.SCFriendSearchAck{ Error: int32(serverproto.ErrorCode_ERROR_OK), } role.ReplayGate(ackMsg, true) } }) //from social serverproto.Handle_GAME_SSOnlineStateAck = model.HandleBackendMessage(func(ev rocommon.ProcEvent, cliId model.ClientID) { msg := ev.Msg().(*serverproto.SSOnlineStateAck) util.InfoF("receive SSOnlineStateAck msg=%v", msg) role := model2.RoleMag.GetRole(cliId) if role == nil { return } //表示search操作 if msg.ProType == 1 { ackMsg := &serverproto.SCFriendSearchAck{ Error: int32(serverproto.ErrorCode_ERROR_OK), BriefInfoList: append(msg.BriefInfoList), } role.ReplayGate(ackMsg, true) } else if msg.ProType == 2 { //推荐列表 if msg.ListType == int32(model2.StateTypeRecommend) { ackMsg := &serverproto.SCFriendRecommendNtf{} ackMsg.BriefInfoList = append(msg.BriefInfoList) role.ReplayGate(ackMsg, true) } else { ackMsg := &serverproto.SCGetOtherPlayerBriefInfoAck{ Type: msg.ListType, } ackMsg.BriefInfo = append(msg.BriefInfoList) role.ReplayGate(ackMsg, true) } } }) //from social serverproto.Handle_GAME_SSDaoChang100WheelLogAddNtf = model.HandleBackendMessage(func(ev rocommon.ProcEvent, cliId model.ClientID) { msg := ev.Msg().(*serverproto.SSDaoChang100WheelLogAddNtf) ntfMsg := &serverproto.SCDaoChang100WheelLogNtf{ LogList: msg.LogList, } model2.RoleMag.SendMsg2OnlinePlayer(ntfMsg, 0) }) serverproto.Handle_GAME_SSWebGMHeadChange = model.HandleBackendMessage(func(ev rocommon.ProcEvent, cliId model.ClientID) { msg := ev.Msg().(*serverproto.SSWebGMHeadChange) util.InfoF("receive SSWebGMHeadChange msg=%v", msg) banRole := model2.RoleMag.GetRoleFromUUid(msg.Uid) if banRole == nil { banRole = model2.RoleMag.GetRoleFromOffline(msg.Uid) } if banRole != nil { head := banRole.(*model2.Role).GetHeadMag() if head != nil { head.SetHeadState(msg.HeadId, model2.EmHeadState(msg.State)) } } else { dbmsg := &serverproto.SSUpdateHeadDataSaveReq{} dbmsg.Uid = msg.Uid dbmsg.HeadId = msg.HeadId dbmsg.State = msg.State model2.SendDb(dbmsg) } }) }