xdh
2019-04-25 89cd1373014cea5337624c82d25fa6f84c7fe7c7
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/UseItem/ItemCommon.py
@@ -459,8 +459,8 @@
        
    classLV = GetItemClassLV(curItem)
    color = curItem.GetItemColor()
    itemQuality = curItem.GetItemQuality()
    gsParamIpyData = IpyGameDataPY.GetIpyGameData("EquipGSParam", classLV, color, itemQuality)
    isSuit = 1 if curItem.GetSuiteID() > 0 else 0
    gsParamIpyData = IpyGameDataPY.GetIpyGameData("EquipGSParam", classLV, color, isSuit)
    # 传奇属性
    legendAttrIDCnt = curItem.GetUserAttrCount(ShareDefine.Def_IudetLegendAttrID)
    legendAttrValueCnt = curItem.GetUserAttrCount(ShareDefine.Def_IudetLegendAttrValue)
@@ -479,48 +479,55 @@
    IceAtk = attrDict.get(ShareDefine.Def_Effect_IceAtk, 0)
    IceDef = attrDict.get(ShareDefine.Def_Effect_IceDef, 0)
    
    AtkPer = attrDict.get(ShareDefine.Def_Effect_AddAtkByPer, 0) * (1 if not gsParamIpyData else gsParamIpyData.GetAtkPerC())
    DamagePer = attrDict.get(ShareDefine.Def_Effect_DamagePer, 0) * (1 if not gsParamIpyData else gsParamIpyData.GetDamagePerC())
    SuperHitRate = attrDict.get(ShareDefine.Def_Effect_SuperHitRate, 0) * (1 if not gsParamIpyData else gsParamIpyData.GetSuperHitRateC())
    BaseEquipMaxHPAddPer = attrDict.get(ShareDefine.Def_Effect_BaseEquipMaxHPAddPer, 0) * (1 if not gsParamIpyData else gsParamIpyData.GetBaseEquipMaxHPAddPerC())
    BaseEquipAtkAddPer = attrDict.get(ShareDefine.Def_Effect_BaseEquipAtkAddPer, 0) * (1 if not gsParamIpyData else gsParamIpyData.GetBaseEquipAtkAddPerC())
    AtkPer = 0#attrDict.get(ShareDefine.Def_Effect_AddAtkByPer, 0) * (1 if not gsParamIpyData else gsParamIpyData.GetAtkPerC())
    DamagePer = 0#attrDict.get(ShareDefine.Def_Effect_DamagePer, 0) * (1 if not gsParamIpyData else gsParamIpyData.GetDamagePerC())
    SuperHitRate = 0#attrDict.get(ShareDefine.Def_Effect_SuperHitRate, 0) * (1 if not gsParamIpyData else gsParamIpyData.GetSuperHitRateC())
    SuperHit = attrDict.get(ShareDefine.Def_Effect_SuperHit, 0) * (1 if not gsParamIpyData else gsParamIpyData.GetSuperHitC())
    SuperHitPer = attrDict.get(ShareDefine.Def_Effect_SuperHitPer, 0) * (1 if not gsParamIpyData else gsParamIpyData.GetSuperHitPerC())
    DamReducePer = attrDict.get(ShareDefine.Def_Effect_DamReducePer, 0) * (1 if not gsParamIpyData else gsParamIpyData.GetDamReducePerC())
    MaxHPPer = attrDict.get(ShareDefine.Def_Effect_MaxHPPer, 0) * (1 if not gsParamIpyData else gsParamIpyData.GetMaxHPPerC())
    DefPer = attrDict.get(ShareDefine.Def_Effect_DefPer, 0) * (1 if not gsParamIpyData else gsParamIpyData.GetDefPerC())
    DamReducePer = 0#attrDict.get(ShareDefine.Def_Effect_DamReducePer, 0) * (1 if not gsParamIpyData else gsParamIpyData.GetDamReducePerC())
    MaxHPPer = 0#attrDict.get(ShareDefine.Def_Effect_MaxHPPer, 0) * (1 if not gsParamIpyData else gsParamIpyData.GetMaxHPPerC())
    DefPer = 0#attrDict.get(ShareDefine.Def_Effect_DefPer, 0) * (1 if not gsParamIpyData else gsParamIpyData.GetDefPerC())
    LuckyHitRate = attrDict.get(ShareDefine.Def_Effect_LuckyHitRate, 0) * (1 if not gsParamIpyData else gsParamIpyData.GetLuckyHitRateC())
    PetDamPer = attrDict.get(ShareDefine.Def_Effect_PetDamPer, 0) * (1 if not gsParamIpyData else gsParamIpyData.GetPetDamPerC())
    LuckyHitRateReduce = attrDict.get(ShareDefine.Def_Effect_LuckyHitRateReduce, 0) * (1 if not gsParamIpyData else gsParamIpyData.GetLuckyHitRateReduceC())
    LuckyHit = attrDict.get(ShareDefine.Def_Effect_LuckyHit, 0)
    LuckyHitReduce = attrDict.get(ShareDefine.Def_Effect_LuckyHitReduce, 0)
    LuckPer = attrDict.get(ShareDefine.Def_Effect_LuckPer, 0) * (1 if not gsParamIpyData else gsParamIpyData.GetLuckPerC())
    PetDamPer = 0#attrDict.get(ShareDefine.Def_Effect_PetDamPer, 0) * (1 if not gsParamIpyData else gsParamIpyData.GetPetDamPerC())
    PerLVAtk = attrDict.get(ShareDefine.Def_Effect_PerLVAtk, 0) * (1 if not gsParamIpyData else gsParamIpyData.GetPerLVAtkC())
    MissRate = attrDict.get(ShareDefine.Def_Effect_MissRate, 0) * (1 if not gsParamIpyData else gsParamIpyData.GetMissRateC())
    HitRate = attrDict.get(ShareDefine.Def_Effect_HitRate, 0) * (1 if not gsParamIpyData else gsParamIpyData.GetHitRateC())
    DamBackPer = attrDict.get(ShareDefine.Def_Effect_DamBackPer, 0) * (1 if not gsParamIpyData else gsParamIpyData.GetDamBackPerC())
    MissRate = 0#attrDict.get(ShareDefine.Def_Effect_MissRate, 0) * (1 if not gsParamIpyData else gsParamIpyData.GetMissRateC())
    HitRate = 0#attrDict.get(ShareDefine.Def_Effect_HitRate, 0) * (1 if not gsParamIpyData else gsParamIpyData.GetHitRateC())
    DamBackPer = 0#attrDict.get(ShareDefine.Def_Effect_DamBackPer, 0) * (1 if not gsParamIpyData else gsParamIpyData.GetDamBackPerC())
    PerLVMaxHP = attrDict.get(ShareDefine.Def_Effect_PerLVMaxHP, 0) * (1 if not gsParamIpyData else gsParamIpyData.GetPerLVMaxHPC())
    DropEquipPer = attrDict.get(ShareDefine.Def_Effect_DropEquipPer, 0) * (1 if not gsParamIpyData else gsParamIpyData.GetDropEquipPerC())
    DropEquipPer = 0#attrDict.get(ShareDefine.Def_Effect_DropEquipPer, 0) * (1 if not gsParamIpyData else gsParamIpyData.GetDropEquipPerC())
    DropMoneyPer = attrDict.get(ShareDefine.Def_Effect_DropMoneyPer, 0) * (1 if not gsParamIpyData else gsParamIpyData.GetDropMoneyPerC())
    IgnoreDefRateReduce = attrDict.get(ShareDefine.Def_Effect_IgnoreDefRateReduce, 0) * (1 if not gsParamIpyData else gsParamIpyData.GetIgnoreDefRateReduceC())
    DamChanceDef = attrDict.get(ShareDefine.Def_Effect_DamChanceDef, 0) * (1 if not gsParamIpyData else gsParamIpyData.GetDamChanceDefC())
    IgnoreDefRateReduce = 0#attrDict.get(ShareDefine.Def_Effect_IgnoreDefRateReduce, 0) * (1 if not gsParamIpyData else gsParamIpyData.GetIgnoreDefRateReduceC())
    DamChanceDef = 0#attrDict.get(ShareDefine.Def_Effect_DamChanceDef, 0) * (1 if not gsParamIpyData else gsParamIpyData.GetDamChanceDefC())
    SuperHitReduce = attrDict.get(ShareDefine.Def_Effect_SuperHitReduce, 0) * (1 if not gsParamIpyData else gsParamIpyData.GetSuperHitReduceC())
    SkillAtkRate = attrDict.get(ShareDefine.Def_Effect_SkillAtkRate, 0) * (1 if not gsParamIpyData else gsParamIpyData.GetSkillAtkRateC())
    SpeedPer = attrDict.get(ShareDefine.Def_Effect_SpeedPer, 0) * (1 if not gsParamIpyData else gsParamIpyData.GetSpeedPerC())
    SkillAtkRateReduce = attrDict.get(ShareDefine.Def_Effect_SkillAtkRateReduce, 0) * (1 if not gsParamIpyData else gsParamIpyData.GetSkillAtkRateReduceC())
    SkillAtkRate = 0#attrDict.get(ShareDefine.Def_Effect_SkillAtkRate, 0) * (1 if not gsParamIpyData else gsParamIpyData.GetSkillAtkRateC())
    SpeedPer = 0#attrDict.get(ShareDefine.Def_Effect_SpeedPer, 0) * (1 if not gsParamIpyData else gsParamIpyData.GetSpeedPerC())
    SkillAtkRateReduce = 0#attrDict.get(ShareDefine.Def_Effect_SkillAtkRateReduce, 0) * (1 if not gsParamIpyData else gsParamIpyData.GetSkillAtkRateReduceC())
    Hit = attrDict.get(ShareDefine.Def_Effect_Hit, 0) * (1 if not gsParamIpyData else gsParamIpyData.GetHitC())
    Miss = attrDict.get(ShareDefine.Def_Effect_Miss, 0) * (1 if not gsParamIpyData else gsParamIpyData.GetMissC())
    SkillAddPerA = attrDict.get(ShareDefine.Def_Effect_SkillAddPer1, 0) * (1 if not gsParamIpyData else gsParamIpyData.GetSkillAddPer1C())
    SkillAddPerB = attrDict.get(ShareDefine.Def_Effect_SkillAddPer2, 0) * (1 if not gsParamIpyData else gsParamIpyData.GetSkillAddPer2C())
    SkillAddPerC = attrDict.get(ShareDefine.Def_Effect_SkillAddPer3, 0) * (1 if not gsParamIpyData else gsParamIpyData.GetSkillAddPer3C())
    SkillAddPerD = attrDict.get(ShareDefine.Def_Effect_SkillAddPer4, 0) * (1 if not gsParamIpyData else gsParamIpyData.GetSkillAddPer4C())
    SkillAddPerE = attrDict.get(ShareDefine.Def_Effect_SkillAddPer5, 0) * (1 if not gsParamIpyData else gsParamIpyData.GetSkillAddPer5C())
    SkillAddPerF = attrDict.get(ShareDefine.Def_Effect_SkillAddPer6, 0) * (1 if not gsParamIpyData else gsParamIpyData.GetSkillAddPer6C())
    SkillAddPerG = attrDict.get(ShareDefine.Def_Effect_SkillAddPer7, 0) * (1 if not gsParamIpyData else gsParamIpyData.GetSkillAddPer7C())
    SkillReducePerA = attrDict.get(ShareDefine.Def_Effect_SkillReducePer1, 0) * (1 if not gsParamIpyData else gsParamIpyData.GetSkillReducePer1C())
    SkillReducePerB = attrDict.get(ShareDefine.Def_Effect_SkillReducePer2, 0) * (1 if not gsParamIpyData else gsParamIpyData.GetSkillReducePer2C())
    SkillReducePerC = attrDict.get(ShareDefine.Def_Effect_SkillReducePer3, 0) * (1 if not gsParamIpyData else gsParamIpyData.GetSkillReducePer3C())
    SkillReducePerD = attrDict.get(ShareDefine.Def_Effect_SkillReducePer4, 0) * (1 if not gsParamIpyData else gsParamIpyData.GetSkillReducePer4C())
    SkillReducePerE = attrDict.get(ShareDefine.Def_Effect_SkillReducePer5, 0) * (1 if not gsParamIpyData else gsParamIpyData.GetSkillReducePer5C())
    SkillReducePerF = attrDict.get(ShareDefine.Def_Effect_SkillReducePer6, 0) * (1 if not gsParamIpyData else gsParamIpyData.GetSkillReducePer6C())
    SkillReducePerG = attrDict.get(ShareDefine.Def_Effect_SkillReducePer7, 0) * (1 if not gsParamIpyData else gsParamIpyData.GetSkillReducePer7C())
    SkillAddPerA = 0#attrDict.get(ShareDefine.Def_Effect_SkillAddPer1, 0) * (1 if not gsParamIpyData else gsParamIpyData.GetSkillAddPer1C())
    SkillAddPerB = 0#attrDict.get(ShareDefine.Def_Effect_SkillAddPer2, 0) * (1 if not gsParamIpyData else gsParamIpyData.GetSkillAddPer2C())
    SkillAddPerC = 0#attrDict.get(ShareDefine.Def_Effect_SkillAddPer3, 0) * (1 if not gsParamIpyData else gsParamIpyData.GetSkillAddPer3C())
    SkillAddPerD = 0#attrDict.get(ShareDefine.Def_Effect_SkillAddPer4, 0) * (1 if not gsParamIpyData else gsParamIpyData.GetSkillAddPer4C())
    SkillAddPerE = 0#attrDict.get(ShareDefine.Def_Effect_SkillAddPer5, 0) * (1 if not gsParamIpyData else gsParamIpyData.GetSkillAddPer5C())
    SkillAddPerF = 0#attrDict.get(ShareDefine.Def_Effect_SkillAddPer6, 0) * (1 if not gsParamIpyData else gsParamIpyData.GetSkillAddPer6C())
    SkillAddPerG = 0#attrDict.get(ShareDefine.Def_Effect_SkillAddPer7, 0) * (1 if not gsParamIpyData else gsParamIpyData.GetSkillAddPer7C())
    SkillReducePerA = 0#attrDict.get(ShareDefine.Def_Effect_SkillReducePer1, 0) * (1 if not gsParamIpyData else gsParamIpyData.GetSkillReducePer1C())
    SkillReducePerB = 0#attrDict.get(ShareDefine.Def_Effect_SkillReducePer2, 0) * (1 if not gsParamIpyData else gsParamIpyData.GetSkillReducePer2C())
    SkillReducePerC = 0#attrDict.get(ShareDefine.Def_Effect_SkillReducePer3, 0) * (1 if not gsParamIpyData else gsParamIpyData.GetSkillReducePer3C())
    SkillReducePerD = 0#attrDict.get(ShareDefine.Def_Effect_SkillReducePer4, 0) * (1 if not gsParamIpyData else gsParamIpyData.GetSkillReducePer4C())
    SkillReducePerE = 0#attrDict.get(ShareDefine.Def_Effect_SkillReducePer5, 0) * (1 if not gsParamIpyData else gsParamIpyData.GetSkillReducePer5C())
    SkillReducePerF = 0#attrDict.get(ShareDefine.Def_Effect_SkillReducePer6, 0) * (1 if not gsParamIpyData else gsParamIpyData.GetSkillReducePer6C())
    SkillReducePerG = 0#attrDict.get(ShareDefine.Def_Effect_SkillReducePer7, 0) * (1 if not gsParamIpyData else gsParamIpyData.GetSkillReducePer7C())
    
    # 攻速不默认乘,仅作为参数提供策划使用
    AtkSpeed = attrDict.get(ShareDefine.Def_Effect_AtkSpeed, 0)
    AtkSpeedC = 1 if not gsParamIpyData else gsParamIpyData.GetAtkSpeedC()
    AtkSpeed = 0#attrDict.get(ShareDefine.Def_Effect_AtkSpeed, 0)
    AtkSpeedC = 1#1 if not gsParamIpyData else gsParamIpyData.GetAtkSpeedC()
    
    # 绝版
    outOfPrintAttrIDCnt = curItem.GetUserAttrCount(ShareDefine.Def_IudetOutOfPrintAttrID)
