From e5f998b7c117613cf85631501720d40f665e4169 Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期四, 13 六月 2024 14:23:32 +0800
Subject: [PATCH] 10178 【越南】【香港】【主干】挂机奖励(集字活动、垃圾分类活动支持掉落活动物品; 终身卡免费领取快速挂机收益;)

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

diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerActCollectWords.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerActCollectWords.py
index 7a78c10..1ee80cc 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerActCollectWords.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerActCollectWords.py
@@ -89,6 +89,7 @@
                 PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_CollectWordsExchangeCount % (actNum, exchangeNum), 0)
                 
     PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_CollectWordsID % actNum, actID)
+    PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_CollectWordsGJSeconds % actNum, 0)
     GameWorld.DebugLog("集字活动重置! actNum=%s,cfgID=%s,templateID=%s,actID=%s" % (actNum, cfgID, templateID, actID), playerID)
     
     if state:
@@ -212,6 +213,73 @@
             
     return dropItemCountDict
 
+def OnGetGuajiAwardItemDict(curPlayer, awardSeconds, isQuick):
+    ## 获取挂机收益
+    
+    dropItemCountDict = {}
+    for actInfo in PyGameData.g_operationActionDict.get(ShareDefine.OperationActionName_CollectWords, {}).values():
+        actNum = actInfo.get(ShareDefine.ActKey_ActNum, 0)
+        
+        if not actInfo.get(ShareDefine.ActKey_State):
+            continue
+        
+        cfgID = actInfo.get(ShareDefine.ActKey_CfgID)
+        ipyData = IpyGameDataPY.GetIpyGameData("ActCollectWords", cfgID)
+        if not ipyData:
+            continue
+        
+        dropRateList = ipyData.GetDropItemRateList()
+        if not dropRateList:
+            continue
+        
+        guajiAwardSet = ipyData.GetGuajiAwardSet() # x秒x次
+        if not guajiAwardSet:
+            continue
+        doSeconds, doCount = guajiAwardSet
+        
+        if not isQuick:
+            unSeconds = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_CollectWordsGJSeconds % (actNum))
+            awardSeconds += unSeconds
+            
+            canDoCount = awardSeconds / doSeconds
+            killCount = canDoCount * doCount
+            
+            updUnSeconds = awardSeconds % doSeconds
+            PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_CollectWordsGJSeconds % (actNum), updUnSeconds)
+            GameWorld.DebugLog("    挂机集字活动: actNum=%s,awardSeconds=%s,canDoCount=%s,killCount=%s,unSeconds=%s,updUnSeconds=%s" 
+                               % (actNum, awardSeconds, canDoCount, killCount, unSeconds, updUnSeconds))
+        else:
+            canDoCount = awardSeconds / doSeconds
+            killCount = canDoCount * doCount
+            GameWorld.DebugLog("    挂机集字活动: actNum=%s,awardSeconds=%s,canDoCount=%s,killCount=%s" 
+                               % (actNum, awardSeconds, canDoCount, killCount))
+        if killCount <= 0:
+            continue
+        
+        preRate = 0
+        maxRate = dropRateList[-1][0]
+        for rateInfo in dropRateList:
+            rate, dropItemID = rateInfo
+            curRate = rate - preRate
+            if not curRate:
+                break
+            preRate = rate
+            if not dropItemID:
+                continue
+            totalRate = curRate * killCount # 总概率
+            dropCount = totalRate / maxRate # 可掉落数
+            rateEx = totalRate % maxRate # 剩余概率
+            if GameWorld.CanHappen(rateEx, maxRate):
+                dropCount += 1
+            if not dropCount:
+                continue
+            
+            dropItemCountDict[dropItemID] = dropItemCountDict.get(dropItemID, 0) + dropCount
+            GameWorld.DebugLog("    挂机集字活动掉字: actNum=%s,dropItemID=%s,dropCount=%s,curRate=%s,totalRate=%s" 
+                               % (actNum, dropItemID, dropCount, curRate, totalRate))
+            
+    return dropItemCountDict
+
 #// AA 09 集字活动兑换 #tagCMActCollectWordsExchange
 #
 #struct    tagCMActCollectWordsExchange

--
Gitblit v1.8.0