| | |
| | | import IpyGameDataPY
|
| | | import PlayerWing
|
| | | import Operate_EquipStone
|
| | | import Operate_EquipSuitCompose
|
| | | import PassiveBuffEffMng
|
| | | import SkillCommon
|
| | | import PlayerMagicWeapon
|
| | |
| | |
|
| | | equipPack = curPlayer.GetItemManager().GetPack(IPY_GameWorld.rptEquip)
|
| | | curEquip = equipPack.GetAt(equipPackIndex)
|
| | | #SetEquipItemSuiteLVInfo(curPlayer, packEquipIndex, curEquip)
|
| | |
|
| | | if curEquip.GetUserAttr(ShareDefine.Def_IudetCreateTime) == 0:
|
| | | curEquip.SetUserAttr(ShareDefine.Def_IudetCreateTime, int(time.time()))
|
| | | #---换装成功---
|
| | |
| | | playControl.RefreshPlayerAttrState()
|
| | | return True
|
| | |
|
| | |
|
| | | def SetEquipItemSuiteLVInfo(curPlayer, equipIndex, curItem):
|
| | | # 设置部位套装信息
|
| | | if not curItem or curItem.IsEmpty():
|
| | | return
|
| | | |
| | | isSuitePart = False
|
| | | equipSuitTypeDict = IpyGameDataPY.GetFuncEvalCfg('EquipSuitType')
|
| | | for equipIndexList in equipSuitTypeDict.values():
|
| | | if equipIndex in equipIndexList:
|
| | | isSuitePart = True
|
| | | break
|
| | | |
| | | if not isSuitePart:
|
| | | return
|
| | | |
| | | suiteLVList = GetEquipPartSuiteLVList(curPlayer, equipIndex, curItem)
|
| | | attrCount = curItem.GetUserAttrCount(ShareDefine.Def_IudetPartSuiteLV)
|
| | | |
| | | if suiteLVList and len(suiteLVList) == attrCount:
|
| | | for i, suiteLV in enumerate(suiteLVList):
|
| | | if curItem.GetUserAttrByIndex(ShareDefine.Def_IudetPartSuiteLV, i) != suiteLV:
|
| | | curItem.UpdataUserAttrByIndex(ShareDefine.Def_IudetPartSuiteLV, i, suiteLV)
|
| | | else:
|
| | | if attrCount:
|
| | | curItem.ClearUserAttr(ShareDefine.Def_IudetPartSuiteLV)
|
| | | for suiteLV in suiteLVList:
|
| | | curItem.AddUserAttr(ShareDefine.Def_IudetPartSuiteLV, suiteLV)
|
| | | return
|
| | |
|
| | |
|
| | | ## 刷新装备对人物属性的改变
|
| | |
| | | return plusTypeDict.get(equipPlace, -1)
|
| | |
|
| | |
|
| | | def SetEquipPartSuiteLV(curPlayer, index, suiteType, suiteLV):
|
| | | #设置公共部位套装等级
|
| | | PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_EquipPartSuiteLV % (index, suiteType), suiteLV)
|
| | | equipPack = curPlayer.GetItemManager().GetPack(IPY_GameWorld.rptEquip)
|
| | | SetEquipItemSuiteLVInfo(curPlayer, index, equipPack.GetAt(index))
|
| | | return
|
| | |
|
| | |
|
| | | def GetEquipPartSuiteLV(curPlayer, index, suiteType):
|
| | | #获取公共部位套装等级
|
| | | return curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_EquipPartSuiteLV % (index, suiteType))
|
| | |
|
| | |
|
| | | def GetEquipPartSuiteGroupType(curPlayer, equipIndex):
|
| | | #获取公共部位套装组合类型
|
| | | findGroupType = 0
|
| | | equipSuitTypeDict = IpyGameDataPY.GetFuncEvalCfg('EquipSuitType')
|
| | | for groupType, indexList in equipSuitTypeDict.items():
|
| | | if equipIndex in indexList:
|
| | | findGroupType = int(groupType)
|
| | | break
|
| | | return findGroupType
|
| | |
|
| | |
|
| | | # 获取满套装化的最低阶数,如5件套,4件5级,1件3级,则返回3
|
| | | def GetEquipSuitsLVByType(curPlayer, suitType, groupType):
|
| | | suiteLV = 999
|
| | | equipSuitTypeDict = IpyGameDataPY.GetFuncEvalCfg('EquipSuitType')
|
| | | if groupType not in equipSuitTypeDict:
|
| | | return 0
|
| | | maxCnt = len(equipSuitTypeDict[groupType])
|
| | | cnt = 0
|
| | | for equipPlace in equipSuitTypeDict[groupType]:
|
| | | curSuiteLV = GetEquipPartSuiteLV(curPlayer, equipPlace, suitType)
|
| | | if curSuiteLV > 0:
|
| | | cnt += 1
|
| | | suiteLV = min(curSuiteLV, suiteLV)
|
| | | # suiteLV = 999
|
| | | # equipSuitTypeDict = IpyGameDataPY.GetFuncEvalCfg('EquipSuitType')
|
| | | # if groupType not in equipSuitTypeDict:
|
| | | # return 0
|
| | | # maxCnt = len(equipSuitTypeDict[groupType])
|
| | | # cnt = 0
|
| | | # for equipPlace in equipSuitTypeDict[groupType]:
|
| | | # curSuiteLV = GetEquipPartSuiteLV(curPlayer, equipPlace, suitType)
|
| | | # if curSuiteLV > 0:
|
| | | # cnt += 1
|
| | | # suiteLV = min(curSuiteLV, suiteLV)
|
| | | # |
| | | # if cnt != maxCnt:
|
| | | # return 0
|
| | | # return 0 if suiteLV == 999 else suiteLV
|
| | |
|
| | | if cnt != maxCnt:
|
| | | return 0
|
| | | return 0 if suiteLV == 999 else suiteLV
|
| | |
|
| | |
|
| | | ## 通知公共部位套装等级
|
| | | def NotifyEquipPartSuiteLV(curPlayer, index=None):
|
| | | ePartSuitePack = ChPyNetSendPack.tagMCEquipPartSuiteLVInfo()
|
| | | ePartSuitePack.Clear()
|
| | | ePartSuitePack.InfoList = []
|
| | | |
| | | equipSuitTypeDict = IpyGameDataPY.GetFuncEvalCfg('EquipSuitType')
|
| | | for equipIndexList in equipSuitTypeDict.values():
|
| | | for i in equipIndexList:
|
| | | if index != None and index != i:
|
| | | continue
|
| | | ePartSuiteInfo = ChPyNetSendPack.tagMCEquipPartSuiteLV()
|
| | | ePartSuiteInfo.Clear()
|
| | | ePartSuiteInfo.EquipIndex = i
|
| | | suiteInfo = GetSuiteInfoByPlace(curPlayer, i)
|
| | | ePartSuiteInfo.SuiteLVInfo = json.dumps(suiteInfo, ensure_ascii=False)
|
| | | ePartSuiteInfo.Len = len(ePartSuiteInfo.SuiteLVInfo)
|
| | | ePartSuitePack.InfoList.append(ePartSuiteInfo)
|
| | | |
| | | ePartSuitePack.Count = len(ePartSuitePack.InfoList)
|
| | | NetPackCommon.SendFakePack(curPlayer, ePartSuitePack)
|
| | | return
|
| | |
|
| | |
|
| | | def GetSuiteInfoByPlace(curPlayer, equipPlace, curEquip=None):
|
| | | suiteInfo = {} #{套装类型:等级}
|
| | | groupType = GetEquipPartSuiteGroupType(curPlayer, equipPlace)
|
| | | maxSuiteType = IpyGameDataPY.GetFuncCfg('EquipSuitColorStar', 2)
|
| | | for suiteType in range(1, maxSuiteType + 1):
|
| | | suiteLV = GetEquipPartSuiteLV(curPlayer, equipPlace, suiteType)
|
| | | if suiteLV:
|
| | | if curEquip:
|
| | | maxSuiteLV = Operate_EquipSuitCompose.GetEquipCanDoMaxSuiteLV(curPlayer, curEquip, suiteType, groupType)
|
| | | suiteLV = min(suiteLV, maxSuiteLV)
|
| | | suiteInfo[suiteType] = suiteLV
|
| | | return suiteInfo
|
| | |
|
| | |
|
| | | def GetEquipPartSuiteLVList(curPlayer, equipPlace, curEquip=None):
|
| | | ## 部位套装等级列表
|
| | | groupType = GetEquipPartSuiteGroupType(curPlayer, equipPlace)
|
| | | |
| | | suiteLVList = []
|
| | | maxSuiteType = IpyGameDataPY.GetFuncCfg('EquipSuitColorStar', 2)
|
| | | for suiteType in xrange(1, maxSuiteType + 1):
|
| | | suiteLV = GetEquipPartSuiteLV(curPlayer, equipPlace, suiteType)
|
| | | if curEquip and suiteLV:
|
| | | maxSuiteLV = Operate_EquipSuitCompose.GetEquipCanDoMaxSuiteLV(curPlayer, curEquip, suiteType, groupType)
|
| | | suiteLV = min(suiteLV, maxSuiteLV)
|
| | | |
| | | suiteLVList.append(suiteLV)
|
| | | return suiteLVList
|
| | |
|
| | |
|
| | | def SetEquipPartStar(curPlayer, equipPackindex, star):
|