#!/usr/bin/python # -*- coding: GBK -*- #------------------------------------------------------------------------------- # #------------------------------------------------------------------------------- # ##@package Player.MixServerCampaign # # @todo:ºÏ·þ»î¶¯ # @author hxp # @date 2014-12-03 # @version 1.1 # # ÏêϸÃèÊö: ºÏ·þ»î¶¯ # @change: "2016-11-21 10:30" xdh Ôö¼ÓÓʼþ²¹·¢ºÏ·þ½±Àø,Ôö¼ÓÕ½ÃË»÷ɱboss»î¶¯ #--------------------------------------------------------------------- """Version = 2016-11-21 10:30""" import ShareDefine import NetPackCommon import ItemControler import IPY_GameWorld import PlayerControl import DataRecordPack import ChPyNetSendPack import PlayerBillboard import ReadChConfig import PyMapTable import GameWorld import ChConfig #--------------------------------------------------------------------- # ¶¨ÒåÎïÆ·ÀàÐÍ ( Def_ItemType_CommonItem, # Ò»°ãÎïÆ· Def_ItemType_AppointItem, # ÌØÊâ¶¨ÖÆÎïÆ· ) = range(2) Def_AwardState_Not = 0 # ²»ÄÜÁì Def_AwardState_Can = 1 # ¿ÉÁì Def_AwardState_Got = 2 # ÒÑÁì ## ºÏ·þ»î¶¯µÇ¼´¦Àí def OnMixServerCampaignLogin(curPlayer): isMixServer = GameWorld.GetGameWorld().GetGameWorldDictByKey(ShareDefine.Def_Notify_WorldKey_IsMixServer) if not isMixServer: return isSycnClientData = False mixMailState = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_MixServerCampaign_MailState, 0, ChConfig.Def_PDictType_OpenServerCampaign) sendGameServerMailTypeList = [] # ²¹·¢ÓʼþÐèÒªµ½GameServerÇëÇóÊý¾ÝµÄ»î¶¯ÀàÐÍ for campType in ShareDefine.Def_MixCampaign_Type_List: getAwardState = GameWorld.GetGameWorld().GetGameWorldDictByKey(ShareDefine.Def_Notify_WorldKey_MixServerCampaignGetAward % campType) if getAwardState == ShareDefine.Def_CampaignAwardState_Over: # Áì½±ÒѽáÊø, ÅжÏÊÇ·ñͨ¹ýÓʼþ²¹·¢Î´ÁìÈ¡µÄ½±Àø if mixMailState & pow(2, campType): # ÓʼþÒÑ´¦Àí¹ý continue if campType in ShareDefine.DoOnMapServerMixCampaignTypeList: DoSendMSCAwardMail(curPlayer, campType) else: sendGameServerMailTypeList.append(campType) else: isSycnClientData = True # ÇëÇó²¹·¢½±ÀøÓʼþËùÐèµÄÊý¾Ý if sendGameServerMailTypeList: #[ÇëÇó²Ù×÷ÀàÐÍ, ÇëÇó²¹·¢½±ÀøÓʼþ»î¶¯ÀàÐÍÁбí] msgList = [ShareDefine.Def_MSCGameServerQuery_MailAward, sendGameServerMailTypeList] GameWorld.GetPlayerManager().GameServer_QueryPlayerResult(curPlayer.GetID(), 0, 0, 'MixServerCampaignAward', \ '%s' % (msgList), len(str(msgList))) # Ö»ÒªÓÐδ½áÊøµÄºÏ·þ»î¶¯£¬ÔòÐèҪ֪ͨ # if isSycnClientData: # Sync_OpenServerCampaignAward(curPlayer) return ## ´¦ÀíºÏ·þ»î¶¯²éѯ/ÁìÈ¡·â°üÂß¼­ # @param curPlayer: Íæ¼Ò¶ÔÏó # @param campaignType: »î¶¯ÀàÐÍ # @param queryType: ²éѯÀàÐÍ1:Áì½±, 0:²éѯ¿É·ñÁì½± # @param awardIndex: //½±ÀøÎ»£¬ÁìȡʱÓà # @return: True-ÒÑÔÚmapServer´¦Àí£¬·´Ö®False def DoMixServerCampaignOnMapServer(curPlayer, campaignType, queryType, awardIndex): if campaignType not in ShareDefine.DoOnMapServerMixCampaignTypeList: return False if queryType == ShareDefine.Def_MSCGameServerQuery_GetAward: DoGetMixServerCampaignAward(curPlayer, campaignType, awardIndex, 0, 0, 0) else: __DoQueryMixServerCampaign(curPlayer, campaignType) return True ## ºÏ·þ»î¶¯²éѯ # @param curPlayer: Íæ¼Ò¶ÔÏó # @param campaignType: »î¶¯ÀàÐÍ # @return: None def __DoQueryMixServerCampaign(curPlayer, campaignType): awardRecord = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_MixServerCampaign_AwardRecord \ % campaignType, 0, ChConfig.Def_PDictType_OpenServerCampaign) recordData = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_MixServerCampaign_RecordData \ % campaignType, 0, ChConfig.Def_PDictType_OpenServerCampaign) # ֪ͨ¿Í»§¶Ë Sync_MixServerCampaignAward(curPlayer, campaignType, awardRecord, recordData) return ## ÊÇ·ñÐèÒª±£´æºÏ·þ»î¶¯Êý¾Ý¼Ç¼ # @param campaignType: »î¶¯ÀàÐÍ # @return: None def IsNeedSaveMixServerCampaignRecordData(campaignType): key = ShareDefine.Def_Notify_WorldKey_MixServerCampaignSaveData % campaignType gameWorldMgr = GameWorld.GetGameWorld() return gameWorldMgr.GetGameWorldDictByKey(key) == ShareDefine.Def_CampaignDataState_Save ## ¸üкϷþ»î¶¯Êý¾Ý¼Ç¼(Íâµ÷º¯Êý) # @param curPlayer: Íæ¼Ò¶ÔÏó # @param campaignType: »î¶¯ÀàÐÍ # @param value: ¸üÐÂÖµ # @param updType: ¸üз½Ê½1-ÀÛ¼Ó£»Ä¬ÈÏ0-Ìæ»» # @return: None def UpdMixServerCampaignRecordData(curPlayer, campaignType, value, updType=0): isMixServer = GameWorld.GetGameWorld().GetGameWorldDictByKey(ShareDefine.Def_Notify_WorldKey_IsMixServer) if not isMixServer: return GameWorld.DebugLog("ºÏ·þ»î¶¯Êý¾Ý¼Ç¼ campaignType=%s,value=%s,updType=%s" % (campaignType, value, updType)) # ·Ç¼Ç¼Êý¾Ýʱ»ú if not IsNeedSaveMixServerCampaignRecordData(campaignType): GameWorld.DebugLog(" ·Ç¼Ç¼Êý¾Ýʱ»ú") return # Èç¹ûÊÇÀÛ¼ÓµÄ if updType == 1: recordData = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_MixServerCampaign_RecordData \ % campaignType, 0, ChConfig.Def_PDictType_OpenServerCampaign) value += recordData GameWorld.DebugLog(" ÀÛ¼ÓÀàÐÍ£¬¸üÐÂÖµ=%s" % value) __UpdateMixServerCampaignRecordData(curPlayer, campaignType, value) return ## ¸üкϷþ»î¶¯Êý¾Ý¼Ç¼ # @param curPlayer: Íæ¼Ò¶ÔÏó # @param campaignType: »î¶¯ÀàÐÍ # @param value: ¼Ç¼ֵ # @return: None def __UpdateMixServerCampaignRecordData(curPlayer, campaignType, value): recordData = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_MixServerCampaign_RecordData \ % campaignType, 0, ChConfig.Def_PDictType_OpenServerCampaign) # Öµ²»±ä²»´¦Àí if recordData == value: return # ¸üкϷþ»î¶¯Ê±µÄ¼Ç¼ÊýÖµ PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_MixServerCampaign_RecordData \ % campaignType, value, ChConfig.Def_PDictType_OpenServerCampaign) # µ±Ç°Á콱״̬¼Ç¼ awardRecord = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_MixServerCampaign_AwardRecord \ % campaignType, 0, ChConfig.Def_PDictType_OpenServerCampaign) # ½±ÀøÅä±íÖеĸñʽ£ºÎ»:[Âú×ãÌõ¼þÊýÖµ, ½±ÀøÐÅÏ¢], awardInfoDict = __GetMixAwardInfoDict(campaignType) for bit, awardInfo in awardInfoDict.items(): awardState = GameWorld.GetDataByDigitPlace(awardRecord, bit) # Èç¹ûÒÑÁ죬²»´¦Àí if awardState == Def_AwardState_Got: continue # Èç¹û¸üеÄÊýÖµÂú×ã¹æ¶¨Áì½±ÊýÖµ£¬ÇÒµ±Ç°²»Îª¿ÉÁì״̬£¬Ôò¸üÐÂΪ¿ÉÁì½± if value >= awardInfo[0] and awardState != Def_AwardState_Can: awardRecord = GameWorld.ChangeDataByDigitPlace(awardRecord, bit, Def_AwardState_Can) PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_MixServerCampaign_AwardRecord \ % campaignType, awardRecord, ChConfig.Def_PDictType_OpenServerCampaign) GameWorld.DebugLog(" ¸üн±Àø×´Ì¬ type=%s,awardRecord=%s" % (campaignType, awardRecord)) # ºÏ·þ³äÖµ»î¶¯µÄ£¬¸üгäÖµÅÅÐÐ if campaignType == ShareDefine.Def_MixCampaign_Type_RechargeCnt: # ÒòΪÓÐ×öÉϰñÏÞÖÆ£¬ËùÒԾͲ»×ö¿½±´ PlayerBillboard.UpdateMixServerRechargeRankBillboard(curPlayer, value) if campaignType == ShareDefine.Def_MixCampaign_Type_PlayerKillBoss: # ÒòΪÓÐ×öÉϰñÏÞÖÆ£¬ËùÒԾͲ»×ö¿½±´ PlayerBillboard.UpdateMixServerFamilyKillBossBillboard(curPlayer, 1) #ĬÈÏ1Ö» return ## ºÏ·þ»î¶¯¸ø½±Àø # @param curPlayer: Íæ¼Ò¶ÔÏó # @param campaignType: »î¶¯ÀàÐÍ # @param awardIndex: ½±ÀøË÷Òýλ # @param order: ËùÔÚÅÅÐаñÅÅÃû # @param familyLV: ËùÔÚÕ½Ã˵ȼ¶ # @param memberFamilyLV: ËùÔÚÕ½Ã˳ÉÔ±µÈ¼¶ # @return: None def DoGetMixServerCampaignAward(curPlayer, campaignType, awardIndex, order, familyLV, memberFamilyLV, isUseMail=False): GameWorld.Log("ºÏ·þ»î¶¯¸ø½±Àø campaignType=%s,index=%s,order=%s,familyLV=%s,memberFamilyLV=%s,isUseMail=%s" % (campaignType, awardIndex, order, familyLV, memberFamilyLV, isUseMail)) gameWorldMgr = GameWorld.GetGameWorld() if not isUseMail: #Óʼþ½±ÀøµÄ²»ÅÐ¶Ï key = ShareDefine.Def_Notify_WorldKey_MixServerCampaignGetAward % campaignType canGetAward = gameWorldMgr.GetGameWorldDictByKey(key) # Èç¹ûµ±Ç°²»¿ÉÁ콱ʱ»ú if canGetAward != ShareDefine.Def_CampaignAwardState_Allow: GameWorld.Log(" µ±Ç°²»¿ÉÁ콱ʱ»ú type=%s,canGetAward=%s" % (campaignType, canGetAward)) return # µ±Ç°Á콱״̬¼Ç¼ awardRecord = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_MixServerCampaign_AwardRecord \ % campaignType, 0, ChConfig.Def_PDictType_OpenServerCampaign) awardState = GameWorld.GetDataByDigitPlace(awardRecord, awardIndex) GameWorld.DebugLog('ºÏ·þ»î¶¯¸ø½±Àø awardState=%s' % awardState) #Ö÷ÒªÔÚMapServer´¦ÀíµÄÊýÖµÅжÏÀàÐÍ£¬ÐèÒª¼ì²éÁìȡ״̬ if campaignType in ShareDefine.DoOnMapServerMixCampaignTypeList: # ¼ì²éÊÇ·ñÒÑÁìÈ¡ if awardState != Def_AwardState_Can: GameWorld.Log(" ²»¿ÉÁì½± type=%s,index=%s,awardRecord=%s,awardState=%s" % (campaignType, awardIndex, awardRecord, awardState)) return #GameServer´¦ÀíµÄÅÅÐаñÀàÐÍ£¬ÔÚ¿Í»§¶Ë²»ÐèÒª¼Ç¼£¬³ý·ÇÁìÈ¡¹ý£¬ËùÒÔÕâÀïÐèÒªÅж¨ÊÇ·ñÁìÈ¡¹ý else: if awardState == Def_AwardState_Got: GameWorld.Log(" ÒÑÁì¹ý type=%s,index=%s,awardRecord=%s,awardState=%s" % (campaignType, awardIndex, awardRecord, awardState)) return #»ñÈ¡½±ÀøÐÅÏ¢ awardInfoList, condition = __GetMixAwardInfoList(curPlayer, campaignType, awardIndex, order, familyLV, memberFamilyLV) if awardInfoList == []: GameWorld.ErrLog(" ÕÒ²»µ½½±ÀøÐÅÏ¢, type=%s,index=%s" % (campaignType, awardIndex)) return if len(awardInfoList) < 2: #½±ÀøÐÅÏ¢³¤¶È´íÎó GameWorld.ErrLog(" ½±ÀøÐÅÏ¢len error! type=%s,index=%s" % (campaignType, awardIndex)) return if not isUseMail: needPackCount = awardInfoList[0] # Õ¼Óøñ×ÓÊý packSpaceCnt = max((ItemControler.GetItemPackSpace(curPlayer, IPY_GameWorld.rptItem)), \ ItemControler.GetItemPackSpace(curPlayer, IPY_GameWorld.rptAnyWhere)) if needPackCount > packSpaceCnt: #±³°ü¿Õ¼äÒÑÂú PlayerControl.NotifyCode(curPlayer, "GeRen_chenxin_998371") return #¸ù¾ÝÖ°Òµ»ñÈ¡½±ÀøÎïÆ·ÐÅÏ¢ playerJob = curPlayer.GetJob() jobItemInfoDict = awardInfoList[1] jobItemInfoDictEx = awardInfoList[2] if len(awardInfoList) > 2 else {} # ¶îÍâ½±Àø itemInfoListBase = __GetAwardItemListByJob(playerJob, jobItemInfoDict) itemInfoListEx = __GetAwardItemListByJob(playerJob, jobItemInfoDictEx) itemInfoList = itemInfoListBase + itemInfoListEx GameWorld.DebugLog(" itemInfoListBase=%s,itemInfoListEx=%s,itemInfoList=%s" % (str(itemInfoListBase), str(itemInfoListEx), str(itemInfoList))) #Èç¹û¶¼È¡²»µ½£¬±¨Åä±í´íÎó if itemInfoList == []: GameWorld.ErrLog(" ½±ÀøÈ¡²»µ½ campaignType=%s,awardIndex=%s,playerJob=%s not data" % (campaignType, awardIndex, playerJob)) return #oss¼Ç¼Áì½±ÐÅÏ¢ awardMixDay = gameWorldMgr.GetGameWorldDictByKey(ShareDefine.Def_Notify_WorldKey_MixServerDay) dataDict = {"AwardMixDay":awardMixDay, "CampaignType":campaignType, "awardIndex":awardIndex, "PlayerOrder":order, "FamilyLV":familyLV, "MemberFamilyLV":memberFamilyLV} if not isUseMail: #¸øÓè½±ÀøÎïÆ· for index in range(0, len(itemInfoList)): itemType, itemID, itemCount, isBind = itemInfoList[index] #¸øÓèÎïÆ· # Ò»°ãÎïÆ· if itemType == Def_ItemType_CommonItem: if not ItemControler.GivePlayerItem(curPlayer, itemID, itemCount, isBind, [IPY_GameWorld.rptItem, IPY_GameWorld.rptAnyWhere], True, showSysInfo=True): continue # ÌØÊâ¶¨ÖÆÎïÆ· elif itemType == Def_ItemType_AppointItem: ItemControler.GivePlayerAppointItem(curPlayer, itemID, isBind, True, True) #ϵͳ¹ã²¥ if campaignType == ShareDefine.Def_MixCampaign_Type_RechargeFirst: PlayerControl.WorldNotify(0, 'GeRen_wjr_162625', [curPlayer.GetPlayerName()]) else: playerID = curPlayer.GetPlayerID() MixServerCampaignMail = ReadChConfig.GetEvalChConfig("MixServerCampaignMail") content, getDays, mailNumDict = MixServerCampaignMail if campaignType not in mailNumDict: GameWorld.ErrLog(" δÅäÖúϷþ»î¶¯ÀàÐͶÔÓ¦ÓʼþÄ£°å±àºÅ! campaignType=%s,mailItemList=%s" % (campaignType, itemInfoList), playerID) return GameWorld.DebugLog(' ºÏ·þ½±ÀøÓʼþ campaignType=%s, condition=%s'%(campaignType, condition)) mailContent = content % (mailNumDict[campaignType], condition) mailItemList = [] for itemType, itemID, itemCount, isBind in itemInfoList: mailItemList.append([itemID, itemCount, isBind, itemType]) sendOK = PlayerControl.SendMail("", mailContent, getDays, [playerID], mailItemList) dataDict["sendOK"] = sendOK DataRecordPack.DR_MixServerAward(curPlayer, dataDict) # ¸üÐÂÒÑÁìÈ¡ awardRecord = GameWorld.ChangeDataByDigitPlace(awardRecord, awardIndex, Def_AwardState_Got) PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_MixServerCampaign_AwardRecord \ % campaignType, awardRecord, ChConfig.Def_PDictType_OpenServerCampaign) # ¸üлÊý¾Ý updRecordData = -1 if campaignType == ShareDefine.Def_MixCampaign_Type_FamilyWar: updRecordData = memberFamilyLV if updRecordData != -1: PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_MixServerCampaign_RecordData \ % campaignType, updRecordData, ChConfig.Def_PDictType_OpenServerCampaign) # ֪ͨ¿Í»§¶Ë __DoQueryMixServerCampaign(curPlayer, campaignType) return ## ºÏ·þ»î¶¯Óʼþ·¢·Å½±Àø def DoSendMSCAwardMail(curPlayer, campaignType, gameServerAwardInfo=[]): campaignAwardDict = ReadChConfig.GetEvalChConfig("MixServerCampaignAward") if campaignType not in campaignAwardDict: return order = gameServerAwardInfo[0] if gameServerAwardInfo else 0 memberLV = gameServerAwardInfo[1] if len(gameServerAwardInfo) > 1 else 0 if campaignType in ShareDefine.Def_MixCampaign_Billboard_Dict: billboardType = ShareDefine.Def_MixCampaign_Billboard_Dict[campaignType] if not gameServerAwardInfo or not order: GameWorld.DebugLog(" ÎÞ°ñµ¥Êý¾Ý!campaignType=%s,billboardType=%s" % (campaignType, billboardType)) return DoGetMixServerCampaignAward(curPlayer, campaignType, 0, order, 0, memberLV, True) else: awardInfoList = campaignAwardDict[campaignType] for awardIndex in xrange(len(awardInfoList)): DoGetMixServerCampaignAward(curPlayer, campaignType, awardIndex, order, 0, memberLV, True) # ¸üÐÂÓʼþÒÑ´¦Àí¹ý mixMailState = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_MixServerCampaign_MailState, 0, ChConfig.Def_PDictType_OpenServerCampaign) updMailState = mixMailState | pow(2, campaignType) PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_MixServerCampaign_MailState, updMailState, ChConfig.Def_PDictType_OpenServerCampaign) GameWorld.Log(" ºÏ·þ»î¶¯Óʼþ·¢·Å½±Àø³É¹¦! campaignType=%s,mixMailState=%s,updMailState=%s" % (campaignType, mixMailState, updMailState), curPlayer.GetPlayerID()) return ## ¸ù¾ÝÖ°Òµ»ñÈ¡½±ÀøÁбí # @param playerJob: Ö°Òµ # @param jobItemInfoDict: Ö°Òµ¶ÔÓ¦½±ÀøÎïÆ·ÐÅÏ¢×Öµä # @return: ½±ÀøÐÅÏ¢Áбí def __GetAwardItemListByJob(playerJob, jobItemInfoDict): itemInfoList = jobItemInfoDict.get(playerJob, []) #Èç¹ûÈ¡²»µ½µ±Ç°Ö°ÒµµÄ½±Àø£¬¾Íȡְҵ0µÄÊý¾Ý if itemInfoList == []: itemInfoList = jobItemInfoDict.get(0, []) return itemInfoList ## »ñÈ¡½±ÀøÎïÆ·ÐÅÏ¢ # @param curPlayer: Íæ¼ÒʵÀý # @param campaignType: »î¶¯ÀàÐÍ # @param awardIndex: ½±ÀøÎ» # @param order: Ãû´Î # @param familyLV: ¼Ò×åµÈ¼¶ # @param memberFamilyLV: ¼Ò×åְλ # @return: ½±ÀøÐÅÏ¢,Ìõ¼þ def __GetMixAwardInfoList(curPlayer, campaignType, awardIndex, order, familyLV, memberFamilyLV): condition = 0 #ÓʼþÏÔʾÓòÎÊý awardInfoDict = __GetMixAwardInfoDict(campaignType) if awardInfoDict == {}: return [], condition awardList = [] # ͨÓñ£µ× if campaignType in [ShareDefine.Def_MixCampaign_Type_RechargeFirst, ShareDefine.Def_MixCampaign_Type_RechargeCnt, ShareDefine.Def_MixCampaign_Type_FamilyWarEnter, ShareDefine.Def_MixCampaign_Type_PlayerKillBoss ]: awardList = awardInfoDict.get(awardIndex, []) condition = 0 if len(awardList) != 2 else awardList[0] awardList = [] if len(awardList) != 2 else awardList[1] if campaignType in [ShareDefine.Def_MixCampaign_Type_RechargeFirst]: condition = '' #ÅÅÐаñÀàÐÍ else: condition = order orderList = awardInfoDict.keys() orderList.sort() for minOrder in orderList: if order > minOrder: continue awardList = awardInfoDict.get(minOrder) break if campaignType == ShareDefine.Def_MixCampaign_Type_FamilyWar: #±ù·âÍõ×ù¼Ò×åÕ½»ñʤ¼Ò×å³ÉÔ±½±ÀøÌØÊâ´¦Àí condition = memberFamilyLV awardList = awardInfoDict.get(memberFamilyLV, []) extendComValue = 0 # À©Õ¹½±Àø±È½ÏÖµ # ÌØÊâÀ©Õ¹½±Àø±È½ÏÖµ´¦Àí # ... awardList = __ExtendAwardItem(curPlayer, awardList, extendComValue) return awardList, condition ## À©Õ¹½±ÀøÎïÆ· # @param curPlayer: Íæ¼ÒʵÀý # @param awardList: ½±ÀøÐÅÏ¢Áбí # @param extendComValue: À©Õ¹½±Àø±È½ÏÖµ # @return: ×îÖÕ½±ÀøÎïÆ·Áбí def __ExtendAwardItem(curPlayer, awardList, extendComValue): if len(awardList) < 4: return awardList # awardList[ÐèÇó¸ñ×ÓÊý, »ù´¡½±Àø×Öµä, ¶îÍâ½±ÀøÐèÇó, ¶îÍâ½±Àø×Öµä] needSpace = awardList[0] awardDict = awardList[1] limitData = awardList[2] awardDictEx = awardList[3] # Èç¹ûÓжîÍâ½±Àø GameWorld.DebugLog(" __ExtendAwardItem extendComValue=%s,limitData=%s" % (extendComValue, limitData)) # 0Ϊ²»ÏÞÖÆ if not limitData or extendComValue >= limitData: awardList = [needSpace, awardDict, awardDictEx] else: awardList = [needSpace, awardDict] return awardList ## »ñÈ¡½±ÀøÐÅÏ¢ # @param curPlayer: Íæ¼ÒʵÀý # @param campaignType: »î¶¯ÀàÐÍ # @param order: Ãû´Î # @param familyLV: ¼Ò×åµÈ¼¶ # @param memberFamilyLV: ¼Ò×åְλ # @return: ½±ÀøÐÅÏ¢ def __GetMixAwardInfoDict(campaignType): campaignAwardDict = ReadChConfig.GetEvalChConfig("MixServerCampaignAward") awardInfoDict = campaignAwardDict.get(campaignType, {}) if awardInfoDict == {}: GameWorld.ErrLog("MixServerCampaignAward.txt campaignType:%s not info" % (campaignType)) return awardInfoDict ## ֪ͨºÏ·þ»î¶¯½±Àø # @param curPlayer: Íæ¼ÒʵÀý # @param campaignType: »î¶¯½±Àø # @param record: ´ÓµÍλµ½¸ßλ£¬Ã¿Î»±íʾ£º0-²»¿ÉÁ죻1-ÁìÈ¡£»2-ÒÑÁì # @param recordData: »î¶¯Ê±µÄ¼Ç¼ֵ # @return: None def Sync_MixServerCampaignAward(curPlayer, campaignType, record, recordData): mixAwardRecord = ChPyNetSendPack.tagMCMixCampaignAwardRecord() mixAwardRecord.CampaignType = campaignType mixAwardRecord.Record = record mixAwardRecord.RecordData = recordData NetPackCommon.SendFakePack(curPlayer, mixAwardRecord) return