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