| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299 |
- package msg
- import (
- "rocommon"
- "rocommon/util"
- "roserver/baseserver/model"
- model2 "roserver/game/model"
- "roserver/serverproto"
- )
- // todo...
- // 后续会拆分成一个服务器来处理
- func init() {
- //角色进入地图
- //serverproto.Handle_GAME_CSPlayerEnterMapReq = model.HandleBackendMessage(func(ev rocommon.ProcEvent, cliId model.ClientID) {
- // msg := ev.Msg().(*serverproto.CSPlayerEnterMapReq)
- // util.DebugF("receive CSPlayerEnterMapReq msg=%v", msg)
- // role := model2.RoleMag.GetRoleOrKick(cliId, ev)
- // if role == nil {
- // return
- // }
- //
- // role.(model2.RoleMapOuter).PlayerEnterMap(msg)
- //})
- ////角色离开地图
- //serverproto.Handle_GAME_CSPlayerLeaveMapReq = model.HandleBackendMessage(func(ev rocommon.ProcEvent, cliId model.ClientID) {
- // msg := ev.Msg().(*serverproto.CSPlayerLeaveMapReq)
- // util.DebugF("receive CSPlayerLeaveMapReq msg=%v", msg)
- // role := model2.RoleMag.GetRoleOrKick(cliId, ev)
- // if role == nil {
- // return
- // }
- //
- // //role.(model2.RoleMapOuter).PlayerLeave(msg.Pos)
- //})
- //
- ////移动
- //serverproto.Handle_GAME_CSPlayerMoveReq = model.HandleBackendMessage(func(ev rocommon.ProcEvent, cliId model.ClientID) {
- // msg := ev.Msg().(*serverproto.CSPlayerMoveReq)
- // //util.DebugF("receive CSPlayerMoveReq msg=%v", msg)
- // role := model2.RoleMag.GetRoleOrKick(cliId, ev)
- // if role == nil {
- // return
- // }
- //
- // //role.(model2.RoleMapOuter).PlayerMove(msg)
- //})
- //
- ////获取其他玩家角色信息(地图AOI像是使用)
- //serverproto.Handle_GAME_CSMapGetOtherPlayersInfoReq = model.HandleBackendMessage(func(ev rocommon.ProcEvent, cliId model.ClientID) {
- // msg := ev.Msg().(*serverproto.CSMapGetOtherPlayersInfoReq)
- // util.DebugF("receive CSMapGetOtherPlayersInfoReq msg=%v", msg)
- // role := model2.RoleMag.GetRoleOrKick(cliId, ev)
- // if role == nil {
- // return
- // }
- //
- // //超过获取数据上限
- // if len(msg.PlayerList) > 30 {
- // util.WarnF("uid=%v CSGetOtherPlayersInfoReq player beyond limit len=%v", role.GetUUid(), len(msg.PlayerList))
- // return
- // }
- //
- // //获取昵称,外观等
- // reqMsg := &serverproto.CSMapGetOtherPlayersInfoReq{}
- // reqMsg.PlayerList = msg.PlayerList
- // //发送给Aoi Server获取信息
- // if len(reqMsg.PlayerList) > 0 {
- // //role.(*model2.Role).SendAoi(reqMsg)
- // }
- //})
- ////消息来自Aoi
- //serverproto.Handle_GAME_SCMapOtherPlayersInfoNtf = model.HandleBackendMessage(func(ev rocommon.ProcEvent, cliId model.ClientID) {
- // msg := ev.Msg().(*serverproto.SCMapOtherPlayersInfoNtf)
- // util.DebugF("receive SCOtherPlayersInfoNtf msg=%v", msg)
- //
- // role := model2.RoleMag.GetRole(cliId)
- // if role == nil {
- // return
- // }
- //
- // role.ReplayGate(msg, true)
- //})
- ////客户端播放动作请求
- //serverproto.Handle_GAME_CSPlayerActionReq = model.HandleBackendMessage(func(ev rocommon.ProcEvent, cliId model.ClientID) {
- // msg := ev.Msg().(*serverproto.CSPlayerActionReq)
- // util.DebugF("receive CSPlayerActionReq msg=%v", msg)
- // role := model2.RoleMag.GetRoleOrKick(cliId, ev)
- // if role == nil {
- // return
- // }
- //
- // //判断是否存在该动作
- // ackMsg := &serverproto.SCPlayerActionAck{
- // Error: int32(serverproto.ErrorCode_ERROR_OK),
- // ActionId: msg.ActionId,
- // Pos: msg.Pos,
- // }
- // if msg.ActionId <= 0 {
- // ackMsg.Error = int32(serverproto.ErrorCode_ERROR_FAIL)
- // } else {
- // ackMsg.Error = int32(role.(model2.RoleMapOuter).MapDoAction(msg.ActionId, msg.Pos))
- // }
- // //返回错误,否则发送给BattleBoss预处理boss召唤
- // if ackMsg.Error != int32(serverproto.ErrorCode_ERROR_OK) {
- // role.ReplayGate(ackMsg, true)
- // }
- //})
- ///////////////////////////////WorldBoss
- //挑战WorldBoss
- serverproto.Handle_GAME_CSPlayerChallengeSummonReq = model.HandleBackendMessage(func(ev rocommon.ProcEvent, cliId model.ClientID) {
- msg := ev.Msg().(*serverproto.CSPlayerChallengeSummonReq)
- role := model2.RoleMag.GetRoleOrKick(cliId, ev)
- if role == nil {
- return
- }
- util.DebugF("uid=%v receive CSPlayerChallengeSummonReq msg=%v", role.GetUUid(), msg)
- if role.(*model2.Role).GetRoleMap().ChallengeBossId != 0 {
- ack := &serverproto.SCPlayerChallengeSummonAck{
- Error: int32(serverproto.ErrorCode_ERROR_AOI_BOSS_CHALLENGING),
- }
- role.ReplayGate(ack, true)
- return
- }
- role.(model2.RoleMapOuter).MapPlayerChallengeWorldBoss(msg.ChallengeBossUid, msg.BossSummonIdx, "NOAOI")
- })
- //from battle boss
- serverproto.Handle_GAME_SCPlayerChallengeSummonAck = model.HandleBackendMessage(func(ev rocommon.ProcEvent, cliId model.ClientID) {
- msg := ev.Msg().(*serverproto.SCPlayerChallengeSummonAck)
- role := model2.RoleMag.GetRole(cliId)
- if role == nil {
- return
- }
- util.DebugF("uid=%v receive SCPlayerChallengeSummonAck msg=%v", role.GetUUid(), msg)
- if msg.Error == int32(serverproto.ErrorCode_ERROR_OK) &&
- msg.BossInfo != nil {
- role.(model2.RoleMapOuter).DoMapPlayerChallengeWorldBoss(msg.BossInfo.BossId)
- }
- role.ReplayGate(msg, true)
- })
- //离开boss场景req
- serverproto.Handle_GAME_CSPlayerLeaveChallengeReq = model.HandleBackendMessage(func(ev rocommon.ProcEvent, cliId model.ClientID) {
- msg := ev.Msg().(*serverproto.CSPlayerLeaveChallengeReq)
- role := model2.RoleMag.GetRoleOrKick(cliId, ev)
- if role == nil {
- return
- }
- util.DebugF("uid=%v receive CSPlayerLeaveChallengeReq msg=%v", role.GetUUid(), msg)
- role.(*model2.Role).PlayerBattleBossOffline()
- })
- //离开boss场景(from battle boss server)
- serverproto.Handle_GAME_SSPlayerLeaveChallengeNtf = model.HandleBackendMessage(func(ev rocommon.ProcEvent, cliId model.ClientID) {
- msg := ev.Msg().(*serverproto.SSPlayerLeaveChallengeNtf)
- util.DebugF("receive SSPlayerLeaveChallengeNtf msg=%v", msg)
- ntfMsg := &serverproto.SCPlayerLeaveChallengeNtf{
- Uid: msg.LeaveUid,
- }
- for idx := range msg.NotifyList {
- role := model2.RoleMag.GetRoleFromUUid(msg.NotifyList[idx])
- if role == nil {
- continue
- }
- role.ReplayGate(ntfMsg, true)
- }
- })
- //进入boss场景
- serverproto.Handle_GAME_SSPlayerEnterChallengeNtf = model.HandleBackendMessage(func(ev rocommon.ProcEvent, cliId model.ClientID) {
- msg := ev.Msg().(*serverproto.SSPlayerEnterChallengeNtf)
- util.DebugF("receive SSPlayerEnterChallengeNtf msg=%v", msg)
- ntfMsg := &serverproto.SCPlayerChallengeSummonNtf{
- BossUid: msg.BossUid,
- SelfUid: msg.EnterUid,
- SelfChangePlayId: msg.SelfChangePlayId,
- SummonBossType: msg.SummonBossType,
- }
- ntfMsg.FightList = append(msg.FightList)
- //通知自己
- if len(msg.NotifyList) <= 0 {
- role := model2.RoleMag.GetRoleFromUUid(msg.EnterUid)
- if role == nil {
- return
- }
- role.(*model2.Role).GetRoleMap().ChallengeBossId = msg.BossUid
- role.ReplayGate(ntfMsg, true)
- } else {
- for idx := range msg.NotifyList {
- role := model2.RoleMag.GetRoleFromUUid(msg.NotifyList[idx])
- if role == nil {
- continue
- }
- role.ReplayGate(ntfMsg, true)
- }
- }
- })
- //血量上报
- serverproto.Handle_GAME_CSPlayerChallengeHpReq = model.HandleBackendMessage(func(ev rocommon.ProcEvent, cliId model.ClientID) {
- msg := ev.Msg().(*serverproto.CSPlayerChallengeHpReq)
- role := model2.RoleMag.GetRoleOrKick(cliId, ev)
- if role == nil {
- return
- }
- util.DebugF("uid=%v receive CSPlayerChallengeHpReq msg=%v", role.GetUUid(), msg)
- role.(model2.RoleMapOuter).MapWorldBossHp(msg.DamageHp)
- })
- //bossHP通知(from battle boss server)
- serverproto.Handle_GAME_SSPlayerChallengeHpNtf = model.HandleBackendMessage(func(ev rocommon.ProcEvent, cliId model.ClientID) {
- msg := ev.Msg().(*serverproto.SSPlayerChallengeHpNtf)
- util.DebugF("receive SSPlayerChallengeHpNtf msg:=%v", msg)
- ntfMsg := &serverproto.SCPlayerChallengeHpNtf{
- CurBossHp: msg.CurBossHp,
- }
- for idx := range msg.NotifyList {
- role := model2.RoleMag.GetRoleFromUUid(msg.NotifyList[idx])
- if role == nil {
- continue
- }
- role.ReplayGate(ntfMsg, true)
- }
- })
- //挑战结果通知(from battle boss server)
- serverproto.Handle_GAME_SSPlayerChallengeResultNtf = model.HandleBackendMessage(func(ev rocommon.ProcEvent, cliId model.ClientID) {
- msg := ev.Msg().(*serverproto.SSPlayerChallengeResultNtf)
- util.DebugF("receive SSPlayerChallengeResultNtf msg=%v", msg)
- ntfMsg := &serverproto.SCPlayerChallengeResultNtf{
- Result: msg.Result,
- }
- for idx := range msg.NotifyList {
- role := model2.RoleMag.GetRoleFromUUid(msg.NotifyList[idx])
- if role == nil {
- continue
- }
- role.(*model2.Role).GetRoleMap().ChallengeBossId = 0
- role.ReplayGate(ntfMsg, true)
- }
- })
- //获取WorldBoss列表
- serverproto.Handle_GAME_CSPlayerWorldBossListReq = model.HandleBackendMessage(func(ev rocommon.ProcEvent, cliId model.ClientID) {
- msg := ev.Msg().(*serverproto.CSPlayerWorldBossListReq)
- role := model2.RoleMag.GetRoleOrKick(cliId, ev)
- if role == nil {
- return
- }
- util.DebugF("uid=%v receive CSPlayerWorldBossListReq msg=%v", role.GetUUid(), msg)
- role.(model2.RoleMapOuter).GetWorldBossList()
- })
- //获取WorldBoss列表 from battle boss
- serverproto.Handle_GAME_SCPlayerWorldBossListAck = model.HandleBackendMessage(func(ev rocommon.ProcEvent, cliId model.ClientID) {
- msg := ev.Msg().(*serverproto.SCPlayerWorldBossListAck)
- util.DebugF("receive CSPlayerWorldBossListAck msg=%v", msg)
- role := model2.RoleMag.GetRole(cliId)
- if role == nil {
- return
- }
- role.(model2.RoleMapOuter).GetWorldBossListAckFilter(msg)
- role.ReplayGate(msg, true)
- })
- //from battle boss
- serverproto.Handle_GAME_SCPlayerWorldBossRandNtf = model.HandleBackendMessage(func(ev rocommon.ProcEvent, cliId model.ClientID) {
- msg := ev.Msg().(*serverproto.SCPlayerWorldBossRandNtf)
- role := model2.RoleMag.GetRoleFromUUid(cliId.SessID)
- if role == nil {
- role = model2.RoleMag.GetRoleFromOffline(cliId.SessID)
- if role == nil {
- return
- }
- }
- util.DebugF("uid=%v receive SCPlayerWorldBossRandNtf msg=%v", role.GetUUid(), msg)
- // 获取rand点奖励
- if msg.Error == int32(serverproto.ErrorCode_ERROR_OK) && msg.PointInfo != nil {
- msg.Error = int32(role.(model2.RoleMapOuter).GenWorldBossRandReward(msg.PointInfo, msg.PointInfo.IsOffline))
- }
- role.ReplayGate(msg, true)
- })
- }
|