1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
#!/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