6332 【后端】【2.0】主要是拍品相关规则调整及背包优化(使用拍品数据同步优化)
| | |
| | | itemID = curItem.GetItemTypeID()
|
| | |
|
| | | curItem.SetIsBind(0) # 设置为非拍品
|
| | | curItem.ClearUserAttr(ShareDefine.Def_IudetAuctionItemCreateTime)
|
| | | GameWorld.DebugLog("玩家使用拍品: itemID=%s" % (itemID), playerID)
|
| | |
|
| | | if ItemCommon.GetIsEquip(curItem):
|
| | |
| | | GameWorld.ErrLog("使用装备拍品没有传奇属性!itemID=%s" % (itemID), playerID)
|
| | | return
|
| | | attrIDList, attrValueList = legendAttrInfo
|
| | | # 传奇属性
|
| | | if attrIDList and attrValueList and len(attrIDList) == len(attrValueList):
|
| | | curItem.ClearUserAttr(ShareDefine.Def_IudetLegendAttrID)
|
| | | curItem.ClearUserAttr(ShareDefine.Def_IudetLegendAttrValue)
|
| | | for i, attrID in enumerate(attrIDList):
|
| | | value = attrValueList[i]
|
| | | curItem.AddUserAttr(ShareDefine.Def_IudetLegendAttrID, attrID)
|
| | | curItem.AddUserAttr(ShareDefine.Def_IudetLegendAttrValue, value)
|
| | | ItemCommon.MakeEquipGS(curItem)
|
| | | updateDict = {ShareDefine.Def_IudetLegendAttrID:attrIDList, ShareDefine.Def_IudetLegendAttrValue:attrValueList}
|
| | | delKeyList = [ShareDefine.Def_IudetAuctionItemCreateTime]
|
| | | ItemCommon.UpdateItemUserData(curItem, updateDict, delKeyList, isUpdateGS=True)
|
| | |
|
| | | return
|
| | |
|
| | |
| | | #这里返回的是SingleItem , 如果创建了,未使用,会找出C++内存泄露!!!
|
| | | return curSingleItem
|
| | |
|
| | | def UpdateItemUserData(curItem, updateDict={}, delKeyList=[], isUpdateGS=False):
|
| | | ''' 更新物品UserData数据
|
| | | @param curItem: IPY_SingleItem 或 IPY_RoleItem
|
| | | @param updateDict: 需要更新的数据 {key:value, key:valueList, ...}
|
| | | @param delKeyList: 需要删除的数据 key列表[key, ...]
|
| | | @param isUpdateGS: 是否更新评分
|
| | | @note: UserData格式举例 {'17':['65','7','52'],'50':['0'],'19':['420','380','50'],'50':['1552728662']}
|
| | | '''
|
| | | |
| | | isRoleItem = False
|
| | | if not hasattr(curItem, "SetUserData"):
|
| | | item = curItem.GetItem()
|
| | | isRoleItem = True
|
| | | else:
|
| | | item = curItem
|
| | | userData = item.GetUserData()
|
| | | if not userData:
|
| | | userDataDict = {}
|
| | | else:
|
| | | userDataDict = eval(userData)
|
| | | |
| | | for delKey in delKeyList:
|
| | | userDataDict.pop(str(delKey), None)
|
| | | |
| | | for key, value in updateDict.items():
|
| | | if type(value) == int:
|
| | | valueList = ['%s' % value]
|
| | | elif type(value) == list:
|
| | | valueList = ['%s' % v for v in value]
|
| | | userDataDict['%s' % key] = valueList
|
| | | |
| | | UserData = str(userDataDict).replace(" ", "")
|
| | | item.SetUserData(UserData, len(UserData))
|
| | | if isUpdateGS:
|
| | | MakeEquipGS(curItem)
|
| | | elif isRoleItem:
|
| | | curItem.SetIsBind(curItem.GetIsBind()) # 为了触发物品同步
|
| | | return
|
| | |
|
| | | def MakeEquipGS(curItem):
|
| | | if not CheckNoteEquipGS(curItem):
|