xdh
2019-03-06 8b1a20abf619133e66b876adb8583fe00fc3fd0a
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/ChEquip.py
@@ -34,7 +34,6 @@
import IpyGameDataPY
import PlayerWing
import Operate_EquipStone
import Operate_EquipSuitCompose
import PassiveBuffEffMng
import SkillCommon
import PlayerMagicWeapon
@@ -117,7 +116,7 @@
    
    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()))
    #---换装成功---
@@ -151,35 +150,6 @@
    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
    
## 刷新装备对人物属性的改变
@@ -1048,101 +1018,25 @@
    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):