From 033a680f4c973fbac074a95152c6d313d4a71091 Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期三, 12 六月 2019 17:12:39 +0800
Subject: [PATCH] 7220 【后端】【2.0】灵器开发1.0版(增加灵器属性表,灵器战力由评分计算,评分由基础属性+灵器属性组成,原翅膀模块改为灵器模块)

---
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerActivity.py |  254 +++++++++++++++++++++++++++++++++++++-------------
 1 files changed, 186 insertions(+), 68 deletions(-)

diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerActivity.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerActivity.py
index 19da755..85a2f01 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerActivity.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerActivity.py
@@ -28,14 +28,13 @@
 import IpyGameDataPY
 import PyGameData
 import GameFuncComm
-
+import EventShell
 
 #关联类型
 (
-RelatedType_1, # 1关联日常活动表
-RelatedType_2, # 2关联副本总表
+RelatedType_1,  # 1关联日常活动表
+RelatedType_2,  # 2关联副本总表
 ) = range(1, 3)
-
 
 
 def OnWeek(curPlayer, onWeekType):
@@ -49,7 +48,7 @@
         # 重置类型不同的不处理
         if ipyData.GetWeekResetType() != onWeekType:
             continue
-        key = ChConfig.Def_PDict_DailyActionWeekTimes%ipyData.GetDailyID()
+        key = ChConfig.Def_PDict_DailyActionWeekTimes % ipyData.GetDailyID()
         __SetPDictValue(curPlayer, key, 0)
     
         actionIDInfo.append(ipyData.GetDailyID())
@@ -69,22 +68,26 @@
     if onEventType == ShareDefine.Def_OnEventTypeEx:
         # 重置完成次数
         for i in xrange(ipyDataMgr.GetDailyQuestCount()):
-            key = ChConfig.Def_PDict_Activity_FinishCnt % (i+1)
-            curPBCnt = __GetPDictValue(curPlayer, key) #单次进度值
+            ipyData = ipyDataMgr.GetDailyQuestByIndex(i)
+            
+            key = ChConfig.Def_PDict_Activity_FinishCnt % ipyData.GetID()
+            curPBCnt = __GetPDictValue(curPlayer, key)  #单次进度值
             if curPBCnt:
                 __SetPDictValue(curPlayer, key, 0)
         #总活跃度重置
         __SetPDictValue(curPlayer, ChConfig.Def_PDict_Activity_TotalPoint, 0)
         # 重置领奖记录
         __SetPDictValue(curPlayer, ChConfig.Def_PDict_ActivityAwardRecord, 0)
+        #重置额外获得修行点数
+        __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)
+#        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:
@@ -94,42 +97,47 @@
     actionIDInfo = []
     for i in xrange(ipyDataMgr.GetDailyActionCount()):
         ipyData = ipyDataMgr.GetDailyActionByIndex(i)
-        dayTimesLimit = GetMaxDayTimes(ipyData)#ipyData.GetDayTimes()
+        dayTimesLimit = GetMaxDayTimes(ipyData)  #ipyData.GetDayTimes()
         if not dayTimesLimit:
             continue
         # 重置类型不同的不处理
         if ipyData.GetDayResetType() != onEventType:
             continue
-        key = ChConfig.Def_PDict_DailyActionDayTimes%ipyData.GetDailyID()
-        __SetPDictValue(curPlayer, key, 0)
+        dailyID = ipyData.GetDailyID()
+        __SetPDictValue(curPlayer, ChConfig.Def_PDict_DailyActionDayTimes % dailyID, 0)
+        __SetPDictValue(curPlayer, ChConfig.Def_PDict_DailyActionDayBuyTimes % dailyID, 0)
+        __SetPDictValue(curPlayer, ChConfig.Def_PDict_DailyActionDayItemTimes % dailyID, 0)
+        
         actionIDInfo.append(ipyData.GetDailyID())
     if actionIDInfo:
         SyncDailyActionInfo(curPlayer, actionIDInfo)
     return
 
+
 def SendDayActionMail(curPlayer):
     ##发送每日活动邮件
-    if curPlayer.GetLV()>= IpyGameDataPY.GetFuncCfg('DailyQuestMailLvLimit'):
+    if curPlayer.GetLV() >= IpyGameDataPY.GetFuncCfg('DailyQuestMailLvLimit'):
         PlayerControl.SendMailByKey('TodayDailyTask', [curPlayer.GetID()], [])
     return
 
 
 #重新计算奖励阶段
 def __CalcAwardStage(curPlayer):
