From 00f4a55d20b44485efb11172bf61263e8cfb57fa Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期三, 12 三月 2025 15:09:14 +0800
Subject: [PATCH] 10416 【英文】【bt】【GM】【砍树】登录基金和幻境基金 完成后可以重置购买(重置关联的充值ID)

---
 ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerActBossTrial.py |   70 +++++++++++++++++++++++++++++++++--
 1 files changed, 66 insertions(+), 4 deletions(-)

diff --git a/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerActBossTrial.py b/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerActBossTrial.py
index 511c712..6be7dd4 100644
--- a/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerActBossTrial.py
+++ b/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerActBossTrial.py
@@ -27,6 +27,8 @@
 import CrossBillboard
 import PlayerFamily
 import PyDataManager
+import GameXiangong
+import GameWorship
 
 def OnActStart(actNum):
     ## 活动开启
@@ -53,6 +55,26 @@
     PlayerBillboard.CopyBillboard(ShareDefine.Def_BT_BossTrialSubmitFamilyBak, ShareDefine.Def_BT_BossTrialSubmitFamily)
     PlayerBillboard.CopyBillboard(ShareDefine.Def_BT_BossTrialSubmitBak, ShareDefine.Def_BT_BossTrialSubmit)
     GameWorld.Log("=================================================================================")
+    return
+
+def OnActInStateRefresh(actNum, ipyData, dayIndex):
+    ## 活动中刷新,每次都需要刷新的逻辑,包含重读配置等
+    if not ipyData:
+        return
+    cfgID = ipyData.GetCfgID()
+    templateID = GameWorld.GetTemplateID(ipyData, cfgID, dayIndex)
+    familyTemplateID = GameWorld.GetTemplateIDByList(ipyData.GetFamilyTemplateIDList(), dayIndex)
+    
+    billboardMgr = PlayerBillboard.GetBillboardMgr()
+    if templateID:
+        orderRuleList = GetOrderRuleList(templateID)
+        billboardObj = billboardMgr.GetBillboardObj(ShareDefine.Def_BT_BossTrialSubmit)
+        billboardObj.SetOrderRuleList(orderRuleList)
+        
+    if familyTemplateID:
+        orderRuleList = GetOrderRuleList(familyTemplateID)
+        billboardObj = billboardMgr.GetBillboardObj(ShareDefine.Def_BT_BossTrialSubmitFamily)
+        billboardObj.SetOrderRuleList(orderRuleList)
     return
 
 def OnActJoinEnd(actNum, ipyData, dayIndex):
@@ -249,6 +271,8 @@
     accID = curPlayer.GetAccID()
     playerName = curPlayer.GetName()
     job = curPlayer.GetJob()
+    face = curPlayer.GetFace()
+    facePic = curPlayer.GetFacePic()
     realmLV = curPlayer.GetOfficialRank()
     familyID = curPlayer.GetFamilyID()
     submitCount, updSubmitCount = dataMsg
@@ -264,7 +288,7 @@
         
     #同步跨服
     playerInfo = {"playerID":playerID, "playerName":playerName, "accID":accID, "job":job, "realmLV":realmLV,
-                  "playerSubmitTotal":updSubmitCount}
+                  "playerSubmitTotal":updSubmitCount, "face":face, "facePic":facePic}
     SyncBossTrialSubmitToCrossServer(curPlayer, playerInfo, familyBillInfo)
     return
 
@@ -445,13 +469,15 @@
     accID = playerInfo["accID"]
     realmLV = playerInfo["realmLV"]
     playerSubmitTotal = playerInfo["playerSubmitTotal"]
+    face = playerInfo.get("face", 0)
+    facePic = playerInfo.get("facePic", 0)
     
     groupValue1 = zoneID
     
     if playerSubmitTotal >= personlLimit:
         name2, type2, value1, value2 = accID, job, realmLV, 0
         CrossBillboard.UpdCrossBillboard(ShareDefine.Def_CBT_BossTrialSubmit, groupValue1, playerID, playerName, 
-                                         name2, type2, value1, value2, playerSubmitTotal)
+                                         name2, type2, value1, value2, playerSubmitTotal, value3=face, value4=facePic)
         
     if familyInfo and familyInfo.get("familySubmitTotal", 0) >= familyLimit:
         familySubmitTotal = familyInfo["familySubmitTotal"]
