hxp
2023-10-08 a1f053eb420898b323a18b9e260aaec34af2992a
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerPet.py
@@ -121,6 +121,7 @@
    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()
@@ -873,6 +874,7 @@
    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
@@ -972,7 +974,19 @@
        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
@@ -1104,6 +1118,45 @@
    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 = []