From ad9ca5656fe2b0af83ca3d3cd6b7cc5511047ba9 Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期二, 16 七月 2024 11:35:48 +0800
Subject: [PATCH] 9415 【主干】【港台】【越南】【砍树】【后端】古神战场(C107增加战场分区通知)

---
 ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/CrossChampionship.py |   53 +++++++++++++++++++++++++++++++++++++++++++++++++++--
 1 files changed, 51 insertions(+), 2 deletions(-)

diff --git a/ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/CrossChampionship.py b/ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/CrossChampionship.py
index d105313..3537914 100644
--- a/ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/CrossChampionship.py
+++ b/ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/CrossChampionship.py
@@ -29,6 +29,7 @@
 import PlayerControl
 import PyDataManager
 import NetPackCommon
+import GameWorship
 import PyGameData
 import ChConfig
 import PlayerFB
@@ -758,11 +759,22 @@
         
     return
 
+def DoChampionshipOpen(curPlayer):
+    NotifyPlayerChampionshipInfo(curPlayer, GameWorld.GetGameWorld().GetTick())
+    return
+
 def OnPlayerLogin(curPlayer, tick):
     
     if GameWorld.IsCrossServer():
         return
     
+    if not PlayerControl.GetFuncCanUse(curPlayer, ShareDefine.GameFuncID_Championship):
+        return
+    
+    NotifyPlayerChampionshipInfo(curPlayer, tick)
+    return
+
+def NotifyPlayerChampionshipInfo(curPlayer, tick):
     playerID = curPlayer.GetPlayerID()
     champMgr = GetChampionshipMgr()
     pkZoneIDList = champMgr.GetChampPKZoneIDList()
@@ -1934,9 +1946,14 @@
     champMgr = GetChampionshipMgr()
     champMgr.ClearOfficialZone() # 最终结算重置仙官信息,替换最新仙官
     
+    # 膜拜重置
+    worshipType = ShareDefine.Def_WorshipType_CrossChampionship
+    GameWorship.DelWorshipPlayer(worshipType)
+    
     pkZoneIDList = champMgr.GetChampPKZoneIDList()
     GameWorld.Log("pkZoneIDList=%s" % pkZoneIDList)
     
+    worshipList = []
     for zoneID in pkZoneIDList:
         GameWorld.Log("=== 结算排位分区: zoneID=%s ===" % zoneID, zoneID)
         finalPlayerIDList = []
@@ -1980,6 +1997,11 @@
                 
                 offZoneMgr.officialInfo[officialID] = offObj
                 
+                worshipValue = rank
+                if GameWorship.GetWorshipIpyData(worshipType, worshipValue):
+                    worshipData = GameWorship.AddWorshipPlayer(playerID, worshipType, worshipValue, zoneID=zoneID, isNotify=False)
+                    worshipList.append(worshipData)
+                    
             # 名次奖励
             paramList = [rank]
             PlayerCompensation.SendMailByKey("CrossChampionshipPKRank", [playerID], rankAwardItemList, paramList, crossMail=True)
@@ -2022,6 +2044,9 @@
     
     serverGroupIDList = [] # 全服统一逻辑
     PlayerControl.WorldNotifyCross(serverGroupIDList, 0, "ChampionshipOver")
+    
+    # 通知新添加的膜拜
+    GameWorship.SyncAddCrossWorship(worshipList)
     GameWorld.Log("===================================================================")
     return
 
@@ -2633,6 +2658,7 @@
         GameWorld.Log("挑战目标仙官玩家ID结果! zoneID=%s,mainOfficialID=%s,officialID=%s,fightPower=%s,tagFightPower=%s,tagPlayerID=%s,Ret=%s" 
                       % (zoneID, mainOfficialID, officialID, fightPower, tagFightPower, tagPlayerID, Ret), playerID)
         
+    syncOfficialIDList = [officialID]
     playerName = PropData.get("Name", str(playerID))
     # 暂时只记录挑战胜利的
     if Ret == 1:
@@ -2651,13 +2677,22 @@
         officialObj.ResetPlayer()
         officialObj.playerID = playerID
         
