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