From 9608b7eef80ecef4f92b7fa77b17cdc0d9b89635 Mon Sep 17 00:00:00 2001
From: xdh <xiefantasy@qq.com>
Date: 星期六, 24 十一月 2018 15:08:07 +0800
Subject: [PATCH] 4715 冰晶矿脉修改(退出清BUFF,特殊怪通关副本)

---
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/UseItem/ItemCommon.py |   27 ++++++++++++++++++++-------
 1 files changed, 20 insertions(+), 7 deletions(-)

diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/UseItem/ItemCommon.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/UseItem/ItemCommon.py
index 4a9bff8..5c450f6 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/UseItem/ItemCommon.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/UseItem/ItemCommon.py
@@ -410,15 +410,14 @@
             break
         attrDict[effectID] = attrDict.get(effectID, 0) + curEffect.GetEffectValue(0)
         
-    gsParamIpyData = None
+    classLV = GetItemClassLV(curItem)
+    color = curItem.GetItemColor()
+    itemQuality = curItem.GetItemQuality()
+    gsParamIpyData = IpyGameDataPY.GetIpyGameData("EquipGSParam", classLV, color, itemQuality)
     # 传奇属性
     legendAttrIDCnt = curItem.GetUserAttrCount(ShareDefine.Def_IudetLegendAttrID)
     legendAttrValueCnt = curItem.GetUserAttrCount(ShareDefine.Def_IudetLegendAttrValue)
     if legendAttrIDCnt and legendAttrIDCnt == legendAttrValueCnt:
-        classLV = GetItemClassLV(curItem)
-        color = curItem.GetItemColor()
-        itemQuality = curItem.GetItemQuality()
-        gsParamIpyData = IpyGameDataPY.GetIpyGameData("EquipGSParam", classLV, color, itemQuality)
         for i in xrange(legendAttrIDCnt):
             attrID = curItem.GetUserAttrByIndex(ShareDefine.Def_IudetLegendAttrID, i)
             attrValue = curItem.GetUserAttrByIndex(ShareDefine.Def_IudetLegendAttrValue, i)
@@ -1338,8 +1337,9 @@
     return hasEnough, itemIndexList, findItemIsBind, needCnt
 
 
-def GetPackItemBindStateIndexInfo(curPlayer, itemID):
+def GetPackItemBindStateIndexInfo(curPlayer, itemID, needCount=0):
     ''' 获取背包消耗道具绑定及未绑定索引情况
+    @param needCount: 所需个数, 默认绑定优先,当找到已经足够的个数后不再遍历,减少无用遍历
     @return: 可消耗物品列表[[绑定物品索引], [不绑定物品索引]], 绑定个数, 未绑定个数
     '''
     consumeItemIndexList = [[], []] # 可消耗物品列表[[绑定物品索引], [不绑定物品索引]]
@@ -1360,6 +1360,8 @@
         if curItem.GetIsBind():
             consumeItemIndexList[0].append(i)
             bindCnt += itemCount
+            if needCount > 0 and bindCnt >= needCount:
+                break
         else:
             consumeItemIndexList[1].append(i)
             unBindCnt += itemCount
@@ -1514,7 +1516,18 @@
 
 def GetShopItemPrice(itemID, priceType):
     ''' 获取商城物品对应价格 '''
-    ipyData = IpyGameDataPY.GetIpyGameDataByCondition("Store", {"ItemID":itemID, "MoneyType":priceType}, isLogNone=False)
+    # 系统固定商店类型: 仙玉(2-常用道具,3-成长变强),绑玉(4-绑玉商城)
+    priceTypeShopTypeDict = {IPY_GameWorld.TYPE_Price_Gold_Money:[2, 3],
+                             IPY_GameWorld.TYPE_Price_Gold_Paper:[4],
+                             }
+    ipyData = None
+    if priceType in priceTypeShopTypeDict:
+        for shopType in priceTypeShopTypeDict[priceType]:
+            ipyData = IpyGameDataPY.GetIpyGameDataByCondition("Store", {"ShopType":shopType, "ItemID":itemID, "MoneyType":priceType}, isLogNone=False)
+            if ipyData:
+                break
+    else:
+        ipyData = IpyGameDataPY.GetIpyGameDataByCondition("Store", {"ItemID":itemID, "MoneyType":priceType}, isLogNone=False)
     if not ipyData:
         return 0
     return ipyData.GetMoneyNum()

--
Gitblit v1.8.0