-    realmLV= curPlayer.GetOfficialRank()
+    realmLV = curPlayer.GetOfficialRank()
     ipyData = IpyGameDataPY.IPY_Data().GetDailyLivenessRewardByIndex(0)
     if not ipyData:
         return
     stageLVList = ipyData.GetStageLV()
     curStage = 0
     for i, lv in enumerate(stageLVList):
-        if realmLV <lv:
+        if realmLV < lv:
             break
         if realmLV >= lv:
             curStage = i
     __SetPDictValue(curPlayer, ChConfig.Def_PDict_Activity_AwardStage, curStage)
-    GameWorld.DebugLog('    重新计算活跃奖励阶段 curStage=%s,realmLV=%s'%(curStage, realmLV))
+    GameWorld.DebugLog('    重新计算活跃奖励阶段 curStage=%s,realmLV=%s' % (curStage, realmLV))
     return
+
 
 ## OnLogin
 #  @param curPlayer 玩家实例
@@ -149,6 +157,7 @@
 #  @return
 def __GetPDictValue(curPlayer, key, defaultValue=0):
     return curPlayer.NomalDictGetProperty(key, defaultValue)
+
 
 ## 设置活跃度玩家数据库字典信息值
 #  @param curPlayer 玩家实例
@@ -176,7 +185,6 @@
     return
 
 
-
 ## 摸NPC获得活跃度
 #  @param atkObj
 #  @param curNPC 
@@ -197,6 +205,7 @@
         
     return
 
+
 ## 增加完成活跃度次数
 #  @param curPlayer 玩家实例
 #  @param activityNum 活跃度编号 
@@ -214,46 +223,79 @@
     onceActivityTime = dailyQuestData.GetOnceActivityTime()
     if not onceActivity:
         return
-    if maxActiveValue and finishCnt > maxActiveValue/onceActivity*onceActivityTime:
+    if maxActiveValue and finishCnt > maxActiveValue / onceActivity * onceActivityTime:
         #GameWorld.DebugLog("活跃度可完成次数已达到上限,activityNum=%s" % (activityNum))
         return
     
     key = ChConfig.Def_PDict_Activity_FinishCnt % activityNum
-    curPBCnt = __GetPDictValue(curPlayer, key) #单次进度值
+    curPBCnt = __GetPDictValue(curPlayer, key)  #单次进度值
     
-    addValue = (addCnt+curPBCnt)/onceActivityTime * onceActivity #增加的活跃度
-    addPbCnt = (addCnt+curPBCnt) % onceActivityTime
+    addValue = (addCnt + curPBCnt) / onceActivityTime * onceActivity  #增加的活跃度
+    addPbCnt = (addCnt + curPBCnt) % onceActivityTime
     
     __SetPDictValue(curPlayer, key, addPbCnt)
     
-    #curTotalPoint = __GetPDictValue(curPlayer, ChConfig.Def_PDict_Activity_TotalPoint)
+    #
+    DoAddActivity(curPlayer, addValue, True)
+    return
+
+def DoAddActivity(curPlayer, addValue, isMultiple=False):
+    if not addValue:
+        return
     multiple = 1
