fix:3028 【后端】免费寻宝增加多少次必出的保底库配置,和消耗仙玉的独立分开
| | |
| | | dict GridItemInfo; //格子编号对应物品信息 {"编号":[物品ID, 个数], ...}
|
| | | list JobItemList; //职业物品组列表 [[职业1物品, 职业2物品, ...], ...]
|
| | | list GridItemRateListFree; //免费产出格子编号饼图 [[概率, 格子编号], ...]
|
| | | list FreeGridItemRateList2; //免费每满x次保底产出格子编号饼图 [[概率, 格子编号], ...]
|
| | | dict FreeGridItemRateList3; //免费第x次必出产出格子编号饼图 {次数:[[概率, 格子编号], ...], ...}
|
| | | list GridItemRateList1; //常规产出格子编号饼图 [[概率, 格子编号], ...]
|
| | | list GridItemRateList2; //每满x次保底产出格子编号饼图 [[概率, 格子编号], ...]
|
| | | dict GridItemRateList3; //第x次必出产出格子编号饼图 {次数:[[概率, 格子编号], ...], ...}
|
| | |
| | | Def_PDict_TreasureStartCalcFreeCntTime = "TreasureFreeCntTime_%s" # 寻宝 - 开始计算免费次数CD时间, 参数(寻宝编号)
|
| | |
|
| | | Def_PDict_TreasureFreeTime = "TreasureFreeTime_%s_%s" # 寻宝开始免费计时time值, 参数(寻宝类型, 寻宝索引)
|
| | | Def_PDict_TreasureCount = "TreasureCount_%s" # 寻宝次数, 参数(寻宝类型)
|
| | | Def_PDict_TreasureCount = "TreasureCount_%s_%s" # 寻宝次数, 参数(寻宝类型,是否免费)
|
| | | Def_PDict_TreasureLuck = "TreasureLuck_%s" # 寻宝当前幸运值, 参数(寻宝类型)
|
| | |
|
| | | Def_Player_Dict_LastAutoOpenPackTick = "LastAutoOpenPackTick219_%s" #上一次自动购买的tick<背包类型>
|
| | |
| | |
|
| | | treasureTypeList = PlayerTreasure.GetTreasureTypeList()
|
| | | for treasureType in treasureTypeList:
|
| | | PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_TreasureCount % (treasureType), 0)
|
| | | PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_TreasureCount % (treasureType, 0), 0)
|
| | | PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_TreasureCount % (treasureType, 1), 0)
|
| | | PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_TreasureLuck % (treasureType), 0)
|
| | |
|
| | | if not isFree:
|
| | |
| | | ("dict", "GridItemInfo", 0),
|
| | | ("list", "JobItemList", 0),
|
| | | ("list", "GridItemRateListFree", 0),
|
| | | ("list", "FreeGridItemRateList2", 0),
|
| | | ("dict", "FreeGridItemRateList3", 0),
|
| | | ("list", "GridItemRateList1", 0),
|
| | | ("list", "GridItemRateList2", 0),
|
| | | ("dict", "GridItemRateList3", 0),
|
| | |
| | | self.GridItemInfo = {}
|
| | | self.JobItemList = []
|
| | | self.GridItemRateListFree = []
|
| | | self.FreeGridItemRateList2 = []
|
| | | self.FreeGridItemRateList3 = {}
|
| | | self.GridItemRateList1 = []
|
| | | self.GridItemRateList2 = []
|
| | | self.GridItemRateList3 = {}
|
| | |
| | | def GetGridItemInfo(self): return self.GridItemInfo # 格子编号对应物品信息 {"编号":[物品ID, 个数], ...}
|
| | | def GetJobItemList(self): return self.JobItemList # 职业物品组列表 [[职业1物品, 职业2物品, ...], ...]
|
| | | def GetGridItemRateListFree(self): return self.GridItemRateListFree # 免费产出格子编号饼图 [[概率, 格子编号], ...]
|
| | | def GetFreeGridItemRateList2(self): return self.FreeGridItemRateList2 # 免费每满x次保底产出格子编号饼图 [[概率, 格子编号], ...]
|
| | | def GetFreeGridItemRateList3(self): return self.FreeGridItemRateList3 # 免费第x次必出产出格子编号饼图 {次数:[[概率, 格子编号], ...], ...}
|
| | | def GetGridItemRateList1(self): return self.GridItemRateList1 # 常规产出格子编号饼图 [[概率, 格子编号], ...]
|
| | | def GetGridItemRateList2(self): return self.GridItemRateList2 # 每满x次保底产出格子编号饼图 [[概率, 格子编号], ...]
|
| | | def GetGridItemRateList3(self): return self.GridItemRateList3 # 第x次必出产出格子编号饼图 {次数:[[概率, 格子编号], ...], ...}
|
| | |
| | | treasureType = clientData.TreasureType
|
| | | treasureIndex = clientData.TreasureIndex
|
| | | costType = clientData.CostType
|
| | | |
| | | isFreeType = 1 if costType == 1 else 0
|
| | | GameWorld.DebugLog("玩家寻宝: treasureType=%s,treasureIndex=%s,costType=%s,playerLV=%s"
|
| | | % (treasureType, treasureIndex, costType, playerLV), playerID)
|
| | |
|
| | |
| | |
|
| | | commItemRateList = GetUpdLuckyItemRateList(ipyData, curLuck, luckFormula, costType) # 常规产出物品格子饼图,幸运物品概率已变更
|
| | |
|
| | | curTreasureCount = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_TreasureCount % (treasureType)) # 当前已寻宝次数
|
| | | curTreasureCount = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_TreasureCount % (treasureType, isFreeType)) # 当前已寻宝次数
|
| | | updTreasureCount = curTreasureCount + treasureCount
|
| | | beSureCountDict = ipyData.GetGridItemRateList3() # 第x次必出产出格子编号饼图
|
| | | beSureCountDict = ipyData.GetFreeGridItemRateList3() if isFreeType else ipyData.GetGridItemRateList3() # 第x次必出产出格子编号饼图
|
| | | GameWorld.DebugLog("已经寻宝次数=%s,当前幸运=%s,commItemRateList=%s" % (curTreasureCount, curLuck, commItemRateList), playerID)
|
| | |
|
| | | addScore = IpyGameDataPY.GetFuncEvalCfg(TreasureSet1, 5)[treasureIndex] # 增加积分
|
| | | ensureCount = IpyGameDataPY.GetFuncCfg("TreasureSet", 1) # 每多少次触发保底产出库
|
| | | |
| | | ensureCount = IpyGameDataPY.GetFuncEvalCfg("TreasureSet", 1, {})[isFreeType] # 每多少次触发保底产出库
|
| | | ensureRateList = ipyData.GetFreeGridItemRateList2() if isFreeType else ipyData.GetGridItemRateList2()
|
| | | goodGridNumList = [ipyData.GetLuckyGridNum()] # 好物品格子编号 (幸运物品 + 必出 + 保底)
|
| | | for gridRateList in ipyData.GetGridItemRateList3().values():
|
| | | for gridRateList in beSureCountDict.values():
|
| | | for gridRateInfo in gridRateList:
|
| | | goodGridNumList.append(gridRateInfo[1])
|
| | | for gridRateInfo in ipyData.GetGridItemRateList2():
|
| | | for gridRateInfo in ensureRateList:
|
| | | goodGridNumList.append(gridRateInfo[1])
|
| | | GameWorld.DebugLog("goodGridNumList=%s" % goodGridNumList, playerID)
|
| | |
|
| | |
| | | gridNum = GameWorld.GetResultByRandomList(gridNumRateList)
|
| | | GameWorld.DebugLog("到达次数必出,updTreasureCount=%s,gridNumRateList=%s,gridNum=%s" % (updTreasureCount, gridNumRateList, gridNum), playerID)
|
| | | elif updTreasureCount % ensureCount == 0:
|
| | | gridNumRateList = ipyData.GetGridItemRateList2()
|
| | | gridNumRateList = ensureRateList
|
| | | gridNum = GameWorld.GetResultByRandomList(gridNumRateList)
|
| | | GameWorld.DebugLog("满次数保底出,updTreasureCount=%s,gridNumRateList=%s,gridNum=%s" % (updTreasureCount, gridNumRateList, gridNum), playerID)
|
| | | else:
|
| | |
| | | # 3. 次数保底
|
| | | ensureGridNumList = []
|
| | | if updTreasureCount / ensureCount > curTreasureCount / ensureCount:
|
| | | for gridInfo in ipyData.GetGridItemRateList2():
|
| | | for gridInfo in ensureRateList:
|
| | | ensureGridNumList.append(gridInfo[1])
|
| | | gridNum = GameWorld.GetResultByRandomList(ipyData.GetGridItemRateList2())
|
| | | gridNum = GameWorld.GetResultByRandomList(ensureRateList)
|
| | | getGridResult.append(gridNum)
|
| | | GameWorld.DebugLog("满次数保底出,updTreasureCount=%s,gridNumRateList=%s,gridNum=%s" % (updTreasureCount, ipyData.GetGridItemRateList2(), gridNum), playerID)
|
| | | GameWorld.DebugLog("满次数保底出,updTreasureCount=%s,gridNumRateList=%s,gridNum=%s" % (updTreasureCount, ensureRateList, gridNum), playerID)
|
| | |
|
| | | # 4. 常规产出
|
| | | doCount = 200
|
| | |
| | | GameWorld.DebugLog("扣除仙玉,costGold=%s" % costGold, playerID)
|
| | |
|
| | | # 加数据
|
| | | PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_TreasureCount % (treasureType), updTreasureCount)
|
| | | PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_TreasureCount % (treasureType, isFreeType), updTreasureCount)
|
| | | if ipyData.GetLuckyGridNum() in getGridResult:
|
| | | updLuck = 0
|
| | | PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_TreasureLuck % (treasureType), updLuck)
|