@@ -562,7 +569,7 @@
#  @return True or False
#  @remarks 函数详细说明.
def CheckItemByEffectID(curPlayer, curItem, effectList):
    if not CheckItemCanUse(curItem):
    if not CheckItemCanUse(curItem) or ItemControler.GetIsAuctionItem(curItem):
        return False
    
    if not ItemControler.CheckItemUseLV(curPlayer, curItem, False):
@@ -623,7 +630,7 @@
    for i in range(backPack.GetCount()):
        curItem = backPack.GetAt(i)
        
        if not CheckItemCanUse(curItem):
        if not CheckItemCanUse(curItem) or ItemControler.GetIsAuctionItem(curItem):
            continue
        
        if curItem.GetItemTypeID() != findItemID:
@@ -988,22 +995,6 @@
    
    return isExpireItem, remainingTime
##检查该物品是否合法,类型验证
# @param curItem 物品实例
# @param checkType 物品类型
# @return 布尔值(物品是否合法)
# @remarks 检查该物品是否合法,类型验证
def CheckItemByType(curItem, checkType):
    #验证材料
    if not CheckItemCanUse(curItem):
        return False
    #类型不符合
    if curItem.GetType() != checkType:
        return False
    return True
## 检查装备是否有镶嵌宝石
#  @param curItem 装备对象
#  @return True-有 
@@ -1180,7 +1171,7 @@
    for i in range(curItemPack.GetCount()):
        findItem = curItemPack.GetAt(i)
        
        if not CheckItemCanUse(findItem):
        if not CheckItemCanUse(findItem) or ItemControler.GetIsAuctionItem(findItem):
            continue
        
        #不使用绑定的材料