-    if addValue:
-        #__SetPDictValue(curPlayer, ChConfig.Def_PDict_Activity_TotalPoint, nuwTotalPoint)
-        multiple = __GetActionAddPer(curPlayer)
-        addValue *= multiple
-        
-        realmPoint = __GetPDictValue(curPlayer, ChConfig.Def_PDict_Activity_RealmPoint)
-        __SetPDictValue(curPlayer, ChConfig.Def_PDict_Activity_RealmPoint, realmPoint+addValue)
-        SyncDailyActivityInfo(curPlayer)
-        
-    GameWorld.DebugLog("增加活跃度任务次数,activityNum=%s,addPbCnt=%s,addValue=%s, multiple=%s"  
-                       % (activityNum, addPbCnt, addValue, multiple), curPlayer.GetPlayerID())
+    addExtraPoint = 0
+    if isMultiple:
+        multiple, extraPointLimit = __GetActionAddPer(curPlayer)
+        curExtraPoint = __GetPDictValue(curPlayer, ChConfig.Def_PDict_Activity_ExtraRealmPoint)
+        addExtraPoint = max(0, min(addValue * (multiple - 1),
+                                   extraPointLimit - curExtraPoint)) if extraPointLimit else addValue * (multiple - 1)
+        __SetPDictValue(curPlayer, ChConfig.Def_PDict_Activity_ExtraRealmPoint, curExtraPoint + addExtraPoint)
+        addValue = addValue + addExtraPoint
+    curTotalPoint = __GetPDictValue(curPlayer, ChConfig.Def_PDict_Activity_TotalPoint)
+    __SetPDictValue(curPlayer, ChConfig.Def_PDict_Activity_TotalPoint, curTotalPoint + addValue)
+    AddCanCostActivityPoint(curPlayer, addValue)
+    historyPoint = __GetPDictValue(curPlayer, ChConfig.Def_PDict_ActivityHistoryPoint)
+    __SetPDictValue(curPlayer, ChConfig.Def_PDict_ActivityHistoryPoint,
+                    min(ChConfig.Def_UpperLimit_DWord, historyPoint + addValue))
+
+    SyncDailyActivityInfo(curPlayer)
+    EventShell.EventRespons_AddActivityValue(curPlayer)
+    GameWorld.DebugLog(
+        "增加活跃度,addValue=%s, multiple=%s, addExtraPoint=%s"
+        % (addValue, multiple, addExtraPoint), curPlayer.GetPlayerID())
+
     return
 
 def __GetActionAddPer(curPlayer):
-    multiple = 1
-    actRealmPointInfo = PyGameData.g_operationActionDict.get(ShareDefine.OperationActionName_RealmPoint, {})# 多倍修行点活动
+    multiple, extraPointLimit = 1, 0  #倍数、额外可获得修行点上限
+    actRealmPointInfo = PyGameData.g_operationActionDict.get(ShareDefine.OperationActionName_RealmPoint, {})  # 多倍修行点活动
     if not actRealmPointInfo:
-        return multiple
+        return multiple, extraPointLimit
     if not actRealmPointInfo.get(ShareDefine.ActKey_State):
-        return multiple
+        return multiple, extraPointLimit
     actRealmPointIpyData = IpyGameDataPY.GetIpyGameData("ActRealmPoint", actRealmPointInfo.get(ShareDefine.ActKey_CfgID, 0))
     if not actRealmPointIpyData:
-        return multiple
+        return multiple, extraPointLimit
     if curPlayer.GetLV() < actRealmPointIpyData.GetLVLimit():
-        return multiple
-    return actRealmPointIpyData.GetMultiple()
+        return multiple, extraPointLimit
+    return actRealmPointIpyData.GetMultiple(), actRealmPointIpyData.GetPointLimit()
+
+def AddCanCostActivityPoint(curPlayer, addValue):
+    # 增加可消耗的活跃点
+    curPoint = __GetPDictValue(curPlayer, ChConfig.Def_PDict_ActivityCanCostTotalPoint)
+    __SetPDictValue(curPlayer, ChConfig.Def_PDict_ActivityCanCostTotalPoint, min(IpyGameDataPY.GetFuncCfg('ImmortalDomainActivePoint'), curPoint + addValue))
+    return
+
+def CostActivityPoint(curPlayer, costPoint, isOnlyCheck=False):
+    # 消耗活跃点
+    curPoint = __GetPDictValue(curPlayer, ChConfig.Def_PDict_ActivityCanCostTotalPoint)
+    if curPoint < costPoint:
+        return
+    if not isOnlyCheck:
+        __SetPDictValue(curPlayer, ChConfig.Def_PDict_ActivityCanCostTotalPoint,
+                        curPoint - costPoint)
+        SyncDailyActivityInfo(curPlayer)
+    return True
 
 ## 同步活跃度信息
 #  @param curPlayer
@@ -265,10 +307,10 @@
     sendPack.CurValue = __GetPDictValue(curPlayer, ChConfig.Def_PDict_Activity_TotalPoint)
     sendPack.StageIndex = __GetPDictValue(curPlayer, ChConfig.Def_PDict_Activity_AwardStage)
     sendPack.AwardRecord = __GetPDictValue(curPlayer, ChConfig.Def_PDict_ActivityAwardRecord)
