From ded5e00b09f1cc82924ca5cfa4b7d50c6a703fa3 Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期三, 31 七月 2024 11:50:28 +0800
Subject: [PATCH] 10234 【越南】【香港】【主干】【砍树】聚魂-寻宝修改(满幸运支持饼图产出;)

---
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/IpyGameDataPY.py         |    4 +++-
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerTreasure.py |   32 +++++++++++++++++++++++---------
 PySysDB/PySysDBPY.h                                                                          |    1 +
 3 files changed, 27 insertions(+), 10 deletions(-)

diff --git a/PySysDB/PySysDBPY.h b/PySysDB/PySysDBPY.h
index 4809067..aab2d96 100644
--- a/PySysDB/PySysDBPY.h
+++ b/PySysDB/PySysDBPY.h
@@ -1722,6 +1722,7 @@
 	list		GridItemRateList1;	//常规产出格子编号饼图 [[概率, 格子编号], ...]
 	list		GridItemRateList2;	//每满x次保底产出格子编号饼图 [[概率, 格子编号], ...]
 	dict		GridItemRateList3;	//第x次必出产出格子编号饼图 {次数:[[概率, 格子编号], ...], ...}
+	list		LuckyItemRateList;	//满幸运产出概率饼图 [[概率, 格子编号], ...]
 };
 
 //寻宝物品库
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/IpyGameDataPY.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/IpyGameDataPY.py
index b3eed5b..8d47e73 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/IpyGameDataPY.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/IpyGameDataPY.py
@@ -1384,6 +1384,7 @@
                         ("list", "GridItemRateList1", 0),
                         ("list", "GridItemRateList2", 0),
                         ("dict", "GridItemRateList3", 0),
+                        ("list", "LuckyItemRateList", 0),
                         ),
 
                 "TreasureItemLib":(
@@ -4401,7 +4402,8 @@
     def GetGridItemRateListFree(self): return self.attrTuple[5] # 免费产出格子编号饼图 [[概率, 格子编号], ...] list
     def GetGridItemRateList1(self): return self.attrTuple[6] # 常规产出格子编号饼图 [[概率, 格子编号], ...] list
     def GetGridItemRateList2(self): return self.attrTuple[7] # 每满x次保底产出格子编号饼图 [[概率, 格子编号], ...] list
-    def GetGridItemRateList3(self): return self.attrTuple[8] # 第x次必出产出格子编号饼图 {次数:[[概率, 格子编号], ...], ...} dict
+    def GetGridItemRateList3(self): return self.attrTuple[8] # 第x次必出产出格子编号饼图 {次数:[[概率, 格子编号], ...], ...} dict
+    def GetLuckyItemRateList(self): return self.attrTuple[9] # 满幸运产出概率饼图 [[概率, 格子编号], ...] list
 
 # 寻宝物品库
 class IPY_TreasureItemLib():
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerTreasure.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerTreasure.py
index 5e6e783..06b10f3 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerTreasure.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerTreasure.py
@@ -165,20 +165,28 @@
         GameWorld.ErrLog("找不到该等级对应寻宝库配置!treasureType=%s,curLV=%s" % (treasureType, curPlayer.GetLV()), playerID)
         return
     
-    luckyGridNum = setIpyData.GetLuckyGridNum() # 幸运物品概率公式
+    luckyItemRateList = ipyData.GetLuckyItemRateList()
+    luckyGridNumList = []
+    if luckyItemRateList:
+        for _, gridNum in luckyItemRateList:
+            luckyGridNumList.append(gridNum)
+    elif setIpyData.GetLuckyGridNum():
+        luckyGridNumList = [setIpyData.GetLuckyGridNum()]
+    GameWorld.DebugLog("luckyGridNumList=%s, %s" % (luckyGridNumList, luckyItemRateList), playerID)
     luckFormula = setIpyData.GetLuckyRateFormat() # 幸运物品概率公式
     addLuck = setIpyData.GetOnceLucky() * treasureCount # 增加幸运值
     maxLuck = setIpyData.GetFullLucky() # 满幸运值
     curLuck = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_TreasureLuck % (treasureType)) # 当前幸运值
     updLuck = curLuck + addLuck
     
