|  |  |  | 
|---|
|  |  |  | # @change: "2014-12-23 15:30" xmnathan GameServer增加根据LineNO发送Py自定义包接口 | 
|---|
|  |  |  | # @change: "2015-10-22 23:00" hxp 增加Recv_MergerChildToCenter | 
|---|
|  |  |  | #------------------------------------------------------------------------------- | 
|---|
|  |  |  | """Version = 2015-10-22 23:00""" | 
|---|
|  |  |  | #"""Version = 2015-10-22 23:00""" | 
|---|
|  |  |  | #------------------------------------------------------------------------------- | 
|---|
|  |  |  | #---导入--- | 
|---|
|  |  |  | import IPY_GameServer | 
|---|
|  |  |  | 
|---|
|  |  |  | import ChPyNetSendPack | 
|---|
|  |  |  | import traceback | 
|---|
|  |  |  | import ChMapToGamePyPack | 
|---|
|  |  |  | import MergeChildMsg | 
|---|
|  |  |  | import CrossRealmMsg | 
|---|
|  |  |  | import PlayerControl | 
|---|
|  |  |  | #------------------------------------------------------------------------------- | 
|---|
|  |  |  | #---全局变量--- | 
|---|
|  |  |  |  | 
|---|
|  |  |  | 
|---|
|  |  |  | #        Log("ReadPyPackTable: moudle: %s"%dir(moudle)) | 
|---|
|  |  |  |  | 
|---|
|  |  |  | for index in range(regCnt): | 
|---|
|  |  |  | if not config.get(section, "PacketCMD_%s"%(index + 1)): | 
|---|
|  |  |  | continue | 
|---|
|  |  |  | cmd = config.get(section, "PacketCMD_%s"%(index + 1)) | 
|---|
|  |  |  | subCmd = config.get(section, "PacketSubCMD_%s"%(index + 1)) | 
|---|
|  |  |  | callFunc = config.get(section, "PacketCallFunc_%s"%(index + 1)) | 
|---|
|  |  |  | if not cmd or not subCmd or not callFunc: | 
|---|
|  |  |  | continue | 
|---|
|  |  |  |  | 
|---|
|  |  |  | cmd = int(cmd, 16) | 
|---|
|  |  |  | subCmd = int(subCmd, 16) | 
|---|
|  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | except Exception: | 
|---|
|  |  |  | Log("python自定义封包解析失败~~~~~\r\n%s" % traceback.format_exc()) | 
|---|
|  |  |  | #raise Exception("python自定义封包解析失败~~~~~\r\n%s" % traceback.format_exc()) | 
|---|
|  |  |  | if GameWorld.GetGameWorld().GetDebugLevel(): | 
|---|
|  |  |  | raise Exception("python自定义封包解析失败~~~~~\r\n%s" % traceback.format_exc()) | 
|---|
|  |  |  | return | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | 
|---|
|  |  |  | innerPackData = clientPack.GetBuffer() | 
|---|
|  |  |  | curPlayer.Sync_GeneralPack(len(innerPackData), innerPackData) | 
|---|
|  |  |  |  | 
|---|
|  |  |  | def SendPackByPlayer(clientPack, curPlayer=None): | 
|---|
|  |  |  | ## 发送封包,当curPlayer为None时则发送全服玩家 | 
|---|
|  |  |  | if not curPlayer: | 
|---|
|  |  |  | # 全服广播在线玩家 | 
|---|
|  |  |  | playerManager = GameWorld.GetPlayerManager() | 
|---|
|  |  |  | for i in xrange(playerManager.GetActivePlayerCount()): | 
|---|
|  |  |  | curPlayer = playerManager.GetActivePlayerAt(i) | 
|---|
|  |  |  | if curPlayer == None: | 
|---|
|  |  |  | continue | 
|---|
|  |  |  | if PlayerControl.GetIsTJG(curPlayer): | 
|---|
|  |  |  | continue | 
|---|
|  |  |  | SendFakePack(curPlayer, clientPack) | 
|---|
|  |  |  | else: | 
|---|
|  |  |  | if PlayerControl.GetIsTJG(curPlayer): | 
|---|
|  |  |  | return | 
|---|
|  |  |  | SendFakePack(curPlayer, clientPack) | 
|---|
|  |  |  | return | 
|---|
|  |  |  |  | 
|---|
|  |  |  | #------------------------------------------------------------------------------- | 
|---|
|  |  |  | #---Py封包注册信息 | 
|---|
|  |  |  | 
|---|
|  |  |  | def Recv_MergerChildToCenter(index, tick): | 
|---|
|  |  |  | try: | 
|---|
|  |  |  | packData = IPY_GameServer.IPY_MGMergerChildToCenter().GetData() | 
|---|
|  |  |  | Log("收到跨服子服自定义封包消息:\r\n%s" % packData) | 
|---|
|  |  |  | # 不要输出具体封包内容,可能会因为内容导致日志输出报错 | 
|---|
|  |  |  | Log("收到跨服子服自定义封包消息:长度=%s" % len(packData)) | 
|---|
|  |  |  | #以下添加后续处理函数 | 
|---|
|  |  |  | #... | 
|---|
|  |  |  | #... | 
|---|
|  |  |  | MergeChildMsg.Recv_MergerChildToCenterProcess(packData, tick) | 
|---|
|  |  |  | CrossRealmMsg.OnCrossServerReceiveMsg(packData, tick) | 
|---|
|  |  |  | except Exception: | 
|---|
|  |  |  | Log("跨服子服自定义封包消息处理失败") | 
|---|
|  |  |  | return | 
|---|