| | |
| | | checkCostResult = __CheckCostInfo(curPlayer, classLV, equipPlace, curPartStar, costEquipIndexList, costEquipIDList, itemPack, autoBuy)
|
| | | if not checkCostResult:
|
| | | return
|
| | | curRate, delEquipIndexList, delItemInfoList, lackItemCostMoney = checkCostResult
|
| | | curRate, delEquipGUIDDict, delItemInfoDict, lackItemCostMoney = checkCostResult
|
| | |
|
| | | if autoBuy:
|
| | | isAutoBuyPreview = autoBuy == 2
|
| | | # 概率未满 且 自动购买, 则需要执行拍卖行购买装备
|
| | | if curRate < 100:
|
| | | playerGoldPaper = curPlayer.GetGoldPaper()
|
| | | queryData = [classLV, equipPlace, curPartStar, equipPackIndex, isAutoBuyPreview, curRate, delEquipIndexList, delItemInfoList, lackItemCostMoney, playerGoldPaper]
|
| | | queryData = [classLV, equipPlace, curPartStar, equipPackIndex, isAutoBuyPreview, curRate, delEquipGUIDDict, delItemInfoDict, lackItemCostMoney, playerGoldPaper]
|
| | | PlayerAuctionHouse.QueryGameServer_AuctionHouse(playerID, "EquipStarAutoBuy", queryData)
|
| | | return
|
| | |
|
| | |
| | |
|
| | | # 升星处理
|
| | | buyEquipCostMoney = 0
|
| | | __DoEquipStarUp(curPlayer, classLV, equipPlace, curPartStar, equipPackIndex, curRate, delEquipIndexList, delItemInfoList, lackItemCostMoney, buyEquipCostMoney)
|
| | | __DoEquipStarUp(curPlayer, classLV, equipPlace, curPartStar, equipPackIndex, curRate, delEquipGUIDDict, delItemInfoDict, lackItemCostMoney, buyEquipCostMoney)
|
| | | return
|
| | |
|
| | | def GameServer_EquipStarAutoBuy(curPlayer, result):
|
| | | ## GameServer自动购买拍品结果返回
|
| | | classLV, equipPlace, curPartStar, equipPackIndex, curRate, delEquipIndexList, delItemInfoList, lackItemCostMoney, buyEquipCostMoney = result
|
| | | __DoEquipStarUp(curPlayer, classLV, equipPlace, curPartStar, equipPackIndex, curRate, delEquipIndexList, delItemInfoList, lackItemCostMoney, buyEquipCostMoney)
|
| | | classLV, equipPlace, curPartStar, equipPackIndex, curRate, delEquipGUIDDict, delItemInfoDict, lackItemCostMoney, buyEquipCostMoney = result
|
| | | __DoEquipStarUp(curPlayer, classLV, equipPlace, curPartStar, equipPackIndex, curRate, delEquipGUIDDict, delItemInfoDict, lackItemCostMoney, buyEquipCostMoney)
|
| | | return
|
| | |
|
| | | def __DoEquipStarUp(curPlayer, classLV, equipPlace, curPartStar, equipPackIndex, curRate, delEquipIndexList, delItemInfoList, lackItemCostMoney, buyEquipCostMoney):
|
| | | def __DoEquipStarUp(curPlayer, classLV, equipPlace, curPartStar, equipPackIndex, curRate, delEquipGUIDDict, delItemInfoDict, lackItemCostMoney, buyEquipCostMoney):
|
| | | ## 执行装备部位升星
|
| | |
|
| | | playerID = curPlayer.GetPlayerID()
|
| | |
| | | % (curRate, isOK, lackItemCostMoney, buyEquipCostMoney), playerID)
|
| | |
|
| | | itemPack = curPlayer.GetItemManager().GetPack(IPY_GameWorld.rptItem)
|
| | | #扣材料物品
|
| | | for indexList, delCount in delItemInfoList:
|
| | | #扣材料物品,因为可能还需要先到GameServer,再回MapServer扣除物品,故中间过程物品位置可能发生变化,所以这里不能直接通过index去扣物品,需要重新精确定位
|
| | | for delItemID, delCount in delItemInfoDict.items():
|
| | | if not delCount:
|
| | | continue
|
| | | hasEnough, indexList, findItemIsBind, lackCnt = ItemCommon.GetItem_FromPack_ByID_ExEx(delItemID, itemPack, delCount)
|
| | | GameWorld.DebugLog(" 扣除道具: delItemID=%s,delCount=%s,indexList=%s" % (delItemID, delCount, indexList))
|
| | | ItemCommon.ReduceItem(curPlayer, itemPack, indexList, delCount, True, ChConfig.ItemDel_EquipStarUp)
|
| | | ItemCommon.ReduceItem(curPlayer, itemPack, delEquipIndexList, len(delEquipIndexList), True, ChConfig.ItemDel_EquipStarUp)
|
| | | |
| | | delItemByGUIDDict = {}
|
| | | for index, itemGUID in delEquipGUIDDict.items():
|
| | | delCnt = 1
|
| | | curEquip = itemPack.GetAt(index)
|
| | | if not ItemCommon.CheckItemCanUse(curEquip) or curEquip.GetGUID() != itemGUID:
|
| | | delItemByGUIDDict[itemGUID] = delCnt
|
| | | continue
|
| | | GameWorld.DebugLog(" 扣除装备: index=%s, %s" % (index, itemGUID))
|
| | | ItemCommon.DelItem(curPlayer, curEquip, delCnt, recordName=ChConfig.ItemDel_EquipStarUp)
|
| | | if delItemByGUIDDict:
|
| | | GameWorld.DebugLog(" 扣除装备位置错误,通过GUID补扣! %s" % delItemByGUIDDict)
|
| | | ItemCommon.DelItemByGUID(curPlayer, itemPack, delItemByGUIDDict, recordName=ChConfig.ItemDel_EquipStarUp)
|
| | | |
| | | drDict = {"PlayerID":playerID, "AccID":curPlayer.GetAccID(), "classLV":classLV, "equipPlace":equipPlace, "IsSuccess":isOK,
|
| | | "curRate":curRate, "nextStar":nextStar, 'totalEquipStars':totalEquipStars,
|
| | | "lackItemCostMoney":lackItemCostMoney, "buyEquipCostMoney":buyEquipCostMoney}
|
| | |
| | | costEquipPlaceList = ipyData.GetCostEquipPlace()
|
| | | costEquipColorList = ipyData.GetCostEquipColor()
|
| | | isJobLimit = ipyData.GetIsJobLimit()
|
| | | delEquipIndexList = []
|
| | | delEquipGUIDDict = {}
|
| | | totalEquipStars = ChEquip.GetTotalEquipStars(curPlayer)
|
| | |
|
| | | if not costEquipCnt:
|
| | |
| | | addRate = max(minRate, min(addRate, maxRate))
|
| | | curRate += addRate
|
| | | GameWorld.DebugLog(" 本件装备增加概率=%s,当前总概率=%s" % (addRate, curRate))
|
| | | delEquipIndexList.append(index)
|
| | | delEquipGUIDDict[index] = costEquip.GetGUID()
|
| | |
|
| | | delItemInfoList = []
|
| | | delItemInfoDict = {}
|
| | | lackItemCostMoney = 0
|
| | | costItemDict = ipyData.GetCostItemDict()
|
| | | if costItemDict:
|
| | |
| | | GameWorld.DebugLog(" 缺少必要物品: itemID=%s,lackMoney(%s)*Count(%s)=%s" % (itemID, itemGoldPaper, lackCnt, itemGoldPaper * lackCnt))
|
| | | else:
|
| | | delCount = itemCnt
|
| | | delItemInfoList.append([indexList, delCount])
|
| | | delItemInfoDict[itemID] = delCount
|
| | |
|
| | | if totalEquipStars < IpyGameDataPY.GetFuncCfg('EquipStarCustomized'):
|
| | | curRate = 100
|
| | |
| | | if curRate >= IpyGameDataPY.GetFuncCfg("EquipStarRate", 4): # 优化高概率体验
|
| | | curRate = 100
|
| | |
|
| | | return curRate, delEquipIndexList, delItemInfoList, lackItemCostMoney
|
| | | return curRate, delEquipGUIDDict, delItemInfoDict, lackItemCostMoney
|
| | |
|
| | |
|