-    commItemRateList = GetUpdLuckyItemRateList(ipyData, luckyGridNum, curLuck, luckFormula, costType) # 常规产出物品格子饼图,幸运物品概率已变更
+    commItemRateList = GetUpdLuckyItemRateList(ipyData, luckyGridNumList, curLuck, luckFormula, costType) # 常规产出物品格子饼图,幸运物品概率已变更
     
     curTreasureCount = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_TreasureCount % (treasureType)) # 当前已寻宝次数
     updTreasureCount = curTreasureCount + treasureCount
     GameWorld.DebugLog("已经寻宝次数=%s,当前幸运=%s,commItemRateList=%s" % (curTreasureCount, curLuck, commItemRateList), playerID)
     
-    goodGridNumList = [luckyGridNum] # 好物品格子编号 (幸运物品 + 必出 + 保底)
+    goodGridNumList = [] # 好物品格子编号 (幸运物品 + 必出 + 保底)
+    goodGridNumList += luckyGridNumList
     beSureCountDict = ipyData.GetGridItemRateList3() # 第x次必出产出格子编号饼图
     for gridRateList in beSureCountDict.values():
         for gridRateInfo in gridRateList:
@@ -196,7 +204,11 @@
     getGridResult = []
     
     # 1.满幸运必出
-    if updLuck >= maxLuck:
+    if updLuck >= maxLuck and luckyGridNumList:
+        if luckyItemRateList:
+            luckyGridNum = GameWorld.GetResultByRandomList(luckyItemRateList)
+        else:
+            luckyGridNum = luckyGridNumList[0]
         getGridResult.append(luckyGridNum)
         GameWorld.DebugLog("满幸运必出幸运物品: luckyGridNum=%s" % luckyGridNum, playerID)
         
@@ -245,7 +257,7 @@
             doCount -= 1
             gridNum = GameWorld.GetResultByRandomList(commItemRateList)
             
-            if gridNum == luckyGridNum and gridNum in getGridResult:
+            if gridNum in luckyGridNumList and gridNum in getGridResult:
                 GameWorld.DebugLog("幸运物品已经出过,不再重复产出!")
                 continue
             
@@ -356,8 +368,10 @@
         
     # 加数据
     PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_TreasureCount % (treasureType), updTreasureCount)
-    if luckyGridNum in getGridResult:
-        updLuck = 0
+    for luckyGridNum in luckyGridNumList:
+        if luckyGridNum in getGridResult:
+            updLuck = 0
+            break
     PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_TreasureLuck % (treasureType), updLuck)
     
     addScoreType = setIpyData.GetAwardMoneyType() # 额外奖励货币类型
@@ -415,7 +429,7 @@
     Sync_TreasureInfo(curPlayer, [treasureType])
     return
 
-def GetUpdLuckyItemRateList(ipyData, luckyGridNum, curLuck, luckFormula, costType):
+def GetUpdLuckyItemRateList(ipyData, luckyGridNumList, curLuck, luckFormula, costType):
     # 获取幸运物品提升概率后的饼图
     srcPieList = ipyData.GetGridItemRateListFree() if costType == 1 else ipyData.GetGridItemRateList1()
     if not srcPieList:
@@ -426,7 +440,7 @@
         rate, gridNum = rateInfo
         baseRate = rate if i == 0 else (rate - srcPieList[i - 1][0]) # 原概率
         
-        if gridNum == luckyGridNum:
+        if gridNum in luckyGridNumList:
             newRate = eval(FormulaControl.GetCompileFormula("TreasureLuckyRate", luckFormula))
         else:
             newRate = baseRate

--
Gitblit v1.8.0