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/PlayerActGarbageSorting.py |    4 +-
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerGuaji.py             |   41 +++++++++++++-------
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/ChItem.py                    |    1 
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/UseItem/Item_GuajiAward.py   |   27 +++++++++++++
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py                       |    1 
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerActCollectWords.py   |    4 +-
 6 files changed, 60 insertions(+), 18 deletions(-)

diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py
index cc1d717..4d3c340 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py
@@ -506,6 +506,7 @@
 Def_Effect_VIPLVCard = 256    #VIP等级直升卡 直接升到VIPx级,只加经验,享受VIP特权    效果值A: vip等级    效果值B: 领取是否默认直接使用
 Def_Effect_AddArenaBattleCount = 257    #增加竞技场挑战次数,A值为增加次数
 Def_Effect_ItemGiveMoney = 264    #通用给货币道具,A值数量,B值货币类型
+Def_Effect_GuajiAward = 266    #直接给挂机收益,A值分钟
 Def_Effect_GubaoPiece = 270     #古宝碎片效果ID, A值-古宝ID
 #----以下未使用或代码依然存在的---
 Def_Effect_ItemGiveGongXun = 1920        #使用道具给予功勋
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/ChItem.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/ChItem.py
index 7dcd1a6..462b2b0 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/ChItem.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/ChItem.py
@@ -721,6 +721,7 @@
                             ChConfig.Def_Effect_AddDienstgrad:"Item_AddDienstgrad", #道具获得称号
                             ChConfig.Def_Effect_ItemAddLV:"Item_AddLV", #升级道具
                             ChConfig.Def_Effect_TJGAddTime:"Item_TJGAddTime", #增加脱机挂时间
+                            ChConfig.Def_Effect_GuajiAward:"Item_GuajiAward", #直接给挂机收益
                             ChConfig.Def_Effect_CleanGuilt:"Item_CleanGuilt", # 洗红名
                             ChConfig.Def_Effect_PrizeCoin:"Item_PrizeCoin", # 奖励充值点券
                             ChConfig.Def_Effect_AddVIPExp:"Item_AddVIPExp", # 增加VIP经验
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/UseItem/Item_GuajiAward.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/UseItem/Item_GuajiAward.py
new file mode 100644
index 0000000..0826f7e
--- /dev/null
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/UseItem/Item_GuajiAward.py
@@ -0,0 +1,27 @@
+#!/usr/bin/python
+# -*- coding: GBK -*-
+#-------------------------------------------------------------------------------
+#
+##@package UseItem.Item_GuajiAward
+#
+# @todo:直接给挂机收益
+# @author hxp
+# @date 2024-06-21
+# @version 1.0
+#
+# 详细描述: 直接给挂机收益
+#
+#-------------------------------------------------------------------------------
+#"""Version = 2024-06-21 11:00"""
+#-------------------------------------------------------------------------------
+
+import PlayerGuaji
+import ItemCommon
+
+def BatchUseItem(curPlayer, curRoleItem, tick, useCnt, exData):
+    awardSeconds = curRoleItem.GetEffectByIndex(0).GetEffectValue(0) * useCnt * 60
+    if awardSeconds <= 0:
+        return
+    PlayerGuaji.GiveGuajiAward(curPlayer, awardSeconds)
+    ItemCommon.DelItem(curPlayer, curRoleItem, useCnt, True, "GuajiAward")
+    return True, useCnt
\ No newline at end of file
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 1ee80cc..4f614bd 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerActCollectWords.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerActCollectWords.py
@@ -213,7 +213,7 @@
             
     return dropItemCountDict
 
-def OnGetGuajiAwardItemDict(curPlayer, awardSeconds, isQuick):
+def OnGetGuajiAwardItemDict(curPlayer, awardSeconds, useUnsecond):
     ## 获取挂机收益
     
     dropItemCountDict = {}
@@ -237,7 +237,7 @@
             continue
         doSeconds, doCount = guajiAwardSet
         
-        if not isQuick:
+        if useUnsecond:
             unSeconds = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_CollectWordsGJSeconds % (actNum))
             awardSeconds += unSeconds
             
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 2056fe4..8173340 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerActGarbageSorting.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerActGarbageSorting.py
@@ -197,7 +197,7 @@
     Sync_GarbageTaskInfo(curPlayer, actNum, taskID)
     return giveItemList
 
-def OnGetGuajiAwardItemDict(curPlayer, awardSeconds, isQuick):
+def OnGetGuajiAwardItemDict(curPlayer, awardSeconds, useUnsecond):
     ## 获取挂机收益
         
     dropItemCountDict = {}
@@ -214,7 +214,7 @@
         if not actInfo.get(ShareDefine.ActKey_State):
             continue
         
-        if not isQuick:
+        if useUnsecond:
             unSeconds = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_GarbageGJSeconds % (actNum))
             awardSeconds += unSeconds
             
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