@@ -1223,7 +1214,7 @@
    for i in range(curItemPack.GetCount()):
        curItem = curItemPack.GetAt(i)
        
        if not CheckItemCanUse(curItem):
        if not CheckItemCanUse(curItem) or ItemControler.GetIsAuctionItem(curItem):
            continue
        
        #不使用绑定的材料
@@ -1262,7 +1253,7 @@
    for i in range(curItemPack.GetCount()):
        curItem = curItemPack.GetAt(i)
        
        if not CheckItemCanUse(curItem):
        if not CheckItemCanUse(curItem) or ItemControler.GetIsAuctionItem(curItem):
            continue
        
        if curItem.GetItemTypeID() != findItemID:
@@ -1304,7 +1295,7 @@
    for i in range(itemPack.GetCount()):
        curItem = itemPack.GetAt(i)
        #过滤不符合其他条件的物品
        if not CheckItemCanUse(curItem):
        if not CheckItemCanUse(curItem) or ItemControler.GetIsAuctionItem(curItem):
            continue
        
        if curItem.GetItemTypeID() != findItemID:
@@ -1346,7 +1337,7 @@
    for i in range(itemPack.GetCount()):
        curItem = itemPack.GetAt(i)
        #过滤不符合其他条件的物品
        if not CheckItemCanUse(curItem):
        if not CheckItemCanUse(curItem) or ItemControler.GetIsAuctionItem(curItem):
            continue
        
        if curItem.GetItemTypeID() != findItemID:
