hxp
2025-12-04 9c5f7ba286ee8fa87f9e348624fee2127b3fe85a
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
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
#!/usr/bin/python
# -*- coding: GBK -*-
#-------------------------------------------------------------------------------
#
##@package Player.OpenServerActivity
#
# @todo:¿ª·þ»î¶¯
# @author hxp
# @date 2025-12-04
# @version 1.0
#
# ÏêϸÃèÊö: ¿ª·þ»î¶¯
#
#-------------------------------------------------------------------------------
#"""Version = 2025-12-04 16:00"""
#-------------------------------------------------------------------------------
 
import DBDataMgr
import ShareDefine
import GameFuncComm
import IpyGameDataPY
import PlayerBillboard
import PlayerTreasure
import PlayerControl
import GameWorld
 
# ¿ª·þ³å°ñÀàÐͶÔÓ¦¹¦ÄÜID
OSAFuncIDDict = {
                 ShareDefine.Def_BT_OSA_MainLevel:ShareDefine.GameFuncID_OSA_MainLevel,
                 ShareDefine.Def_BT_OSA_HeroCall:ShareDefine.GameFuncID_OSA_HeroCall,
                 }
 
def DoOSA_MainLevel(curPlayer):
    if GetOSAState(curPlayer, ShareDefine.Def_BT_OSA_MainLevel) != 1:
        return
    lvID = PlayerControl.GetPassMainLevelID(curPlayer)
    GameWorld.DebugLog("¿ª·þ¹Ø¿¨°ñ¿ªÆô¸üаñµ¥: lvID=%s" % lvID, curPlayer.GetPlayerID())
    PlayerBillboard.UpdatePlayerBillboard(curPlayer, ShareDefine.Def_BT_OSA_MainLevel, lvID)
    return
 
def DoOSA_HeroCall(curPlayer):
    if GetOSAState(curPlayer, ShareDefine.Def_BT_OSA_HeroCall) != 1:
        return
    callCnt = PlayerTreasure.GetHeroCallCnt(curPlayer)
    GameWorld.DebugLog("¿ª·þÕÐļ°ñ¿ªÆô¸üаñµ¥: callCnt=%s" % callCnt, curPlayer.GetPlayerID())
    PlayerBillboard.UpdatePlayerBillboard(curPlayer, ShareDefine.Def_BT_OSA_HeroCall, callCnt)
    return
 
def GetOSAState(curPlayer, osaType):
    ## Íæ¼ÒÊÇ·ñÔÚ¿ª·þ³å°ñ»î¶¯ÖÐ
    # @return: 0-먦Æô£»1-»î¶¯ÖУ»2-½áÊøÏÔʾÆÚ£»3-½áÊø¹Ø±ÕÆÚ
    funcID = OSAFuncIDDict.get(osaType)
    if not funcID:
        return 0
    if not GameFuncComm.GetFuncCanUse(curPlayer, funcID):
        #GameWorld.DebugLog("¿ª·þ³å°ñ¹¦ÄÜ먦Æô! osaType=%s,funcID=%s" % (osaType, funcID))
        return 0
    osaDayDict = IpyGameDataPY.GetFuncEvalCfg("OSABillboard", 1, {})
    startDay, endDay = osaDayDict.get(str(osaType), [0, 0])
    serverDay = DBDataMgr.GetEventTrigMgr().GetValue(ShareDefine.Def_ServerDay) + 1
    if startDay <= serverDay <= endDay:
        #GameWorld.DebugLog("¿ª·þ³å°ñ»î¶¯ÖÐ! osaType=%s,serverDay=%s,startDay=%s,endDay=%s" % (osaType, serverDay, startDay, endDay))
        return 1
    if serverDay == (endDay + 1):
        #GameWorld.DebugLog("¿ª·þ³å°ñ½áËãÖÐ! osaType=%s,serverDay=%s,startDay=%s,endDay=%s" % (osaType, serverDay, startDay, endDay))
        return 2
    #GameWorld.DebugLog("¿ª·þ³å°ñÒѽáÊø! osaType=%s,serverDay=%s,startDay=%s,endDay=%s" % (osaType, serverDay, startDay, endDay))
    return 3
 
def OnDay():
    
    osaAwardState = DBDataMgr.GetEventTrigMgr().GetValue(ShareDefine.Def_OSAAwardState)
    serverDay = DBDataMgr.GetEventTrigMgr().GetValue(ShareDefine.Def_ServerDay) + 1
    osaDayDict = IpyGameDataPY.GetFuncEvalCfg("OSABillboard", 1, {})
    for osaType, dayRange in osaDayDict.items():
        osaType = int(osaType)
        startDay, endDay = dayRange
        if startDay > endDay:
            continue
        if serverDay <= endDay:
            #GameWorld.DebugLog("¿ª·þ³å°ñδ¿ªÊ¼»ò»î¶¯ÖеIJ»´¦Àí: osaType=%s,serverDay=%s <= endDay(%s)" % (osaType, serverDay, endDay))
            continue
        
        # ½áËã
        if osaAwardState & pow(2, osaType):
            #GameWorld.DebugLog("¿ª·þ³å°ñ½±ÀøÒѽáËã¹ýÁË: osaType=%s,osaAwardState=%s" % (osaType, osaAwardState))
            continue
        osaAwardState |= pow(2, osaType)
        DBDataMgr.GetEventTrigMgr().SetValue(ShareDefine.Def_OSAAwardState, osaAwardState)
        GameWorld.DebugLog("¿ª·þ³å°ñ½±Àø½áËã: osaType=%s,osaAwardState=%s,serverDay=%s" % (osaType, osaAwardState, serverDay))
        
        if osaType == ShareDefine.Def_BT_OSA_MainLevel:
            billboardAwardDict = IpyGameDataPY.GetFuncEvalCfg("OSABillboard", 2, {})
            PlayerBillboard.DoGiveBillboardAwardByMail(osaType, "OSAMainLevel", billboardAwardDict, "OSAMainLevel")
        elif osaType == ShareDefine.Def_BT_OSA_HeroCall:
            billboardAwardDict = IpyGameDataPY.GetFuncEvalCfg("OSABillboard", 3, {})
            PlayerBillboard.DoGiveBillboardAwardByMail(osaType, "OSAHeroCall", billboardAwardDict, "OSAHeroCall")
            
    return