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):