-    sendPack.RealmPoint = __GetPDictValue(curPlayer, ChConfig.Def_PDict_Activity_RealmPoint)
+    sendPack.RealmPoint = __GetPDictValue(curPlayer, ChConfig.Def_PDict_ActivityCanCostTotalPoint)
+    sendPack.ExtraPoint = __GetPDictValue(curPlayer, ChConfig.Def_PDict_Activity_ExtraRealmPoint)
     NetPackCommon.SendFakePack(curPlayer, sendPack)
     return
-
 
 
 ## 领取活跃度奖励
@@ -304,7 +346,7 @@
     itemIDList = ipyData.GetItemID()
     itemCntList = ipyData.GetItemCount()
     itemIsBindList = ipyData.GetItemBind()
-    if awardStage >=len(itemIDList) or awardStage >= len(itemCntList) or awardStage >= len(itemIsBindList):
+    if awardStage >= len(itemIDList) or awardStage >= len(itemCntList) or awardStage >= len(itemIsBindList):
         return
 
     itemID = itemIDList[awardStage]
@@ -317,7 +359,7 @@
         return
     
     # 给物品
-    ItemControler.GivePlayerItem(curPlayer, itemID, itemCnt, isBind, [IPY_GameWorld.rptItem], True)
+    ItemControler.GivePlayerItem(curPlayer, itemID, itemCnt, 0, [IPY_GameWorld.rptItem])
 
     # 更新已领取成功标记
     updAwardRecord = getAwardRecord | (1 << awardIndex)
@@ -325,10 +367,9 @@
     SyncDailyActivityInfo(curPlayer)
     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):
     #领取活跃修行点
@@ -342,14 +383,16 @@
     SyncDailyActivityInfo(curPlayer)
     return
 
+
 def GetActivityNum(relatedType, relatedID):
     ## 获取日常任务ID(活跃ID)
-    ipyData = IpyGameDataPY.GetIpyGameDataByCondition('DailyQuest', {"RelatedID":relatedID,"RelatedType":relatedType}, False, False)
+    ipyData = IpyGameDataPY.GetIpyGameDataByCondition('DailyQuest', {"RelatedID":relatedID, "RelatedType":relatedType}, False, False)
     if not ipyData:
         return 0
     return ipyData.GetID()
 
 #########################################日常活动###########################################
+
 
 def AddDailyActionFinishCnt(curPlayer, dailyID, addCnt=1):
     ##增加日常活动完成次数
@@ -361,11 +404,13 @@
 #        return
     
     # 由GameServer决定
-    if not GameWorld.GetGameWorld().GetGameWorldDictByKey(ShareDefine.Def_Notify_WorldKey_DailyActionState % dailyID):
-        GameWorld.DebugLog("日常活动未开启!dailyID=%s" % dailyID)
-        return
+    # 目前跨服PK暂不需要判断,因为跨服PK次数结算在本服,玩家可能上次未结算离线,等非匹配期间上线,也需要加上,所以暂不判断
+    if dailyID not in [ShareDefine.DailyActionID_CrossReamPK]:
+        if not GameWorld.GetGameWorld().GetGameWorldDictByKey(ShareDefine.Def_Notify_WorldKey_DailyActionState % dailyID):
+            GameWorld.DebugLog("日常活动未开启!dailyID=%s" % dailyID)
+            return
     
-    dayTimesLimit = GetMaxDayTimes(ipyData)#ipyData.GetDayTimes()
+    dayTimesLimit = GetMaxDayTimes(ipyData)  #ipyData.GetDayTimes()
     weekTimesLimit = ipyData.GetWeekTimes()
     if not dayTimesLimit and not weekTimesLimit:
         return
@@ -379,39 +424,53 @@
         
     updDayTimes = 0
     if dayTimesLimit:
-        key = ChConfig.Def_PDict_DailyActionDayTimes%dailyID
+        key = ChConfig.Def_PDict_DailyActionDayTimes % dailyID
         curDayTimes = curPlayer.NomalDictGetProperty(key)
-        if not unLimitCnt and curDayTimes >= dayTimesLimit:
+        curDayBuyTimes = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_DailyActionDayBuyTimes % dailyID)
+        curDayItemTimes = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_DailyActionDayItemTimes % dailyID)
+        if not unLimitCnt and curDayTimes >= dayTimesLimit + curDayBuyTimes + curDayItemTimes:
             return