@@ -1392,7 +1383,7 @@
    for i in range(itemPack.GetCount()):
        curItem = itemPack.GetAt(i)
        #过滤不符合其他条件的物品
        if not CheckItemCanUse(curItem):
        if not CheckItemCanUse(curItem) or ItemControler.GetIsAuctionItem(curItem):
            continue
        
        if curItem.GetItemTypeID() != findItemID:
@@ -1436,7 +1427,7 @@
    curPack = curPlayer.GetItemManager().GetPack(packType)
    for i in range(0, curPack.GetCount()):
        curItem = curPack.GetAt(i)
        if not curItem:
        if not CheckItemCanUse(curItem) or ItemControler.GetIsAuctionItem(curItem):
            continue
        
        if curItem.GetItemTypeID() != itemID:
@@ -1539,7 +1530,7 @@
    for i in xrange(itemPack.GetCount()):
        curItem = itemPack.GetAt(i)
        #过滤不符合其他条件的物品
        if not CheckItemCanUse(curItem):
        if not CheckItemCanUse(curItem) or ItemControler.GetIsAuctionItem(curItem):
            continue
        curItemID = curItem.GetItemTypeID()
        if curItemID not in costItemDict:
@@ -1643,7 +1634,7 @@
    for index in range(0, itemPack.GetCount()):
        item = itemPack.GetAt(index)
        
        if not CheckItemCanUse(item):
        if not CheckItemCanUse(item) or ItemControler.GetIsAuctionItem(item):
            continue
        
        itemTypeID = item.GetItemTypeID()
