From a7ab0247c7b8eff06ad104bee39bc035384ca43e Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期三, 23 七月 2025 12:08:22 +0800
Subject: [PATCH] 80 【常规】背包-服务端(增加背包购买格子;)

---
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerPet.py |  306 +++++++++++++++++++++++++-------------------------
 1 files changed, 152 insertions(+), 154 deletions(-)

diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerPet.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerPet.py
index 0fddd13..512cd75 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerPet.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerPet.py
@@ -30,13 +30,10 @@
 import ShareDefine
 import SkillCommon
 import PetControl
-import EventShell
 import GameWorld
 import IpyGameDataPY
-import PlayerAttrFruit
 import GameMap
 import OpenServerCampaign
-import PlayerMagicWeapon
 import PlayerWeekParty
 import CalcNoLineEffect
 import PassiveBuffEffMng
@@ -507,8 +504,7 @@
         return
     
     ItemCommon.ReduceItem(curPlayer, itemPack, itemList, needItemCnt, False, ChConfig.ItemDel_Pet)
-        
-    EventShell.EventRespons_OnActivatePet(curPlayer, petNPCID)
+    
     sysMark = ipyData.GetUnlockSys() or 'GetPet'
     PlayerControl.WorldNotify(0, sysMark, [curPlayer.GetName(), petNPCID])
     rolePet = curPlayer.GetPetMgr().GetFightPet()
@@ -872,160 +868,162 @@
 #  @param curPlayer 玩家
 #  @return None
 def CalcPetItemAddPlayerAttr(curPlayer):