@@ -500,6 +526,33 @@
     GameWorld.Log("=================================================================================")
     return
 
+def OnCrossActInStateRefresh(cfgID, zoneID, ipyData):
+    ## 活动中刷新,每次都需要刷新的逻辑,包含重读配置等
+    if not ipyData:
+        return
+    PersonalTemplateID = ipyData.GetPersonalTemplateID()
+    FamilyTemplateID = ipyData.GetFamilyTemplateID()
+    orderRuleList = GetOrderRuleList(PersonalTemplateID)
+    orderRuleListFamily = GetOrderRuleList(FamilyTemplateID)
+    
+    groupValue1 = zoneID
+    billboardMgr = PyDataManager.GetCrossBillboardManager()
+    billboardObj = billboardMgr.GetCrossBillboard(ShareDefine.Def_CBT_BossTrialSubmit, groupValue1)
+    billboardObj.SetOrderRuleList(orderRuleList)
+    
+    billboardObj = billboardMgr.GetCrossBillboard(ShareDefine.Def_CBT_BossTrialSubmitFamily, groupValue1)
+    billboardObj.SetOrderRuleList(orderRuleListFamily)
+    return
+
+def GetOrderRuleList(templateID):
+    orderIpyDataList = IpyGameDataPY.GetIpyGameDataList("ActBossTrialTemplate", templateID)
+    if not orderIpyDataList:
+        return
+    orderRuleList = []
+    for ipyData in orderIpyDataList:
+        orderRuleList.append([ipyData.GetRank(), ipyData.GetNeedScore()])
+    return orderRuleList
+
 def OnCrossActJoinEnd(cfgID, zoneID, ipyData):
     ## 跨服活动参与结束
     __OnCrossEndAward(cfgID, zoneID, ipyData)
@@ -518,13 +571,14 @@
     
     PersonalTemplateID = ipyData.GetPersonalTemplateID()
     FamilyTemplateID = ipyData.GetFamilyTemplateID()
+    serverIDRangeList = ipyData.GetServerIDRangeList()
     
-    __GiveCrossOrderAwardPersonal(cfgID, zoneID, PersonalTemplateID, ShareDefine.Def_CBT_BossTrialSubmit)
+    __GiveCrossOrderAwardPersonal(cfgID, zoneID, PersonalTemplateID, ShareDefine.Def_CBT_BossTrialSubmit, serverIDRangeList)
     __GiveCrossOrderAwardFamily(cfgID, zoneID, FamilyTemplateID, ShareDefine.Def_CBT_BossTrialSubmitFamily)
     GameWorld.Log("=================================================================================")
     return
     
-def __GiveCrossOrderAwardPersonal(cfgID, zoneID, templateID, billboardType):
+def __GiveCrossOrderAwardPersonal(cfgID, zoneID, templateID, billboardType, serverIDRangeList):
     
     groupValue1 = zoneID
     #billboardType = ShareDefine.Def_CBT_BossTrialSubmit #榜单类型改为参数传入,异常情况下可特殊处理用备份榜单发奖励
@@ -546,6 +600,9 @@
     if not orderIpyDataList:
         return
     
+    worshipType = ShareDefine.Def_WorshipType_CrossBossTrial
+    syncNewWorshipList = []
+    syncNewXiangongDict = {}
     rankPre = 0
     billboardIndex = 0
     for ipyData in orderIpyDataList:
@@ -555,6 +612,7 @@
         scoreAwardExList = scoreAwardEx.keys()
         scoreAwardExList.sort()
         awardItemList = ipyData.GetAwardItemList()
+        xiangongID = ipyData.GetXiangongID()
         orderCountTotal = rank - rankPre # 奖励名次数量
         rankPre = rank
         
@@ -585,6 +643,10 @@
             orderCountTotal -= 1
             billboardIndex += 1
             
+            GameXiangong.AddXiangongPlayer(xiangongID, playerID, serverIDRangeList, playerRank, syncNewXiangongDict)
+            GameWorship.AddWorshipPlayer(worshipType, playerRank, playerID, serverIDRangeList, syncList=syncNewWorshipList)
+    GameWorship.SendNewWorshipPlayer(syncNewWorshipList)
+    GameXiangong.SendNewXiangongPlayerToClientServer(syncNewXiangongDict)
     return
 
 def __GiveCrossOrderAwardFamily(cfgID, zoneID, templateID, billboardType):

--
Gitblit v1.8.0