From 44b31d0f8b35c890021e4317281e15ba2d45b593 Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期二, 11 二月 2020 00:37:12 +0800
Subject: [PATCH] 8375 【主干】【后端】秘境探索修改(修改为定时实时给经验)

---
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerActivity.py |   68 +++++++++++++++++++++++++++++----
 1 files changed, 59 insertions(+), 9 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 839e3e2..826a031 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerActivity.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerActivity.py
@@ -89,6 +89,17 @@
         __CalcAwardStage(curPlayer)
         
         SyncDailyActivityInfo(curPlayer)
+        
+        # 记录昨日活跃吸纳经验
+        todayExp = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_ActivityPlaceTodayExp)
+        todayExpPoint = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_ActivityPlaceTodayExpPoint)
+        PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_ActivityPlaceTodayExp, 0)
+        PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_ActivityPlaceTodayExpPoint, 0)
+        PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_ActivityPlaceYestorDayExp, todayExp)
+        PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_ActivityPlaceYestorDayExpPoint, todayExpPoint)
+        #活跃放置
+        Sync_ActivityPlaceInfo(curPlayer)
+        
     else:
         SendDayActionMail(curPlayer)
     
@@ -279,7 +290,7 @@
     curTotalPoint = __GetPDictValue(curPlayer, ChConfig.Def_PDict_Activity_TotalPoint)
     __SetPDictValue(curPlayer, ChConfig.Def_PDict_Activity_TotalPoint, curTotalPoint + addValue)
     __AddCanCostActivityPoint(curPlayer, addValue, isLVUp)
-    
+    PlayerControl.NotifyCode(curPlayer, "GetActivity", [addValue])
     SyncDailyActivityInfo(curPlayer)
     EventShell.EventRespons_AddActivityValue(curPlayer)
     GameWorld.DebugLog("增加活跃度,addValue=%s,multiple=%s,addExtraPoint=%s,isLVUp=%s" 
@@ -629,6 +640,17 @@
 
 ################################## 活跃放置 ##############################################
 
+#// B0 29 活跃放置明细查询 #tagCMActivityPlaceQuery
+#
+#struct    tagCMActivityPlaceQuery
+#{
+#    tagHead        Head;
+#};
+def OnActivityPlaceQuery(index, clientData, tick):
+    curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index)
+    Sync_ActivityPlaceInfo(curPlayer)
+    return
+
 #// B0 27 活跃放置启动 #tagCMActivityPlaceStart
 #
 #struct    tagCMActivityPlaceStart
@@ -667,6 +689,7 @@
     if not remainCount:
         curTime = int(time.time())
         PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_ActivityPlaceStartTime, curTime)
+        PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_ActivityPlaceExpCount, 0)
         GameWorld.DebugLog("    没有剩余次数,更新启动时间: %s" % curTime)
         
     Sync_ActivityPlaceInfo(curPlayer)
@@ -680,6 +703,8 @@
 #    BYTE        FinishCount;    //完成次数
 #};
 def OnActivityPlaceQuickFinish(index, clientData, tick):
+    ## 经验改为实时获取,暂屏蔽快速完成
+    return
     curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index)
     finishCount = clientData.FinishCount
     remainCount = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_ActivityPlaceRemainCount)
@@ -721,26 +746,46 @@
     if not startTime:
         startTime = curTime
         PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_ActivityPlaceStartTime, curTime)
+        PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_ActivityPlaceExpCount, 0)
         
     needSeconds = IpyGameDataPY.GetFuncCfg("ActivityPlace", 3) # 单次放置奖励持续时间,秒
+    expSeconds = IpyGameDataPY.GetFuncCfg("ActivityPlaceExp", 1) # 活跃放置获得经验多少秒一次
     passTime = curTime - startTime
+    
+    expCount = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_ActivityPlaceExpCount)
+    canGetExpCount = passTime / expSeconds
+    maxExpCount = needSeconds / expSeconds
+    addExpCount = min(maxExpCount, canGetExpCount - expCount)
+    if addExpCount > 0:
+        PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_ActivityPlaceExpCount, expCount + addExpCount)
+        lv = curPlayer.GetLV()
+        reExp = PlayerControl.GetPlayerReExp(curPlayer)
+        addExp = eval(IpyGameDataPY.GetFuncCompileCfg("ActivityPlaceExp", 2)) * addExpCount # 获得经验公式,参数 lv, reExp
+        playerControl = PlayerControl.PlayerControl(curPlayer)
+        addExp = playerControl.AddExp(addExp, ShareDefine.Def_ViewExpType_Activity)
+        
+        todayExp = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_ActivityPlaceTodayExp)
+        todayExpPoint = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_ActivityPlaceTodayExpPoint)
+        todayTotalExp = todayExpPoint * ChConfig.Def_PerPointValue + todayExp + addExp
+        PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_ActivityPlaceTodayExp, todayTotalExp % ChConfig.Def_PerPointValue)
+        PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_ActivityPlaceTodayExpPoint, todayTotalExp / ChConfig.Def_PerPointValue)
+        
+        #GameWorld.DebugLog("passTime=%s,canGetExpCount=%s,expCount=%s,addExpCount=%s,addExp=%s,todayTotalExp=%s" 
+        #                   % (passTime, canGetExpCount, expCount, addExpCount, addExp, todayTotalExp))
+        
     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)
+    __DoActivityPlaceRewardEnd(curPlayer, endCount)
     return
 
-def __DoActivityPlaceRewardEnd(curPlayer, endCount, nextStartReduceSeconds=0, isQuick=False):
+def __DoActivityPlaceRewardEnd(curPlayer, endCount, isQuick=False):
     ## 放置活跃奖励结算
     
     remainCount = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_ActivityPlaceRemainCount)
     endCount = min(endCount, remainCount)
     if endCount <= 0:
-        return
-    
-    if PlayerTJG.GetIsTJG(curPlayer):
         return
     
     countDataDict = {}
@@ -809,9 +854,10 @@
     PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_ActivityPlaceRewardTotalCount, rewardTotalCount)
     
     if remainCount > 0:
-        nextStartTime = int(time.time()) - nextStartReduceSeconds
+        nextStartTime = int(time.time())
         PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_ActivityPlaceStartTime, nextStartTime)
-        GameWorld.DebugLog("    还有剩余次数,更新启动时间: %s, nextStartReduceSeconds=%s" % (nextStartTime, nextStartReduceSeconds))
+        PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_ActivityPlaceExpCount, 0)
+        GameWorld.DebugLog("    还有剩余次数,更新启动时间: %s" % (nextStartTime))
         
     # 存储奖励
     rewardItemCount = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_ActivityPlaceRewardItem)
@@ -881,6 +927,10 @@
     placeInfo.RewardCount = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_ActivityPlaceRewardCount)
     placeInfo.RewardInfo = str(rewardItemInfo)
     placeInfo.RewardLen = len(placeInfo.RewardInfo)
+    placeInfo.TodayExp = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_ActivityPlaceTodayExp)
+    placeInfo.TodayExpPoint = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_ActivityPlaceTodayExpPoint)
+    placeInfo.YestordayExp = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_ActivityPlaceYestorDayExp)
+    placeInfo.YestordayExpPoint = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_ActivityPlaceYestorDayExpPoint)
     NetPackCommon.SendFakePack(curPlayer, placeInfo)
     return
 

--
Gitblit v1.8.0