-        updDayTimes =  curDayTimes+addCnt if unLimitCnt else min(dayTimesLimit, curDayTimes+addCnt)
+        updDayTimes = curDayTimes + addCnt if unLimitCnt else min(dayTimesLimit + curDayBuyTimes + curDayItemTimes, curDayTimes + addCnt)
+        addCnt = updDayTimes - curDayTimes
         PlayerControl.NomalDictSetProperty(curPlayer, key, updDayTimes)
-        GameWorld.DebugLog('增加日常活动完成次数 dailyID=%s, curDayTimes=%s, updDayTimes=%s'%(dailyID, curDayTimes, updDayTimes))
-    
+        GameWorld.DebugLog('增加日常活动完成次数 dailyID=%s, curDayTimes=%s, updDayTimes=%s' % (dailyID, curDayTimes, updDayTimes))
+    updWeekTimes = 0
     if weekTimesLimit:
-        key = ChConfig.Def_PDict_DailyActionWeekTimes%dailyID
+        key = ChConfig.Def_PDict_DailyActionWeekTimes % dailyID
         curWeekTimes = curPlayer.NomalDictGetProperty(key)
         if not unLimitCnt and curWeekTimes >= weekTimesLimit:
             return
-        updWeekTimes =  curWeekTimes+addCnt if unLimitCnt else min(weekTimesLimit, curWeekTimes+addCnt)
+        updWeekTimes = curWeekTimes + addCnt if unLimitCnt else min(weekTimesLimit, curWeekTimes + addCnt)
+        addCnt = updWeekTimes - curWeekTimes
         PlayerControl.NomalDictSetProperty(curPlayer, key, updWeekTimes)
-        GameWorld.DebugLog('增加日常活动完成次数 dailyID=%s, curWeekTimes=%s, updWeekTimes=%s'%(dailyID, curWeekTimes, updWeekTimes))
+        GameWorld.DebugLog('增加日常活动完成次数 dailyID=%s, curWeekTimes=%s, updWeekTimes=%s' % (dailyID, curWeekTimes, updWeekTimes))
 
     SyncDailyActionInfo(curPlayer, [dailyID])
     
     #对应的日常任务表ID
     updTimes = updDayTimes or updWeekTimes
-    if updTimes and dailyQuestData:
+    if addCnt and updTimes and dailyQuestData:
         AddActivityFinishCnt(curPlayer, activityNum, updTimes, addCnt)
     return True
 
+
 def GetDailyActionFinishCnt(curPlayer, dailyID):
-    key = ChConfig.Def_PDict_DailyActionDayTimes%dailyID
+    key = ChConfig.Def_PDict_DailyActionDayTimes % dailyID
     curDayTimes = __GetPDictValue(curPlayer, key)
     ipyData = IpyGameDataPY.GetIpyGameData('DailyAction', dailyID)
     if not ipyData:
         return 0, 0
-    dayTimesLimit = GetMaxDayTimes(ipyData)#ipyData.GetDayTimes()
+    dayTimesLimit = GetMaxDayTimes(ipyData)  #ipyData.GetDayTimes()
     return curDayTimes, dayTimesLimit
+
+def GetDailyActionrRemainCnt(curPlayer, dailyID):
+    ##获取活动剩余次数
+    curDayTimes = __GetPDictValue(curPlayer, ChConfig.Def_PDict_DailyActionDayTimes % dailyID)
+    curDayBuyTimes = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_DailyActionDayBuyTimes % dailyID)
+    curDayItemTimes = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_DailyActionDayItemTimes % dailyID)
+    ipyData = IpyGameDataPY.GetIpyGameData('DailyAction', dailyID)
+    dayTimesLimit = GetMaxDayTimes(ipyData)
+    return max(0, dayTimesLimit+curDayBuyTimes+curDayItemTimes-curDayTimes)
 
 def GetMaxDayTimes(ipyData):
     dayTimesLimit = ipyData.GetDayTimes()
@@ -419,11 +478,67 @@
         dayTimesLimit += IpyGameDataPY.GetFuncCfg('RuneTowerSweepBuy')
     return dayTimesLimit
 
