From 805e15f8f67755c202f7748d08322fb4a7d1c335 Mon Sep 17 00:00:00 2001
From: xdh <xiefantasy@qq.com>
Date: 星期二, 26 三月 2019 19:23:20 +0800
Subject: [PATCH] 6351  【后端】【2.1】新版骑宠争夺(奖励配置修改)

---
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_AllFamilyBoss.py |   16 ++++++++++++++--
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/IpyGameDataPY.py                                    |   18 ++++++++++++------
 PySysDB/PySysDBPY.h                                                                                                     |    6 ++++--
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_HorsePetBoss.py  |   16 ++++++++++++++--
 4 files changed, 44 insertions(+), 12 deletions(-)

diff --git a/PySysDB/PySysDBPY.h b/PySysDB/PySysDBPY.h
index 9a4322a..88ae5d3 100644
--- a/PySysDB/PySysDBPY.h
+++ b/PySysDB/PySysDBPY.h
@@ -1787,7 +1787,8 @@
 {
 	list		WorldLV;	//世界等级
 	list		Rank;	//排名
-	list		Award;	//奖励 [[独立概率万分率,[物品ID,数量,是否拍品]],..]
+	list		Award1;	//奖励 [[独立概率万分率,[物品ID,数量,是否拍品]],..]
+	dict		Award2;	//饼图奖励{随机次数:[(概率,[物品ID,数量,是否拍品]),..]}
 };
 
 //装备洗练等级上限
@@ -1806,5 +1807,6 @@
 	BYTE		_LineID;	// 线路ID
 	list		WorldLV;	//世界等级
 	list		Rank;	//排名
-	list		Award;	//奖励 [[独立概率万分率,[物品ID,数量,是否拍品]],..]
+	list		Award1;	//奖励 [[独立概率万分率,[物品ID,数量,是否拍品]],..]
+	dict		Award2;	//饼图奖励{随机次数:[(概率,[物品ID,数量,是否拍品]),..]}
 };
\ No newline at end of file
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_AllFamilyBoss.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_AllFamilyBoss.py
index 4a139a2..fb61300 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_AllFamilyBoss.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_AllFamilyBoss.py
@@ -451,6 +451,7 @@
 def __GetFamilyBossAward(rank, worldLV):
     familyAuctionItemList, menberItemList = [], []
     awardRateList = []
+    awardPieRateDict = {}
     ipyMgr = IpyGameDataPY.IPY_Data()
     for i in xrange(ipyMgr.GetFamilyBossAwardCount()):
         ipyData = ipyMgr.GetFamilyBossAwardByIndex(i)
@@ -460,8 +461,9 @@
         rankList = ipyData.GetRank()
         if rank < rankList[0] or rank > rankList[1]:
             continue
-        awardRateList = ipyData.GetAward()
-    if not awardRateList:
+        awardRateList = ipyData.GetAward1()
+        awardPieRateDict = ipyData.GetAward2()
+    if not awardRateList and not awardPieRateDict:
         GameWorld.ErrLog('仙盟Boss奖励表 未配置该奖励 rank=%s,worldLV=%s' % (rank, worldLV))
         return familyAuctionItemList, menberItemList
     for rate, itemInfo in awardRateList:
@@ -474,6 +476,16 @@
             familyAuctionItemList.append(itemInfo)
         else:
             menberItemList.append(itemInfo)
+    for doCnt, awardPieRateList in awardPieRateDict.items():
+        for _ in xrange(doCnt):
+            resultItem = GameWorld.GetResultByRandomList(awardPieRateList)
+            if len(resultItem) != 3:
+                GameWorld.ErrLog('仙盟Boss奖励表配置错误 itemInfo=%s' % resultItem)
+                continue
+            if resultItem[2]:
+                familyAuctionItemList.append(resultItem)
+            else:
+                menberItemList.append(resultItem)
     
     return familyAuctionItemList, menberItemList
 
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_HorsePetBoss.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_HorsePetBoss.py
index e3f4c5d..b009ff5 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_HorsePetBoss.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_HorsePetBoss.py
@@ -410,6 +410,7 @@
     if not ipyDataList:
         return auctionItemList, itemList
     awardRateList = []
