|  |  |  | 
|---|
|  |  |  | import EventShell | 
|---|
|  |  |  | import PlayerPet | 
|---|
|  |  |  | import datetime | 
|---|
|  |  |  | import time | 
|---|
|  |  |  |  | 
|---|
|  |  |  | #关联类型 | 
|---|
|  |  |  | ( | 
|---|
|  |  |  | 
|---|
|  |  |  | __SetPDictValue(curPlayer, ChConfig.Def_PDict_Activity_ExtraRealmPoint, 0) | 
|---|
|  |  |  | #重新计算奖励阶段 | 
|---|
|  |  |  | __CalcAwardStage(curPlayer) | 
|---|
|  |  |  | #重置可领取修行点,未领取的发邮件 | 
|---|
|  |  |  | #        realmPoint = __GetPDictValue(curPlayer, ChConfig.Def_PDict_Activity_RealmPoint) | 
|---|
|  |  |  | #        if realmPoint and GameFuncComm.GetFuncCanUse(curPlayer, ShareDefine.GameFuncID_Official): | 
|---|
|  |  |  | #            if GameFuncComm.GetFuncCanUse(curPlayer, ShareDefine.GameFuncID_DailyQuest): | 
|---|
|  |  |  | #                PlayerControl.SendMailByKey('XXDForgetToPick', [curPlayer.GetID()], [(ChConfig.Def_ItemID_RealmPoint, realmPoint, 1)], [realmPoint]) | 
|---|
|  |  |  | #            __SetPDictValue(curPlayer, ChConfig.Def_PDict_Activity_RealmPoint, 0) | 
|---|
|  |  |  |  | 
|---|
|  |  |  | SyncDailyActivityInfo(curPlayer) | 
|---|
|  |  |  | else: | 
|---|
|  |  |  | 
|---|
|  |  |  | SyncDailyActivityInfo(curPlayer) | 
|---|
|  |  |  | #同步日常活动次数 | 
|---|
|  |  |  | SyncDailyActionInfo(curPlayer) | 
|---|
|  |  |  | #活跃放置 | 
|---|
|  |  |  | Sync_ActivityPlaceInfo(curPlayer) | 
|---|
|  |  |  | return | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | 
|---|
|  |  |  | addValue = addValue + addExtraPoint | 
|---|
|  |  |  | curTotalPoint = __GetPDictValue(curPlayer, ChConfig.Def_PDict_Activity_TotalPoint) | 
|---|
|  |  |  | __SetPDictValue(curPlayer, ChConfig.Def_PDict_Activity_TotalPoint, curTotalPoint + addValue) | 
|---|
|  |  |  | AddCanCostActivityPoint(curPlayer, addValue, isLVUp) | 
|---|
|  |  |  | historyPoint = __GetPDictValue(curPlayer, ChConfig.Def_PDict_ActivityHistoryPoint) | 
|---|
|  |  |  | __SetPDictValue(curPlayer, ChConfig.Def_PDict_ActivityHistoryPoint, | 
|---|
|  |  |  | min(ChConfig.Def_UpperLimit_DWord, historyPoint + addValue)) | 
|---|
|  |  |  | __AddCanCostActivityPoint(curPlayer, addValue, isLVUp) | 
|---|
|  |  |  |  | 
|---|
|  |  |  | SyncDailyActivityInfo(curPlayer) | 
|---|
|  |  |  | EventShell.EventRespons_AddActivityValue(curPlayer) | 
|---|
|  |  |  | GameWorld.DebugLog( | 
|---|
|  |  |  | "增加活跃度,addValue=%s, multiple=%s, addExtraPoint=%s" | 
|---|
|  |  |  | % (addValue, multiple, addExtraPoint), curPlayer.GetPlayerID()) | 
|---|
|  |  |  |  | 
|---|
|  |  |  | GameWorld.DebugLog("增加活跃度,addValue=%s,multiple=%s,addExtraPoint=%s,isLVUp=%s" | 
|---|
|  |  |  | % (addValue, multiple, addExtraPoint, isLVUp), curPlayer.GetPlayerID()) | 
|---|
|  |  |  | return | 
|---|
|  |  |  |  | 
|---|
|  |  |  | def __GetActionAddPer(curPlayer): | 
|---|
|  |  |  | 
|---|
|  |  |  | return multiple, extraPointLimit | 
|---|
|  |  |  | return actRealmPointIpyData.GetMultiple(), actRealmPointIpyData.GetPointLimit() | 
|---|
|  |  |  |  | 
|---|
|  |  |  | def AddCanCostActivityPoint(curPlayer, addValue, isLVUp): | 
|---|
|  |  |  | def __AddCanCostActivityPoint(curPlayer, addValue, isLVUp): | 
|---|
|  |  |  | # 增加可消耗的活跃点 | 
|---|
|  |  |  | curPoint = __GetPDictValue(curPlayer, ChConfig.Def_PDict_ActivityCanCostTotalPoint) | 
|---|
|  |  |  | if isLVUp: | 
|---|
|  |  |  | updPoint = min(ChConfig.Def_UpperLimit_DWord, curPoint + addValue) | 
|---|
|  |  |  | else: | 
|---|
|  |  |  | maxPoint = IpyGameDataPY.GetFuncCfg('ImmortalDomainActivePoint', 1) | 
|---|
|  |  |  | maxPoint = IpyGameDataPY.GetFuncCfg('ActivityPlace', 1) | 
|---|
|  |  |  | if maxPoint and curPoint >= maxPoint: | 
|---|
|  |  |  | GameWorld.DebugLog("可消耗的活跃点超出上限,不增加! curPoint=%s,maxPoint=%s" % (curPoint, maxPoint)) | 
|---|
|  |  |  | return | 
|---|
|  |  |  | 
|---|
|  |  |  | GameWorld.DebugLog("领取活跃度奖励OK!awardStage=%s, index=%s,needActivity=%s,totalActivity=%s,awardRecord=%s" | 
|---|
|  |  |  | % (awardStage, awardIndex, needActivity, totalActivity, updAwardRecord)) | 
|---|
|  |  |  | EventShell.EventRespons_ActivityAward(curPlayer, awardIndex) | 
|---|
|  |  |  | return | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | def GetRealmPointAward(curPlayer): | 
|---|
|  |  |  | #领取活跃修行点 | 
|---|
|  |  |  | realmPoint = __GetPDictValue(curPlayer, ChConfig.Def_PDict_Activity_RealmPoint) | 
|---|
|  |  |  | if not realmPoint: | 
|---|
|  |  |  | return | 
|---|
|  |  |  | PlayerControl.GiveMoney(curPlayer, ShareDefine.TYPE_Price_RealmPoint, realmPoint) | 
|---|
|  |  |  | __SetPDictValue(curPlayer, ChConfig.Def_PDict_Activity_RealmPoint, 0) | 
|---|
|  |  |  | #totalPoint = __GetPDictValue(curPlayer, ChConfig.Def_PDict_Activity_TotalPoint) | 
|---|
|  |  |  | #__SetPDictValue(curPlayer, ChConfig.Def_PDict_Activity_TotalPoint, totalPoint+realmPoint) | 
|---|
|  |  |  | SyncDailyActivityInfo(curPlayer) | 
|---|
|  |  |  | return | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | 
|---|
|  |  |  | if activityNum: | 
|---|
|  |  |  | AddActivityFinishCnt(curPlayer, activityNum, curDayTimes, addCount) | 
|---|
|  |  |  | return | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | ################################## 活跃放置 ############################################## | 
|---|
|  |  |  |  | 
|---|
|  |  |  | #// B0 27 活跃放置启动 #tagCMActivityPlaceStart | 
|---|
|  |  |  | # | 
|---|
|  |  |  | #struct    tagCMActivityPlaceStart | 
|---|
|  |  |  | #{ | 
|---|
|  |  |  | #    tagHead        Head; | 
|---|
|  |  |  | #    BYTE        RewardEndType;    //是否结算探索,后端处理奖励后自动启动下一次放置探索;0-无结算启动,1-倒计时结束结算,2-快速结算; | 
|---|
|  |  |  | #}; | 
|---|
|  |  |  | def OnActivityPlaceStart(index, clientData, tick): | 
|---|
|  |  |  | curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index) | 
|---|
|  |  |  | rewardEndType = clientData.RewardEndType | 
|---|
|  |  |  |  | 
|---|
|  |  |  | rewardCount = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_ActivityPlaceRewardCount) | 
|---|
|  |  |  | maxRewardCount = IpyGameDataPY.GetFuncCfg("ActivityPlace", 4) # 最大累计放置奖励次数 | 
|---|
|  |  |  | if rewardCount >= maxRewardCount: | 
|---|
|  |  |  | GameWorld.ErrLog("活跃放置奖励累计次数已达上限,无法启动") | 
|---|
|  |  |  | return | 
|---|
|  |  |  |  | 
|---|
|  |  |  | placeState = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_ActivityPlaceState) | 
|---|
|  |  |  |  | 
|---|
|  |  |  | endCount, nextStartReduceSeconds = 1, 0 | 
|---|
|  |  |  |  | 
|---|
|  |  |  | # 无结算启动 | 
|---|
|  |  |  | if rewardEndType == 0: | 
|---|
|  |  |  | if placeState: | 
|---|
|  |  |  | GameWorld.DebugLog("已在放置探索中!") | 
|---|
|  |  |  | return | 
|---|
|  |  |  | __DoActivityPlaceStart(curPlayer) | 
|---|
|  |  |  |  | 
|---|
|  |  |  | # 倒计时结束结算 | 
|---|
|  |  |  | elif rewardEndType == 1: | 
|---|
|  |  |  | if not placeState: | 
|---|
|  |  |  | GameWorld.DebugLog("非放置探索中,无法结算!") | 
|---|
|  |  |  | return | 
|---|
|  |  |  | startTime = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_ActivityPlaceStartTime) | 
|---|
|  |  |  | if not startTime: | 
|---|
|  |  |  | return | 
|---|
|  |  |  | needSeconds = IpyGameDataPY.GetFuncCfg("ActivityPlace", 3) # 单次放置奖励持续时间,秒 | 
|---|
|  |  |  | curTime = int(time.time()) | 
|---|
|  |  |  | passTime = curTime - startTime | 
|---|
|  |  |  | if passTime < needSeconds: | 
|---|
|  |  |  | GameWorld.DebugLog("探索时间未到,无法结算! curTime=%s,startTime=%s,passTime=%s < %s" % (curTime, startTime, passTime, needSeconds)) | 
|---|
|  |  |  | return | 
|---|
|  |  |  | endCount = passTime / needSeconds | 
|---|
|  |  |  | nextStartReduceSeconds = passTime % needSeconds | 
|---|
|  |  |  | __DoActivityPlaceRewardEnd(curPlayer, endCount, nextStartReduceSeconds) | 
|---|
|  |  |  |  | 
|---|
|  |  |  | # 快速结算 | 
|---|
|  |  |  | elif rewardEndType == 2: | 
|---|
|  |  |  | if not placeState: | 
|---|
|  |  |  | GameWorld.DebugLog("非放置探索中,无法快速结算!") | 
|---|
|  |  |  | return | 
|---|
|  |  |  |  | 
|---|
|  |  |  | costItemID, costGoldParper = IpyGameDataPY.GetFuncEvalCfg("ActivityPlace", 5) | 
|---|
|  |  |  | costItemCount = 1 | 
|---|
|  |  |  |  | 
|---|
|  |  |  | costItemIndexList, bindCnt, unBindCnt = ItemCommon.GetPackItemBindStateIndexInfo(curPlayer, costItemID, costItemCount) | 
|---|
|  |  |  | lackCnt = costItemCount - bindCnt - unBindCnt | 
|---|
|  |  |  | if lackCnt > 0: | 
|---|
|  |  |  | if not PlayerControl.PayMoney(curPlayer, IPY_GameWorld.TYPE_Price_Gold_Paper, costGoldParper, ChConfig.Def_Cost_ActivityPlace): | 
|---|
|  |  |  | return | 
|---|
|  |  |  | else: | 
|---|
|  |  |  | ItemCommon.DelCostItemByBind(curPlayer, costItemIndexList, bindCnt, unBindCnt, costItemCount, ChConfig.ItemDel_ActivityPlace) | 
|---|
|  |  |  |  | 
|---|
|  |  |  | __DoActivityPlaceRewardEnd(curPlayer, endCount, nextStartReduceSeconds) | 
|---|
|  |  |  |  | 
|---|
|  |  |  | Sync_ActivityPlaceInfo(curPlayer) | 
|---|
|  |  |  | return | 
|---|
|  |  |  |  | 
|---|
|  |  |  | def __DoActivityPlaceRewardEnd(curPlayer, endCount, nextStartReduceSeconds): | 
|---|
|  |  |  | ## 放置活跃奖励结算 | 
|---|
|  |  |  |  | 
|---|
|  |  |  | if not endCount: | 
|---|
|  |  |  | return | 
|---|
|  |  |  | countDataDict = {} | 
|---|
|  |  |  | lvDataDict = {} | 
|---|
|  |  |  | ipyDataMgr = IpyGameDataPY.IPY_Data() | 
|---|
|  |  |  | for index in xrange(ipyDataMgr.GetActivityPlaceRewardCount()): | 
|---|
|  |  |  | ipyData = ipyDataMgr.GetActivityPlaceRewardByIndex(index) | 
|---|
|  |  |  | placeCount = ipyData.GetPlaceCount() | 
|---|
|  |  |  | placeMaxLV = ipyData.GetPlaceMaxLV() | 
|---|
|  |  |  | if placeCount: | 
|---|
|  |  |  | countDataDict[placeCount] = ipyData | 
|---|
|  |  |  | else: | 
|---|
|  |  |  | lvDataDict[placeMaxLV] = ipyData | 
|---|
|  |  |  |  | 
|---|
|  |  |  | lvRewardIpyData = None | 
|---|
|  |  |  | playerLV = curPlayer.GetLV() | 
|---|
|  |  |  | lvList = sorted(lvDataDict.keys()) | 
|---|
|  |  |  | for lv in lvList: | 
|---|
|  |  |  | if playerLV <= lv: | 
|---|
|  |  |  | lvRewardIpyData = lvDataDict[lv] | 
|---|
|  |  |  | break | 
|---|
|  |  |  | if not lvRewardIpyData: | 
|---|
|  |  |  | lvRewardIpyData = lvDataDict[lvList[-1]] | 
|---|
|  |  |  |  | 
|---|
|  |  |  | costPoint = IpyGameDataPY.GetFuncCfg("ActivityPlace", 2) # 单次放置消耗的活跃点数 | 
|---|
|  |  |  | maxRewardCount = IpyGameDataPY.GetFuncCfg("ActivityPlace", 4) # 最大累计放置奖励次数 | 
|---|
|  |  |  | maxAppointCount = max(countDataDict) # 最大定制奖励次数 | 
|---|
|  |  |  | rewardCount = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_ActivityPlaceRewardCount) | 
|---|
|  |  |  |  | 
|---|
|  |  |  | isStop = False | 
|---|
|  |  |  | rewardItemDict = {} | 
|---|
|  |  |  | GameWorld.DebugLog("结算放置活跃奖励: rewardCount=%s,endCount=%s,maxRewardCount=%s,maxAppointCount=%s" % (rewardCount, endCount, maxRewardCount, maxAppointCount)) | 
|---|
|  |  |  | for endIndex in xrange(endCount): | 
|---|
|  |  |  | #GameWorld.DebugLog("endIndex=%s" % endIndex) | 
|---|
|  |  |  |  | 
|---|
|  |  |  | # 超过1次的需要补扣活跃消耗 | 
|---|
|  |  |  | if endCount > 1 and endIndex != 0: | 
|---|
|  |  |  | if not CostActivityPoint(curPlayer, costPoint): | 
|---|
|  |  |  | isStop = True | 
|---|
|  |  |  | GameWorld.DebugLog("    可消耗的活跃不足,无法继续结算奖励!") | 
|---|
|  |  |  | break | 
|---|
|  |  |  |  | 
|---|
|  |  |  | rewardIpyData = None | 
|---|
|  |  |  | rewardTotalCount = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_ActivityPlaceRewardTotalCount) | 
|---|
|  |  |  |  | 
|---|
|  |  |  | # 加奖励次数 | 
|---|
|  |  |  | rewardCount += 1 | 
|---|
|  |  |  | PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_ActivityPlaceRewardCount, rewardCount) | 
|---|
|  |  |  | if rewardTotalCount < maxAppointCount: | 
|---|
|  |  |  | rewardTotalCount += 1 | 
|---|
|  |  |  | PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_ActivityPlaceRewardTotalCount, rewardTotalCount) | 
|---|
|  |  |  | if rewardTotalCount in countDataDict: | 
|---|
|  |  |  | rewardIpyData = countDataDict[rewardTotalCount] | 
|---|
|  |  |  | #GameWorld.DebugLog("    取定制次数奖励") | 
|---|
|  |  |  |  | 
|---|
|  |  |  | if not rewardIpyData: | 
|---|
|  |  |  | rewardIpyData = lvRewardIpyData | 
|---|
|  |  |  | #GameWorld.DebugLog("    取等级奖励: maxLV=%s" % rewardIpyData.GetPlaceMaxLV()) | 
|---|
|  |  |  |  | 
|---|
|  |  |  | # 固定奖励 | 
|---|
|  |  |  | for itemID, itemCount in rewardIpyData.GetFixedItemRewardList(): | 
|---|
|  |  |  | rewardItemDict[itemID] = rewardItemDict.get(itemID, 0) + itemCount | 
|---|
|  |  |  | # 饼图库A | 
|---|
|  |  |  | for _ in xrange(rewardIpyData.GetRandItemCountA()): | 
|---|
|  |  |  | itemID = GameWorld.GetResultByRandomList(rewardIpyData.GetRandItemRewardListA()) | 
|---|
|  |  |  | if itemID: | 
|---|
|  |  |  | rewardItemDict[itemID] = rewardItemDict.get(itemID, 0) + 1 | 
|---|
|  |  |  | # 饼图库B | 
|---|
|  |  |  | for _ in xrange(rewardIpyData.GetRandItemCountB()): | 
|---|
|  |  |  | itemID = GameWorld.GetResultByRandomList(rewardIpyData.GetRandItemRewardListB()) | 
|---|
|  |  |  | if itemID: | 
|---|
|  |  |  | rewardItemDict[itemID] = rewardItemDict.get(itemID, 0) + 1 | 
|---|
|  |  |  |  | 
|---|
|  |  |  | GameWorld.DebugLog("    rewardCount=%s,rewardTotalCount=%s, %s" % (rewardCount, rewardTotalCount, rewardItemDict)) | 
|---|
|  |  |  |  | 
|---|
|  |  |  | if rewardCount >= maxRewardCount: | 
|---|
|  |  |  | isStop = True | 
|---|
|  |  |  | GameWorld.DebugLog("    放置活跃奖励次数已达上限!rewardCount=%s" % rewardCount) | 
|---|
|  |  |  | break | 
|---|
|  |  |  |  | 
|---|
|  |  |  | # 存储奖励 | 
|---|
|  |  |  | rewardItemCount = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_ActivityPlaceRewardItem) | 
|---|
|  |  |  | for i in xrange(rewardItemCount): | 
|---|
|  |  |  | itemID = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_ActivityPlaceRewardItemID % i) | 
|---|
|  |  |  | if itemID not in rewardItemDict: | 
|---|
|  |  |  | continue | 
|---|
|  |  |  | addCount = rewardItemDict.pop(itemID) | 
|---|
|  |  |  | itemCount = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_ActivityPlaceRewardItemCount % i) | 
|---|
|  |  |  | updCount = itemCount + addCount | 
|---|
|  |  |  | PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_ActivityPlaceRewardItemCount % i, updCount) | 
|---|
|  |  |  | #GameWorld.DebugLog("    更新探索奖励: itemID=%s,itemCount=%s,addCount=%s,updCount=%s" % (itemID, itemCount, addCount, updCount)) | 
|---|
|  |  |  |  | 
|---|
|  |  |  | for itemID, itemCount in rewardItemDict.items(): | 
|---|
|  |  |  | PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_ActivityPlaceRewardItemID % rewardItemCount, itemID) | 
|---|
|  |  |  | PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_ActivityPlaceRewardItemCount % rewardItemCount, itemCount) | 
|---|
|  |  |  | rewardItemCount += 1 | 
|---|
|  |  |  | PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_ActivityPlaceRewardItem, rewardItemCount) | 
|---|
|  |  |  | #GameWorld.DebugLog("    新增探索奖励: itemID=%s,itemCount=%s,rewardItemCount=%s" % (itemID, itemCount, rewardItemCount)) | 
|---|
|  |  |  |  | 
|---|
|  |  |  | if isStop: | 
|---|
|  |  |  | GameWorld.DebugLog("    停止探索!") | 
|---|
|  |  |  | PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_ActivityPlaceState, 0) | 
|---|
|  |  |  | else: | 
|---|
|  |  |  | __DoActivityPlaceStart(curPlayer, nextStartReduceSeconds) | 
|---|
|  |  |  |  | 
|---|
|  |  |  | return | 
|---|
|  |  |  |  | 
|---|
|  |  |  | def __DoActivityPlaceStart(curPlayer, reduceSeconds=0): | 
|---|
|  |  |  |  | 
|---|
|  |  |  | costPoint = IpyGameDataPY.GetFuncCfg("ActivityPlace", 2) # 单次放置消耗的活跃点数 | 
|---|
|  |  |  | canUseActivityPoint = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_ActivityCanCostTotalPoint) | 
|---|
|  |  |  | if canUseActivityPoint < costPoint: | 
|---|
|  |  |  | GameWorld.DebugLog("活跃度不足,无法启动放置探索!canUseActivityPoint=%s" % canUseActivityPoint) | 
|---|
|  |  |  | PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_ActivityPlaceState, 0) | 
|---|
|  |  |  | return | 
|---|
|  |  |  | startTime = int(time.time()) - reduceSeconds | 
|---|
|  |  |  | GameWorld.DebugLog("    启动新一轮放置探索!reduceSeconds=%s" % reduceSeconds) | 
|---|
|  |  |  | CostActivityPoint(curPlayer, costPoint) | 
|---|
|  |  |  | PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_ActivityPlaceState, 1) | 
|---|
|  |  |  | PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_ActivityPlaceStartTime, startTime) | 
|---|
|  |  |  | return True | 
|---|
|  |  |  |  | 
|---|
|  |  |  | def GetActivityPlaceReward(curPlayer): | 
|---|
|  |  |  | ## 领取活跃放置奖励 | 
|---|
|  |  |  |  | 
|---|
|  |  |  | rewardItemCount = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_ActivityPlaceRewardItem) | 
|---|
|  |  |  | if not rewardItemCount: | 
|---|
|  |  |  | GameWorld.DebugLog("没有活跃放置奖励,无法领取!") | 
|---|
|  |  |  | return | 
|---|
|  |  |  |  | 
|---|
|  |  |  | isAppointItem = 0 | 
|---|
|  |  |  | rewardItemList = [] | 
|---|
|  |  |  | for i in xrange(rewardItemCount): | 
|---|
|  |  |  | itemID = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_ActivityPlaceRewardItemID % i) | 
|---|
|  |  |  | itemCount = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_ActivityPlaceRewardItemCount % i) | 
|---|
|  |  |  | if not itemID or not itemCount: | 
|---|
|  |  |  | break | 
|---|
|  |  |  | rewardItemList.append([itemID, itemCount, isAppointItem]) | 
|---|
|  |  |  |  | 
|---|
|  |  |  | # 领取后需要重置为0 | 
|---|
|  |  |  | PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_ActivityPlaceRewardItemID % i, 0) | 
|---|
|  |  |  | PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_ActivityPlaceRewardItemCount % i, 0) | 
|---|
|  |  |  | PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_ActivityPlaceRewardItem, 0) | 
|---|
|  |  |  | PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_ActivityPlaceRewardCount, 0) | 
|---|
|  |  |  |  | 
|---|
|  |  |  | GameWorld.DebugLog("领取活跃放置奖励: rewardItemCount=%s,rewardItemList=%s" % (rewardItemCount, rewardItemList)) | 
|---|
|  |  |  | ItemControler.GivePlayerItemOrMail(curPlayer, rewardItemList) | 
|---|
|  |  |  |  | 
|---|
|  |  |  | Sync_ActivityPlaceInfo(curPlayer) | 
|---|
|  |  |  | return | 
|---|
|  |  |  |  | 
|---|
|  |  |  | def Sync_ActivityPlaceInfo(curPlayer): | 
|---|
|  |  |  | ## 同步活跃放置信息 | 
|---|
|  |  |  | rewardItemInfo = [] | 
|---|
|  |  |  | rewardItemCount = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_ActivityPlaceRewardItem) | 
|---|
|  |  |  | for i in xrange(rewardItemCount): | 
|---|
|  |  |  | itemID = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_ActivityPlaceRewardItemID % i) | 
|---|
|  |  |  | itemCount = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_ActivityPlaceRewardItemCount % i) | 
|---|
|  |  |  | rewardItemInfo.append([itemID, itemCount]) | 
|---|
|  |  |  | placeInfo = ChPyNetSendPack.tagMCActivityPlaceInfo() | 
|---|
|  |  |  | placeInfo.PlaceState = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_ActivityPlaceState) | 
|---|
|  |  |  | placeInfo.StartTime = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_ActivityPlaceStartTime) | 
|---|
|  |  |  | placeInfo.RewardCount = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_ActivityPlaceRewardCount) | 
|---|
|  |  |  | placeInfo.RewardInfo = str(rewardItemInfo) | 
|---|
|  |  |  | placeInfo.RewardLen = len(placeInfo.RewardInfo) | 
|---|
|  |  |  | NetPackCommon.SendFakePack(curPlayer, placeInfo) | 
|---|
|  |  |  | return | 
|---|
|  |  |  |  | 
|---|
|  |  |  | ######################################################################################### | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|