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