10234 【越南】【香港】【主干】【砍树】聚魂-寻宝修改(满幸运支持饼图产出;)
3个文件已修改
37 ■■■■ 已修改文件
PySysDB/PySysDBPY.h 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/IpyGameDataPY.py 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerTreasure.py 32 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
PySysDB/PySysDBPY.h
@@ -1668,6 +1668,7 @@
    list        GridItemRateList1;    //常规产出格子编号饼图 [[概率, 格子编号], ...]
    list        GridItemRateList2;    //每满x次保底产出格子编号饼图 [[概率, 格子编号], ...]
    dict        GridItemRateList3;    //第x次必出产出格子编号饼图 {次数:[[概率, 格子编号], ...], ...}
    list        LuckyItemRateList;    //满幸运产出概率饼图 [[概率, 格子编号], ...]
};
//寻宝物品库
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/IpyGameDataPY.py
@@ -1330,6 +1330,7 @@
                        ("list", "GridItemRateList1", 0),
                        ("list", "GridItemRateList2", 0),
                        ("dict", "GridItemRateList3", 0),
                        ("list", "LuckyItemRateList", 0),
                        ),
                "TreasureItemLib":(
@@ -4287,7 +4288,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():
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