hxp
2024-12-20 87de8ad7ed5c10277275fd8657bd28729c36ecf1
ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/CrossRealmMsg.py
@@ -17,20 +17,36 @@
import GameWorld
import ShareDefine
import PlayerAssist
import PlayerControl
import PlayerPackData
import PlayerFuncTeam
import CrossLuckyCloudBuy
import IPY_GameServer
import PlayerViewCache
import CrossRealmPlayer
import PlayerCompensation
import PlayerActBossTrial
import PlayerActXianXiaMJ
import PlayerActGubao
import PlayerActHorsePetTrain
import CrossActionControl
import CrossActAllRecharge
import CrossFamilyFlagwar
import CrossChampionship
import CrossBattlefield
import CrossBillboard
import CrossYaomoBoss
import GameWorldBoss
import CrossRealmPK
import GameXiangong
import GameWorship
import PlayerQuery
import PlayerTalk
import PyGameData
import CrossBoss
import ChConfig
import ChPlayer
import PlayerFB
import GMShell
@@ -51,7 +67,7 @@
    if not GameWorld.GetGameWorld().GetDictByKey(ChConfig.Def_WorldKey_GameWorldInitOK):
        GameWorld.ErrLog("服务器未启动好,不允许向跨服服务器发送数据! %s" % (srcMsg))
        return
    GameWorld.Log("SendMsgToCrossServer => %s" % (srcMsg))
    GameWorld.Log("SendMsgToCrossServer => %s, %s" % (msgType, srcMsg))
    GameWorld.GetGameWorld().SendMergerChildToCenterStringData(sendMsg, len(sendMsg))
    return
@@ -63,11 +79,11 @@
            return
        msgDict = cPickle.loads(recvMsg)
        
        GameWorld.Log("OnCrossServerReceiveMsg: %s" % msgDict)
        msgType = msgDict.get("MsgType", -1)    
        msgData = msgDict.get("Data", "")
        serverGroupID = msgDict.get("ServerGroupID", 0)
        GameWorld.Log("OnCrossServerReceiveMsg: %s, %s, %s" % (msgType, serverGroupID, msgDict))
        
        if msgType == ShareDefine.ClientServerMsg_PKMatch:
            CrossRealmPK.ClientServerMsg_PKMatch(serverGroupID, msgData, tick)
@@ -98,7 +114,10 @@
            
        elif msgType == ShareDefine.ClientServerMsg_ChatCrossWorld:
            PlayerTalk.ClientServerMsg_ChatCrossWorld(serverGroupID, msgData, tick)
        elif msgType == ShareDefine.ClientServerMsg_PlayerLoginout:
            ChPlayer.ClientServerMsg_PlayerLoginout(serverGroupID, msgData)
        elif msgType == ShareDefine.ClientServerMsg_GMCMD:
            GMShell.ClientServerMsg_GMCMD(msgData, tick)
            
@@ -106,7 +125,16 @@
            ClientServerMsg_ServerInitOK(serverGroupID, tick)
            
        elif msgType == ShareDefine.ClientServerMsg_ViewPlayerCache:
            CrossRealmPlayer.ClientServerMsg_ViewPlayerCache(serverGroupID, msgData)
            PlayerViewCache.ClientServerMsg_ViewPlayerCache(serverGroupID, msgData)
        elif msgType == ShareDefine.ClientServerMsg_PushPlayerCache:
            PlayerViewCache.ClientServerMsg_PushPlayerCache(serverGroupID, msgData)
        elif msgType == ShareDefine.ClientServerMsg_PullOtherPlayerPackData:
            PlayerPackData.ClientServerMsg_PullOtherPlayerPackData(serverGroupID, msgData)
        elif msgType == ShareDefine.ClientServerMsg_PlayerPackData:
            PlayerPackData.ClientServerMsg_PlayerPackData(serverGroupID, msgData)
            
        elif msgType == ShareDefine.ClientServerMsg_QueryNPCInfo:
            PlayerQuery.ClientServerMsg_QueryNPCInfo(serverGroupID, msgData)