+    awardPieRateDict = {}
     for ipyData in ipyDataList:
         worldLVList = ipyData.GetWorldLV()
         if worldLV < worldLVList[0] or worldLV > worldLVList[1]:
@@ -417,8 +418,9 @@
         rankList = ipyData.GetRank()
         if rank < rankList[0] or rank > rankList[1]:
             continue
-        awardRateList = ipyData.GetAward()
-    if not awardRateList:
+        awardRateList = ipyData.GetAward1()
+        awardPieRateDict = ipyData.GetAward2()
+    if not awardRateList and not awardPieRateDict:
         GameWorld.ErrLog('骑宠Boss奖励表 未配置该奖励 lineID=%s, rank=%s,worldLV=%s' % (lineID, rank, worldLV))
         return auctionItemList, itemList
     for rate, itemInfo in awardRateList:
@@ -432,6 +434,16 @@
         else:
             itemList.append(itemInfo)
     
+    for doCnt, awardPieRateList in awardPieRateDict.items():
+        for _ in xrange(doCnt):
+            resultItem = GameWorld.GetResultByRandomList(awardPieRateList)
+            if len(resultItem) != 3:
+                GameWorld.ErrLog('骑宠Boss奖励表配置错误 itemInfo=%s' % resultItem)
+                continue
+            if resultItem[2]:
+                auctionItemList.append(resultItem)
+            else:
+                itemList.append(resultItem)
     return auctionItemList, itemList
 
 
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/IpyGameDataPY.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/IpyGameDataPY.py
index 9f2c741..f4b77e0 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/IpyGameDataPY.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/IpyGameDataPY.py
@@ -1388,7 +1388,8 @@
                 "FamilyBossAward":(
                         ("list", "WorldLV", 0),
                         ("list", "Rank", 0),
-                        ("list", "Award", 0),
+                        ("list", "Award1", 0),
+                        ("dict", "Award2", 0),
                         ),
 
                 "ItemWashMax":(
@@ -1401,7 +1402,8 @@
                         ("BYTE", "LineID", 1),
                         ("list", "WorldLV", 0),
                         ("list", "Rank", 0),
-                        ("list", "Award", 0),
+                        ("list", "Award1", 0),
+                        ("dict", "Award2", 0),
                         ),
                 }
 
@@ -4255,12 +4257,14 @@
     def __init__(self):
         self.WorldLV = []
         self.Rank = []
-        self.Award = []
+        self.Award1 = []
+        self.Award2 = {}
         return
         
     def GetWorldLV(self): return self.WorldLV # 世界等级
     def GetRank(self): return self.Rank # 排名
-    def GetAward(self): return self.Award # 奖励 [[独立概率万分率,[物品ID,数量,是否拍品]],..]
+    def GetAward1(self): return self.Award1 # 奖励 [[独立概率万分率,[物品ID,数量,是否拍品]],..]
+    def GetAward2(self): return self.Award2 # 饼图奖励{随机次数:[(概率,[物品ID,数量,是否拍品]),..]}
 
 # 装备洗练等级上限
 class IPY_ItemWashMax():
@@ -4282,13 +4286,15 @@
         self.LineID = 0
         self.WorldLV = []
         self.Rank = []
-        self.Award = []
+        self.Award1 = []
+        self.Award2 = {}
         return
         
     def GetLineID(self): return self.LineID #  线路ID
     def GetWorldLV(self): return self.WorldLV # 世界等级
     def GetRank(self): return self.Rank # 排名
-    def GetAward(self): return self.Award # 奖励 [[独立概率万分率,[物品ID,数量,是否拍品]],..]
+    def GetAward1(self): return self.Award1 # 奖励 [[独立概率万分率,[物品ID,数量,是否拍品]],..]
+    def GetAward2(self): return self.Award2 # 饼图奖励{随机次数:[(概率,[物品ID,数量,是否拍品]),..]}
 
 
 def Log(msg, playerID=0, par=0):

--
Gitblit v1.8.0