hxp
2022-02-21 0c27822ef5e6c67782ed143a4ff03ecfbdfda1fb
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerPet.py
@@ -527,15 +527,18 @@
    return True
def DoPetActivate(curPlayer, index, classlv):
def DoPetActivate(curPlayer, index, classlv=None, refresh=True):
    ##直接激活 外部调用GM测试用
    ipyDataMgr = IpyGameDataPY.IPY_Data()
    petInfoCount = ipyDataMgr.GetPetInfoCount()
    if petInfoCount <= 0 or index > petInfoCount:
        GameWorld.ErrLog("激活宠物超过宠物表数据数: index=%s,petInfoCount=%s" % (index, petInfoCount))
        return
    petNPCID = ipyDataMgr.GetPetInfoByIndex(index - 1).GetID()
    quality = ipyDataMgr.GetPetInfoByIndex(index - 1).GetQuality()
    petIpyData = ipyDataMgr.GetPetInfoByIndex(index - 1)
    petNPCID = petIpyData.GetID()
    quality = petIpyData.GetQuality()
    maxClassLV = petIpyData.GetMaxRank()
    petPackIndex = ShareDefine.rptPet
    petPack = curPlayer.GetItemManager().GetPack(petPackIndex)
    for i in range(petPack.GetCount()):
@@ -544,12 +547,15 @@
            continue
        petItemNPCID = packItem.GetUserAttr(ShareDefine.Def_IudetPet_NPCID)
        if petItemNPCID == petNPCID:
            packItem.SetUserAttr(ShareDefine.Def_IudetPet_ClassLV, max(0, classlv - 1))
            if classlv:
                packItem.SetUserAttr(ShareDefine.Def_IudetPet_ClassLV, max(0, min(classlv, maxClassLV) - 1))
            packItem.SetUserAttr(ShareDefine.Def_IudetPet_QualityLV, quality) # 宠物品质
            GameWorld.DebugLog("已经拥有该宠物! i=%s,petItemNPCID=%s,petNPCID=%s" % (i, petItemNPCID, petNPCID))
            return
            return True
    
    if classlv == None:
        classlv = 1
    classlv = min(classlv, maxClassLV)
    newPetItem = GetNewPetDataItem(curPlayer, petNPCID, classlv)
    if not newPetItem:
        return
@@ -557,10 +563,12 @@
    
    if not ItemControler.PlayerItemControler(curPlayer).PutInItem(petPackIndex, newPetItem):
        return
    if not refresh:
        return True
    petItemIndex = GetPetDataItemIndexByNPCID(curPlayer, petNPCID)
    DoChangePetState(curPlayer, petItemIndex, ShareDefine.Def_PetState_Fight)
    RefreshPetItemAddAttr(curPlayer, True)
    return
    return True
#===============================================================================