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