+        # 移除该玩家的其他仙官申请
+        for offID in offZoneMgr.officialInfo.keys():
+            offObj = offZoneMgr.GetOfficialObj(offID)
+            if not offObj:
+                continue
+            if playerID in offObj.applyPlayerInfo:
+                offObj.applyPlayerInfo.pop(playerID)
+                syncOfficialIDList.append(offID)
+                
         # 邮件通知对方,官职被挑战了
         if offPlayerID:
             PlayerCompensation.SendMailByKey("CrossChampionshipOfficialBeChallenge", [offPlayerID], [], [playerName, officialID], crossMail=True)
             
     exData = {"exDataType":"OfficialChallenge", "playerID":playerID, "tagPlayerName":officialObj.playerName,
               "mainOfficialID":mainOfficialID, "officialID":officialID, "Ret":Ret}
-    Send_CrossServerMsg_ChampionshipOfficial(zoneID, [officialID], exData=exData)
+    Send_CrossServerMsg_ChampionshipOfficial(zoneID, syncOfficialIDList, exData=exData)
     return
 
 #// C0 23 跨服排位仙官挑战记录查询 #tagCGChampionshipOfficialChallengeQuery
@@ -2853,11 +2888,13 @@
 def Sync_ChampionshipPKZoneGroupInfo(zoneID, groupMarkDict=None, curPlayer=None):
     ## 同步排位分区分组信息
     # @param groupMarkDict: {groupMark:[battleNum, ...], ...}
-        
+    
     champMgr = GetChampionshipMgr()
     if curPlayer:
         playerZoneID = champMgr.GetPlayerPKZoneID(curPlayer.GetPlayerID())
         if playerZoneID != zoneID:
+            return
+        if not PlayerControl.GetFuncCanUse(curPlayer, ShareDefine.GameFuncID_Championship):
             return
         
     pkZoneMgr = champMgr.GetChampPKZoneMgr(zoneID)
@@ -2932,6 +2969,8 @@
             playerZoneID = champMgr.GetPlayerPKZoneID(curPlayer.GetPlayerID())
             if playerZoneID != zoneID:
                 continue
+            if not PlayerControl.GetFuncCanUse(curPlayer, ShareDefine.GameFuncID_Championship):
+                continue
             NetPackCommon.SendFakePack(curPlayer, clientPack)
             
     return
@@ -2944,6 +2983,8 @@
     champMgr = GetChampionshipMgr()
     playerZoneID = champMgr.GetPlayerPKZoneID(playerID)
     if not playerZoneID:
+        return
+    if not PlayerControl.GetFuncCanUse(curPlayer, ShareDefine.GameFuncID_Championship):
         return
     
     pkZoneMgr = champMgr.GetChampPKZoneMgr(playerZoneID)
@@ -2990,6 +3031,8 @@
         playerZoneID = champMgr.GetPlayerPKZoneID(curPlayer.GetPlayerID())
         if playerZoneID != zoneID:
             return
+        if not PlayerControl.GetFuncCanUse(curPlayer, ShareDefine.GameFuncID_Championship):
+            return
         
     pkZoneMgr = champMgr.GetChampPKZoneMgr(zoneID)
     if not pkZoneMgr:
@@ -3033,6 +3076,8 @@
             playerZoneID = champMgr.GetPlayerPKZoneID(curPlayer.GetPlayerID())
             if playerZoneID != zoneID:
                 continue
+            if not PlayerControl.GetFuncCanUse(curPlayer, ShareDefine.GameFuncID_Championship):
+                continue
             NetPackCommon.SendFakePack(curPlayer, clientPack)
     return
 
@@ -3044,6 +3089,8 @@
     if curPlayer:
         playerZoneID = champMgr.GetPlayerOfficialZoneID(curPlayer.GetPlayerID())
         if playerZoneID != zoneID:
+            return
+        if not PlayerControl.GetFuncCanUse(curPlayer, ShareDefine.GameFuncID_Championship):
             return
         
     clientPack = ChPyNetSendPack.tagGCChampionshipOfficialInfo()
@@ -3104,6 +3151,8 @@
             playerZoneID = champMgr.GetPlayerOfficialZoneID(curPlayer.GetPlayerID())
             if playerZoneID != zoneID:
                 continue
+            if not PlayerControl.GetFuncCanUse(curPlayer, ShareDefine.GameFuncID_Championship):
+                continue
             NetPackCommon.SendFakePack(curPlayer, clientPack)
             
     return

--
Gitblit v1.8.0