-    allAttrListPet = [{} for _ in range(4)]
-    allAttrListPetSign = [{} for _ in range(4)] # 属性含 特殊的技能属性(因为签到技能属性成长,战力也是成长的,所以不能放技能中算战力,暂时放魂石中)
-    allAttrListPetSoul = [{} for _ in range(4)]
-    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
-    PlayerControl.CalcAttrDict_Type(ShareDefine.Def_Effect_PetMinAtk, totalMinAtk, allAttrListPet)
-    PlayerControl.CalcAttrDict_Type(ShareDefine.Def_Effect_PetMaxAtk, totalMaxAtk, allAttrListPet)
-    totalSignNum = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_TotalSignNum) # 总签到天数
-    # 果实给人物加属性, 魂石果实算附加属性层,单独计算
-    fightPowerEx = PlayerAttrFruit.CalcAttrFruitAddAtrr(curPlayer, allAttrListPetSoul, ShareDefine.Def_AttrFruitFunc_Pet)
-    PlayerControl.SetMFPExFightPower(curPlayer, ShareDefine.Def_MFPType_PetSoul, fightPowerEx)
-    
-    #灵兽技能给人物加的属性
-    learnSkillList, passiveSkillList = GetPetLearnSkill(curPlayer)
-    #GameWorld.DebugLog("1刷技能属性: %s" % allAttrList)
-    for skillID in passiveSkillList:
-        curSkill = GameWorld.GetGameData().GetSkillBySkillID(skillID)
-        if not curSkill:
-            continue
-        # 灵宠签到技能特殊处理
-        if curSkill.GetSkillTypeID() == ChConfig.Def_SkillID_PetSignDay:
-            for effectIndex in xrange(curSkill.GetEffectCount()):
-                curEffect = curSkill.GetEffect(effectIndex)
-                effID = curEffect.GetEffectID()
-                effValue = curEffect.GetEffectValue(0)
-                PlayerControl.CalcAttrDict_Type(effID, effValue * totalSignNum, allAttrListPetSign)
-            
-            continue
-        for effectIndex in xrange(curSkill.GetEffectCount()):
-            curEffect = curSkill.GetEffect(effectIndex)
-            if curEffect.GetEffectID() in ChConfig.Def_SkillEffs_Pet:
-                # 给宠物加的不处理
-                continue
-            SkillShell.CalcBuffEffAttr(curPlayer, curEffect, skillAttrList)
-    
-    # 新培养属性
-    ipyDataMgr = IpyGameDataPY.IPY_Data()
-    for index in xrange(ipyDataMgr.GetPetTrainCount()):
-        trainIpyData = ipyDataMgr.GetPetTrainByIndex(index)
-        trainType = trainIpyData.GetTrainType()
-        dataTrainLV = trainIpyData.GetTrainLV()
-        trainLV = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_PetTrainLV % trainType)
-        
-        if dataTrainLV > trainLV:
-            continue
-        elif dataTrainLV == trainLV:
-            trainItemCount = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_PetTrainItemCount % trainType)
-        else:
-            trainItemCount = trainIpyData.GetEatCntTotal()
-            
-        # 等阶额外属性
-        lvAttrTypeList = trainIpyData.GetLVAttrTypeList()
-        lvAttrValueList = trainIpyData.GetLVAttrValueList()
-        for i, attrID in enumerate(lvAttrTypeList):
-            attrValue = lvAttrValueList[i]
-            PlayerControl.CalcAttrDict_Type(attrID, attrValue, allAttrListTrain)
-            
-        # 培养丹增加属性
-        eatCntEverytime = trainIpyData.GetEatCntEverytime()
-        if trainItemCount and eatCntEverytime:
-            eatItemAttrTypeList = trainIpyData.GetEatItemAttrTypeList()
-            eatItemAttrValueList = trainIpyData.GetEatItemAttrValueList()
-            attrMultiple = trainItemCount / eatCntEverytime
-            for i, attrID in enumerate(eatItemAttrTypeList):
-                attrValue = eatItemAttrValueList[i]
-                PlayerControl.CalcAttrDict_Type(attrID, attrValue * attrMultiple, allAttrListTrain)
-                
-    PlayerControl.SetCalcAttrListValue(curPlayer, ChConfig.Def_CalcAttrFunc_PetTarin, allAttrListTrain)
-    
-    PlayerControl.SetCalcAttrListValue(curPlayer, ChConfig.Def_CalcAttrFunc_Pet, allAttrListPet, customAttrDict=customAttrDictPet)
-    PlayerControl.SetCalcAttrListValue(curPlayer, ChConfig.Def_CalcAttrFunc_PetSoul, allAttrListPetSoul)
-    PlayerControl.SetCalcAttrListValue(curPlayer, ChConfig.Def_CalcAttrFunc_PetSign, allAttrListPetSign)
-    
-    PlayerControl.SetCalcAttrListValue(curPlayer, ChConfig.Def_CalcAttrFunc_PetSkill, skillAttrList)
-    
-    #初始战力
-    fpExTotal = 0
-    petPackIndex = ShareDefine.rptPet
-    petPack = curPlayer.GetItemManager().GetPack(petPackIndex)
-    for i in range(petPack.GetCount()):
-        petItem = petPack.GetAt(i)
-        if petItem.IsEmpty():
-            continue
-        # 物品上的技能战力,主人上的另算
-        for i in range(petItem.GetUserAttrCount(ShareDefine.Def_IudetPet_Skill)):
-            skillID = petItem.GetUserAttrByIndex(ShareDefine.Def_IudetPet_Skill, i)
-            curSkilData = GameWorld.GetGameData().GetSkillBySkillID(skillID)
-            if not curSkilData:
-                continue
-            fpExTotal += curSkilData.GetFightPower()
-        petItemNPCID = petItem.GetUserAttr(ShareDefine.Def_IudetPet_NPCID)
-        petIpyData = GetPetIpydata(petItemNPCID)
-        if not petIpyData:
-            continue
-        fpExTotal += petIpyData.GetInitFightPower() # 初始战力
-        #觉醒战力
-        skinData = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_HorsePetSkinData % (2, petItemNPCID), 0)
-        skinIpyData = IpyGameDataPY.GetIpyGameDataNotLog('HorsePetSkin', 2, petItemNPCID, skinData/100)
-        if skinIpyData:
-            for attrID, attrValue in skinIpyData.GetAttrInfo().items():
-                PlayerControl.CalcAttrDict_Type(attrID, attrValue, allAttrListPetSkin)
-                
-        #星级
-        curStar = petItem.GetUserAttr(ShareDefine.Def_IudetPet_Star)
-        starIpyData = IpyGameDataPY.GetIpyGameDataNotLog("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)
-    PlayerControl.SetMFPExFightPower(curPlayer, ShareDefine.Def_MFPType_Pet, fpExTotal)
-#    GameWorld.DebugLog("宠物榜NPCID: %s, petDict=%s" % (billPetNPCID, str(billPetDict)))
     return
+#    allAttrListPet = [{} for _ in range(4)]
+#    allAttrListPetSign = [{} for _ in range(4)] # 属性含 特殊的技能属性(因为签到技能属性成长,战力也是成长的,所以不能放技能中算战力,暂时放魂石中)
+#    allAttrListPetSoul = [{} for _ in range(4)]
+#    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
+#    PlayerControl.CalcAttrDict_Type(ShareDefine.Def_Effect_PetMinAtk, totalMinAtk, allAttrListPet)
+#    PlayerControl.CalcAttrDict_Type(ShareDefine.Def_Effect_PetMaxAtk, totalMaxAtk, allAttrListPet)
+#    totalSignNum = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_TotalSignNum) # 总签到天数
+#    # 果实给人物加属性, 魂石果实算附加属性层,单独计算
+#    fightPowerEx = PlayerAttrFruit.CalcAttrFruitAddAtrr(curPlayer, allAttrListPetSoul, ShareDefine.Def_AttrFruitFunc_Pet)
+#    PlayerControl.SetMFPExFightPower(curPlayer, ShareDefine.Def_MFPType_PetSoul, fightPowerEx)
+#    
+#    #灵兽技能给人物加的属性
+#    learnSkillList, passiveSkillList = GetPetLearnSkill(curPlayer)
+#    #GameWorld.DebugLog("1刷技能属性: %s" % allAttrList)
+#    for skillID in passiveSkillList:
+#        curSkill = GameWorld.GetGameData().GetSkillBySkillID(skillID)
+#        if not curSkill:
+#            continue
+#        # 灵宠签到技能特殊处理
+#        if curSkill.GetSkillTypeID() == ChConfig.Def_SkillID_PetSignDay:
+#            for effectIndex in xrange(curSkill.GetEffectCount()):
+#                curEffect = curSkill.GetEffect(effectIndex)
+#                effID = curEffect.GetEffectID()
+#                effValue = curEffect.GetEffectValue(0)
+#                PlayerControl.CalcAttrDict_Type(effID, effValue * totalSignNum, allAttrListPetSign)
+#            
+#            continue
+#        for effectIndex in xrange(curSkill.GetEffectCount()):
+#            curEffect = curSkill.GetEffect(effectIndex)
+#            if curEffect.GetEffectID() in ChConfig.Def_SkillEffs_Pet:
+#                # 给宠物加的不处理
+#                continue
+#            SkillShell.CalcBuffEffAttr(curPlayer, curEffect, skillAttrList)
+#    
+#    # 新培养属性
+#    ipyDataMgr = IpyGameDataPY.IPY_Data()
+#    for index in xrange(ipyDataMgr.GetPetTrainCount()):
+#        trainIpyData = ipyDataMgr.GetPetTrainByIndex(index)
+#        trainType = trainIpyData.GetTrainType()
+#        dataTrainLV = trainIpyData.GetTrainLV()
+#        trainLV = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_PetTrainLV % trainType)
+#        
+#        if dataTrainLV > trainLV:
+#            continue
+#        elif dataTrainLV == trainLV:
+#            trainItemCount = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_PetTrainItemCount % trainType)
+#        else:
+#            trainItemCount = trainIpyData.GetEatCntTotal()
+#            
+#        # 等阶额外属性
+#        lvAttrTypeList = trainIpyData.GetLVAttrTypeList()
+#        lvAttrValueList = trainIpyData.GetLVAttrValueList()
+#        for i, attrID in enumerate(lvAttrTypeList):
+#            attrValue = lvAttrValueList[i]
+#            PlayerControl.CalcAttrDict_Type(attrID, attrValue, allAttrListTrain)
+#            
+#        # 培养丹增加属性
+#        eatCntEverytime = trainIpyData.GetEatCntEverytime()
+#        if trainItemCount and eatCntEverytime:
+#            eatItemAttrTypeList = trainIpyData.GetEatItemAttrTypeList()
+#            eatItemAttrValueList = trainIpyData.GetEatItemAttrValueList()
+#            attrMultiple = trainItemCount / eatCntEverytime
+#            for i, attrID in enumerate(eatItemAttrTypeList):
+#                attrValue = eatItemAttrValueList[i]
+#                PlayerControl.CalcAttrDict_Type(attrID, attrValue * attrMultiple, allAttrListTrain)
+#                
+#    PlayerControl.SetCalcAttrListValue(curPlayer, ChConfig.Def_CalcAttrFunc_PetTarin, allAttrListTrain)
+#    
+#    PlayerControl.SetCalcAttrListValue(curPlayer, ChConfig.Def_CalcAttrFunc_Pet, allAttrListPet, customAttrDict=customAttrDictPet)
+#    PlayerControl.SetCalcAttrListValue(curPlayer, ChConfig.Def_CalcAttrFunc_PetSoul, allAttrListPetSoul)
+#    PlayerControl.SetCalcAttrListValue(curPlayer, ChConfig.Def_CalcAttrFunc_PetSign, allAttrListPetSign)
+#    
+#    PlayerControl.SetCalcAttrListValue(curPlayer, ChConfig.Def_CalcAttrFunc_PetSkill, skillAttrList)
+#    
+#    #初始战力
+#    fpExTotal = 0
+#    petPackIndex = ShareDefine.rptPet
+#    petPack = curPlayer.GetItemManager().GetPack(petPackIndex)
+#    for i in range(petPack.GetCount()):
+#        petItem = petPack.GetAt(i)
+#        if petItem.IsEmpty():
+#            continue
+#        # 物品上的技能战力,主人上的另算
+#        for i in range(petItem.GetUserAttrCount(ShareDefine.Def_IudetPet_Skill)):
+#            skillID = petItem.GetUserAttrByIndex(ShareDefine.Def_IudetPet_Skill, i)
+#            curSkilData = GameWorld.GetGameData().GetSkillBySkillID(skillID)
+#            if not curSkilData:
+#                continue
+#            fpExTotal += curSkilData.GetFightPower()
+#        petItemNPCID = petItem.GetUserAttr(ShareDefine.Def_IudetPet_NPCID)
+#        petIpyData = GetPetIpydata(petItemNPCID)
+#        if not petIpyData:
+#            continue
+#        fpExTotal += petIpyData.GetInitFightPower() # 初始战力
+#        #觉醒战力
+#        skinData = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_HorsePetSkinData % (2, petItemNPCID), 0)
+#        skinIpyData = IpyGameDataPY.GetIpyGameDataNotLog('HorsePetSkin', 2, petItemNPCID, skinData/100)
+#        if skinIpyData:
+#            for attrID, attrValue in skinIpyData.GetAttrInfo().items():
+#                PlayerControl.CalcAttrDict_Type(attrID, attrValue, allAttrListPetSkin)
+#                
+#        #星级
+#        curStar = petItem.GetUserAttr(ShareDefine.Def_IudetPet_Star)
+#        starIpyData = IpyGameDataPY.GetIpyGameDataNotLog("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)
+#    PlayerControl.SetMFPExFightPower(curPlayer, ShareDefine.Def_MFPType_Pet, fpExTotal)
+##    GameWorld.DebugLog("宠物榜NPCID: %s, petDict=%s" % (billPetNPCID, str(billPetDict)))
+#    return
 
 ## 获取灵兽出战时的攻击力
 def GetPetAtkValue(curPlayer):
     qualityAttrInfo = {}
-    if not GameFuncComm.GetFuncCanUse(curPlayer, ShareDefine.GameFuncID_Pet):
-        #GameWorld.DebugLog(' 宠物功能未开启')
-        return 0, 0, qualityAttrInfo
-    
-    classAddAtk = 0
-    petPackIndex = ShareDefine.rptPet
-    petPack = curPlayer.GetItemManager().GetPack(petPackIndex)
-    for i in range(petPack.GetCount()):
-        packItem = petPack.GetAt(i)
-        if packItem.IsEmpty():
-            continue
-        petItemNPCID = packItem.GetUserAttr(ShareDefine.Def_IudetPet_NPCID)
-        classlv = packItem.GetUserAttr(ShareDefine.Def_IudetPet_ClassLV)
-        classIpyData = IpyGameDataPY.GetIpyGameData("PetClassCost", petItemNPCID, classlv + 1)
-        atkAdd = classIpyData.GetAtkAdd() if classIpyData else 0
-        classAddAtk += atkAdd
-        
-        petIpyData = GetPetIpydata(petItemNPCID)
-        if petIpyData:
-            quality = petIpyData.GetQuality()
-            if quality not in qualityAttrInfo:
-                qualityAttrInfo[quality] = {}
-            qualityAttrDict = qualityAttrInfo[quality]
-            qualityAttrDict[ShareDefine.Def_Effect_PetAtk] = qualityAttrDict.get(ShareDefine.Def_Effect_PetAtk, 0) + atkAdd
-            
-    totalMinAtk = classAddAtk
-    totalMaxAtk = classAddAtk
-    return totalMinAtk, totalMaxAtk, qualityAttrInfo
+    return 0, 0, qualityAttrInfo
+#    if not GameFuncComm.GetFuncCanUse(curPlayer, ShareDefine.GameFuncID_Pet):
+#        #GameWorld.DebugLog(' 宠物功能未开启')
+#        return 0, 0, qualityAttrInfo
+#    
+#    classAddAtk = 0
+#    petPackIndex = ShareDefine.rptPet
+#    petPack = curPlayer.GetItemManager().GetPack(petPackIndex)
+#    for i in range(petPack.GetCount()):
+#        packItem = petPack.GetAt(i)
+#        if packItem.IsEmpty():
+#            continue
+#        petItemNPCID = packItem.GetUserAttr(ShareDefine.Def_IudetPet_NPCID)
+#        classlv = packItem.GetUserAttr(ShareDefine.Def_IudetPet_ClassLV)
+#        classIpyData = IpyGameDataPY.GetIpyGameData("PetClassCost", petItemNPCID, classlv + 1)
+#        atkAdd = classIpyData.GetAtkAdd() if classIpyData else 0
+#        classAddAtk += atkAdd
+#        
+#        petIpyData = GetPetIpydata(petItemNPCID)
+#        if petIpyData:
+#            quality = petIpyData.GetQuality()
+#            if quality not in qualityAttrInfo:
+#                qualityAttrInfo[quality] = {}
+#            qualityAttrDict = qualityAttrInfo[quality]
+#            qualityAttrDict[ShareDefine.Def_Effect_PetAtk] = qualityAttrDict.get(ShareDefine.Def_Effect_PetAtk, 0) + atkAdd
+#            
+#    totalMinAtk = classAddAtk
+#    totalMaxAtk = classAddAtk
+#    return totalMinAtk, totalMaxAtk, qualityAttrInfo
 
 def OnPlayerPetLogin(curPlayer):
     ## 登录处理

--
Gitblit v1.8.0