hch
2019-05-27 1dbff913370634e8aea37f2940f2a0d261d4dcb3
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/ItemControler.py
@@ -31,6 +31,7 @@
import ChPyNetSendPack
import NetPackCommon
import Operate_EquipStone
import PlayerMagicWeapon
import IpyGameDataPY
import DataRecordPack
import EventShell
@@ -536,37 +537,6 @@
#  @param itemMark 当前物品
#  @return 是否是贵重品
def IsValuableItem(curItem):
    #装备是否卓越物品
    #===========================================================================
    # ValuableItemQualityList = ReadChConfig.GetEvalChConfig("ValuableItemQuality")
    # if curItem.GetItemQuality() in ValuableItemQualityList:
    #    return True
    #
    # # 贵重物品配置[[贵重物品id], [贵重物品类型], 贵重物品加强等级, 贵重物品追加等级]
    # valuablesInfo = ReadChConfig.GetEvalChConfig("ValuablesConfigInfo")
    # valuablesIDList, valuablesTypeList, valuableMinStar, valuableAddAttrLV = valuablesInfo
    #
    # #物品ID满足
    # if curItem.GetItemTypeID() in valuablesIDList:
    #    return True
    #
    # #物品类型满足
    # if curItem.GetType() in valuablesTypeList:
    #    return True
    #
    # #普通装备判定
    # if ItemCommon.CheckItemIsEquip(curItem):
    #
    #    #套装物品
    #    if curItem.GetIsSuite():
    #        return True
    #
    #    #装备强化星级
    #    if curItem.GetItemStarLV() >= valuableMinStar:
    #        return True
    #===========================================================================
    return False
@@ -796,26 +766,27 @@
    
    # 计算装备的珍品数量
    def RefreshStartEquipCount(self):
        curPlayer = self.__Player
        count = 0
        equipPack = self.__PlayerEquip
        for i in xrange(equipPack.GetCount()):
            curEquip = equipPack.GetAt(i)
            if curEquip.IsEmpty():
                continue
            if not curEquip.GetItemQuality():
                continue
            count += 1
        curPlayer.SetDict(ChConfig.Def_PlayerKey_StartEquipCnt, count)
#        curPlayer = self.__Player
#        count = 0
#        equipPack = self.__PlayerEquip
#        for i in xrange(equipPack.GetCount()):
#            curEquip = equipPack.GetAt(i)
#
#            if curEquip.IsEmpty():
#                continue
#
#            if not curEquip.GetItemQuality():
#                continue
#
#            count += 1
#
#        curPlayer.SetDict(ChConfig.Def_PlayerKey_StartEquipCnt, count)
        return
    
    def GetStartEquipCount(self):
        curPlayer = self.__Player
        return curPlayer.GetDictByKey(ChConfig.Def_PlayerKey_StartEquipCnt)
        return 0
        #curPlayer = self.__Player
        #return curPlayer.GetDictByKey(ChConfig.Def_PlayerKey_StartEquipCnt)
    ## 装备当前物品
    #  @param curItem 当前物品
@@ -833,6 +804,9 @@
        desItemID, desUserData = [0, ''] if equipItem.IsEmpty() else [equipItem.GetItemTypeID(), equipItem.GetUserData()]
        srcItemID, srcUserData = curItem.GetItemTypeID(), curItem.GetUserData()
        
        befIsOrangeEquip = 1 if (not equipItem.IsEmpty() and equipItem.GetItemColor() >= ChConfig.Def_Quality_Orange) else 0
        aftIsOrangeEquip = 1 if curItem.GetItemColor() >= ChConfig.Def_Quality_Orange else 0
        #--其他装备物品---
        #itemColor = curItem.GetItemColor()
        result = self.SwitchEquip(curItem, equipPackIndex)
