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

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

diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerActGarbageSorting.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerActGarbageSorting.py
index 29cca2d..2056fe4 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerActGarbageSorting.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerActGarbageSorting.py
@@ -76,6 +76,7 @@
         PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_GarbageTaskValue % (actNum, taskID), 0)
         PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_GarbageTaskFinishCount % (actNum, taskID), 0)
     PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_GarbageEnvironmentValue % actNum, 0)
+    PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_GarbageGJSeconds % actNum, 0)
     
     # 清除垃圾背包物品、重置环保值
     ItemControler.ClearPack(curPlayer, ShareDefine.rptGarbage)
@@ -196,6 +197,68 @@
     Sync_GarbageTaskInfo(curPlayer, actNum, taskID)
     return giveItemList
 
+def OnGetGuajiAwardItemDict(curPlayer, awardSeconds, isQuick):
+    ## 获取挂机收益
+        
+    dropItemCountDict = {}
+    guajiAwardSet = IpyGameDataPY.GetFuncEvalCfg("GarbageSorting", 3) # 挂机收益设置 x秒|x次执行数值4
+    if not guajiAwardSet:
+        return dropItemCountDict
+    doSeconds, doCount = guajiAwardSet
+    
+    dropRateList = IpyGameDataPY.GetFuncEvalCfg("GarbageSorting", 4) # 挂机收益概率饼图 [[概率, [物品ID,个数,是否拍品]], ...]
+    
+    for actInfo in PyGameData.g_operationActionDict.get(ShareDefine.OperationActionName_GarbageSorting, {}).values():
+        actNum = actInfo.get(ShareDefine.ActKey_ActNum, 0)
+        
+        if not actInfo.get(ShareDefine.ActKey_State):
+            continue
+        
+        if not isQuick:
+            unSeconds = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_GarbageGJSeconds % (actNum))
+            awardSeconds += unSeconds
+            
+            canDoCount = awardSeconds / doSeconds
+            killCount = canDoCount * doCount
+            
+            updUnSeconds = awardSeconds % doSeconds
+            PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_GarbageGJSeconds % (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, dropItemInfo = rateInfo
+            curRate = rate - preRate
+            if not curRate:
+                break
+            preRate = rate
+            if not dropItemInfo:
+                continue
+            totalRate = curRate * killCount # 总概率
+            dropCount = totalRate / maxRate # 可掉落数
+            rateEx = totalRate % maxRate # 剩余概率
+            if GameWorld.CanHappen(rateEx, maxRate):
+                dropCount += 1
+            if not dropCount:
+                continue
+            dropItemID, itemCount, _ = dropItemInfo
+            dropItemCount = itemCount * dropCount
+            
+            dropItemCountDict[dropItemID] = dropItemCountDict.get(dropItemID, 0) + dropItemCount
+            GameWorld.DebugLog("    挂机垃圾分类产出: actNum=%s,dropItemID=%s,dropCount=%s,dropItemCount=%s,curRate=%s,totalRate=%s" 
+                               % (actNum, dropItemID, dropCount, dropItemCount, curRate, totalRate))
+            
+    return dropItemCountDict
+
 #// AA 14 垃圾分类活动分类垃圾 #tagCMActGarbageSorting
 #
 #struct    tagCMActGarbageSorting

--
Gitblit v1.8.0