+
+#// A5 25 购买日常活动次数 #tagCMBuyDailyActionCnt
+#
+#struct    tagCMBuyDailyActionCnt
+#{
+#    tagHead        Head;
+#    DWORD    ActionID;    // ID
+#    BYTE    AddType;    // 0-花仙玉 1-用物品
+#};
+def OnDailyActionBuyCnt(index, clientData, tick):
+    curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index)
+    dailyID = clientData.ActionID
+    addType = clientData.AddType  #0花仙玉 1使用物品
+    ipyData = IpyGameDataPY.GetIpyGameData('DailyAction', dailyID)
+    if not ipyData:
+        return
+    curDayTimes = __GetPDictValue(curPlayer, ChConfig.Def_PDict_DailyActionDayTimes % dailyID)
+    curDayBuyTimes = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_DailyActionDayBuyTimes % dailyID)
+    curDayItemTimes = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_DailyActionDayItemTimes % dailyID)
+    if curDayBuyTimes + curDayItemTimes - curDayTimes >= 0:
+        GameWorld.DebugLog('剩余次数已达上限,不可增加!')
+        return
+    
+    if addType == 0:
+        dayBuyTimesLimit = ipyData.GetDayBuyTimes()
+        buyNeedMoney = ipyData.GetBuyNeedMoney()
+        if not dayBuyTimesLimit or not buyNeedMoney:
+            return
+        if curDayBuyTimes >= dayBuyTimesLimit:
+            GameWorld.DebugLog('今日购买次数已达上限,不可增加!')
+            return
+        if not PlayerControl.PayMoney(curPlayer, IPY_GameWorld.TYPE_Price_Gold_Money, buyNeedMoney, ChConfig.Def_Cost_BuyDailyActionCnt, {'dailyID':dailyID, 'curDayBuyTimes':curDayBuyTimes}):
+            return
+        PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_DailyActionDayBuyTimes % dailyID, curDayBuyTimes + 1)
+        
+    elif addType == 1:
+        dayItemAddTimesLimit = ipyData.GetDayItemAddTimes()
+        dayItemID = ipyData.GetDayItemID()
+        if not dayItemAddTimesLimit or not dayItemID:
+            return
+        if curDayItemTimes >= dayItemAddTimesLimit:
+            GameWorld.DebugLog('今日使用物品增加次数已达上限,不可增加!')
+            return
+        itemPack = curPlayer.GetItemManager().GetPack(IPY_GameWorld.rptItem)
+        enough, indexList, hasBind, lackCnt = ItemCommon.GetItem_FromPack_ByID_ExEx(dayItemID, itemPack, 1)
+        if not enough:
+            return
+        ItemCommon.ReduceItem(curPlayer, itemPack, indexList, 1, False, "DailyActionCnt")
+        PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_DailyActionDayItemTimes % dailyID, curDayItemTimes + 1)
+
+    else:
+        return
+    SyncDailyActionInfo(curPlayer, [dailyID])
+    return
+
+
 ## 同步活跃度信息
 #  @param curPlayer
 #  @param syncNum 默认-1时全部同步
 #  @return None
-def SyncDailyActionInfo(curPlayer, syncNumList= []):
+def SyncDailyActionInfo(curPlayer, syncNumList=[]):
     sendPack = ChPyNetSendPack.tagMCDailyActionCnt()
     sendPack.Clear()
     sendPack.ActionInfo = []
@@ -434,12 +549,15 @@
         activityInfo.Clear()
         activityInfo.ActionID = activityNum
         activityInfo.DayFinishCnt = __GetPDictValue(curPlayer, ChConfig.Def_PDict_DailyActionDayTimes % activityNum)
+        activityInfo.DayBuyTimes = __GetPDictValue(curPlayer, ChConfig.Def_PDict_DailyActionDayBuyTimes % activityNum)
+        activityInfo.DayItemTimes = __GetPDictValue(curPlayer, ChConfig.Def_PDict_DailyActionDayItemTimes % activityNum)
         activityInfo.WeekFinishCnt = __GetPDictValue(curPlayer, ChConfig.Def_PDict_DailyActionWeekTimes % activityNum)
         sendPack.ActionInfo.append(activityInfo)
     
     sendPack.Count = len(sendPack.ActionInfo)
     NetPackCommon.SendFakePack(curPlayer, sendPack)
     return
+
 
 ##################################副本类增加活跃##########################################
 ## 参加副本获得活跃度
@@ -450,4 +568,4 @@
     activityNum = GetActivityNum(RelatedType_2, mapID)
     if activityNum: 
         AddActivityFinishCnt(curPlayer, activityNum, curDayTimes, addCount)
-    return
\ No newline at end of file
+    return

--
Gitblit v1.8.0