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