ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerPet.py
@@ -549,31 +549,39 @@
    playerName = curPlayer.GetName()
    petNPCID = petDataItem.GetUserAttr(ShareDefine.Def_IudetPet_NPCID)
    classLV = petDataItem.GetUserAttr(ShareDefine.Def_IudetPet_ClassLV) + 1
    alreadyLearnSkillInfo = {}
    for i in xrange(petDataItem.GetUserAttrCount(ShareDefine.Def_IudetPet_Skill)):
    itemSkillList = []
    itemSkillCount = petDataItem.GetUserAttrCount(ShareDefine.Def_IudetPet_Skill)
    for i in xrange(itemSkillCount):
        skillID = petDataItem.GetUserAttrByIndex(ShareDefine.Def_IudetPet_Skill, i)
        skillData = GameWorld.GetGameData().GetSkillBySkillID(skillID)
        if not skillData:
            continue
        skillTypeID = skillData.GetSkillTypeID()
        alreadyLearnSkillInfo[skillTypeID] = [skillID, i]
    #GameWorld.DebugLog("开始更新灵宠技能: petNPCID=%s,classLV=%s,alreadyLearnSkillInfo=%s" % (petNPCID, classLV, alreadyLearnSkillInfo))
        itemSkillList.append([skillTypeID, skillID])
    #GameWorld.DebugLog("开始更新灵宠技能: petNPCID=%s,classLV=%s,itemSkillList=%s" % (petNPCID, classLV, itemSkillList))
    
    petIpyData = GetPetIpydata(petNPCID)
    petSkillList = petIpyData.GetSkillID()
    petSkillUnLockList = petIpyData.GetSkillUnLock()
    sysMarkList = petIpyData.GetSkillUnLockSys()
    learnSkillList = []
    skillChange = False
    for i, skillID in enumerate(petSkillList):
        limitPetClassLV = petSkillUnLockList[i] # 学习此技能所需宠物阶级
        if classLV < limitPetClassLV:
            #GameWorld.DebugLog("    未满足学习阶级: i=%s,skillID=%s,limitPetClassLV=%s" % (i, skillID, limitPetClassLV))
            GameWorld.DebugLog("    未满足学习阶级: i=%s,skillID=%s,limitPetClassLV=%s" % (i, skillID, limitPetClassLV))
            break
        skillData = GameWorld.GetGameData().GetSkillBySkillID(skillID)
        if not skillData:
            continue
        skillTypeID = skillData.GetSkillTypeID()
        alreadyLearnSkillID, skillIndex = alreadyLearnSkillInfo.get(skillTypeID, [0, -1])
        alreadyLearnSkillID, alreadyLearnIndex = 0, -1
        for skillIndex, skillInfo in enumerate(itemSkillList):
            itemSkillTypeID, itemSkillID = skillInfo
            if itemSkillTypeID == skillTypeID:
                alreadyLearnSkillID = itemSkillID
                alreadyLearnIndex = skillIndex
                break
        if skillID <= alreadyLearnSkillID:
            #GameWorld.DebugLog("    技能已经学习过: i=%s,skillID=%s <= alreadyLearnSkillID=%s" % (i, skillID, alreadyLearnSkillID))
            continue
@@ -581,12 +589,11 @@
            #GameWorld.DebugLog("    主人学习技能: i=%s,skillID=%s" % (i, skillID))
            SkillCommon.GivePlayerSkillByJobSkill(curPlayer, [skillID])
            continue
        skillChange = True
        if not alreadyLearnSkillID:
            #GameWorld.DebugLog("    学习新的技能: i=%s,skillID=%s" % (i, skillID))
            petDataItem.AddUserAttr(ShareDefine.Def_IudetPet_Skill, skillID)
            itemSkillList.append([skillTypeID, skillID])
        else:
            #GameWorld.DebugLog("    学习升级技能: i=%s,skillID=%s,skillIndex=%s" % (i, skillID, skillIndex))
            petDataItem.UpdataUserAttrByIndex(ShareDefine.Def_IudetPet_Skill, skillIndex, skillID)
            itemSkillList[alreadyLearnIndex] = [skillTypeID, skillID]
        if not SkillCommon.isPassiveAttr(skillData):
            #被动技能不学
            learnSkillList.append(skillID)
@@ -597,6 +604,20 @@
        #增加升级活跃点效果
        PlayerActivity.AddActivityByLVOnLearnSkill(curPlayer, skillID)
        
    if not skillChange:
        return learnSkillList
    for skillIndex, skillInfo in enumerate(itemSkillList):
        skillID = skillInfo[1]
        if skillIndex < itemSkillCount:
            itemSkillID = petDataItem.GetUserAttrByIndex(ShareDefine.Def_IudetPet_Skill, skillIndex)
            if itemSkillID != skillID:
                #GameWorld.DebugLog("    学习升级技能: itemSkillID=%s -> skillID=%s,skillIndex=%s" % (itemSkillID, skillID, skillIndex))
                petDataItem.UpdataUserAttrByIndex(ShareDefine.Def_IudetPet_Skill, skillIndex, skillID)
        else:
            #GameWorld.DebugLog("    学习新的技能: skillID=%s,skillIndex=%s" % (skillID, skillIndex))
            petDataItem.AddUserAttr(ShareDefine.Def_IudetPet_Skill, skillID)
    nowSkillIDList = []
    for i in xrange(petDataItem.GetUserAttrCount(ShareDefine.Def_IudetPet_Skill)):
        nowSkillIDList.append(petDataItem.GetUserAttrByIndex(ShareDefine.Def_IudetPet_Skill, i))