From cdb5d93a9fd7b32a2ed178feed4eee20ee6502e5 Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期一, 11 二月 2019 15:41:24 +0800
Subject: [PATCH] 5940 【后端】【1.6】跨服PK奖励配置规则优化

---
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerCrossRealmPK.py |   34 ++++++++++++++++++++++++----------
 1 files changed, 24 insertions(+), 10 deletions(-)

diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerCrossRealmPK.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerCrossRealmPK.py
index eae412f..9c53acb 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerCrossRealmPK.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerCrossRealmPK.py
@@ -93,6 +93,16 @@
     return GameWorld.GetGameWorld().GetGameWorldDictByKey(ShareDefine.Def_Notify_WorldKey_CrossDailyActionState \
                                                           % ShareDefine.DailyActionID_CrossReamPK) == ChConfig.Def_Action_Open
 
+def GetCrossPKDanAwardIpyData(seasonID, awardDanLV, isLog):
+    ## 获取跨服段位奖励配置信息
+    crossZoneName = GameWorld.GetCrossZoneName()
+    danLVAwardIpyData = IpyGameDataPY.GetIpyGameDataNotLog("CrossRealmPKDanAward", crossZoneName, seasonID, awardDanLV)
+    if not danLVAwardIpyData:
+        danLVAwardIpyData = IpyGameDataPY.GetIpyGameDataNotLog("CrossRealmPKDanAward", "", seasonID, awardDanLV)
+    if not danLVAwardIpyData and isLog:
+        GameWorld.ErrLog("找不到段位奖励配置: seasonID=%s, awardDanLV=%s" % (seasonID, awardDanLV))
+    return danLVAwardIpyData
+
 def OnCrossRealmPKSeasonChange(value):
     ## 赛区赛季状态变更,规定所有赛区的赛季ID都一样,且赛季ID一定是自增的,所以这里只判断赛季ID变更即可
     
@@ -139,10 +149,10 @@
     
     # 邮件发放上赛季未领取的段位奖励、赛季奖励(排名或段位)
     for awardDanLV in xrange(playerDanLV + 1):
-        danLVIpyData = IpyGameDataPY.GetIpyGameData("CrossRealmPKDan", awardDanLV)
-        if not danLVIpyData:
+        danLVAwardIpyData = GetCrossPKDanAwardIpyData(seasonID, awardDanLV, False)
+        if not danLVAwardIpyData:
             continue
-        awardItemList = danLVIpyData.GetDanLVAwardList()
+        awardItemList = danLVAwardIpyData.GetDanLVAwardList()
         if not awardItemList:
             continue
         if pow(2, awardDanLV) & danLVAwardState:
@@ -452,12 +462,12 @@
         if playerDanLV < awardDanLV:
             GameWorld.DebugLog("    段位未达标,无法领取!", playerID)
             return
-        danLVIpyData = IpyGameDataPY.GetIpyGameData("CrossRealmPKDan", awardDanLV)
-        if not danLVIpyData:
+        danLVAwardIpyData = GetCrossPKDanAwardIpyData(seasonID, awardDanLV, True)
+        if not danLVAwardIpyData:
             return
         awardIndex = awardDanLV
         awardStateDictName = ChConfig.Def_PDict_CrossPK_DanLVAwardState
-        awardItemList = danLVIpyData.GetDanLVAwardList()
+        awardItemList = danLVAwardIpyData.GetDanLVAwardList()
         eventName = "DanLV"
         drDataDict = {"awardDanLV":awardDanLV}
         
@@ -569,7 +579,11 @@
                                                       "order":order, "danLV":danLV, "mapSeasonID":mapSeasonID}
     if order > 0:
         PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_CrossPK_SeasonOrder % seasonID, order)
-        seasonOrderAwardDict = IpyGameDataPY.GetFuncEvalCfg("CrossRealmPKAward", 3, {}) # {"名次":[[物品ID,个数,是否绑定], ...], ...}
+        crossZoneName = GameWorld.GetCrossZoneName()
+        seasonOrderAwardIpyData = IpyGameDataPY.GetIpyGameDataNotLog("CrossRealmPKOrderAward", crossZoneName, seasonID)
+        if not seasonOrderAwardIpyData:
+            seasonOrderAwardIpyData = IpyGameDataPY.GetIpyGameData("CrossRealmPKOrderAward", "", seasonID)
+        seasonOrderAwardDict = {} if not seasonOrderAwardIpyData else seasonOrderAwardIpyData.GetOrderAwardInfo() # {"名次":[[物品ID,个数,是否绑定], ...], ...}
         awardOrderList = seasonOrderAwardDict.keys()
         awardOrderList = [int(k) for k in awardOrderList]
         awardOrderList.sort()
@@ -590,10 +604,10 @@
             
     # 没有奖励的话取段位奖励    
     if not awardItemList:
-        danLVIpyData = IpyGameDataPY.GetIpyGameData("CrossRealmPKDan", danLV)
-        if not danLVIpyData:
+        danLVAwardIpyData = GetCrossPKDanAwardIpyData(seasonID, danLV, False)
+        if not danLVAwardIpyData:
             return
-        awardItemList = danLVIpyData.GetSeasonDanLVAwardList()
+        awardItemList = danLVAwardIpyData.GetSeasonDanLVAwardList()
         mailTypeKey = "CrossServer5"
         notifyKey = "CrossMatching24"
         mailParamList = [seasonID, danLV]

--
Gitblit v1.8.0