cross_server_msg.go 21 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540
  1. package msg
  2. import (
  3. "rocommon"
  4. "rocommon/util"
  5. "roserver/baseserver/model"
  6. gameModel "roserver/game/model"
  7. "roserver/serverproto"
  8. )
  9. func init() {
  10. //////远航试炼
  11. //获取远航界面可视列表
  12. serverproto.Handle_GAME_CSCrossYuanHangTrialViewListReq = model.HandleBackendMessage(func(ev rocommon.ProcEvent, cliId model.ClientID) {
  13. msg := ev.Msg().(*serverproto.CSCrossYuanHangTrialViewListReq)
  14. util.InfoF("uid=%v CSCrossYuanHangTrialViewListReq msg=%v", cliId.SessID, msg)
  15. role := gameModel.RoleMag.GetRoleOrKick(cliId, ev)
  16. if role == nil {
  17. return
  18. }
  19. if !msg.Notify {
  20. role.(gameModel.CrossLogicOuter).YuanHangTrialViewList()
  21. } else {
  22. gameModel.AddNtfUid(role.GetUUid())
  23. }
  24. })
  25. serverproto.Handle_GAME_CSCrossYuanHangTrialViewListOutReq = model.HandleBackendMessage(func(ev rocommon.ProcEvent, cliId model.ClientID) {
  26. msg := ev.Msg().(*serverproto.CSCrossYuanHangTrialViewListOutReq)
  27. util.InfoF("uid=%v CSCrossYuanHangTrialViewListOutReq msg=%v", cliId.SessID, msg)
  28. role := gameModel.RoleMag.GetRoleOrKick(cliId, ev)
  29. if role == nil {
  30. return
  31. }
  32. gameModel.DelNtfUid(role.GetUUid())
  33. })
  34. //刷新远航试炼品质
  35. serverproto.Handle_GAME_CSCrossYuanHangTrialRefreshTrialTypeReq = model.HandleBackendMessage(func(ev rocommon.ProcEvent, cliId model.ClientID) {
  36. msg := ev.Msg().(*serverproto.CSCrossYuanHangTrialRefreshTrialTypeReq)
  37. util.InfoF("uid=%v CSCrossYuanHangTrialRefreshTrialTypeReq msg=%v", cliId.SessID, msg)
  38. role := gameModel.RoleMag.GetRoleOrKick(cliId, ev)
  39. if role == nil {
  40. return
  41. }
  42. role.(gameModel.CrossLogicOuter).RefreshYuanHangTrialType(msg.Force)
  43. })
  44. //发起远航试炼
  45. serverproto.Handle_GAME_CSCrossYuanHangTrialReq = model.HandleBackendMessage(func(ev rocommon.ProcEvent, cliId model.ClientID) {
  46. msg := ev.Msg().(*serverproto.CSCrossYuanHangTrialReq)
  47. util.InfoF("uid=%v CSCrossYuanHangTrialReq msg=%v", cliId.SessID, msg)
  48. role := gameModel.RoleMag.GetRoleOrKick(cliId, ev)
  49. if role == nil {
  50. return
  51. }
  52. role.(gameModel.CrossLogicOuter).YuanHangTrial()
  53. })
  54. //获取远航试炼奖励(试炼结束奖励)
  55. serverproto.Handle_GAME_CSCrossYuanHangTrialRewardReq = model.HandleBackendMessage(func(ev rocommon.ProcEvent, cliId model.ClientID) {
  56. msg := ev.Msg().(*serverproto.CSCrossYuanHangTrialRewardReq)
  57. util.InfoF("uid=%v CSCrossYuanHangTrialRewardReq msg=%v", cliId.SessID, msg)
  58. role := gameModel.RoleMag.GetRoleOrKick(cliId, ev)
  59. if role == nil {
  60. return
  61. }
  62. role.(gameModel.CrossLogicOuter).YuanHangTrialReward()
  63. })
  64. //远航试炼挑战
  65. serverproto.Handle_GAME_CSCrossYuanHangTrialChallengeReq = model.HandleBackendMessage(func(ev rocommon.ProcEvent, cliId model.ClientID) {
  66. msg := ev.Msg().(*serverproto.CSCrossYuanHangTrialChallengeReq)
  67. util.InfoF("uid=%v CSCrossYuanHangTrialChallengeReq msg=%v", cliId.SessID, msg)
  68. role := gameModel.RoleMag.GetRoleOrKick(cliId, ev)
  69. if role == nil {
  70. return
  71. }
  72. role.(gameModel.CrossLogicOuter).YuanHangTrialChallenge(msg.ChallengeUid, msg.ChallengeUidEndTime)
  73. })
  74. //挑战结果通知
  75. serverproto.Handle_GAME_CSCrossYuanHangTrialChallengeResultReq = model.HandleBackendMessage(func(ev rocommon.ProcEvent, cliId model.ClientID) {
  76. msg := ev.Msg().(*serverproto.CSCrossYuanHangTrialChallengeResultReq)
  77. util.InfoF("uid=%v CSCrossYuanHangTrialChallengeResultReq msg=%v", cliId.SessID, msg)
  78. role := gameModel.RoleMag.GetRoleOrKick(cliId, ev)
  79. if role == nil {
  80. return
  81. }
  82. role.(gameModel.CrossLogicOuter).YuanHangTrialChallengeResult(msg)
  83. })
  84. //远航试炼排行榜获取
  85. serverproto.Handle_GAME_CSCrossYuanHangTrialRankListReq = model.HandleBackendMessage(func(ev rocommon.ProcEvent, cliId model.ClientID) {
  86. msg := ev.Msg().(*serverproto.CSCrossYuanHangTrialRankListReq)
  87. util.InfoF("uid=%v CSCrossYuanHangTrialRankListReq msg=%v", cliId.SessID, msg)
  88. role := gameModel.RoleMag.GetRoleOrKick(cliId, ev)
  89. if role == nil {
  90. return
  91. }
  92. role.(gameModel.CrossLogicOuter).YuanHangTrialRankList(msg.StartIdx)
  93. })
  94. //查询飞艇信息
  95. serverproto.Handle_GAME_CSCrossYuanHangTrialInfoReq = model.HandleBackendMessage(func(ev rocommon.ProcEvent, cliId model.ClientID) {
  96. msg := ev.Msg().(*serverproto.CSCrossYuanHangTrialInfoReq)
  97. util.InfoF("uid=%v CSCrossYuanHangTrialInfoReq msg=%v", cliId.SessID, msg)
  98. role := gameModel.RoleMag.GetRoleOrKick(cliId, ev)
  99. if role == nil {
  100. return
  101. }
  102. role.(gameModel.CrossLogicOuter).YuanHangTrialInfoQuery(msg.TrialUid, msg.TrialEndTime)
  103. })
  104. //日志获取
  105. serverproto.Handle_GAME_CSCrossYuanHangTrialLogReq = model.HandleBackendMessage(func(ev rocommon.ProcEvent, cliId model.ClientID) {
  106. msg := ev.Msg().(*serverproto.CSCrossYuanHangTrialLogReq)
  107. util.InfoF("uid=%v CSCrossYuanHangTrialLogReq msg=%v", cliId.SessID, msg)
  108. role := gameModel.RoleMag.GetRoleOrKick(cliId, ev)
  109. if role == nil {
  110. return
  111. }
  112. role.(gameModel.CrossLogicOuter).YuanHangTrialLog(msg.LogTime)
  113. })
  114. //from router
  115. //跨服聊天消息返回
  116. serverproto.Handle_GAME_SSGCrossChatMessageNtf = model.HandleBackendMessage(func(ev rocommon.ProcEvent, cliId model.ClientID) {
  117. msg := ev.Msg().(*serverproto.SSGCrossChatMessageNtf)
  118. chatNtf := &serverproto.SCChatMessageNtf{}
  119. chatNtf.MsgList = append(chatNtf.MsgList, msg.MsgList...)
  120. gameModel.SendMsgFromCrossRouter(chatNtf, cliId)
  121. })
  122. serverproto.Handle_GAME_SSCrossYuanHangTrialViewListAck = model.HandleBackendMessage(func(ev rocommon.ProcEvent, cliId model.ClientID) {
  123. msg := ev.Msg().(*serverproto.SSCrossYuanHangTrialViewListAck)
  124. role := gameModel.RoleMag.GetRole(cliId)
  125. if role == nil {
  126. return
  127. }
  128. util.DebugF("uid=%v receive SSCrossYuanHangTrialViewListAck viewList=%v", role.GetUUid(), len(msg.TrialViewList))
  129. //cache manager
  130. if msg.Error == int32(serverproto.ErrorCode_ERROR_OK) {
  131. gameModel.SetYuanHangTrialViewList(msg.TrialViewList)
  132. }
  133. ackMsg := &serverproto.SCCrossYuanHangTrialViewListAck{
  134. Error: msg.Error,
  135. TrialViewList: msg.TrialViewList,
  136. }
  137. role.ReplayGate(ackMsg, true)
  138. })
  139. serverproto.Handle_GAME_SSCrossYuanHangTrialSelfAck = model.HandleBackendMessage(func(ev rocommon.ProcEvent, cliId model.ClientID) {
  140. msg := ev.Msg().(*serverproto.SSCrossYuanHangTrialSelfAck)
  141. role := gameModel.RoleMag.GetRole(cliId)
  142. if role == nil {
  143. return
  144. }
  145. util.DebugF("uid=%v receive SSCrossYuanHangTrialSelfAck selfInfo=%v", role.GetUUid(), msg.SelfInfo)
  146. //self info
  147. if msg.SelfInfo != nil {
  148. role.(*gameModel.Role).GetRoleCross().UpdateTrialInfo(msg.SelfInfo.BeChallengeNum)
  149. }
  150. })
  151. serverproto.Handle_GAME_SSCrossYuanHangTrialChallengeAck = model.HandleBackendMessage(func(ev rocommon.ProcEvent, cliId model.ClientID) {
  152. msg := ev.Msg().(*serverproto.SSCrossYuanHangTrialChallengeAck)
  153. role := gameModel.RoleMag.GetRole(cliId)
  154. if role == nil {
  155. return
  156. }
  157. util.DebugF("uid=%v receive SSCrossYuanHangTrialChallengeAck ms=%v", role.GetUUid(), msg)
  158. ackMsg := &serverproto.SCCrossYuanHangTrialChallengeAck{
  159. Error: msg.Error,
  160. ChallengeUid: msg.ChallengeUid,
  161. ChallengeUidEndTime: msg.ChallengeUidEndTime,
  162. FightInfo: msg.FightInfo,
  163. }
  164. role.ReplayGate(ackMsg, true)
  165. })
  166. serverproto.Handle_GAME_SSCrossYuanHangTrialChallengeResultAck = model.HandleBackendMessage(func(ev rocommon.ProcEvent, cliId model.ClientID) {
  167. msg := ev.Msg().(*serverproto.SSCrossYuanHangTrialChallengeResultAck)
  168. role := gameModel.RoleMag.GetRole(cliId)
  169. if role == nil {
  170. return
  171. }
  172. util.DebugF("uid=%v receive SSCrossYuanHangTrialChallengeResultAck ms=%v", role.GetUUid(), msg)
  173. role.(gameModel.CrossLogicOuter).OnYuanHangTrialChallengeResult(msg)
  174. })
  175. serverproto.Handle_GAME_SSCrossYuanHangTrialViewNtf = model.HandleBackendMessage(func(ev rocommon.ProcEvent, cliId model.ClientID) {
  176. msg := ev.Msg().(*serverproto.SSCrossYuanHangTrialViewNtf)
  177. util.DebugF("receive SSCrossYuanHangTrialViewNtf ms=%v", msg)
  178. //更新cache列表
  179. gameModel.UpdateTrialViewItem(msg.TrialViewList)
  180. ntfMsg := &serverproto.SCCrossYuanHangTrialViewListNtf{
  181. TrialViewList: msg.TrialViewList,
  182. }
  183. gameModel.NtfMsg(ntfMsg)
  184. })
  185. serverproto.Handle_GAME_SSCrossYuanHangTrialRankListAck = model.HandleBackendMessage(func(ev rocommon.ProcEvent, cliId model.ClientID) {
  186. msg := ev.Msg().(*serverproto.SSCrossYuanHangTrialRankListAck)
  187. role := gameModel.RoleMag.GetRole(cliId)
  188. if role == nil {
  189. return
  190. }
  191. util.DebugF("uid=%v receive SSCrossYuanHangTrialRankListAck ms=%v", role.GetUUid(), msg)
  192. //update cache
  193. gameModel.UpdateYuanHangTrialRankList(msg.StartIdx, msg.RankList)
  194. role.(*gameModel.Role).GetRoleCross().UpdateRankListSelfInfoCache(msg)
  195. ackMsg := &serverproto.SCCrossYuanHangTrialRankListAck{
  196. SelfRank: msg.SelfRank,
  197. SelfScore: msg.SelfScore,
  198. TotalRank: msg.TotalRank,
  199. RankList: msg.RankList,
  200. StartIdx: msg.StartIdx,
  201. }
  202. role.ReplayGate(ackMsg, true)
  203. })
  204. //远航被挑战日志通知
  205. serverproto.Handle_GAME_SSCrossYuanHangTrialLogNtf = model.HandleBackendMessage(func(ev rocommon.ProcEvent, cliId model.ClientID) {
  206. msg := ev.Msg().(*serverproto.SSCrossYuanHangTrialLogNtf)
  207. util.DebugF("uid=%v receive SSCrossYuanHangTrialLogNtf ms=%v", msg.NtfUid, msg)
  208. if msg.NtfUid > 0 {
  209. role := gameModel.RoleMag.GetRoleFromUUid(msg.NtfUid)
  210. if role == nil {
  211. role = gameModel.RoleMag.GetRoleFromOffline(msg.NtfUid)
  212. }
  213. if role != nil {
  214. role.(*gameModel.Role).GetRoleCross().AddLog(msg.LogData)
  215. } else {
  216. gameModel.SendDb(msg)
  217. }
  218. }
  219. })
  220. serverproto.Handle_GAME_SSCCrossYuanHangTrialInfoAck = model.HandleBackendMessage(func(ev rocommon.ProcEvent, cliId model.ClientID) {
  221. msg := ev.Msg().(*serverproto.SSCCrossYuanHangTrialInfoAck)
  222. role := gameModel.RoleMag.GetRole(cliId)
  223. if role == nil {
  224. return
  225. }
  226. util.DebugF("uid=%v receive SSCCrossYuanHangTrialInfoAck ms=%v", role.GetUUid(), msg)
  227. ackMsg := &serverproto.SCCrossYuanHangTrialInfoAck{
  228. Error: msg.Error,
  229. TrialData: msg.TrialData,
  230. NickName: msg.NickName,
  231. }
  232. role.ReplayGate(ackMsg, true)
  233. })
  234. //////巅峰之塔
  235. serverproto.Handle_GAME_CSCrossTopTowerFightListReq = model.HandleBackendMessage(func(ev rocommon.ProcEvent, cliId model.ClientID) {
  236. msg := ev.Msg().(*serverproto.CSCrossTopTowerFightListReq)
  237. role := gameModel.RoleMag.GetRoleOrKick(cliId, ev)
  238. if role == nil {
  239. return
  240. }
  241. util.InfoF("uid=%v CSCrossTopTowerFightListReq msg=%v", role.GetUUid(), msg)
  242. role.(gameModel.CrossLogicOuter).TopTowerFightListReq()
  243. })
  244. //发起挑战,判断合法性
  245. serverproto.Handle_GAME_CSCrossTopTowerChallengeReq = model.HandleBackendMessage(func(ev rocommon.ProcEvent, cliId model.ClientID) {
  246. msg := ev.Msg().(*serverproto.CSCrossTopTowerChallengeReq)
  247. role := gameModel.RoleMag.GetRoleOrKick(cliId, ev)
  248. if role == nil {
  249. return
  250. }
  251. util.InfoF("uid=%v CSCrossTopTowerChallengeReq msg=%v", role.GetUUid(), msg)
  252. ret, info := role.(*gameModel.Role).GetRoleCross().TopTowerChallengeReq(msg.FightIdx)
  253. ackMsg := &serverproto.SCCrossTopTowerChallengeAck{
  254. Error: int32(ret),
  255. FightInfo: info,
  256. }
  257. role.ReplayGate(ackMsg, true)
  258. })
  259. //获取挑战者view信息
  260. serverproto.Handle_GAME_CSCrossTopTowerChallengeViewInfoReq = model.HandleBackendMessage(func(ev rocommon.ProcEvent, cliId model.ClientID) {
  261. msg := ev.Msg().(*serverproto.CSCrossTopTowerChallengeViewInfoReq)
  262. role := gameModel.RoleMag.GetRoleOrKick(cliId, ev)
  263. if role == nil {
  264. return
  265. }
  266. util.InfoF("uid=%v CSCrossTopTowerChallengeViewInfoReq msg=%v", role.GetUUid(), msg)
  267. ret, info := role.(*gameModel.Role).GetRoleCross().TopTowerChallengeReq(msg.FightIdx)
  268. ackMsg := &serverproto.SCCrossTopTowerChallengeViewInfoAck{
  269. Error: int32(ret),
  270. FightInfo: info,
  271. }
  272. role.ReplayGate(ackMsg, true)
  273. })
  274. //战斗结果通知
  275. serverproto.Handle_GAME_CSCrossTopTowerChallengeResultReq = model.HandleBackendMessage(func(ev rocommon.ProcEvent, cliId model.ClientID) {
  276. msg := ev.Msg().(*serverproto.CSCrossTopTowerChallengeResultReq)
  277. role := gameModel.RoleMag.GetRoleOrKick(cliId, ev)
  278. if role == nil {
  279. return
  280. }
  281. util.InfoF("uid=%v CSCrossTopTowerChallengeResultReq msg=%v", role.GetUUid(), msg)
  282. role.(gameModel.CrossLogicOuter).TopTowerChallengeResultReq(msg.IsWin, msg.FightIdx)
  283. })
  284. //买路操作(直接胜利)
  285. serverproto.Handle_GAME_CSCrossTopTowerForceWinReq = model.HandleBackendMessage(func(ev rocommon.ProcEvent, cliId model.ClientID) {
  286. msg := ev.Msg().(*serverproto.CSCrossTopTowerForceWinReq)
  287. role := gameModel.RoleMag.GetRoleOrKick(cliId, ev)
  288. if role == nil {
  289. return
  290. }
  291. util.InfoF("uid=%v CSCrossTopTowerForceWinReq msg=%v", role.GetUUid(), msg)
  292. role.(gameModel.CrossLogicOuter).TopTowerForceWinReq(msg.FightIdx)
  293. })
  294. //获取买路排行榜
  295. serverproto.Handle_GAME_CSCrossTopTowerForceWinRankListReq = model.HandleBackendMessage(func(ev rocommon.ProcEvent, cliId model.ClientID) {
  296. msg := ev.Msg().(*serverproto.CSCrossTopTowerForceWinRankListReq)
  297. role := gameModel.RoleMag.GetRoleOrKick(cliId, ev)
  298. if role == nil {
  299. return
  300. }
  301. util.InfoF("uid=%v CSCrossTopTowerForceWinRankListReq msg=%v", role.GetUUid(), msg)
  302. crossSSMsg := &serverproto.SSCrossTopTowerForceWinRankListReq{
  303. Uid: msg.Uid,
  304. StartIdx: msg.StartIdx,
  305. }
  306. role.(*gameModel.Role).SendSocial(crossSSMsg)
  307. })
  308. //from router
  309. //巅峰之塔匹配玩家ack
  310. serverproto.Handle_GAME_SSCrossTopTowerMatchFightAck = model.HandleBackendMessage(func(ev rocommon.ProcEvent, cliId model.ClientID) {
  311. msg := ev.Msg().(*serverproto.SSCrossTopTowerMatchFightAck)
  312. role := gameModel.RoleMag.GetRole(cliId)
  313. if role == nil {
  314. return
  315. }
  316. util.DebugF("uid=%v receive SSCrossTopTowerMatchFightAck msg=%v", role.GetUUid(), msg)
  317. role.(*gameModel.Role).GetRoleCross().OnTopTowerFightMatchList(msg)
  318. })
  319. //获取买路排行榜
  320. serverproto.Handle_GAME_SSCrossTopTowerForceWinRankListAck = model.HandleBackendMessage(func(ev rocommon.ProcEvent, cliId model.ClientID) {
  321. msg := ev.Msg().(*serverproto.SSCrossTopTowerForceWinRankListAck)
  322. role := gameModel.RoleMag.GetRole(cliId)
  323. if role == nil {
  324. return
  325. }
  326. util.DebugF("uid=%v receive SSCrossTopTowerForceWinRankListAck ms=%v", role.GetUUid(), msg)
  327. ackMsg := &serverproto.SCCrossTopTowerForceWinRankListAck{
  328. SelfRank: msg.SelfRank,
  329. SelfScore: msg.SelfScore,
  330. TotalRank: msg.TotalRank,
  331. RankList: msg.RankList,
  332. StartIdx: msg.StartIdx,
  333. }
  334. role.ReplayGate(ackMsg, true)
  335. })
  336. //////GlobalCross 跨服地图相关系统(教堂)
  337. //获取服务器列表信息(状态)
  338. serverproto.Handle_GAME_CSGCrossGetServerStateReq = model.HandleBackendMessage(func(ev rocommon.ProcEvent, cliId model.ClientID) {
  339. msg := ev.Msg().(*serverproto.CSGCrossGetServerStateReq)
  340. util.DebugF("uid=%v receive CSGCrossGetServerStateReq msg=%v", cliId.SessID, msg)
  341. role := gameModel.RoleMag.GetRoleOrKick(cliId, ev)
  342. if role == nil {
  343. return
  344. }
  345. ackMsg := gameModel.GetServerStateListByType(msg.ServerType, true)
  346. if ackMsg == nil {
  347. ssStateMsg := &serverproto.SSGetGServerStateReq{
  348. ServerType: model.SERVICE_NODE_TYPE_GLOBALCROSSMAP,
  349. }
  350. role.(*gameModel.Role).SendSocial(ssStateMsg)
  351. } else {
  352. role.ReplayGate(ackMsg, true)
  353. }
  354. })
  355. //角色进入地图
  356. serverproto.Handle_GAME_CSGCrossPlayerEnterMapReq = model.HandleBackendMessage(func(ev rocommon.ProcEvent, cliId model.ClientID) {
  357. msg := ev.Msg().(*serverproto.CSGCrossPlayerEnterMapReq)
  358. util.DebugF("uid=%v receive CSGCrossPlayerEnterMapReq msg=%v", cliId.SessID, msg)
  359. role := gameModel.RoleMag.GetRoleOrKick(cliId, ev)
  360. if role == nil {
  361. return
  362. }
  363. role.(gameModel.RoleCrossMapRouter).PlayerEnterMap(msg)
  364. })
  365. //角色离开地图
  366. serverproto.Handle_GAME_CSGCrossPlayerLeaveMapReq = model.HandleBackendMessage(func(ev rocommon.ProcEvent, cliId model.ClientID) {
  367. msg := ev.Msg().(*serverproto.CSGCrossPlayerLeaveMapReq)
  368. util.DebugF("uid=%v receive CSGCrossPlayerLeaveMapReq msg=%v", cliId.SessID, msg)
  369. role := gameModel.RoleMag.GetRoleOrKick(cliId, ev)
  370. if role == nil {
  371. return
  372. }
  373. role.(gameModel.RoleCrossMapRouter).PlayerLeave(msg)
  374. })
  375. //客户端1s内发送的位置同步包(视野同步)
  376. serverproto.Handle_GAME_CSGCrossPlayerMapSyncPosReq = model.HandleBackendMessage(func(ev rocommon.ProcEvent, cliId model.ClientID) {
  377. msg := ev.Msg().(*serverproto.CSGCrossPlayerMapSyncPosReq)
  378. //util.DebugF("uid=%v receive CSGCrossPlayerMapSyncPosReq msg=%v", cliId.SessID, msg)
  379. role := gameModel.RoleMag.GetRoleOrKick(cliId, ev)
  380. if role == nil {
  381. return
  382. }
  383. role.(gameModel.RoleCrossMapRouter).PlayerMoveSync(msg)
  384. })
  385. //客户端模拟使用
  386. serverproto.Handle_GAME_CSGCrossPlayerMapSyncParamReq = model.HandleBackendMessage(func(ev rocommon.ProcEvent, cliId model.ClientID) {
  387. msg := ev.Msg().(*serverproto.CSGCrossPlayerMapSyncParamReq)
  388. //util.DebugF("uid=%v receive CSGCrossPlayerMapSyncParamReq msg=%v", cliId.SessID, msg)
  389. role := gameModel.RoleMag.GetRoleOrKick(cliId, ev)
  390. if role == nil {
  391. return
  392. }
  393. role.(gameModel.RoleCrossMapRouter).PlayerSyncParam(msg)
  394. })
  395. //获取其他玩家角色信息,AOI地图显示使用(注意:每次发送不超过10个玩家,超过10个后服务器不会返回,做保护处理)
  396. serverproto.Handle_GAME_CSGCrossPlayerShowInfoReq = model.HandleBackendMessage(func(ev rocommon.ProcEvent, cliId model.ClientID) {
  397. msg := ev.Msg().(*serverproto.CSGCrossPlayerShowInfoReq)
  398. util.DebugF("uid=%v receive CSGCrossPlayerShowInfoReq msg=%v", cliId.SessID, msg)
  399. role := gameModel.RoleMag.GetRoleOrKick(cliId, ev)
  400. if role == nil {
  401. return
  402. }
  403. if len(msg.PlayerList) > 30 && len(msg.PlayerList) <= 0 {
  404. util.WarnF("uid=%v CSCrossPlayerShowInfoReq player beyond[30] limit len=%v", role.GetUUid(), len(msg.PlayerList))
  405. return
  406. }
  407. ssCrossMsg := &serverproto.SSGCrossMapOtherUnitShowInfoReq{
  408. ShowUidList: msg.PlayerList,
  409. CurSpaceId: role.(*gameModel.Role).GetRoleCross().GetCrossCurSpaceId(),
  410. }
  411. role.(*gameModel.Role).SendSocial(ssCrossMsg)
  412. })
  413. //from router
  414. //获取服务器线路信息
  415. serverproto.Handle_GAME_SSGetGServerStateAck = model.HandleBackendMessage(func(ev rocommon.ProcEvent, cliId model.ClientID) {
  416. msg := ev.Msg().(*serverproto.SSGetGServerStateAck)
  417. gameModel.UpdateServerStateListByType(msg.ServerType, msg)
  418. if cliId.SessID > 0 {
  419. util.DebugF("uid=%v receive SSGetGServerStateAck msg=%v", cliId.SessID, msg)
  420. role := gameModel.RoleMag.GetRole(cliId)
  421. if role == nil {
  422. return
  423. }
  424. ackMsg := gameModel.GetServerStateListByType(msg.ServerType, false)
  425. role.ReplayGate(ackMsg, true)
  426. }
  427. })
  428. //进入地图回应
  429. serverproto.Handle_GAME_SSGCrossMapEnterAck = model.HandleBackendMessage(func(ev rocommon.ProcEvent, cliId model.ClientID) {
  430. msg := ev.Msg().(*serverproto.SSGCrossMapEnterAck)
  431. role := gameModel.RoleMag.GetRole(cliId)
  432. if role == nil {
  433. return
  434. }
  435. util.DebugF("uid=%v receive SSGCrossMapEnterAck ms=%v", role.GetUUid(), msg)
  436. ackMsg := &serverproto.SCGCrossPlayerEnterMapAck{
  437. Error: msg.Error,
  438. SelfInfo: msg.UnitInfo,
  439. LineNum: msg.LineNum,
  440. }
  441. role.ReplayGate(ackMsg, true)
  442. //选择线路成功
  443. if msg.Error == int32(serverproto.ErrorCode_ERROR_OK) {
  444. role.(*gameModel.Role).GetRoleCross().OnPlayerEnterMapSuccess(msg)
  445. }
  446. })
  447. //通知其他玩家,有单位进入地图
  448. serverproto.Handle_GAME_SSGCrossMapEnterNtf = model.HandleBackendMessage(func(ev rocommon.ProcEvent, cliId model.ClientID) {
  449. msg := ev.Msg().(*serverproto.SSGCrossMapEnterNtf)
  450. //util.DebugF("SSGCrossMapEnterNtf ms=%v", len(msg.UnitInfoList))
  451. ntfMsg := &serverproto.SCGCrossPlayerEnterNtf{
  452. UnitInfoList: msg.UnitInfoList,
  453. }
  454. gameModel.SendMsgFromCrossRouter(ntfMsg, cliId)
  455. })
  456. //通知其他单位,有单位离开地图
  457. serverproto.Handle_GAME_SSGCrossMapLeaveNtf = model.HandleBackendMessage(func(ev rocommon.ProcEvent, cliId model.ClientID) {
  458. msg := ev.Msg().(*serverproto.SSGCrossMapLeaveNtf)
  459. //util.DebugF("SSGCrossMapLeaveNtf ms=%v", len(msg.UnitInfoList))
  460. ntfMsg := &serverproto.SCGCrossPlayerLeaveNtf{
  461. UnitInfoList: msg.UnitInfoList,
  462. }
  463. gameModel.SendMsgFromCrossRouter(ntfMsg, cliId)
  464. })
  465. //位置同步消息
  466. serverproto.Handle_GAME_SSGCrossMapSyncPosNtf = model.HandleBackendMessage(func(ev rocommon.ProcEvent, cliId model.ClientID) {
  467. msg := ev.Msg().(*serverproto.SSGCrossMapSyncPosNtf)
  468. //util.DebugF("SSGCrossMapSyncPosNtf ms=%v", len(msg.SyncUnitList))
  469. ntfMsg := &serverproto.SCGCrossPlayerMapSyncPosNtf{
  470. UnitInfoList: msg.SyncUnitList,
  471. }
  472. gameModel.SendMsgFromCrossRouter(ntfMsg, cliId)
  473. })
  474. serverproto.Handle_GAME_SSGCrossMapSyncParamNtf = model.HandleBackendMessage(func(ev rocommon.ProcEvent, cliId model.ClientID) {
  475. msg := ev.Msg().(*serverproto.SSGCrossMapSyncParamNtf)
  476. //util.DebugF("SSGCrossMapSyncParamNtf ms=%v", msg.SyncUnitList)
  477. ntfMsg := &serverproto.SCGCrossPlayerMapSyncParamNtf{
  478. UnitInfoList: msg.SyncUnitList,
  479. }
  480. gameModel.SendMsgFromCrossRouter(ntfMsg, cliId)
  481. })
  482. serverproto.Handle_GAME_SSGCrossMapOtherUnitShowInfoNtf = model.HandleBackendMessage(func(ev rocommon.ProcEvent, cliId model.ClientID) {
  483. msg := ev.Msg().(*serverproto.SSGCrossMapOtherUnitShowInfoNtf)
  484. util.DebugF("receive SSGCrossMapOtherUnitShowInfoAck msg=%v", len(msg.ShowInfoList))
  485. ntfMsg := &serverproto.SCGCrossPlayerShowInfoNtf{
  486. ShowInfoList: msg.ShowInfoList,
  487. }
  488. gameModel.SendMsgFromCrossRouter(ntfMsg, cliId)
  489. })
  490. }