ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerActBossTrial.py
@@ -50,10 +50,19 @@
    if not cfgID:
        return
    BillboardType = ShareDefine.Def_BT_BossTrialSubmit
    billBoard = GameWorld.GetBillboard().FindBillboard(BillboardType)
    templateID = GameWorld.GetTemplateID(ipyData, cfgID, dayIndex)
    __OnEndAward_Personal(templateID, BillboardType)
    DataRecordPack.DR_BillboardData(BillboardType, "BossTrial", {"actNum":actNum, "cfgID":cfgID, "dayIndex":dayIndex, "templateID":templateID})
    PlayerBillboard.CopyBillboard(ShareDefine.Def_BT_BossTrialSubmitBak, BillboardType)
    PlayerBillboard.ClearBillboardByIndex(BillboardType)
    GameWorld.Log("=================================================================================")
    return
def __OnEndAward_Personal(templateID, billboardType):
    billBoard = GameWorld.GetBillboard().FindBillboard(billboardType)
    if not billBoard:
        return
    templateID = GameWorld.GetTemplateID(ipyData, cfgID, dayIndex)
    if not templateID:
        GameWorld.Log("本次活动没有个人榜奖励!")
        return
@@ -87,10 +96,6 @@
        
        PlayerCompensation.SendMailByKey("BossTrialMail10", [playerID], awardItemList, [rank])
        
    DataRecordPack.DR_BillboardData(BillboardType, "BossTrial", {"actNum":actNum, "cfgID":cfgID, "dayIndex":dayIndex, "templateID":templateID})
    PlayerBillboard.CopyBillboard(ShareDefine.Def_BT_BossTrialSubmitBak, BillboardType)
    PlayerBillboard.ClearBillboardByIndex(BillboardType)
    GameWorld.Log("=================================================================================")
    return
def OnGiveFamilyOrderAwawrd(actNum, ipyData, dayIndex):
@@ -100,11 +105,19 @@
    if not cfgID:
        return
    BillboardType = ShareDefine.Def_BT_BossTrialSubmitFamily
    billBoard = GameWorld.GetBillboard().FindBillboard(BillboardType)
    templateID = GameWorld.GetTemplateIDByList(ipyData.GetFamilyTemplateIDList(), dayIndex)
    __OnEndAward_Family(templateID, BillboardType)
    DataRecordPack.DR_BillboardData(BillboardType, "BossTrial", {"actNum":actNum, "cfgID":cfgID, "dayIndex":dayIndex, "templateID":templateID})
    PlayerBillboard.CopyBillboard(ShareDefine.Def_BT_BossTrialSubmitFamilyBak, BillboardType)
    PlayerBillboard.ClearBillboardByIndex(BillboardType)
    GameWorld.Log("=================================================================================")
    return
def __OnEndAward_Family(templateID, billboardType):
    billBoard = GameWorld.GetBillboard().FindBillboard(billboardType)
    if not billBoard:
        return
    templateIDList = ipyData.GetFamilyTemplateIDList()
    templateID = GameWorld.GetTemplateIDByList(templateIDList, dayIndex)
    if not templateID:
        GameWorld.Log("本次活动没有仙盟榜奖励!")
        return
@@ -140,6 +153,7 @@
        
        familyActionData = GetFamilyBossTrialSubmitActionData(familyID, False)
        if not familyActionData:
            GameWorld.ErrLog("该仙盟没有提交凭证ActionData! familyID=%s" % familyID)
            continue
        awardState = GetFamilyAwardState(familyActionData)
        awardIndex = 0 # 本服奖励状态索引
@@ -170,10 +184,6 @@
        GameWorld.Log("发放boss历练活动仙盟榜单奖励本服: familyID=%s,名次=%s,总提交个数=%s,updAwardState=%s,awardMemIDList=%s,memSubCountDict=%s" 
                      % (familyID, familyRank, cmpValue, updAwardState, awardMemIDList, memSubCountDict))
        
    DataRecordPack.DR_BillboardData(BillboardType, "BossTrial", {"actNum":actNum, "cfgID":cfgID, "dayIndex":dayIndex, "templateID":templateID})
    PlayerBillboard.CopyBillboard(ShareDefine.Def_BT_BossTrialSubmitFamilyBak, BillboardType)
    PlayerBillboard.ClearBillboardByIndex(BillboardType)
    GameWorld.Log("=================================================================================")
    return
def MapServer_BossTrial(curPlayer, msgList):
@@ -322,6 +332,7 @@
        
        familyActionData = GetFamilyBossTrialSubmitActionData(familyID, False)
        if not familyActionData:
            GameWorld.ErrLog("该仙盟没有提交凭证ActionData! familyID=%s" % familyID)
            continue
        awardState = GetFamilyAwardState(familyActionData)
        awardIndex = 1 #跨服奖励状态索引
@@ -408,11 +419,8 @@
        PersonalTemplateID = ipyData.GetPersonalTemplateID()
        FamilyTemplateID = ipyData.GetFamilyTemplateID()
        
        if PersonalTemplateID:
            __GiveCrossOrderAwardPersonal(cfgID, zoneID, PersonalTemplateID)
        if FamilyTemplateID:
            __GiveCrossOrderAwardFamily(cfgID, zoneID, FamilyTemplateID)
        __GiveCrossOrderAwardPersonal(cfgID, zoneID, PersonalTemplateID, ShareDefine.Def_CBT_BossTrialSubmit)
        __GiveCrossOrderAwardFamily(cfgID, zoneID, FamilyTemplateID, ShareDefine.Def_CBT_BossTrialSubmitFamily)
            
    # 如果有新活动,处理新活动
    if not state:
@@ -429,27 +437,25 @@
        
    return
    
def __GiveCrossOrderAwardPersonal(cfgID, zoneID, templateID):
def __GiveCrossOrderAwardPersonal(cfgID, zoneID, templateID, billboardType):
    
    groupValue1 = zoneID
    billboardType = ShareDefine.Def_CBT_BossTrialSubmit
    #billboardType = ShareDefine.Def_CBT_BossTrialSubmit #榜单类型改为参数传入,异常情况下可特殊处理用备份榜单发奖励
    billboardMgr = PyDataManager.GetCrossBillboardManager()
    billboardObj = billboardMgr.GetCrossBillboard(billboardType, groupValue1)
    billboardDataCount = billboardObj.GetCount()
    if not billboardDataCount:
        GameWorld.Log("跨服Boss凭证个人排行数据为空! billboardType=%s,cfgID=%s,zoneID=%s,templateID=%s" % (billboardType, cfgID, zoneID, templateID))
        GameWorld.Log("跨服Boss凭证个人排行数据为空! billboardType=%s,zoneID=%s,cfgID=%s,templateID=%s" % (billboardType, zoneID, cfgID, templateID))
        return
    
    # 结算时排序并保存榜单数据流向
    billboardObj.SortData()
    
    GameWorld.Log("结算跨服Boss凭证个人排行奖励: billboardType=%s,cfgID=%s,zoneID=%s,templateID=%s,billboardDataCount=%s"
                  % (billboardType, cfgID, zoneID, templateID, billboardDataCount))
    GameWorld.Log("结算跨服Boss凭证个人排行奖励: billboardType=%s,zoneID=%s,cfgID=%s,templateID=%s,billboardDataCount=%s"
                  % (billboardType, zoneID, cfgID, templateID, billboardDataCount))
    
    orderIpyDataList = IpyGameDataPY.GetIpyGameDataList("ActBossTrialTemplate", templateID)
    if not orderIpyDataList:
        return
    if orderIpyDataList:
    rankPre = 0
    billboardIndex = 0
    for ipyData in orderIpyDataList:
@@ -477,31 +483,30 @@
            billboardIndex += 1
            
    # 结算完备份、清除榜单数据
    CrossBillboard.CopyBillboard(billboardType, ShareDefine.Def_CBT_BossTrialSubmitBak)
    if billboardType == ShareDefine.Def_CBT_BossTrialSubmit:
        CrossBillboard.CopyBillboardEx(billboardType, ShareDefine.Def_CBT_BossTrialSubmitBak, groupValue1)
    billboardObj.ClearData()
    return
def __GiveCrossOrderAwardFamily(cfgID, zoneID, templateID):
def __GiveCrossOrderAwardFamily(cfgID, zoneID, templateID, billboardType):
    
    groupValue1 = zoneID
    billboardType = ShareDefine.Def_CBT_BossTrialSubmitFamily
    #billboardType = ShareDefine.Def_CBT_BossTrialSubmitFamily
    billboardMgr = PyDataManager.GetCrossBillboardManager()
    billboardObj = billboardMgr.GetCrossBillboard(billboardType, groupValue1)
    billboardDataCount = billboardObj.GetCount()
    if not billboardDataCount:
        GameWorld.Log("跨服Boss凭证仙盟排行数据为空! billboardType=%s,cfgID=%s,zoneID=%s,templateID=%s" % (billboardType, cfgID, zoneID, templateID))
        GameWorld.Log("跨服Boss凭证仙盟排行数据为空! billboardType=%s,zoneID=%s,cfgID=%s,templateID=%s" % (billboardType, zoneID, cfgID, templateID))
        return
    
    # 结算时排序并保存榜单数据流向
    billboardObj.SortData()
    
    GameWorld.Log("结算跨服Boss凭证仙盟排行奖励: billboardType=%s,cfgID=%s,zoneID=%s,templateID=%s,billboardDataCount=%s"
                  % (billboardType, cfgID, zoneID, templateID, billboardDataCount))
    GameWorld.Log("结算跨服Boss凭证仙盟排行奖励: billboardType=%s,zoneID=%s,cfgID=%s,templateID=%s,billboardDataCount=%s"
                  % (billboardType, zoneID, cfgID, templateID, billboardDataCount))
    
    orderIpyDataList = IpyGameDataPY.GetIpyGameDataList("ActBossTrialTemplate", templateID)
    if not orderIpyDataList:
        return
    if orderIpyDataList:
    awardFamilyList = []
    rankPre = 0
    billboardIndex = 0
@@ -532,7 +537,8 @@
    CrossRealmMsg.SendMsgToClientServer(ShareDefine.CrossServerMsg_CrossBossTrialFamilyAward, sendMsg)
    
    # 结算完备份、清除榜单数据
    CrossBillboard.CopyBillboard(billboardType, ShareDefine.Def_CBT_BossTrialSubmitFamilyBak)
    if billboardType == ShareDefine.Def_CBT_BossTrialSubmitFamily:
        CrossBillboard.CopyBillboardEx(billboardType, ShareDefine.Def_CBT_BossTrialSubmitFamilyBak, groupValue1)
    billboardObj.ClearData()
    return