From 1ea73e1885835466265ce788d93556b7030ee0e8 Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期日, 30 十二月 2018 18:42:00 +0800
Subject: [PATCH] 5424 【后端】【1.4】跨服竞技场开发(GM工具增加子服服务器维护,文字翻译版)

---
 ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerQuery.py |  149 ++++++++++++++++++++++++++++++++++---------------
 1 files changed, 104 insertions(+), 45 deletions(-)

diff --git a/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerQuery.py b/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerQuery.py
index 84656ef..549d5d7 100644
--- a/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerQuery.py
+++ b/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerQuery.py
@@ -46,20 +46,16 @@
 import ShareDefine
 import GameDataRecord
 import GameWorldShopItem
-import PlayerMergeRegister
 import PlayerCompensation
 import PlayerFB
 import UpdatePlayerName
 import PlayerFamilyBoss
 import PlayerManorWar
 import GameWorldBoss
-import MergeBroadcast
 import GameWorldFamilyWar
-import GameWorldMergeKing
-import GameWorldMergePK
 #import PlayerFamilyTech
-import MergeChildMsg
 import PlayerFamilyRedPacket
+import PlayerFBHelpBattle
 import PlayerFamilyStore
 import PlayerFamilySWRH
 import GameWorldProcess
@@ -72,6 +68,10 @@
 import PyDataManager
 import PyGameData
 import PlayerTalk
+import PlayerStore
+import CrossRealmPlayer
+import CrossRealmMsg
+import CrossRealmPK
 
 import time
 import datetime
@@ -256,6 +256,10 @@
     elif queryType == ChConfig.queryType_NPCInfo:
         __QueryMapNPCInfo(curPlayer, queryCallName, sendCMD)
         return
+    # 查询地图NPC数量
+    elif queryType == ChConfig.queryType_NPCCnt:
+        __QueryMapNPCCntInfo(curPlayer, queryCallName, sendCMD)
+        return
     else:
         GameWorld.ErrLog('unKnow queryType = %s' % (queryType))
         
@@ -290,6 +294,26 @@
                 queryCallName, sendCMD, len(sendCMD), curPlayer.GetRouteServerIndex())
     return
 
+## 查询目标地图NPC数量
+#  @param curPlayer: 请求玩家
+#  @param queryCallName: 请求回调名
+#  @param sendCMD: 请求的命令 根据请求类型和请求命令来决定最终操作
+#  @return None
+def __QueryMapNPCCntInfo(curPlayer, queryCallName, sendCMD):
+    playerManager = GameWorld.GetPlayerManager()
+    try:
+        mapInfo = eval(sendCMD)
+    except BaseException:
+        GameWorld.ErrLog("__QueryMapNPCCntInfo() sendCMD=%s error" % sendCMD)
+        return
+    
+    if not mapInfo:
+        return
+    
+    tagMapID = mapInfo[0]
+    playerManager.MapServer_QueryPlayer(curPlayer.GetPlayerID(), ChConfig.queryType_NPCCnt, 0, tagMapID,
+                queryCallName, sendCMD, len(sendCMD), curPlayer.GetRouteServerIndex())
+    return
 
 ## 获得家族属性(等级,人数)获得自己所在家族的属性
 #  @param curPlayer 请求的玩家
@@ -389,23 +413,25 @@
     callName = pack.GetCallName()
     resultName = pack.GetResultName()                       #[queryid, 人气值, 物品ID]
     
-    if callName == 'SendMail':
-        title, content, getDays, playerIDList, addItemList, gold, goldPaper, silver = eval(resultName)
+    if callName == "SendMail":
+        title, content, getDays, playerIDList, addItemList, gold, goldPaper, silver, detail = eval(resultName)
         limitTime = str(GameWorld.GetDatetimeByDiffDays(getDays))
         limitTime = limitTime.split(".")[0]