@@ -1844,7 +1835,7 @@
        curItem = curItemPack.GetAt(i)
        
        #检查物品
        if not CheckItemCanUse(curItem):
        if not CheckItemCanUse(curItem) or ItemControler.GetIsAuctionItem(curItem):
            continue
        
        effect = curItem.GetEffectByIndex(0)
@@ -1978,7 +1969,7 @@
    classLV = GetItemClassLV(curItem)
    return maxStarDict[str(itemColor)].get(str(classLV), 0)
## 获取物品阶级
## 获取物品阶级或品级
def GetItemClassLV(curItem):
    return curItem.GetLV()
@@ -2011,13 +2002,14 @@
    if not curItem or curItem.IsEmpty():
        return {}
    
    isAuctionItem = ItemControler.GetIsAuctionItem(curItem)
    if not CheckItemIsEquip(curItem):
        return [curItem.GetItemTypeID(), curItem.GetCount(), curItem.GetIsBind()]
        return [curItem.GetItemTypeID(), curItem.GetCount(), isAuctionItem]
    
    addItemDict = {}
    addItemDict['ItemID'] = curItem.GetItemTypeID()
    addItemDict['Count'] = curItem.GetCount()
    addItemDict['IsAuctionItem'] = curItem.GetIsBind()
    addItemDict['IsAuctionItem'] = isAuctionItem
    #addItemDict['IsBind'] = int(curItem.GetIsBind())
    #addItemDict['EquipGS'] = GetEquipGearScore(curItem)
    #addItemDict['ItemStarLV'] = curItem.GetItemStarLV()
