From f27986d2eb32e3d2598d15b91c88479797ce5c72 Mon Sep 17 00:00:00 2001
From: hch <305670599@qq.com>
Date: 星期三, 13 三月 2019 17:48:37 +0800
Subject: [PATCH] 6328 【后端】优化代码eval - 二进制流 不能直接输出
---
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/UseItem/ItemCommon.py | 268 +++++++++++++++++++++++++++++++++++++++--------------
1 files changed, 196 insertions(+), 72 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 a6b1bad..cb736bb 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
@@ -29,7 +29,6 @@
import DataRecordPack
import EventReport
import ChItem
-import PlayerMergeEvent
import IpyGameDataPY
import Operate_EquipStone
import PlayerViewCacheTube
@@ -335,12 +334,14 @@
GameWorld.DebugLog("物品过期时间" + timeStr)
return GameWorld.ChangeTimeStrToNum(timeStr)
-
-## 创建物品
-# @param itemID 物品ID
-# @return curSingleItem
-# @remarks 函数详细说明.
-def CreateSingleItem(itemID, itemCount=1, isBind=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
@@ -373,11 +374,15 @@
return
curSingleItem.SetRemainHour(outTimeServerDay)
- if isBind:
+ if isAuctionItem:
+ curSingleItem.SetUserAttr(ShareDefine.Def_IudetAuctionItemCreateTime, int(time.time()))
curSingleItem.SetIsBind(1)
ItemControler.SetItemCount(curSingleItem, itemCount)
+ if expireTime > 0:
+ curSingleItem.SetUserAttr(ShareDefine.Def_IudetExpireTime, expireTime)
+
#这里返回的是SingleItem , 如果创建了,未使用,会找出C++内存泄露!!!
return curSingleItem
@@ -392,7 +397,9 @@
return
def CalcEquipGS(curItem):
- ##计算装备评分
+ '''计算装备评分
+ 评分组成:装备基础 + 传奇属性 + 绝版属性
+ '''
if not CheckNoteEquipGS(curItem):
#GameWorld.DebugLog("不设置装备评分")
return 0
@@ -408,25 +415,27 @@
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)
attrDict[attrID] = attrDict.get(attrID, 0) + attrValue
- MinAtk = attrDict.get(ShareDefine.Def_Effect_MinAtk, 0)
- MaxAtk = attrDict.get(ShareDefine.Def_Effect_MaxAtk, 0)
+ Atk = attrDict.get(ShareDefine.Def_Effect_Atk, 0)
+ MinAtk = attrDict.get(ShareDefine.Def_Effect_MinAtk, 0) + Atk
+ MaxAtk = attrDict.get(ShareDefine.Def_Effect_MaxAtk, 0) + Atk
MaxHP = attrDict.get(ShareDefine.Def_Effect_MaxHP, 0)
Def = attrDict.get(ShareDefine.Def_Effect_Def, 0)
ArmorDefPer = attrDict.get(ShareDefine.Def_Effect_ArmorDefAddPer, 0)
+ 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())
@@ -449,6 +458,23 @@
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())
+ 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())
# 攻速不默认乘,仅作为参数提供策划使用
AtkSpeed = attrDict.get(ShareDefine.Def_Effect_AtkSpeed, 0)
@@ -466,8 +492,25 @@
OnlyFinalHurt = attrDict.get(ShareDefine.Def_Effect_OnlyFinalHurt, 0)
PVPAtkBackHP = attrDict.get(ShareDefine.Def_Effect_PVPAtkBackHP, 0)
- value = eval(FormulaControl.GetCompileFormula("EquipGSFormula", IpyGameDataPY.GetFuncCfg("EquipGSFormula")))
+ if GetIsDogzEquip(curItem):
+ # 神兽装备用不同公式
+ value = eval(FormulaControl.GetCompileFormula("EquipGSFormula3", IpyGameDataPY.GetFuncCfg("EquipGSFormula", 3)))
+ elif GetIsZhuXianEquip(curItem):
+ value = eval(FormulaControl.GetCompileFormula("EquipGSFormula4", IpyGameDataPY.GetFuncCfg("EquipGSFormula", 4)))
+ else:
+ value = eval(FormulaControl.GetCompileFormula("EquipGSFormula", IpyGameDataPY.GetFuncCfg("EquipGSFormula")))
return value
+
+def GetZhuXianEquipTotalGS(curPlayer):
+ ##诛仙装备总评分
+ equipScoreTotal = 0
+ zhuXianEquipPack = curPlayer.GetItemManager().GetPack(ShareDefine.rptZhuXianEquip)
+ for equipIndex in xrange(zhuXianEquipPack.GetCount()):
+ curEquip = zhuXianEquipPack.GetAt(equipIndex)
+ if curEquip.IsEmpty():
+ continue
+ equipScoreTotal += GetEquipGearScore(curEquip)
+ return equipScoreTotal
#---------------------------------------------------------------------
## 通过效果ID,检查是否为指定物品
@@ -781,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
@@ -870,24 +912,56 @@
# 特殊判定根据时效时间判定物品是否可以使用
# 过期物品不能使用或装备但是可以出售续费
def CheckItemCanUseByExpireTime(curItem):
- curItemCreateTime = curItem.GetCreateTime()
- curItemExpireTime = curItem.GetExpireTime()
- curItemPastTime = GameWorld.GetPastSeconds(curItemCreateTime)
+# curItemCreateTime = curItem.GetCreateTime()
+# curItemExpireTime = curItem.GetExpireTime()
+# curItemPastTime = GameWorld.GetPastSeconds(curItemCreateTime)
+#
+# reduceType = curItem.GetEndureReduceType()
+# if reduceType == ChConfig.Def_EquipReduceType_RTimeItem and \
+# curItemPastTime >= curItemExpireTime:
+# # 过期了
+# return False
+#
+# if reduceType == ChConfig.Def_EquipReduceType_Time:
+# # 开始装备时间
+# startTime = curItem.GetUserAttr(ShareDefine.Def_IudetCreateTime)
+# if startTime == 0:
+# return True
+# if time.time() - startTime > curItemExpireTime:
+# return False
+ isExpireItem, expireTime = GetItemRemainingTime(curItem)
+ if isExpireItem:
+ if expireTime <= 0:
+ return False
+ return True
+
+def GetItemRemainingTime(curItem):
+ ''' 获取物品剩余时间,秒
+ @return: 是否时效物品, 剩余时间
+ '''
+
+ isExpireItem = False
reduceType = curItem.GetEndureReduceType()
- if reduceType == ChConfig.Def_EquipReduceType_RTimeItem and \
- curItemPastTime >= curItemExpireTime:
- # 过期了
- return False
+ remainingTime = 0
- if reduceType == ChConfig.Def_EquipReduceType_Time:
+ if reduceType in [ChConfig.Def_EquipReduceType_Time, ChConfig.Def_EquipReduceType_RTimeItem]:
+ isExpireItem = True
+ # 装备后开始计时
+ curItemExpireTime = curItem.GetUserAttr(ShareDefine.Def_IudetExpireTime)
+ if not curItemExpireTime:
+ curItemExpireTime = curItem.GetExpireTime()
+
# 开始装备时间
startTime = curItem.GetUserAttr(ShareDefine.Def_IudetCreateTime)
if startTime == 0:
- return True
- if time.time() - startTime > curItemExpireTime:
- return False
- return True
+ remainingTime = curItemExpireTime
+ else:
+ curItemPastTime = max(0, int(time.time()) - startTime)
+ remainingTime = max(0, curItemExpireTime - curItemPastTime)
+ return isExpireItem, remainingTime
+
+ return isExpireItem, remainingTime
##检查该物品是否合法,类型验证
# @param curItem 物品实例
@@ -1326,14 +1400,15 @@
return hasEnough, itemIndexList, findItemIsBind, needCnt
-def GetPackItemBindStateIndexInfo(curPlayer, itemID):
+def GetPackItemBindStateIndexInfo(curPlayer, itemID, needCount=0, packType=IPY_GameWorld.rptItem):
''' 获取背包消耗道具绑定及未绑定索引情况
+ @param needCount: 所需个数, 默认绑定优先,当找到已经足够的个数后不再遍历,减少无用遍历
@return: 可消耗物品列表[[绑定物品索引], [不绑定物品索引]], 绑定个数, 未绑定个数
'''
consumeItemIndexList = [[], []] # 可消耗物品列表[[绑定物品索引], [不绑定物品索引]]
bindCnt, unBindCnt = 0, 0
- curPack = curPlayer.GetItemManager().GetPack(IPY_GameWorld.rptItem)
+ curPack = curPlayer.GetItemManager().GetPack(packType)
for i in range(0, curPack.GetCount()):
curItem = curPack.GetAt(i)
if not curItem:
@@ -1348,6 +1423,8 @@
if curItem.GetIsBind():
consumeItemIndexList[0].append(i)
bindCnt += itemCount
+ if needCount > 0 and bindCnt >= needCount:
+ break
else:
consumeItemIndexList[1].append(i)
unBindCnt += itemCount
@@ -1409,11 +1486,6 @@
#系统提示 LostRes 失去物品
#if needSysmsg:
# PlayerControl.NotifyCode(curPlayer, 'LostRes', [itemTypeID, totalUseCnt])
-
- #添加跨服服务器中使用物品事件
- if itemTypeID in ReadChConfig.GetEvalChConfig("MergeServerCanUseItemID"):
- eventInfo = [itemTypeID, totalUseCnt, makeItemBind, eventName, saveDataDict]
- PlayerMergeEvent.AddMSPlayerEvent(curPlayer.GetPlayerID(), PlayerMergeEvent.Def_MSPEvent_DelItem, eventInfo)
return makeItemBind
def GetCostItemIndexList(costItemInfo, itemPack, bindFirst=True):
@@ -1502,7 +1574,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()
@@ -1633,11 +1716,11 @@
# @remarks 函数详细说明.
def SwitchItem(curPlayer, curItem, switchItem, putInPackIndex):
##物品绑定字段判定 -> 装备绑定
- if putInPackIndex == IPY_GameWorld.rptEquip:
+ if putInPackIndex in [IPY_GameWorld.rptEquip, ShareDefine.rptZhuXianEquip]:
DoLogic_ItemBindType(curPlayer, switchItem, ChConfig.Def_BindType_DoEquipBind)
# 装备技能书、坐骑装备绑定
- if putInPackIndex in [IPY_GameWorld.rptHorseEquip]:
+ if putInPackIndex in [IPY_GameWorld.rptHorseEquip, ShareDefine.rptZhuXianEquip]:
DoLogic_ItemBindType(curPlayer, curItem, ChConfig.Def_BindType_DoEquipBind)
#交换装备
@@ -1658,11 +1741,11 @@
return
##物品绑定字段判定 -> 装备绑定
- if putInPackIndex == IPY_GameWorld.rptEquip:
+ if putInPackIndex in [IPY_GameWorld.rptEquip, ShareDefine.rptZhuXianEquip]:
DoLogic_ItemBindType(curPlayer, switchItem, ChConfig.Def_BindType_DoEquipBind)
# 装备技能书、坐骑装备绑定
- if putInPackIndex in [IPY_GameWorld.rptHorseEquip]:
+ if putInPackIndex in [IPY_GameWorld.rptHorseEquip, ShareDefine.rptZhuXianEquip]:
DoLogic_ItemBindType(curPlayer, emptyItem, ChConfig.Def_BindType_DoEquipBind)
if switchItem.GetGameWorldItemType() == IPY_GameWorld.gwitRoleItem:
@@ -1684,6 +1767,10 @@
def GetIsDogzEquip(curItem):
## 返回是否神兽装备
return curItem.GetType() in ChConfig.Def_DogzEquiipType
+
+def GetIsZhuXianEquip(curItem):
+ ## 返回是否诛仙装备
+ return curItem.GetType() in ChConfig.Def_ZhuXianEquiipType
## 返回是否武器
# @param curItem 当前物品
@@ -1798,11 +1885,6 @@
ItemControler.SetItemCount(curItem, curItemCnt - delCnt,
curPlayer.GetPlayerID(), curPlayer.GetAccID(),
curPlayer.GetPlayerName())
-
- #添加跨服服务器中使用物品事件
- if curItemTypeID in ReadChConfig.GetEvalChConfig("MergeServerCanUseItemID"):
- eventInfo = [curItemTypeID, delCnt, curItemBind, recordName, saveDataDict]
- PlayerMergeEvent.AddMSPlayerEvent(curPlayer.GetPlayerID(), PlayerMergeEvent.Def_MSPEvent_DelItem, eventInfo)
return
def DelVPackItem(curPlayer, packIndex, placeList, eventName=""):
@@ -1824,6 +1906,13 @@
itemName = str(itemID) if not curItemData else curItemData.GetName()
itemName = "%s LV%s" % (itemName, plusLV + 1)
isNeedRecord = curItemData and ItemControler.IsRuneItemNeedRecord(curItemData, plusLV)
+ if packIndex == ShareDefine.rptGatherSoul:
+ itemID = ItemControler.GetGatherSoulItemID(itemKeyData)
+ plusLV = ItemControler.GetGatherSoulItemPlusLV(itemKeyData)
+ curItemData = GameWorld.GetGameData().GetItemByTypeID(itemID)
+ itemName = str(itemID) if not curItemData else curItemData.GetName()
+ itemName = "%s LV%s" % (itemName, plusLV + 1)
+ isNeedRecord = curItemData and ItemControler.IsGatherSoulItemNeedRecord(curItemData, plusLV)
PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_VPackItem % (packIndex, place), 0)
if isNeedRecord:
@@ -1832,32 +1921,59 @@
ItemControler.Sync_VPackItem_Clear(curPlayer, packIndex, placeList)
return
-## 获取物品最高强化星级
+## 获取物品最高强化等级
# @param itemType: 物品类型
# @return 最大星级,0为不可强化
-def GetItemMaxStarLV(curItem):
+def GetItemMaxPlusLV(curPlayer, equipPackindex, curItem):
+ findType = ChEquip.GetEquipPlusType(curItem)
+ if not findType:
+ return 0
+ equipStar = ChEquip.GetEquipPartStarByRank(curPlayer, equipPackindex, curItem)
+ ipyData = IpyGameDataPY.GetIpyGameDataNotLog("ItemPlusMax", findType, equipStar)
+ if ipyData:
+ 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()
- plusMaxTypeDict = IpyGameDataPY.GetFuncEvalCfg("StrengthenLevelLimit", 1)
- if not plusMaxTypeDict:
- GameWorld.ErrLog("GetItemMaxStarLV没有强化类型映射表")
+ ipyDataList = IpyGameDataPY.GetIpyGameDataByCondition('EquipPlusEvolve', {'EquipPlace':equipPlace}, True)
+ if not ipyDataList:
return 0
-
- if equipPlace not in plusMaxTypeDict:
+ 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
- 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
-
- return ipyData.GetLevelMax()
+ classLV = GetItemClassLV(curItem)
+ return maxStarDict[str(itemColor)].get(str(classLV), 0)
## 获取物品阶级
def GetItemClassLV(curItem):
@@ -1875,6 +1991,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()
## 每周可使用次数, 预留,暂不实现
@@ -1891,7 +2014,8 @@
addItemDict = {}
addItemDict['ItemID'] = curItem.GetItemTypeID()
addItemDict['Count'] = curItem.GetCount()
- addItemDict['IsBind'] = int(curItem.GetIsBind())
+ addItemDict['IsAuctionItem'] = curItem.GetIsBind()
+ #addItemDict['IsBind'] = int(curItem.GetIsBind())
#addItemDict['EquipGS'] = GetEquipGearScore(curItem)
#addItemDict['ItemStarLV'] = curItem.GetItemStarLV()
#addItemDict['CurDurg'] = GameWorld.GetIntUpper(curItem.GetCurDurg(), ChConfig.Def_EndureRepairParameter)
@@ -1915,7 +2039,7 @@
#addItemDict['EquipMaxAtkValue'] = curItem.GetEquipMaxAtkValue()
#addItemDict['FitLV'] = curItem.GetFitLV()
#addItemDict['Proficiency'] = curItem.GetProficiency()
- addItemDict['IsSuite'] = int(curItem.GetIsSuite())
+ #addItemDict['IsSuite'] = int(curItem.GetIsSuite())
#addItemDict['BaseHP'] = curItem.GetBaseHP()
#addItemDict['BaseMagicDef'] = curItem.GetBaseMagicDef()
#addItemDict['MaxAddSkillCnt'] = curItem.GetMaxAddSkillCnt()
--
Gitblit v1.8.0