From 1f8acf4823f6d7c2e19f0db8bd11d3b07d168a5c Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期三, 10 七月 2019 16:21:52 +0800
Subject: [PATCH] 7954 【主干】【后端】跨服PVP匹配机器人规则优化

---
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerCostRebate.py |   39 ++++++++++++++++++++++++++++++---------
 1 files changed, 30 insertions(+), 9 deletions(-)

diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerCostRebate.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerCostRebate.py
index b5ee561..5044233 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerCostRebate.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerCostRebate.py
@@ -73,7 +73,8 @@
     if costRebateID == playerCostRebateID:
         #GameWorld.DebugLog("消费返利活动ID不变,不处理!", curPlayer.GetPlayerID())
         return
-    
+    actWorldLV = actCostRebateInfo.get(ShareDefine.ActKey_WorldLV, 0)
+    playerWorldLV = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_CostRebateWorldLV)
     templateID = GetTemplateID(actCostRebateInfo.get(ShareDefine.ActKey_CfgID, 0), actCostRebateInfo.get(ShareDefine.ActKey_DayIndex, 0))
     playerTemplateID = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_CostRebateTemplateID)
     
@@ -81,10 +82,11 @@
                        % (costRebateID, playerCostRebateID, state, templateID, playerTemplateID), playerID)
     
     # 未领取的奖励邮件发放
-    __SendCostRebateMail(curPlayer, playerTemplateID)
+    __SendCostRebateMail(curPlayer, playerTemplateID, playerWorldLV)
     
     PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_CostRebateID, costRebateID)
     PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_CostRebateTemplateID, templateID)
+    PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_CostRebateWorldLV, actWorldLV)
     PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_CostRebateGold, 0)
     PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_CostRebateAwardRecord, 0)
     
@@ -92,7 +94,7 @@
     Sync_CostRebateInfo(curPlayer)
     return True
 
-def __SendCostRebateMail(curPlayer, playerTemplateID):
+def __SendCostRebateMail(curPlayer, playerTemplateID, playerWorldLV):
     # 未领取的奖励邮件发放
     
     if not playerTemplateID:
@@ -105,7 +107,7 @@
     ipyDataList = IpyGameDataPY.GetIpyGameDataList("CostRebateTemplate", playerTemplateID)
     if not ipyDataList:
         return
-    
+    job = curPlayer.GetJob()
     playerID = curPlayer.GetPlayerID()
     batchPlayerIDList, batchAddItemList, batchParamList = [], [], []
     awardRecord = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_CostRebateAwardRecord)
@@ -120,7 +122,7 @@
             continue
         awardRecord |= pow(2, awardIndex) 
         
-        awardItemList = ipyData.GetAwardItemList()
+        awardItemList = __GetItemList(ipyData.GetAwardItemList(), job, playerWorldLV)
         batchPlayerIDList.append([playerID])
         batchAddItemList.append(awardItemList)
         batchParamList.append([needCostGold])
@@ -130,6 +132,23 @@
         PlayerControl.SendMailBatch("ConsumptionRebateMail", batchPlayerIDList, batchAddItemList, batchParamList)
         
     return
+
+
+def __GetItemList(itemDict, job, worldLV):
+    #{世界等级范围:[(物品ID,个数,是否绑定), ...]},若物品ID要区分职业则配{世界等级范围:[({职业:物品ID,..},个数,是否绑定), ...]}
+    itemList = []
+    itemInfoList = GameWorld.GetDictValueByRangeKey(itemDict, worldLV, [])
+    for itemInfo in itemInfoList:
+        if type(itemInfo[0]) == dict:
+            itemID = itemInfo[0].get(job)
+            if not itemID:
+                GameWorld.ErrLog('累计充值奖励未配置该职业itemDict=%s,job=%s'%(itemDict, job))
+                continue
+        else:
+            itemID = itemInfo[0]
+        itemList.append([itemID, itemInfo[1], itemInfo[2]])
+    return itemList
+
 
 def AddCostRebateGold(curPlayer, costType, costGold, infoDict):
     if costGold <= 0:
@@ -196,7 +215,8 @@
         return
     
     needCostGold = awardIpyData.GetNeedCostGold()
-    awardItemList = awardIpyData.GetAwardItemList()
+    actWorldLV = actCostRebateInfo.get(ShareDefine.ActKey_WorldLV, 0)
+    awardItemList = __GetItemList(awardIpyData.GetAwardItemList(), curPlayer.GetJob(), actWorldLV)
     
     curCostGold = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_CostRebateGold)
     if curCostGold < needCostGold:
@@ -218,7 +238,7 @@
         PlayerControl.WorldNotify(0, notifyKey, [curPlayer.GetPlayerName(), needCostGold])
         
     for itemID, itemCount, isBind in awardItemList:
-        ItemControler.GivePlayerItem(curPlayer, itemID, itemCount, isBind, [IPY_GameWorld.rptItem])
+        ItemControler.GivePlayerItem(curPlayer, itemID, itemCount, 0, [IPY_GameWorld.rptItem])
         
     addDataDict = {"TemplateID":templateID, "NeedCostGold":needCostGold, "AwardIndex":awardIndex,
                    "ItemList":str(awardItemList)}
@@ -250,7 +270,8 @@
     templateIDList = ipyData.GetTemplateIDList()
     if not templateIDList:
         return
-    
+    job = curPlayer.GetJob()
+    actWorldLV = actCostRebateInfo.get(ShareDefine.ActKey_WorldLV, 0)
     openServerDay = GameWorld.GetGameWorld().GetGameWorldDictByKey(ShareDefine.Def_Notify_WorldKey_ServerDay) + 1
     actInfo = ChPyNetSendPack.tagMCCostRebateInfo()
     actInfo.StartDate = GameWorld.GetOperationActionDateStr(ipyData.GetStartDate(), openServerDay)
@@ -270,7 +291,7 @@
             awardInfo.AwardIndex = ipyData.GetAwardIndex()
             awardInfo.NeedGold = ipyData.GetNeedCostGold()
             awardInfo.AwardItem = []
-            for itemID, itemCount, isBind in ipyData.GetAwardItemList():
+            for itemID, itemCount, isBind in __GetItemList(ipyData.GetAwardItemList(), job, actWorldLV):
                 awardItem = ChPyNetSendPack.tagMCCostRebateAwardItem()
                 awardItem.ItemID = itemID
                 awardItem.ItemCount = itemCount

--
Gitblit v1.8.0