From 5269e572b892f84ef0ce0f8b9bf1f8e9aee84ca2 Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期三, 06 十一月 2024 11:17:39 +0800
Subject: [PATCH] 10287 【英文】1折活动(修复不同折扣下代币支付及异常充值下自动转化代币数值均为原价的bug;)

---
 ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerActHorsePetTrain.py |   55 ++++++++++++++++++++++++++++++++++++++++++++++++++++---
 1 files changed, 52 insertions(+), 3 deletions(-)

diff --git a/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerActHorsePetTrain.py b/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerActHorsePetTrain.py
index a08bd2d..f4f4961 100644
--- a/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerActHorsePetTrain.py
+++ b/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerActHorsePetTrain.py
@@ -25,6 +25,8 @@
 import CrossBillboard
 import PyDataManager
 import CrossRealmMsg
+import GameXiangong
+import GameWorship
 import GameWorld
 
 def OnActStart(actNum, ipyData):
@@ -47,6 +49,20 @@
     __OnEndAward(actNum, ipyData, dayIndex) # 兼容活动没有配置参与时间段的在活动结束补触发结算奖励
     
     GameWorld.Log("=================================================================================")
+    return
+
+def OnActInStateRefresh(actNum, ipyData):
+    ## 活动中刷新,每次都需要刷新的逻辑,包含重读配置等
+    if not ipyData:
+        return
+    personalTemplateID = ipyData.GetPersonalTemplateID()
+    if not personalTemplateID:
+        return
+    orderRuleList = GetOrderRuleList(personalTemplateID)
+    
+    billboardMgr = PlayerBillboard.GetBillboardMgr()
+    billboardObj = billboardMgr.GetBillboardObj(ShareDefine.Def_BT_HorsePetTrainScore)
+    billboardObj.SetOrderRuleList(orderRuleList)
     return
 
 def OnActJoinEnd(actNum, ipyData, dayIndex):
@@ -101,6 +117,7 @@
         needScore = ipyData.GetNeedScore()
         scoreAwardEx = ipyData.GetScoreAwardEx()
         scoreAwardExList = scoreAwardEx.keys()
+        scoreAwardExList.sort()
         awardItemList = ipyData.GetAwardItemList()
         orderCountTotal = rank - rankPre # 奖励名次数量
         rankPre = rank
@@ -261,6 +278,28 @@
     GameWorld.Log("=================================================================================")
     return
 
+def OnCrossActInStateRefresh(cfgID, zoneID, ipyData):
+    ## 活动中刷新,每次都需要刷新的逻辑,包含重读配置等
+    if not ipyData:
+        return
+    PersonalTemplateID = ipyData.GetPersonalTemplateID()
+    orderRuleList = GetOrderRuleList(PersonalTemplateID)
+    
+    groupValue1 = zoneID
+    billboardMgr = PyDataManager.GetCrossBillboardManager()
+    billboardObj = billboardMgr.GetCrossBillboard(ShareDefine.Def_CBT_HorsePetTrainScore, groupValue1)
+    billboardObj.SetOrderRuleList(orderRuleList)
+    return
+
+def GetOrderRuleList(templateID):
+    orderIpyDataList = IpyGameDataPY.GetIpyGameDataList("ActHorsePetTrainBillTemp", 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)
@@ -278,12 +317,13 @@
     GameWorld.Log("=== 跨服骑宠养成活动发放榜单奖励! === cfgID=%s,zoneID=%s" % (cfgID, zoneID))
     
     PersonalTemplateID = ipyData.GetPersonalTemplateID()
+    serverIDRangeList = ipyData.GetServerIDRangeList()
     
-    __GiveCrossOrderAwardPersonal(cfgID, zoneID, PersonalTemplateID, ShareDefine.Def_CBT_HorsePetTrainScore)
+    __GiveCrossOrderAwardPersonal(cfgID, zoneID, PersonalTemplateID, ShareDefine.Def_CBT_HorsePetTrainScore, serverIDRangeList)
     GameWorld.Log("=================================================================================")
     return
     
-def __GiveCrossOrderAwardPersonal(cfgID, zoneID, templateID, billboardType):
+def __GiveCrossOrderAwardPersonal(cfgID, zoneID, templateID, billboardType, serverIDRangeList):
     
     groupValue1 = zoneID
     billboardMgr = PyDataManager.GetCrossBillboardManager()
@@ -304,6 +344,9 @@
     if not orderIpyDataList:
         return
     
+    worshipType = ShareDefine.Def_WorshipType_CrossHorsePetTrain
+    syncNewWorshipList = []
+    syncNewXiangongDict = {}
     rankPre = 0
     billboardIndex = 0
     for ipyData in orderIpyDataList:
@@ -311,7 +354,9 @@
         needScore = ipyData.GetNeedScore()
         scoreAwardEx = ipyData.GetScoreAwardEx()
         scoreAwardExList = scoreAwardEx.keys()
+        scoreAwardExList.sort()
         awardItemList = ipyData.GetAwardItemList()
+        xiangongID = ipyData.GetXiangongID()
         orderCountTotal = rank - rankPre # 奖励名次数量
         rankPre = rank
         
@@ -341,6 +386,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
 

--
Gitblit v1.8.0