@@ -119,6 +147,75 @@
            
        elif msgType == ShareDefine.ClientServerMsg_AddBuff:
            MapServer_CrossAddBuff(msgData)
        elif msgType == ShareDefine.ClientServerMsg_CrossAssist:
            PlayerAssist.ClientServerMsg_CrossAssist(serverGroupID, msgData, tick)
        elif msgType == ShareDefine.ClientServerMsg_BattlefieldBuyOpen:
            CrossBattlefield.ClientServerMsg_BattlefieldBuyOpen(serverGroupID, msgData)
        elif msgType == ShareDefine.ClientServerMsg_BattlefieldCallJoin:
            CrossBattlefield.ClientServerMsg_BattlefieldCallJoin(serverGroupID, msgData)
        elif msgType == ShareDefine.ClientServerMsg_BattlefieldCallKick:
            CrossBattlefield.ClientServerMsg_BattlefieldCallKick(serverGroupID, msgData)
        elif msgType == ShareDefine.ClientServerMsg_BattlefieldCallChange:
            CrossBattlefield.ClientServerMsg_BattlefieldCallChange(serverGroupID, msgData)
        elif msgType == ShareDefine.ClientServerMsg_ChampionshipOfficialApply:
            CrossChampionship.ClientServerMsg_ChampionshipOfficialApply(serverGroupID, msgData)
        elif msgType == ShareDefine.ClientServerMsg_ChampionshipOfficialApplyReply:
            CrossChampionship.ClientServerMsg_ChampionshipOfficialApplyReply(serverGroupID, msgData)
        elif msgType == ShareDefine.ClientServerMsg_ChampionshipOfficialKick:
            CrossChampionship.ClientServerMsg_ChampionshipOfficialKick(serverGroupID, msgData)
        elif msgType == ShareDefine.ClientServerMsg_ChampionshipOfficialLeave:
            CrossChampionship.ClientServerMsg_ChampionshipOfficialLeave(serverGroupID, msgData)
        elif msgType == ShareDefine.ClientServerMsg_ChampionshipOfficialChallenge:
            CrossChampionship.ClientServerMsg_ChampionshipOfficialChallenge(serverGroupID, msgData)
        elif msgType == ShareDefine.ClientServerMsg_ChampionshipGuess:
            CrossChampionship.ClientServerMsg_ChampionshipGuess(serverGroupID, msgData)
        elif msgType == ShareDefine.ClientServerMsg_ChampionshipWorship:
            CrossChampionship.ClientServerMsg_ChampionshipWorship(serverGroupID, msgData)
        elif msgType == ShareDefine.ClientServerMsg_ActAllRechargeValue:
            CrossActAllRecharge.ClientServerMsg_ActAllRechargeValue(serverGroupID, msgData)
        elif msgType == ShareDefine.ClientServerMsg_CrossYaomoBossHurtAward:
            CrossYaomoBoss.ClientServerMsg_CrossYaomoBossHurtAward(serverGroupID, msgData)
        elif msgType == ShareDefine.ClientServerMsg_BossTrialSubmit:
            PlayerActBossTrial.ClientServerMsg_BossTrialSubmit(serverGroupID, msgData)
        elif msgType == ShareDefine.ClientServerMsg_XianXiaMJScore:
            PlayerActXianXiaMJ.ClientServerMsg_XianXiaMJScore(serverGroupID, msgData)
        elif msgType == ShareDefine.ClientServerMsg_GubaoScore:
            PlayerActGubao.ClientServerMsg_GubaoScore(serverGroupID, msgData)
        elif msgType == ShareDefine.ClientServerMsg_HorsePetTrainScore:
            PlayerActHorsePetTrain.ClientServerMsg_HorsePetTrainScore(serverGroupID, msgData)
        elif msgType == ShareDefine.ClientServerMsg_CreateFuncTeam:
            PlayerFuncTeam.ClientServerMsg_CreateFuncTeam(serverGroupID, msgData)
        elif msgType == ShareDefine.ClientServerMsg_ChangeFuncTeam:
            PlayerFuncTeam.ClientServerMsg_ChangeFuncTeam(serverGroupID, msgData)
        elif msgType == ShareDefine.ClientServerMsg_FuncTeamMemOP:
            PlayerFuncTeam.ClientServerMsg_FuncTeamMemOP(serverGroupID, msgData)
        elif msgType == ShareDefine.ClientServerMsg_QueryFuncTeam:
            PlayerFuncTeam.ClientServerMsg_QueryFuncTeam(serverGroupID, msgData)
        elif msgType == ShareDefine.ClientServerMsg_QueryXiangong:
            GameXiangong.ClientServerMsg_QueryXiangong(serverGroupID, msgData)
            
        # 需要发送到地图服务器处理的
        elif msgType in [ShareDefine.ClientServerMsg_Reborn, ShareDefine.ClientServerMsg_CollectNPC]:
