From 37829aec657fcd93c61e9a652ed53af390c1a2d1 Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期五, 21 六月 2024 11:10:45 +0800
Subject: [PATCH] 10178 【越南】【香港】【主干】挂机奖励(增加直接获得挂机收益物品效果ID266; 修改境界加挂机时长配置key为字符串;)

---
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerGuaji.py |   41 +++++++++++++++++++++++++++--------------
 1 files changed, 27 insertions(+), 14 deletions(-)

diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerGuaji.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerGuaji.py
index 1535efe..366d49c 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerGuaji.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerGuaji.py
@@ -96,7 +96,7 @@
     if awardSeconds <= 0:
         return
     
-    addExp, giveMoneyDict, giveItemDict = CalcGuajiAward(curPlayer, awardSeconds, False)
+    addExp, giveMoneyDict, giveItemDict = CalcGuajiAward(curPlayer, awardSeconds, True)
     
     updAwardSeconds = curAwardSeconds + awardSeconds
     PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_GuajiAwardSeconds, updAwardSeconds)
@@ -153,11 +153,11 @@
     curRealmLV = curPlayer.GetOfficialRank()
     realmAddHours = 0
     realmAddHoursDict = IpyGameDataPY.GetFuncEvalCfg("GuajiTime", 3, {})
-    realmLVList = realmAddHoursDict.keys()
+    realmLVList = [int(k) for k in realmAddHoursDict.keys()]
     realmLVList.sort()
     for realmLV in realmLVList:
         if curRealmLV >= realmLV:
-            realmAddHours = realmAddHoursDict[realmLV]
+            realmAddHours = realmAddHoursDict[str(realmLV)]
         else:
             break
     
@@ -191,7 +191,7 @@
         
     return awardSeconds, exp, moneyDict, itemDict
 
-def CalcGuajiAward(curPlayer, awardSeconds, isQuick):
+def CalcGuajiAward(curPlayer, awardSeconds, useUnsecond):
     ## 计算挂机收益,只计算收益,不做结算,结算逻辑由外层决定
     
     playerID = curPlayer.GetPlayerID()
@@ -199,8 +199,8 @@
     lvIpyData = PlayerControl.GetPlayerLVIpyData(reLV)
     reExp = lvIpyData.GetReExp() if lvIpyData else 0
     worldLV = GameWorld.GetGameWorld().GetGameWorldDictByKey(ShareDefine.Def_Notify_WorldKey_WorldAverageLv)
-    GameWorld.DebugLog("计算挂机收益: awardSeconds=%s,isQuick=%s,reLV=%s,reExp=%s,worldLV=%s" 
-                       % (awardSeconds, isQuick, reLV, reExp, worldLV), playerID)
+    GameWorld.DebugLog("计算挂机收益: awardSeconds=%s,useUnsecond=%s,reLV=%s,reExp=%s,worldLV=%s" 
+                       % (awardSeconds, useUnsecond, reLV, reExp, worldLV), playerID)
     
     # 经验
     expRate = GetGuajiExpRate(curPlayer)
@@ -222,7 +222,7 @@
     perMoneyTimeFromulaDict = IpyGameDataPY.GetFuncEvalCfg("GuajiAward", 3, {}) # 每x秒获得1个货币公式 {货币类型:"x秒公式", ...}
     for moneyType, formula in perMoneyTimeFromulaDict.items():
         moneyAwardSeconds = awardSeconds
-        if not isQuick:
+        if useUnsecond:
             moneyAwardSeconds += curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_GuajiMoneyUnSeconds % moneyType)
         oneMoneyNeedSeconds = int(eval(FormulaControl.GetCompileFormula("GuajiMoney_%s" % moneyType, formula)))
         moneyValue = moneyAwardSeconds / oneMoneyNeedSeconds
@@ -230,7 +230,7 @@
         GameWorld.DebugLog("    每X秒货币: moneyType=%s,oneMoneyNeedSeconds=%s,moneyValue=%s,moneyAwardSeconds=%s" 
                            % (moneyType, oneMoneyNeedSeconds, moneyValue, moneyAwardSeconds), playerID)
         
-        if not isQuick:
+        if useUnsecond:
             unSeconds = moneyAwardSeconds % oneMoneyNeedSeconds
             PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_GuajiMoneyUnSeconds % moneyType, unSeconds)
             GameWorld.DebugLog("        moneyType=%s,unSeconds=%s" % (moneyType, unSeconds), playerID)
