271 【内政】古宝系统-服务端(古宝升星增加验证同品质x个x星条件;修复古宝月卡特权领奖会越领越多bug;)
| | |
| | | {
|
| | | BYTE _GubaoQuality; //古宝品质
|
| | | BYTE GubaoStar; //古宝星级
|
| | | list QualityStarCond; //需同品质X个X星
|
| | | BYTE StarUPNeedSelfCnt; //升到本星消耗本体碎片数量
|
| | | list StarUPNeedItemList; //消耗其他物品列表 [[物品ID,个数], ...]
|
| | | };
|
| | |
| | | "GubaoStar":(
|
| | | ("BYTE", "GubaoQuality", 1),
|
| | | ("BYTE", "GubaoStar", 0),
|
| | | ("list", "QualityStarCond", 0),
|
| | | ("BYTE", "StarUPNeedSelfCnt", 0),
|
| | | ("list", "StarUPNeedItemList", 0),
|
| | | ),
|
| | |
| | | |
| | | def GetGubaoQuality(self): return self.attrTuple[0] # 古宝品质 BYTE
|
| | | def GetGubaoStar(self): return self.attrTuple[1] # 古宝星级 BYTE
|
| | | def GetStarUPNeedSelfCnt(self): return self.attrTuple[2] # 升到本星消耗本体碎片数量 BYTE
|
| | | def GetStarUPNeedItemList(self): return self.attrTuple[3] # 消耗其他物品列表 [[物品ID,个数], ...] list |
| | | def GetQualityStarCond(self): return self.attrTuple[2] # 需同品质X个X星 list
|
| | | def GetStarUPNeedSelfCnt(self): return self.attrTuple[3] # 升到本星消耗本体碎片数量 BYTE
|
| | | def GetStarUPNeedItemList(self): return self.attrTuple[4] # 消耗其他物品列表 [[物品ID,个数], ...] list |
| | | |
| | | # 古宝品质升级表 |
| | | class IPY_GubaoLV(): |
| | |
| | |
|
| | | dayAwardDict = IpyGameDataPY.GetFuncEvalCfg("InvestDay", 3, {})
|
| | | if str(investType) in dayAwardDict:
|
| | | rewardItemList = dayAwardDict[str(investType)]
|
| | | rewardItemList += dayAwardDict[str(investType)]
|
| | |
|
| | | if not rewardItemList:
|
| | | return
|
| | |
| | | if not nextIpyData:
|
| | | GameWorld.DebugLog("古宝已满星! gubaoID=%s,quality=%s,star=%s" % (gubaoID, quality, star), playerID)
|
| | | return
|
| | | qualityStarCond = nextIpyData.GetQualityStarCond() # 需同品质X个X星
|
| | | needSelfCnt = nextIpyData.GetStarUPNeedSelfCnt()
|
| | | needItemList = nextIpyData.GetStarUPNeedItemList()
|
| | |
|
| | | if qualityStarCond and len(qualityStarCond) == 2:
|
| | | needGBCnt, needGBStar = qualityStarCond
|
| | | condGubaoCnt = 0
|
| | | ipyDataMgr = IpyGameDataPY.IPY_Data()
|
| | | for index in xrange(ipyDataMgr.GetGubaoCount()):
|
| | | gbIpyData = ipyDataMgr.GetGubaoByIndex(index)
|
| | | _, gbStar, _ = GetGubaoInfo(curPlayer, gbIpyData.GetGubaoID())
|
| | | if gbIpyData.GetGubaoQuality() == quality and gbStar >= needGBStar:
|
| | | condGubaoCnt += 1
|
| | | if condGubaoCnt < needGBCnt:
|
| | | GameWorld.DebugLog("古宝升星所需同品质星级古宝数不足! quality=%s,nextStar=%s,condGubaoCnt=%s < %s,needGBStar=%s" |
| | | % (quality, nextStar, condGubaoCnt, needGBCnt, needGBStar), playerID)
|
| | | return
|
| | | |
| | | if needItemList:
|
| | | itemPack = curPlayer.GetItemManager().GetPack(IPY_GameWorld.rptItem)
|
| | | lackItemDict, delInfoDict = ItemCommon.GetCostItemIndexList(needItemList, itemPack)
|