From 30a717db9c6986126a1ca66c2c4565738cfd2099 Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期四, 07 三月 2019 19:23:04 +0800
Subject: [PATCH] 6332 【后端】【2.0】主要是拍品相关规则调整及背包优化(GivePlayerItem 删除无用参数)

---
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/UseItem/ItemCommon.py |   90 +++++++++++++++++++++++++++++++++------------
 1 files changed, 66 insertions(+), 24 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 31ad3a8..41b244d 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
@@ -334,12 +334,14 @@
     GameWorld.DebugLog("物品过期时间" + timeStr)
     return GameWorld.ChangeTimeStrToNum(timeStr)
 
-
-## 创建物品
-#  @param itemID 物品ID
-#  @return curSingleItem
-#  @remarks 函数详细说明.
-def CreateSingleItem(itemID, itemCount=1, isBind=1, expireTime=0):
+def CreateSingleItem(itemID, itemCount=1, isAuctionItem=False, expireTime=0):
+    ''' 创建物品
+    @param isAuctionItem: 是否拍品,默认非拍品
+    @param expireTime: 有效时间,时间单位由时效类型决定
+    '''
+    if itemCount < 1:
+        GameWorld.ErrLog("创建物品个数不能少于1! itemID=%s,itemCount=%s" % (itemID, itemCount))
+        return
     curSingleItem = GameWorld.GetItemFactory().CreateItem(itemID)
     if not curSingleItem:
         return
@@ -372,6 +374,7 @@
             return
         curSingleItem.SetRemainHour(outTimeServerDay)
         
+    isBind = not isAuctionItem
     if isBind:
         curSingleItem.SetIsBind(1)
         
@@ -821,9 +824,8 @@
     userData = curItem.GetUserData()
     notifyList[4] = userData if (userData and userData != "{}") else ""
     notifyList[5] =  place
-    suiteInfo = PlayerViewCacheTube.__GetEquipPartSuiteInfo(curPlayer)
-    notifyList[6] = "" if not suiteInfo else json.dumps(suiteInfo, ensure_ascii=False)
-    notifyList[7] = ChEquip.GetEquipPartStarLV(curPlayer, IPY_GameWorld.rptEquip, place)
+    notifyList[6] = "" 
+    notifyList[7] = ChEquip.GetEquipPartPlusLV(curPlayer, IPY_GameWorld.rptEquip, place)
     
     # 单部位洗练信息
     washLV = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_EquipWashLV % place) + 1
@@ -1919,32 +1921,65 @@
     ItemControler.Sync_VPackItem_Clear(curPlayer, packIndex, placeList)
     return
 
-## 获取物品最高强化星级
+## 获取物品最高强化等级
 #  @param itemType: 物品类型
 #  @return 最大星级,0为不可强化
-def GetItemMaxStarLV(curItem):
+def GetItemMaxPlusLV(curPlayer, equipPackindex, curItem):
     equipPlace = curItem.GetEquipPlace()
     plusMaxTypeDict = IpyGameDataPY.GetFuncEvalCfg("StrengthenLevelLimit", 1)
     if not plusMaxTypeDict:
-        GameWorld.ErrLog("GetItemMaxStarLV没有强化类型映射表")
+        GameWorld.ErrLog("GetItemMaxPlusLV没有强化类型映射表")
         return 0
     
     if equipPlace not in plusMaxTypeDict:
         return 0
     findType = plusMaxTypeDict[equipPlace]
-    #仙器特殊取固定值
-    if equipPlace in [ShareDefine.retFairyCan, ShareDefine.retFairyCan2]:
-        rank = 0
-        itemColor = 0
-    else:
-        rank = GetItemClassLV(curItem)
-        itemColor = curItem.GetItemColor()
-    ipyData = IpyGameDataPY.GetIpyGameData("ItemPlusMax", findType, rank, itemColor)
-    if not ipyData:
-        GameWorld.ErrLog("找不到装备强化等级上限表数据配置! rank = %s, %s" % (rank , curItem.GetItemQuality()))
-        return
+    equipStar = ChEquip.GetEquipPartStarByRank(curPlayer, equipPackindex, curItem)
+    ipyData = IpyGameDataPY.GetIpyGameDataNotLog("ItemPlusMax", findType, equipStar)
+    if ipyData:
+        return ipyData.GetLevelMax()
     
-    return ipyData.GetLevelMax()
+    ipyDataList = IpyGameDataPY.GetIpyGameDataByCondition('ItemPlusMax', {'Type':findType}, True, False)
+    if not ipyDataList:
+        return 0
+    maxStar = ipyDataList[-1].GetStar()
+    if equipStar > maxStar:
+        return ipyDataList[-1].GetLevelMax()
+    findMax = 0
+    for ipyData in ipyDataList:
+        if equipStar >= ipyData.GetStar():
+            findMax = ipyData.GetLevelMax()
+    return findMax
+    
+
+## 获取物品最高强化进化等级
+#  @param itemType: 物品类型
+#  @return 最大星级,0为不可强化
+def GetItemMaxPlusEvolveLV(curPlayer, equipPackindex, curItem):
+    packType = IPY_GameWorld.rptEquip
+    curPlusLV = ChEquip.GetEquipPartPlusLVByRank(curPlayer, packType, equipPackindex, curItem)
+    equipPlace = curItem.GetEquipPlace()
+    ipyDataList = IpyGameDataPY.GetIpyGameDataByCondition('EquipPlusEvolve', {'EquipPlace':equipPlace}, True)
+    if not ipyDataList:
+        return 0
+    maxEvolvelv = 0
+    for ipyData in ipyDataList:
+        if curPlusLV >= ipyData.GetNeedPlusLV():
+            maxEvolvelv = ipyData.GetEvolveLV()
+        else:
+            break
+    return maxEvolvelv
+
+## 获取物品最高星数
+#  @param itemType: 物品类型
+#  @return 最大星级,0为不可强化
+def GetItemMaxStar(curItem):
+    itemColor = curItem.GetItemColor()
+    maxStarDict = IpyGameDataPY.GetFuncEvalCfg('EquipPartStar', 1)
+    if str(itemColor) not in maxStarDict:
+        return 0
+    classLV = GetItemClassLV(curItem)
+    return maxStarDict[str(itemColor)].get(str(classLV), 0)
 
 ## 获取物品阶级
 def GetItemClassLV(curItem):
@@ -1962,6 +1997,13 @@
 def SetEquipGearScore(curItem, value):
     return curItem.SetGearScore(value)
 
+def GetEquipPackIndex(curItem):
+    ## 根据物品获取对应的可装备背包位置
+    ipyData = IpyGameDataPY.GetIpyGameData('EquipPlaceIndexMap', GetItemClassLV(curItem), curItem.GetEquipPlace())
+    if not ipyData:
+        return -1
+    return ipyData.GetGridIndex()
+
 ## 每日可使用次数
 def GetCanUseCountDaily(curItem): return curItem.GetMaxAddSkillCnt()
 ## 每周可使用次数, 预留,暂不实现

--
Gitblit v1.8.0