-        PlayerCompensation.SendPersonalItemMail(title, content, limitTime, playerIDList, addItemList, gold, goldPaper, silver)
+        PlayerCompensation.SendPersonalItemMail(title, content, limitTime, playerIDList, addItemList, gold, goldPaper, silver, detail=detail)
         return
     
-    if callName == 'SendMailBatch':
+    if callName == "SendMailBatch":
         PlayerCompensation.SendPersonalItemMailBatch(eval(resultName))
         return
     
-    if callName == 'SendMergerChildMsg':
-        operType, dataMsg = eval(resultName)
-        MergeChildMsg.SendMergerChildToCenterStringData(operType, dataMsg)
-        # 如果是恢复跨服PK连胜的,先记录恢复的玩家ID, 等待成功后同步最新结果给玩家
-        if operType == ChConfig.Def_RecoverMergePKWin:
-            GameWorldMergePK.Add_RecoverMergePKWinPlayer(srcPlayerID)
+    if callName == "SendMsgToCrossServer":
+        msgType, dataMsg = eval(resultName)
+        CrossRealmMsg.SendMsgToCrossServer(msgType, dataMsg)
+        return
+    
+    if callName == "SendMsgToClientServer":
+        msgType, dataMsg, serverGroupIDList = eval(resultName)
+        CrossRealmMsg.SendMsgToClientServer(msgType, dataMsg, serverGroupIDList)
         return
     
     if callName == 'MergeWorldNotify':
@@ -501,33 +527,35 @@
         GameDataRecord.ChangeCoinCnt(eval(resultName))
         return
     
-    #跨服广播子服
-    if callName == 'SendBroadcastMergeClient':
-        operType, mapID, dataDict, isRepeat = eval(resultName)
-        MergeBroadcast.SendBroadcastMerge(operType, mapID, dataDict, isRepeat)
-        return
-
-    #跨服赛报名获得新账号
-    if callName == 'MergeRegister':
-        PlayerMergeRegister.MergeWarRegisterNewAcc(srcPlayerID, eval(resultName), tick)
-        return    
-    
-    #跨服王者争霸
-    if callName == 'MergeKingFB':
-        GameWorldMergeKing.MapServer_MergeKingFB(eval(resultName))
+    #跨服匹配PK战斗结算
+    if callName == "CrossPKOver":
+        CrossRealmPK.MapServer_CrossPKOver(eval(resultName), tick)
         return
     
-    #跨服匹配PK
-    if callName == 'MergePKOver':
-        GameWorldMergePK.MapServer_MergePKOver(eval(resultName))
+    #跨服匹配房间开启
+    if callName == "CrossPKRoomOpen":
+        CrossRealmPK.MapServer_CrossPKRoomOpen(eval(resultName), tick)
         return
     
     #跨服匹配PK取消匹配
-    if callName == 'MergePKCancel':
+    if callName == "CrossRealmPKCancel":
         curPlayer = GameWorld.GetPlayerManager().FindPlayerByID(srcPlayerID)
         if not curPlayer:
             return
-        GameWorldMergePK.SendCancelMergePKMatch(curPlayer, resultName)
+        CrossRealmPK.SendCancelCrossRealmPKMatch(curPlayer, resultName)
+        return
+    
+    #跨服PK请求玩家当前排名
+    if callName == "CrossPKSeasonOrder":
+        curPlayer = GameWorld.GetPlayerManager().FindPlayerByID(srcPlayerID)
+        if not curPlayer:
+            return
+        CrossRealmPK.MapServer_QueryCrossPKSeasonOrder(curPlayer, eval(resultName))
+        return
+    
+    #跨服注册结果
+    if callName == "CrossRealmReg":
+        CrossRealmPlayer.OnCrossRealmRegOK(srcPlayerID, eval(resultName), tick)
         return
     
     #py喇叭聊天
@@ -594,7 +622,17 @@
     
     # 世界boss状态
     if callName =="GameWorldBossState":