@@ -841,14 +815,24 @@
            PlayerSuccess.DoEquipSuccessLogic(curPlayer)
            #换装宝石处理
            Operate_EquipStone.DoMoveEquipStone(curPlayer, equipPackIndex)
            EventShell.EventRespons_EquipStar(curPlayer)
            EventShell.EventRespons_EquipItem(curPlayer)
            dataDict = {'dotype':'EquipItem', 'desItemID':desItemID, 'desUserData':desUserData,'srcItemID':srcItemID,'srcUserData':srcUserData}
            DataRecordPack.Cache_FightPowerChangeInfo(curPlayer, ChConfig.PowerDownType_EquipChange, dataDict)
            self.__UpdEquipOrangeCount(befIsOrangeEquip, aftIsOrangeEquip)
            
        self.RefreshStartEquipCount()
        return equipPlace if result else -1
    
    def __UpdEquipOrangeCount(self, befIsOrangeEquip, aftIsOrangeEquip):
        #更新橙装数量
        curPlayer = self.__Player
        befEquipOrangeCount = curPlayer.NomalDictGetProperty(ChConfig.Def_PlayerKey_EquipOrangeCount)
        aftEquipOrangeCount = max(0, befEquipOrangeCount + aftIsOrangeEquip - befIsOrangeEquip)
        PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PlayerKey_EquipOrangeCount, aftEquipOrangeCount)
        GameWorld.DebugLog("更新橙装及以上件数: befIsOrangeEquip=%s,aftIsOrangeEquip=%s,befEquipOrangeCount=%s,aftEquipOrangeCount=%s"
                           % (befIsOrangeEquip, aftIsOrangeEquip, befEquipOrangeCount, aftEquipOrangeCount))
        return
    ## 替换可以叠加物品逻辑 
    #  @param curEquip 当前装备
    #  @param curItem 当前物品
@@ -937,11 +921,15 @@
        #curEquip.SetIsSoulActive(False)
#        if curEquip.GetItemStarLV() != 0:
#            curEquip.SetItemStarLV(0) # 脱下的物品星级设置为0
        befIsOrangeEquip = 1 if curEquip.GetItemColor() >= ChConfig.Def_Quality_Orange else 0
        aftIsOrangeEquip = 0
        #背包物品放入仓库
        if not DragItem(curPlayer, IPY_GameWorld.rptEquip, equipIndex, IPY_GameWorld.rptItem, packIndex, curEquipCount):
            return
        self.RefreshStartEquipCount()
        self.__UpdEquipOrangeCount(befIsOrangeEquip, aftIsOrangeEquip)
        
        # 广播卸装
        if equipIndex in PlayerControl.GetFaceEquipIndexList(curPlayer) or equipPlace in ChConfig.Def_SyncEquipStateByIndex:
@@ -950,7 +938,7 @@
            #脱当前外观阶的套装
            ChEquip.ChangeEquipfacadeByClassLV(curPlayer, itemClassLV)
        
        EventShell.EventRespons_EquipStar(curPlayer)
        EventShell.EventRespons_EquipItem(curPlayer)
        dataDict = {'dotype':'UnEquipItem', 'equipID':equipID, 'userData':userData}
        DataRecordPack.Cache_FightPowerChangeInfo(curPlayer, ChConfig.PowerDownType_EquipChange, dataDict)
#===============================================================================
@@ -1094,7 +1082,8 @@
        itemID = tagItem.GetItemTypeID()
        #激活成就的道具
        if tagItem.GetType() == ChConfig.Def_ItemType_SuccessItem:
            PlayerSuccess.DoAddSuccessProgress(curPlayer, ShareDefine.SuccType_GetSpecialItem, 1, [tagItem.GetEffectByIndex(0).GetEffectValue(0)])
            PlayerMagicWeapon.DoActiveMW(curPlayer, tagItem.GetEffectByIndex(0).GetEffectValue(0))
            tagItem.Clear()
            return True
        if itemID in ChConfig.Def_TransformItemIDList:
            # 直接转化为对应货币的物品仅在放入背包时直接转化,否则还是以真实物品的形式存在,但堆叠上限需要做特殊处理
@@ -2578,3 +2567,4 @@
        for itemID, itemCnt, isAuctionItem in itemList:
            GivePlayerItem(curPlayer, itemID, itemCnt, isAuctionItem, [IPY_GameWorld.rptItem], event=event)
    return