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