| | |
| | | initClass = petIpyData.GetInitRank() if classlv == -1 else classlv#初始阶级
|
| | | newPetItem.SetUserAttr(ShareDefine.Def_IudetPet_ClassLV, max(0, initClass - 1)) #代码里从0开始
|
| | | newPetItem.SetUserAttr(ShareDefine.Def_IudetPet_QualityLV, petIpyData.GetQuality()) # 宠物品质
|
| | | newPetItem.SetUserAttr(ShareDefine.Def_IudetPet_Star, 1) # 起始1星
|
| | |
|
| | |
|
| | | petSkillList = petIpyData.GetSkillID()
|
| | |
| | | skillAttrList = [{} for _ in range(4)]
|
| | | allAttrListPetSkin = [{} for _ in range(4)]
|
| | | allAttrListTrain = [{} for _ in range(4)]
|
| | | allAttrListStar = [{} for _ in range(4)]
|
| | | customAttrDictPet = {}
|
| | | totalMinAtk, totalMaxAtk, qualityAttrInfo = GetPetAtkValue(curPlayer)
|
| | | customAttrDictPet["petQualityAttrInfo"] = qualityAttrInfo
|
| | |
| | | if skinIpyData:
|
| | | for attrID, attrValue in skinIpyData.GetAttrInfo().items():
|
| | | PlayerControl.CalcAttrDict_Type(attrID, attrValue, allAttrListPetSkin)
|
| | | |
| | | #星级
|
| | | curStar = petItem.GetUserAttr(ShareDefine.Def_IudetPet_Star)
|
| | | starIpyData = IpyGameDataPY.GetIpyGameData("PetStarUp", petItemNPCID, curStar)
|
| | | if starIpyData:
|
| | | starAttrType = starIpyData.GetStarAttrType()
|
| | | starAttrValue = starIpyData.GetStarAttrValue()
|
| | | for i, attrID in enumerate(starAttrType):
|
| | | attrValue = starAttrValue[i]
|
| | | PlayerControl.CalcAttrDict_Type(attrID, attrValue, allAttrListStar)
|
| | | |
| | | PlayerControl.SetCalcAttrListValue(curPlayer, ChConfig.Def_CalcAttrFunc_PetSkin, allAttrListPetSkin)
|
| | | PlayerControl.SetCalcAttrListValue(curPlayer, ChConfig.Def_CalcAttrFunc_PetStar, allAttrListStar)
|
| | | curPlayer.SetDict(ChConfig.Def_PlayerKey_MFPEx % ShareDefine.Def_MFPType_Pet, fpExTotal)
|
| | | # GameWorld.DebugLog("宠物榜NPCID: %s, petDict=%s" % (billPetNPCID, str(billPetDict)))
|
| | | return
|
| | |
| | | RefreshPetItemAddAttr(curPlayer, True)
|
| | | return
|
| | |
|
| | | #// A7 06 宠物升星 #tagCMPetStarUp
|
| | | #
|
| | | #struct tagCMPetStarUp
|
| | | #{
|
| | | # tagHead Head;
|
| | | # BYTE PetItemIndex; //宠物数据背包索引
|
| | | #};
|
| | | def OnPetStarUp(index, clientData, tick):
|
| | | curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index)
|
| | | playerID = curPlayer.GetPlayerID()
|
| | | PetItemIndex = clientData.PetItemIndex
|
| | | petDataItem = GetPetDataItemByIndex(curPlayer, PetItemIndex)
|
| | | if not petDataItem:
|
| | | return
|
| | | petNPCID = petDataItem.GetUserAttr(ShareDefine.Def_IudetPet_NPCID)
|
| | | curStar = petDataItem.GetUserAttr(ShareDefine.Def_IudetPet_Star)
|
| | | ipyData = IpyGameDataPY.GetIpyGameData("PetStarUp", petNPCID, curStar)
|
| | | if not ipyData:
|
| | | return
|
| | | nextStar = curStar + 1
|
| | | nextIpyData = IpyGameDataPY.GetIpyGameData("PetStarUp", petNPCID, nextStar)
|
| | | needItemList = ipyData.GetStarUpNeedItemList()
|
| | | if not needItemList or not nextIpyData:
|
| | | GameWorld.DebugLog("灵宠已满星,无法升星. petNPCID=%s,curStar=%s" % (petNPCID, curStar), playerID)
|
| | | return
|
| | | itemPack = curPlayer.GetItemManager().GetPack(IPY_GameWorld.rptItem)
|
| | | lackItemDict, delInfoDict = ItemCommon.GetCostItemIndexList(needItemList, itemPack)
|
| | | if lackItemDict:
|
| | | GameWorld.DebugLog("灵宠升星所需物品不足! petNPCID=%s,curStar=%s,needItemList=%s,lackItemDict=%s" |
| | | % (petNPCID, curStar, needItemList, lackItemDict), playerID)
|
| | | return
|
| | | |
| | | ItemCommon.DelCostItem(curPlayer, itemPack, delInfoDict, "PetStarUp") |
| | | petDataItem.SetUserAttr(ShareDefine.Def_IudetPet_Star, nextStar)
|
| | | GameWorld.DebugLog("灵宠升星. petNPCID=%s,curStar=%s,nextStar=%s" % (petNPCID, curStar, nextStar), playerID)
|
| | | |
| | | RefreshPetItemAddAttr(curPlayer, True) |
| | | return
|
| | |
|
| | | def Sync_PetTrainData(curPlayer):
|
| | | clientPack = ChPyNetSendPack.tagMCPetTrainInfo()
|
| | | clientPack.TrainLVList = []
|