#!/usr/bin/python 
 | 
# -*- coding: GBK -*- 
 | 
#------------------------------------------------------------------------------- 
 | 
# 
 | 
##@package PlayerActBossTrial 
 | 
# 
 | 
# @todo:bossÀúÁ· 
 | 
# @author hxp 
 | 
# @date 2023-10-20 
 | 
# @version 1.0 
 | 
# 
 | 
# ÏêϸÃèÊö: bossÀúÁ· 
 | 
# 
 | 
#------------------------------------------------------------------------------- 
 | 
#"""Version = 2023-10-20 16:00""" 
 | 
#------------------------------------------------------------------------------- 
 | 
  
 | 
import ShareDefine 
 | 
import DataRecordPack 
 | 
import PlayerCompensation 
 | 
import PlayerBillboard 
 | 
import IpyGameDataPY 
 | 
import GameWorld 
 | 
  
 | 
BillboardType = ShareDefine.Def_BT_BossTrialSubmit 
 | 
  
 | 
def OnActStart(actNum): 
 | 
    ## »î¶¯¿ªÆô 
 | 
    PlayerBillboard.ClearBillboardByIndex(BillboardType) 
 | 
    return 
 | 
  
 | 
def OnActEnd(actNum, ipyData, dayIndex): 
 | 
    ## »î¶¯½áÊø 
 | 
    cfgID = ipyData.GetCfgID() if ipyData else 0 
 | 
    # ·¢·ÅÅÅÐн±Àø 
 | 
    GameWorld.Log("=== bossÀúÁ·»î¶¯½áÊø£¡·¢·Å°ñµ¥½±Àø£¡ === actNum=%s,cfgID=%s,dayIndex=%s" % (actNum, cfgID, dayIndex)) 
 | 
    if not cfgID: 
 | 
        return 
 | 
    billBoard = GameWorld.GetBillboard().FindBillboard(BillboardType) 
 | 
    if not billBoard: 
 | 
        return 
 | 
    templateID = GameWorld.GetTemplateID(ipyData, cfgID, dayIndex) 
 | 
    if not templateID: 
 | 
        return 
 | 
    tempIpyDataList = IpyGameDataPY.GetIpyGameDataList("ActBossTrialTemplate", templateID) 
 | 
    if not tempIpyDataList: 
 | 
        return 
 | 
     
 | 
    rankAwardDict = {} 
 | 
    for tempIpyData in tempIpyDataList: 
 | 
        rankAwardDict[tempIpyData.GetRank()] = tempIpyData.GetAwardItemList() 
 | 
         
 | 
    GameWorld.Log("    templateID=%s,rankAwardDict=%s" % (templateID, rankAwardDict)) 
 | 
    billBoard.Sort() 
 | 
    for index in xrange(billBoard.GetCount()): 
 | 
        billBoardData = billBoard.At(index) 
 | 
        if not billBoardData: 
 | 
            continue 
 | 
         
 | 
        rank = index + 1 
 | 
         
 | 
        awardItemList = GameWorld.GetOrderValueByDict(rankAwardDict, rank, False) 
 | 
        if not awardItemList: 
 | 
            break 
 | 
         
 | 
        playerID = billBoardData.GetID() 
 | 
        name2 = billBoardData.GetName2() 
 | 
        cmpValue = billBoardData.GetCmpValue() 
 | 
         
 | 
        GameWorld.Log("    ·¢·ÅbossÀúÁ·°ñµ¥½±Àø: rank=%s,playerID=%s,cmpValue=%s,awardItemList=%s, %s"  
 | 
                      % (rank, playerID, cmpValue, awardItemList, name2)) 
 | 
         
 | 
        PlayerCompensation.SendMailByKey("BossTrialMail%s" % actNum, [playerID], awardItemList, [rank]) 
 | 
         
 | 
    DataRecordPack.DR_BillboardData(BillboardType, "BossTrial", {"actNum":actNum, "cfgID":cfgID, "dayIndex":dayIndex, "templateID":templateID}) 
 | 
    PlayerBillboard.ClearBillboardByIndex(BillboardType) 
 | 
    GameWorld.Log("=================================================================================") 
 | 
    return 
 |