-        GameWorldBoss.DoGameWorldBossOnReborn(eval(resultName), tick)
+        GameWorldBoss.OnGameWorldBossStateChange(eval(resultName), tick)
+        return
+    
+    # 仙盟归属boss信息同步
+    if callName =="FamilyOwnerBossInfo":
+        GameWorldBoss.MapServer_FamilyOwnerBossInfo(eval(resultName))
+        return
+
+    # 骑宠争夺伤血玩家同步
+    if callName =="HorsePetRobBossHurtPlayer":
+        GameWorldBoss.MapServer_HorsePetRobBossHurtPlayer(eval(resultName))
         return
     
     # 全局掉落CD
@@ -604,6 +642,10 @@
     # 全局击杀数换算掉落概率
     if callName =="GlobalDropRate":
         GameWorldProcess.UpdGlobalDropRate(eval(resultName))
+        return
+    # 全局击杀数统计
+    if callName =="GlobalKillCount":
+        GameWorldProcess.UpdGlobalKillCount(eval(resultName))
         return
     
     # 自定义商店全服限购次数清空
@@ -727,11 +769,26 @@
     if callName =="AddBossRebornPoint":
         GameWorldBoss.AddBossRebornPoint(eval(resultName))
         return
-    
+    #通知神兽副本NPC刷新时间
+    if callName =="DogzNPCTime":
+        PyGameData.g_dogzNPCRefreshTimeDict = eval(resultName)
+        GameWorldBoss.Sync_DogzNPCRefreshTime()
+        return
 #---return分割线-----------------------------------------------------------------
 
     
 #---有可能return-----------------------------------------------------------------
+    #商城全服购买限制
+    if callName == "GetStoreServerBuyCnt":
+        curPlayer = GameWorld.GetPlayerManager().FindPlayerByID(srcPlayerID)
+        if not curPlayer:
+            return
+        ret = PlayerStore.DoStoreServerBuyQueryResult(curPlayer, eval(resultName))
+        if ret == None:
+            resultName = ''
+        else:
+            resultName = '%s' % ret
+        
     #玩家等级奖励
     if callName == "GetPlayerLVAward":
         curPlayer = GameWorld.GetPlayerManager().FindPlayerByID(srcPlayerID)
@@ -774,21 +831,23 @@
         curPlayer = GameWorld.GetPlayerManager().FindPlayerByID(srcPlayerID)
         resultName = '%s' % GameWorldOpenServerCampaign.CanGiveCampaignAward(curPlayer, eval(resultName))
         
-    # 跨服PK奖励
-    if callName == 'MergePKAward':
-        curPlayer = GameWorld.GetPlayerManager().FindPlayerByID(srcPlayerID)
-        resultName = '%s' % GameWorldMergePK.MapServer_QueryMergePKAward(curPlayer, eval(resultName))
-        
-    # 跨服王者争霸
-    if callName == 'MergeKing':
-        curPlayer = GameWorld.GetPlayerManager().FindPlayerByID(srcPlayerID)
-        resultName = '%s' % GameWorldMergeKing.MapServer_MergeKingQuery(curPlayer, eval(resultName))
     
     # 玩家自身战盟科技等级提升, 改为地图直接处理, 暂屏蔽
 #    if callName == 'PlayerFamilyTechLVUP':
 #        curPlayer = GameWorld.GetPlayerManager().FindPlayerByID(srcPlayerID)
 #        resultName = '%s' % PlayerFamilyTech.OnQuery_PlayerFamilyTechLVUP(curPlayer, eval(resultName))
     
+    
+    # 副本助战
+    if callName =="FBHelpBattle":
+        curPlayer = GameWorld.GetPlayerManager().FindPlayerByID(srcPlayerID)
+        if not curPlayer:
+            return
+        ret = PlayerFBHelpBattle.MapServer_FBHelpBattle(curPlayer, eval(resultName))
+        if ret == None:
+            return
+        resultName = '%s' % ret
+        
     # 战盟仓库
     if callName == "FamilyStore":
         curPlayer = GameWorld.GetPlayerManager().FindPlayerByID(srcPlayerID)

--
Gitblit v1.8.0