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