From 26958aff1b844a743a805b4f9075bee800b72a46 Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期二, 04 十一月 2025 14:35:37 +0800
Subject: [PATCH] 332 【主界面】座骑系统-服务端
---
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerPet.py | 319 +++++++++++++++++++++++++---------------------------
1 files changed, 152 insertions(+), 167 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 a248e8b..aa67d78 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerPet.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerPet.py
@@ -25,29 +25,22 @@
import SkillShell
import ItemControler
import PlayerControl
-import PlayerSuccess
import GameFuncComm
import ShareDefine
import SkillCommon
import PetControl
import GameWorld
import IpyGameDataPY
-import PlayerAttrFruit
import GameMap
-import OpenServerCampaign
-import PlayerMagicWeapon
import PlayerWeekParty
import CalcNoLineEffect
import PassiveBuffEffMng
import CrossPlayerData
import CalcLineEffect
-import PlayerActivity
import ChPyNetSendPack
import NetPackCommon
import PlayerActLunhuidian
-import PlayerActHorsePetTrain
import PlayerActTask
-import PlayerHorse
import GameObj
import random
@@ -359,7 +352,7 @@
petID = petStruct.PetID
petStruct.BindType = petItem.GetIsBind()
petStruct.Name = str(petStruct.PetID)#petNpcData.GetName() 配表不是UTF8会导致报错,默认用ID当名字
- petStruct.DailyTrainCnt = PlayerHorse.GetHorsePetSkinIndex(curPlayer, 2, npcID)
+ petStruct.DailyTrainCnt = 0
# 宠物lv 改为 阶级 用于客户端显示名字颜色用
# classLV = petItem.GetUserAttr(ShareDefine.Def_IudetPet_ClassLV)
# rolePet.SetLV(classLV)
@@ -521,8 +514,6 @@
PetControl.DoLogic_PlayerPetLearnSkillList(rolePet, learnSkillList)
RefreshPetItemAddAttr(curPlayer, True)
- # 开服活动数据
- OpenServerCampaign.UpdOpenServerCampaignRecordData(curPlayer, ShareDefine.Def_Campaign_Type_PetLV, GetTotalPetLV(curPlayer))
PlayerWeekParty.AddWeekPartyActionCnt(curPlayer, ChConfig.Def_WPAct_Pet, petNPCID, False)
return True
@@ -747,8 +738,6 @@
#广播
sysMark = sysMarkList[i] if i < len(sysMarkList) else 'PetUpLv'
PlayerControl.WorldNotify(0, sysMark, [playerName, petNPCID, limitPetClassLV, skillid])
- #增加升级活跃点效果
- PlayerActivity.AddActivityByLVOnLearnSkill(curPlayer, skillid)
if not learnSkillList and updClassLV + 1 == maxClassLV:
PlayerControl.WorldNotify(0, 'PetUpLvMax', [playerName, petNPCID])
@@ -759,17 +748,12 @@
RefreshPetItemAddAttr(curPlayer, True)
- # 开服活动数据
- OpenServerCampaign.UpdOpenServerCampaignRecordData(curPlayer, ShareDefine.Def_Campaign_Type_PetLV, GetTotalPetLV(curPlayer))
-
- PlayerSuccess.DoAddSuccessProgress(curPlayer, ShareDefine.SuccType_PetClassLV, 1, [petNPCID, updClassLV + 1])
extraInfoDict = {"petItemIndex":PetItemIndex, "petNPCID":petNPCID}
extraInfoDict.update(eval(petDataItem.GetUserData()))
DataRecordPack.DR_ClassUpSystem(curPlayer, "PetClassUp", updClassLV, extraInfoDict)
#EventReport.WriteEvent_pet_class(curPlayer, petNpcData.GetName(), classLV, petClassExp, updClassLV, newClassExp)
- PlayerActHorsePetTrain.OnHorsePetTrainCost(curPlayer, {autoBuyItemID:costItemCount})
PlayerActTask.AddActTaskValue(curPlayer, ChConfig.ActTaskType_PetUpItem, costItemCount)
PlayerActLunhuidian.AddLunhuidianValue(curPlayer, PlayerActLunhuidian.AwardType_UseItem, autoBuyItemID, costItemCount)
return
@@ -870,160 +854,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):
## 登录处理
@@ -1119,7 +1105,6 @@
# 刷属性,更新排行榜
RefreshPetItemAddAttr(curPlayer, True)
- PlayerActHorsePetTrain.OnHorsePetTrainCost(curPlayer, {costItemID:costItemCount})
if trainType == 2:
PlayerActTask.AddActTaskValue(curPlayer, ChConfig.ActTaskType_PetTrainItem2, costItemCount)
elif trainType == 3:
--
Gitblit v1.8.0