#!/usr/bin/python # -*- coding: GBK -*- #------------------------------------------------------------------------------- # #------------------------------------------------------------------------------- # ##@package Player.PlayerFairyCeremony # # @todo:ÏɽçÊ¢µä # @author xdh # @date 2018-07-23 16:50 # @version 1.0 # # # ÏêϸÃèÊö: ÏɽçÊ¢µä # #--------------------------------------------------------------------- """Version = 2018-07-23 16:50""" #--------------------------------------------------------------------- import ChPyNetSendPack import GameWorld import PlayerDBGSEvent import ShareDefine import NetPackCommon import PlayerBillboard import IpyGameDataPY import PlayerCompensation ( Def_FC_Recharge, #³äÖµ´óÀñ Def_FC_Fireworks, #ÑÌ»¨ Def_FC_Party, #È«ÃñÀ´àË Def_FC_RechargeRank, #¾ø°æ½µÁÙ ) = range(1, 5) def ResetFairyCeremony(): ##»î¶¯¿ªÊ¼ ÖØÖÃÅÅÐаñÐÅÏ¢ # Çå³ýÅÅÐаñ PlayerBillboard.ClearBillboardByIndex(ShareDefine.Def_BT_FCCostGold) return def OnFairyCeremonyEnd(): #»î¶¯½áÊø ¾ø°æ½µÁÙ¸ø½±Àø billBoard = GameWorld.GetBillboard().FindBillboard(ShareDefine.Def_BT_FCCostGold) if not billBoard: return worldLvNum = __GetFCWorldLVIndex(Def_FC_RechargeRank) billboardCnt = billBoard.GetCount() for index in range(0, billboardCnt): ipyData = IpyGameDataPY.GetIpyGameData('UniquenessArrive', worldLvNum, index + 1) if not ipyData: break objBillboard = billBoard.At(index) playerID = objBillboard.GetID() awardInfoDict = ipyData.GetAward() job = objBillboard.GetType2() % 10 if str(job) not in awardInfoDict: GameWorld.ErrLog(' ¾ø°æ½µÁÙ¸ø½±Àø UniquenessArrive δÅäÖøÃÖ°Òµ job=%s' % job, playerID) continue awardList = awardInfoDict[str(job)] PlayerCompensation.SendMailByKey('CeremonyRank', [playerID], awardList, [objBillboard.GetName1(), index + 1]) GameWorld.DebugLog(' »î¶¯½áÊø ¾ø°æ½µÁÙ¸ø½±Àø worldLvNum=%s, billboardCnt=%s' % (worldLvNum, billboardCnt)) return def __GetFCWorldLVIndex(fcType): #»ñÈ¡»î¶¯ÊÀ½çµÈ¼¶µµ playerFCWorldLV = PlayerDBGSEvent.GetDBGSTrig_ByKey(PlayerDBGSEvent.Def_OActWorldLV % ShareDefine.OperationActionName_FairyCeremony) fcWorldlvDict = IpyGameDataPY.GetFuncEvalCfg('CeremonyWorldLv', 1, {}) if str(fcType) not in fcWorldlvDict: return 0 worldLVIndex = 0 worldlvList = fcWorldlvDict[str(fcType)] for index, lvinfo in enumerate(worldlvList): minlv, maxlv = lvinfo if minlv <= playerFCWorldLV <= maxlv: worldLVIndex = index break return worldLVIndex def Sync_OperationAction_FairyCeremony(ipyData, curPlayer=None): ## ֪ͨÏɽçÊ¢µä»î¶¯ÐÅÏ¢ if not ipyData: return startDateStr, endDateStr = GameWorld.GetOperationActionDateStr(ipyData) fairyCeremonyInfo = ChPyNetSendPack.tagGCFairyCeremonyInfo() fairyCeremonyInfo.Clear() fairyCeremonyInfo.StartDate = startDateStr fairyCeremonyInfo.EndtDate = endDateStr fairyCeremonyInfo.WorldLV = PlayerDBGSEvent.GetDBGSTrig_ByKey(PlayerDBGSEvent.Def_OActWorldLV % ShareDefine.OperationActionName_FairyCeremony) fairyCeremonyInfo.LimitLV = ipyData.GetLVLimit() fairyCeremonyInfo.ResetType = ipyData.GetResetType() if not curPlayer: # È«·þ¹ã²¥ÔÚÏßÍæ¼Ò playerManager = GameWorld.GetPlayerManager() for i in xrange(playerManager.GetPlayerCount()): curPlayer = playerManager.GetPlayerByIndex(i) if curPlayer == None or not curPlayer.GetInitOK(): continue NetPackCommon.SendFakePack(curPlayer, fairyCeremonyInfo) else: NetPackCommon.SendFakePack(curPlayer, fairyCeremonyInfo) return