ServerPython/CoreServerGroup/GameServer/Script/NetPackCommon.py
@@ -17,7 +17,7 @@
# @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
@@ -29,7 +29,8 @@
import ChPyNetSendPack
import traceback
import ChMapToGamePyPack
import MergeChildMsg
import CrossRealmMsg
import PlayerControl
#-------------------------------------------------------------------------------
#---全局变量---
@@ -95,9 +96,13 @@
#        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)
@@ -204,8 +209,7 @@
        curPackHeadRegDict["CallFunc"](index, curPackData, tick)
        
    except Exception:
        Log("python自定义封包解析失败~~~~~\r\n%s" % traceback.format_exc())
        #raise Exception("python自定义封包解析失败~~~~~\r\n%s" % traceback.format_exc())
        GameWorld.RaiseException("python自定义封包解析失败\r\n%s" % traceback.format_exc())
        return 
    
    
@@ -219,6 +223,23 @@
    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封包注册信息
@@ -276,9 +297,7 @@
        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 
    
#-------------------------------------------------------------------------------
@@ -297,11 +316,12 @@
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