| | |
| | | import ChMapToGamePyPack
|
| | | import CrossRealmMsg
|
| | | import PlayerControl
|
| | | import ChPlayer
|
| | | import ShareDefine
|
| | | #-------------------------------------------------------------------------------
|
| | | #---全局变量---
|
| | |
|
| | |
| | | curPackHeadRegDict["CallFunc"](index, curPackData, tick)
|
| | |
|
| | | except Exception:
|
| | | Log("python自定义封包解析失败~~~~~\r\n%s" % traceback.format_exc())
|
| | | if GameWorld.GetGameWorld().GetDebugLevel():
|
| | | raise Exception("python自定义封包解析失败~~~~~\r\n%s" % traceback.format_exc())
|
| | | GameWorld.RaiseException("python自定义封包解析失败\r\n%s" % traceback.format_exc())
|
| | | return
|
| | |
|
| | |
|
| | |
| | | SendFakePack(curPlayer, clientPack)
|
| | | return
|
| | |
|
| | | def SendFakePackByCross(onlinePlayerIDDict, clientPack):
|
| | | '''由跨服服务器直接给子服在线玩家发送封包,适用于接受的玩家封包数据一致的
|
| | | @param onlinePlayerIDDict: 在线玩家GroupID字典 {playerID:groupID, ...}
|
| | | 功能自行通过 onlineMgr = ChPlayer.GetOnlinePlayerMgr() 过滤
|
| | | onlineMgr.GetOLPlayerServerGroupID(playerID) 获取ServerGroupID
|
| | | '''
|
| | | if not onlinePlayerIDDict:
|
| | | return
|
| | | innerPackData = clientPack.GetBuffer()
|
| | | dataMsg = {"playerIDList":onlinePlayerIDDict.keys(), "innerPackData":innerPackData}
|
| | | CrossRealmMsg.SendMsgToClientServer(ShareDefine.CrossServerMsg_SendFakePack, dataMsg, onlinePlayerIDDict.values())
|
| | | return
|
| | |
|
| | | def CrossServerMsg_SendFakePack(msgData):
|
| | | ## 子服收到由跨服直接发送给玩家的封包
|
| | | playerIDList = msgData["playerIDList"]
|
| | | innerPackData = msgData["innerPackData"]
|
| | | |
| | | playerManager = GameWorld.GetPlayerManager()
|
| | | for playerID in playerIDList:
|
| | | curPlayer = playerManager.FindPlayerByID(playerID)
|
| | | if curPlayer == None:
|
| | | continue
|
| | | if PlayerControl.GetIsTJG(curPlayer):
|
| | | continue
|
| | | curPlayer.Sync_GeneralPack(len(innerPackData), innerPackData)
|
| | | |
| | | return
|
| | | #-------------------------------------------------------------------------------
|
| | | #---Py封包注册信息
|
| | | PyPackTable = ReadPyPackTable("PyNetPack")
|
| | |
| | | curPackHeadRegDict["CallFunc"](routeIndex, mapID, curPackData, tick)
|
| | | #Log("RecvMapPyPack: CallFunc curPackHead = %s"%curPackHead)
|
| | | except Exception:
|
| | | Log("RecvMapPyPack python自定义封包解析失败~~~~~\r\n%s" % traceback.format_exc())
|
| | | if GameWorld.GetGameWorld().GetDebugLevel():
|
| | | raise Exception("RecGamePyPack python自定义封包解析失败~~~~~\r\n%s" % traceback.format_exc())
|
| | | GameWorld.RaiseException("RecvMapPyPack python自定义封包解析失败\r\n%s" % traceback.format_exc())
|
| | | return
|
| | |
|
| | | #-------------------------------------------------------------------------------
|