From ff48a24b8da42998da61b4ff4000e758d8d1b041 Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期三, 27 一月 2021 11:18:52 +0800
Subject: [PATCH] 8710 【开发】【主干】【BT2】根据世界等级配置奖励(成长必买改为通知对应不同世界等级的物品信息);

---
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerCoin.py |   56 ++++++++++++++++++++++++++++++--------------------------
 1 files changed, 30 insertions(+), 26 deletions(-)

diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerCoin.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerCoin.py
index 1104ce6..8680623 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerCoin.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerCoin.py
@@ -333,32 +333,7 @@
     PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_TodayCTGCount % recordID, todayBuyCount + 1)
     addDRDict.update({"todayBuyCountUpd":(todayBuyCount + 1)})
     
-    gainItemList = ipyData.GetGainItemList()
-    actWorldLVGainItemInfo = ipyData.GetActWorldLVGainItemInfo()
-    giveItemList = []
-    # 活动世界等级对应物品信息,如果有对应活动支持 且 该配置有配,则默认走该配置,否则使用常规的默认物品配置
-    payTypeActNameDict = {PayType_GrowupBuy:ShareDefine.OperationActionName_GrowupBuy,
-                          
-                          # ... 有新增的活动需要支持,则在此新增配置上即可,后面取物品的逻辑都是一样的
-                          }
-    if actWorldLVGainItemInfo and ipyData.GetPayType() in payTypeActNameDict:
-        actName = payTypeActNameDict[ipyData.GetPayType()]
-        actInfo = PyGameData.g_operationActionDict.get(actName, {})
-        if not actInfo or not actInfo.get(ShareDefine.ActKey_State):
-            DataRecordPack.DR_CTGError(curPlayer, "Can not find act info actName=%s" % actName, addDRDict)
-            return
-        actWorldLV = actInfo.get(ShareDefine.ActKey_WorldLV, 0)
-        actWorldLVList = [int(strWorldLV) for strWorldLV in actWorldLVGainItemInfo.keys()]
-        actWorldLVList.sort() # 使用 int 的值排,否则可能引起排序错误
-        for worldLV in actWorldLVList:
-            if actWorldLV <= worldLV:
-                giveItemList = actWorldLVGainItemInfo[str(worldLV)]
-                break
-        if not giveItemList:
-            giveItemList = actWorldLVGainItemInfo[str(actWorldLVList[-1])] # 没有匹配到的话默认取最后一个等级配置
-    else:
-        giveItemList = gainItemList
-        
+    giveItemList = GetCTGGiveItemList(ipyData)
     addGold = ipyData.GetGainGold() # 获得仙玉数
     gainGoldPrize = ipyData.GetGainGoldPrize() # 赠送仙玉数,首次充值赠送仙玉时,此仙玉不给
     firstGoldPrize = ipyData.GetFirstGoldPrize() # 首次充值赠送的仙玉
@@ -371,6 +346,35 @@
     Sync_CoinToGoldCountInfo(curPlayer, [recordID])
     return addGold, prizeGold, giveItemList, ipyData
 
+def GetCTGGiveItemList(ipyData):
+    ## 获取充值ID对应给物品列表
+    if not ipyData:
+        return []
+    
+    gainItemList = ipyData.GetGainItemList()
+    actWorldLVGainItemInfo = ipyData.GetActWorldLVGainItemInfo()
+    giveItemList = []
+    # 活动世界等级对应物品信息,如果有对应活动支持 且 该配置有配,则默认走该配置,否则使用常规的默认物品配置
+    payTypeActNameDict = {PayType_GrowupBuy:ShareDefine.OperationActionName_GrowupBuy,
+                          
+                          # ... 有新增的活动需要支持,则在此新增配置上即可,后面取物品的逻辑都是一样的
+                          }
+    if actWorldLVGainItemInfo and ipyData.GetPayType() in payTypeActNameDict:
+        actName = payTypeActNameDict[ipyData.GetPayType()]
+        actInfo = PyGameData.g_operationActionDict.get(actName, {}) # 注:相关状态在前置逻辑已经判断过,这里不再判断
+        actWorldLV = actInfo.get(ShareDefine.ActKey_WorldLV, 0)
+        actWorldLVList = [int(strWorldLV) for strWorldLV in actWorldLVGainItemInfo.keys()]
+        actWorldLVList.sort() # 使用 int 的值排,否则可能引起排序错误
+        for worldLV in actWorldLVList:
+            if actWorldLV <= worldLV:
+                giveItemList = actWorldLVGainItemInfo[str(worldLV)]
+                break
+        if not giveItemList:
+            giveItemList = actWorldLVGainItemInfo[str(actWorldLVList[-1])] # 没有匹配到的话默认取最后一个等级配置
+    else:
+        giveItemList = gainItemList
+    return giveItemList
+
 def DoCTGLogic(curPlayer, coinType, orderCoin, addGold, prizeGold, giveItemList, isAddBourseMoney, eventName, addDRDict, ctgIpyData=None, coinExp=0):
     notifyMark = ctgIpyData.GetNotifyMark() if ctgIpyData else ""
     goldBefore = curPlayer.GetGold()

--
Gitblit v1.8.0