hxp
2024-09-18 458f8ad37f944f5a4334dc9e522e6640e4aa2def
ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerActGubao.py
@@ -26,6 +26,8 @@
import CrossBillboard
import PyDataManager
import CrossRealmMsg
import GameXiangong
import GameWorship
import GameWorld
def OnActStart(actNum, ipyData):
@@ -48,6 +50,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_GubaoScore)
    billboardObj.SetOrderRuleList(orderRuleList)
    return
def OnActJoinEnd(actNum, ipyData, dayIndex):
@@ -263,6 +279,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_GubaoScore, groupValue1)
    billboardObj.SetOrderRuleList(orderRuleList)
    return
def GetOrderRuleList(templateID):
    orderIpyDataList = IpyGameDataPY.GetIpyGameDataList("ActGubaoBillTemp", 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)
@@ -280,12 +318,13 @@
    GameWorld.Log("=== 跨服古宝养成活动发放榜单奖励! === cfgID=%s,zoneID=%s" % (cfgID, zoneID))
    
    PersonalTemplateID = ipyData.GetPersonalTemplateID()
    serverIDRangeList = ipyData.GetServerIDRangeList()
    
    __GiveCrossOrderAwardPersonal(cfgID, zoneID, PersonalTemplateID, ShareDefine.Def_CBT_GubaoScore)
    __GiveCrossOrderAwardPersonal(cfgID, zoneID, PersonalTemplateID, ShareDefine.Def_CBT_GubaoScore, serverIDRangeList)
    GameWorld.Log("=================================================================================")
    return
    
def __GiveCrossOrderAwardPersonal(cfgID, zoneID, templateID, billboardType):
def __GiveCrossOrderAwardPersonal(cfgID, zoneID, templateID, billboardType, serverIDRangeList):
    
    groupValue1 = zoneID
    billboardMgr = PyDataManager.GetCrossBillboardManager()
@@ -306,6 +345,9 @@
    if not orderIpyDataList:
        return
    
    worshipType = ShareDefine.Def_WorshipType_CrossGubaoTrain
    syncNewWorshipList = []
    syncNewXiangongDict = {}
    rankPre = 0
    billboardIndex = 0
    for ipyData in orderIpyDataList:
@@ -315,6 +357,7 @@
        scoreAwardExList = scoreAwardEx.keys()
        scoreAwardExList.sort()
        awardItemList = ipyData.GetAwardItemList()
        xiangongID = ipyData.GetXiangongID()
        orderCountTotal = rank - rankPre # 奖励名次数量
        rankPre = rank
        
@@ -345,5 +388,9 @@
            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