@@ -2078,12 +2070,29 @@
        itemDict["ItemID"] = itemInfo.GetItemTypeID()
        if itemInfo.GetCount() > 1:
            itemDict["Count"] = itemInfo.GetCount()
        if itemInfo.GetIsBind():
            itemDict["IsAuctionItem"] = int(itemInfo.GetIsBind())
        if ItemControler.GetIsAuctionItem(itemInfo):
            itemDict["IsAuctionItem"] = 1
        if itemInfo.GetUserData():
            itemDict["UserData"] = itemInfo.GetUserData()
    return itemDict
def GetWeightItemListByAlchemyDiffLV(curPlayer, weightList, alchemyDiffLV):
    ## 根据炼丹等级差异等级过滤权重列表中不满足的物品,返回新的权重列表
    resultWeightList = []
    if alchemyDiffLV:
        curAlchemyLV = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_AlchemyLV)
        for itemInfo in weightList:
            itemID = itemInfo[1][0]
            itemData = GameWorld.GetGameData().GetItemByTypeID(itemID)
            if not itemData:
                continue
            if GetItemClassLV(itemData) > curAlchemyLV + alchemyDiffLV:
                continue
            resultWeightList.append(itemInfo)
    else:
        resultWeightList = weightList
    return resultWeightList
## =======================================================================================
def SyncMakeItemAnswer(curPlayer, makeType, isSuccess, makeItemID):