@@ -149,10 +246,15 @@
    '''
    CrossRealmPlayer.Sync_CrossCommInitDataToClientServer(serverGroupID)
    CrossRealmPK.Sync_CrossPKInitDataToClientServer(tick, serverGroupID)
    CrossChampionship.Sync_CrossChampionshipDataToClientServer(serverGroupID)
    CrossBattlefield.Sync_CrossBattlefieldDataToClientServer(serverGroupID)
    CrossBoss.Sync_CrossBossInitDataToClientServer(serverGroupID)
    CrossLuckyCloudBuy.Sync_LuckyCloudBuyDataToClientServer(tick, serverGroupID)
    CrossActionControl.Sync_CrossActInfoToClientServer(serverGroupID)
    CrossLuckyCloudBuy.Sync_LuckyCloudBuyDataToClientServer(tick, serverGroupID)
    CrossActAllRecharge.Sync_AllRechargeDataToClientServer(serverGroupID)
    CrossYaomoBoss.Sync_CrossYaomoBossDataToClientServer(serverGroupID)
    PlayerCompensation.Sync_CrossMailPlayerIDToClientServer(serverGroupID)
    GameWorship.Sync_CrossWorshipToClientServer(serverGroupID)
    return
def MapServer_CrossServerReceiveMsg(msgType, msgData, serverGroupID):
@@ -195,22 +297,24 @@
    return
## ================================================================================================
def SendMsgToClientServer(msgType, dataMsg, serverGroupIDList=[]):
def SendMsgToClientServer(msgType, dataMsg, serverGroupIDList=None):
    ''' 广播信息到子服务器上
        @param serverGroupIDList: 发送指定的服务器组ID列表,内部已经针对列表中组ID去重,
        所以外部逻辑可直接添加,不用考虑组ID重复问题,没有指定服务器组ID时,默认广播所有子服
    '''
    if not GameWorld.IsCrossServer():
        return
    if not dataMsg:
        return
    #if not dataMsg:
    #    return
    if serverGroupIDList == None:
        serverGroupIDList = []
    srcMsg = {"MsgType":msgType, "Data":dataMsg, "CrossServerTime":GameWorld.GetCurrentDataTimeStr()}
    sendMsg = cPickle.dumps(srcMsg, 2)
    if not GameWorld.GetGameWorld().GetDictByKey(ChConfig.Def_WorldKey_GameWorldInitOK):
        GameWorld.ErrLog("跨服服务器未启动好,不允许向子服发送数据! serverGroupIDList=%s, srcMsg=%s" % (serverGroupIDList, srcMsg))
        return
    GameWorld.Log("SendMsgToClientServer => serverGroupIDList=%s, srcMsg=%s" % (serverGroupIDList, srcMsg))
    GameWorld.Log("SendMsgToClientServer => %s, %s, %s" % (msgType, serverGroupIDList, srcMsg))
    if not serverGroupIDList:
        GameWorld.GetGameWorld().SendBroadcastMergeClient(sendMsg, len(sendMsg))
    else:
@@ -235,7 +339,7 @@
        msgType = msgDict.get("MsgType", -1)    
        msgData = msgDict.get("Data", "")
        crossServerTimeStr = msgDict.get("CrossServerTime", "")
        GameWorld.Log("OnClientServerReceiveMsg: %s" % msgDict)
        GameWorld.Log("OnClientServerReceiveMsg: %s, %s" % (msgType, msgDict))
        if crossServerTimeStr:
            curServerTime = int(time.time())
            crossServerTime = GameWorld.ChangeTimeStrToNum(crossServerTimeStr)
@@ -256,11 +360,26 @@
        elif msgType == ShareDefine.CrossServerMsg_Notify:
            PlayerControl.CrossServerMsg_Notify(msgData)
            
        elif msgType == ShareDefine.CrossServerMsg_PlayerLoginout:
            ChPlayer.CrossServerMsg_PlayerLoginout(msgData)
        elif msgType == ShareDefine.CrossServerMsg_ChatCrossWorld:
            PlayerTalk.CrossServerMsg_ChatCrossWorld(msgData)
            
        elif msgType == ShareDefine.CrossServerMsg_ViewPlayerCacheRet:
            CrossRealmPlayer.CrossServerMsg_ViewPlayerCacheRet(msgData, tick)
            PlayerViewCache.CrossServerMsg_ViewPlayerCacheRet(msgData, tick)
        elif msgType == ShareDefine.CrossServerMsg_PullPlayerViewCache:
            PlayerViewCache.CrossServerMsg_PullPlayerViewCache(msgData)
        elif msgType == ShareDefine.CrossServerMsg_PlayerPackDataState:
            PlayerPackData.CrossServerMsg_PlayerPackDataState(msgData)
        elif msgType == ShareDefine.CrossServerMsg_PullPlayerPackData:
            PlayerPackData.CrossServerMsg_PullPlayerPackData(msgData)
        elif msgType == ShareDefine.CrossServerMsg_PushPlayerPackData:
            PlayerPackData.CrossServerMsg_PushPlayerPackData(msgData)
            
        elif msgType == ShareDefine.CrossServerMsg_PKMatchReqRet:
            CrossRealmPK.CrossServerMsg_PKMatchReqRet(msgData)
@@ -289,6 +408,63 @@
        elif msgType == ShareDefine.CrossServerMsg_LuckyCloudBuyNum:
            CrossLuckyCloudBuy.CrossServerMsg_LuckyCloudBuyNum(msgData)
            
        elif msgType == ShareDefine.CrossServerMsg_BattlefieldState:
            CrossBattlefield.CrossServerMsg_BattlefieldState(msgData)
        elif msgType == ShareDefine.CrossServerMsg_BattlefieldBuy:
            CrossBattlefield.CrossServerMsg_BattlefieldBuy(msgData)
        elif msgType == ShareDefine.CrossServerMsg_BattlefieldOver:
            CrossBattlefield.CrossServerMsg_BattlefieldOver(msgData)
        elif msgType == ShareDefine.CrossServerMsg_FamilyFlagwarOver:
            CrossFamilyFlagwar.CrossServerMsg_FamilyFlagwarOver(msgData)
        elif msgType == ShareDefine.CrossServerMsg_CrossBossTrialFamilyAward:
            PlayerActBossTrial.CrossServerMsg_CrossBossTrialFamilyAward(msgData)
        elif msgType == ShareDefine.CrossServerMsg_FuncTeamInfo:
            PlayerFuncTeam.CrossServerMsg_FuncTeamInfo(msgData)
        elif msgType == ShareDefine.CrossServerMsg_FuncTeamDel:
            PlayerFuncTeam.CrossServerMsg_FuncTeamDel(msgData)
        elif msgType == ShareDefine.CrossServerMsg_FuncTeamList:
            PlayerFuncTeam.CrossServerMsg_FuncTeamList(msgData)
        elif msgType == ShareDefine.CrossServerMsg_Worship:
            GameWorship.CrossServerMsg_Worship(msgData)
        elif msgType == ShareDefine.CrossServerMsg_Xiangong:
            GameXiangong.CrossServerMsg_Xiangong(msgData)
        elif msgType == ShareDefine.CrossServerMsg_ChampionshipState:
            CrossChampionship.CrossServerMsg_ChampionshipState(msgData)
        elif msgType == ShareDefine.CrossServerMsg_ChampionshipPlayer:
            CrossChampionship.CrossServerMsg_ChampionshipPlayer(msgData)
        elif msgType == ShareDefine.CrossServerMsg_ChampionshipGroup:
            CrossChampionship.CrossServerMsg_ChampionshipGroup(msgData)
        elif msgType == ShareDefine.CrossServerMsg_ChampionshipGuess:
            CrossChampionship.CrossServerMsg_ChampionshipGuess(msgData, tick)
        elif msgType == ShareDefine.CrossServerMsg_ChampionshipOfficial:
            CrossChampionship.CrossServerMsg_ChampionshipOfficial(msgData)
        elif msgType == ShareDefine.CrossServerMsg_ChampionshipDailyOfficial:
            CrossChampionship.CrossServerMsg_ChampionshipDailyOfficial(msgData)
        elif msgType == ShareDefine.CrossServerMsg_ActAllRechargeInfo:
            CrossActAllRecharge.CrossServerMsg_ActAllRechargeInfo(msgData)
        elif msgType == ShareDefine.CrossServerMsg_CrossDailyActionState:
            CrossActionControl.CrossServerMsg_CrossDailyActionState(msgData)
        elif msgType == ShareDefine.CrossServerMsg_CrossYaomoBossHurtInfo:
            CrossYaomoBoss.CrossServerMsg_CrossYaomoBossHurtInfo(msgData)
        elif msgType == ShareDefine.CrossServerMsg_SyncBillboard:
            CrossBillboard.CrossServerMsg_SyncBillboard(msgData, tick)
            
@@ -297,6 +473,9 @@
            
        elif msgType == ShareDefine.CrossServerMsg_CrossBossState:
            CrossBoss.CrossServerMsg_CrossBossState(msgData)
        elif msgType == ShareDefine.CrossServerMsg_CrossAssist:
            PlayerAssist.CrossServerMsg_CrossAssist(msgData, tick)
            
        elif msgType == ShareDefine.CrossServerMsg_CrossActInfo:
            CrossActionControl.CrossServerMsg_CrossActInfo(msgData)
@@ -315,6 +494,9 @@
            
        elif msgType == ShareDefine.CrossServerMsg_EnterFBRet:
            PlayerFB.CrossServerMsg_EnterFBRet(msgData, tick)
        elif msgType == ShareDefine.CrossServerMsg_EnterVSRoomRet:
            PlayerFB.CrossServerMsg_EnterVSRoomRet(msgData, tick)
            
        elif msgType == ShareDefine.CrossServerMsg_SendMail:
            PlayerCompensation.CrossServerMsg_SendMail(msgData)
@@ -342,7 +524,10 @@
                tagPlayer = GameWorld.GetPlayerManager().FindPlayerByID(playerID)
                if tagPlayer:
                    GameWorld.DebugAnswer(tagPlayer, "跨服服务器时间: %s" % GameWorld.GetCrossServerTimeStr())
        elif msgType == ShareDefine.CrossServerMsg_DebugAnswer:
            GameWorld.CrossServerMsg_DebugAnswer(msgData)
        else:
            GameWorld.ErrLog("没有该信息类型逻辑处理!")