@@ -239,13 +239,13 @@
     giveItemSecondsSet = IpyGameDataPY.GetFuncCfg("GuajiAward", 4) # 每x秒获得一次随机物品机会
     lvItemRateDict = IpyGameDataPY.GetFuncEvalCfg("GuajiAward", 5, {})
     itemAwardSeconds = awardSeconds
-    if not isQuick:
+    if useUnsecond:
         itemAwardSeconds += curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_GuajiItemUnSeconds)
             
     itemAwardTimes = itemAwardSeconds / giveItemSecondsSet # 给物品次数
     GameWorld.DebugLog("    给物品次数: %s, itemAwardSeconds=%s,giveItemSecondsSet=%s" % (itemAwardTimes, itemAwardSeconds, giveItemSecondsSet), playerID)
     
-    if not isQuick:
+    if useUnsecond:
         unSeconds = itemAwardSeconds % giveItemSecondsSet
         PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_GuajiItemUnSeconds, unSeconds)
         GameWorld.DebugLog("    给物品未处理秒数=%s" % unSeconds, playerID)
@@ -298,12 +298,12 @@
             itemDict[itemID] = itemDict.get(itemID, 0) + itemCount
             
     # 集字掉落
-    dropWordsCountDict = PlayerActCollectWords.OnGetGuajiAwardItemDict(curPlayer, awardSeconds, isQuick)
+    dropWordsCountDict = PlayerActCollectWords.OnGetGuajiAwardItemDict(curPlayer, awardSeconds, useUnsecond)
     for itemID, dropCount in dropWordsCountDict.items():
         itemDict[itemID] = itemDict.get(itemID, 0) + dropCount
         
     # 垃圾回收
-    giveGarbageItemList = PlayerActGarbageSorting.OnGetGuajiAwardItemDict(curPlayer, awardSeconds, isQuick)
+    giveGarbageItemList = PlayerActGarbageSorting.OnGetGuajiAwardItemDict(curPlayer, awardSeconds, useUnsecond)
     for itemID, dropCount in giveGarbageItemList.items():
         itemDict[itemID] = itemDict.get(itemID, 0) + dropCount
         
@@ -347,7 +347,7 @@
                 return
             
         awardSeconds = IpyGameDataPY.GetFuncCfg("GuajiQuick", 1) * 3600
-        exp, moneyDict, itemDict = CalcGuajiAward(curPlayer, awardSeconds, True)
+        exp, moneyDict, itemDict = CalcGuajiAward(curPlayer, awardSeconds, False)
         
         quickCountToday += 1
         PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_GuajiQuickCount, quickCountToday)
@@ -371,7 +371,20 @@
             PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_GuajiItemCount % num, 0)
         Sync_GuajiAward(curPlayer)
         
-    GameWorld.DebugLog("    挂机收益: awardSeconds=%s,exp=%s,moneyDict=%s,itemDict=%s" % (awardSeconds, exp, moneyDict, itemDict), playerID)
+    __DoGiveGuajiAward(curPlayer, awardSeconds, exp, moneyDict, itemDict)
+    return
+
+def GiveGuajiAward(curPlayer, awardSeconds):
+    ## 直接给挂机收益
+    GameWorld.DebugLog("直接给挂机收益: awardSeconds=%s" % awardSeconds, curPlayer.GetPlayerID())
+    exp, moneyDict, itemDict = CalcGuajiAward(curPlayer, awardSeconds, False)
+    __DoGiveGuajiAward(curPlayer, awardSeconds, exp, moneyDict, itemDict)
+    return
+
+def __DoGiveGuajiAward(curPlayer, awardSeconds, exp, moneyDict, itemDict):
+    ## 实际给挂机收益,仅做发放收益
+    playerID = curPlayer.GetPlayerID()
+    GameWorld.DebugLog("给挂机收益: awardSeconds=%s,exp=%s,moneyDict=%s,itemDict=%s" % (awardSeconds, exp, moneyDict, itemDict), playerID)
     
     playerControl = PlayerControl.PlayerControl(curPlayer)
     playerControl.AddExp(exp, ShareDefine.Def_ViewExpType_Guaji)

--
Gitblit v1.8.0