| #!/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 |