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/Player/PlayerTreasure.py | 32 +++++++++++++++++++++++--------- 1 files changed, 23 insertions(+), 9 deletions(-) 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