6332 【后端】【2.0】主要是拍品相关规则调整及背包优化(是否绑定改为是否拍品)
| | |
| | | curItemData.ItemID = curItemDict['ItemID']
|
| | | curItemData.Count = curItemDict['Count']
|
| | | #curItemData.IsBind = curItemDict.get('IsBind',0)
|
| | | curItemData.IsBind = 1 if not curItemDict.get('IsAuctionItem',0) else 0
|
| | | curItemData.IsBind = curItemDict.get('IsAuctionItem',0)
|
| | | curItemData.UserData = curItemDict.get('UserData', '')
|
| | | return curItemData
|
| | |
|
| | |
| | | GameWorld.DebugAnswer(curPlayer, "非装备无法获得传奇属性!")
|
| | | return
|
| | |
|
| | | if not curItem.GetIsBind():
|
| | | if curItem.GetIsBind():
|
| | | GameWorld.DebugAnswer(curPlayer, "拍品无法生成传奇属性!")
|
| | | return
|
| | |
|
| | |
| | | continue
|
| | | itemDict['ItemID'] = itemInfo.GetItemTypeID()
|
| | | itemDict['Count'] = itemInfo.GetCount()
|
| | | itemDict['IsAuctionItem'] = 0 if itemInfo.GetIsBind() else 1
|
| | | itemDict['IsAuctionItem'] = itemInfo.GetIsBind()
|
| | | #itemDict['IsSuite'] = int(itemInfo.GetIsSuite())
|
| | | itemDict['UserData'] = itemInfo.GetUserData()
|
| | | jsonItemList.append(itemDict)
|
| | |
| | | return False
|
| | | playerItemControl = ItemControler.PlayerItemControler(curPlayer)
|
| | |
|
| | | if curItem.GetIsBind():
|
| | | GameWorld.DebugLog("拍品无法穿戴!")
|
| | | return False
|
| | | |
| | | #---验证是否可以换这件装备---
|
| | | if not ItemCommon.CheckItemCanUse(curItem):
|
| | | return False
|
| | |
| | | return
|
| | |
|
| | | # 使用拍品
|
| | | if not curItem.GetIsBind():
|
| | | if curItem.GetIsBind():
|
| | | DoLogic_PlayerUseAuctionItem(curPlayer, curItem)
|
| | | return
|
| | |
|
| | |
| | | playerID = curPlayer.GetPlayerID()
|
| | | itemID = curItem.GetItemTypeID()
|
| | |
|
| | | curItem.SetIsBind(1) # 设置为非拍品
|
| | | curItem.SetIsBind(0) # 设置为非拍品
|
| | | curItem.ClearUserAttr(ShareDefine.Def_IudetAuctionItemCreateTime)
|
| | | GameWorld.DebugLog("玩家使用拍品: itemID=%s" % (itemID), playerID)
|
| | |
|
| | |
| | | # @remarks 函数详细说明.
|
| | | def CanPackItemByItemType(srcItemID, srcItemIsBind, destItemID, destItemIsBind):
|
| | | ## 拍品项目,只有非拍品可堆叠,即绑定物品
|
| | | if srcItemID == destItemID and srcItemIsBind == destItemIsBind and srcItemIsBind:
|
| | | if srcItemID == destItemID and srcItemIsBind == destItemIsBind and not srcItemIsBind:
|
| | | return True
|
| | | return False
|
| | |
|
| | |
| | | packIndex = ChConfig.GetItemPackType(curItemData.GetType(), packIndex)
|
| | |
|
| | | tagItemCount = GetItemCount(tagItem)
|
| | | isBind = tagItem.GetIsBind()
|
| | | isAuctionItem = not isBind
|
| | | isAuctionItem = tagItem.GetIsBind()
|
| | | if not self.CanPutInItem(packIndex, tagItem.GetItemTypeID(), tagItemCount, isAuctionItem, defaultPile):
|
| | | GameWorld.DebugLog("背包满,不能放入物品 count = %d"%GetItemCount(tagItem))
|
| | | tagItem.Clear()
|
| | |
| | | GameWorld.Log("找不到ItemID = %d" % curItemID)
|
| | | return False, 0
|
| | |
|
| | | isBind = True
|
| | | if curItemID in ChConfig.Def_TransformItemIDList:
|
| | | # 货币直接转换的物品如果是放入背包的则直接转化,无需暂用格子
|
| | | if packIndex == IPY_GameWorld.rptItem:
|
| | |
| | | elif isAuctionItem:
|
| | | maxPackCount = curItemCount
|
| | | defaultPile = False # 新放入的拍品只能放空位置,所以不判断堆叠
|
| | | isBind = False
|
| | | else:
|
| | | maxPackCount = curItemData.GetPackCount()
|
| | |
|
| | |
| | | if item.GetIsLocked():
|
| | | continue
|
| | |
|
| | | if (CanPackItemByItemType(item.GetItemTypeID(), item.GetIsBind(), curItemID, isBind) and
|
| | | if (CanPackItemByItemType(item.GetItemTypeID(), item.GetIsBind(), curItemID, isAuctionItem) and
|
| | | maxPackCount > GetItemCount(item)):
|
| | | #该物品锁定不执行==============================================
|
| | | #可堆叠
|
| | |
| | | #curItemGUID = curItem.GetGUID()
|
| | | curItemCount = curItem.GetCount()
|
| | | #curItemIsBind = curItem.GetIsBind()
|
| | | isAuctionItem = 0 if curItem.GetIsBind() else 1
|
| | | isAuctionItem = curItem.GetIsBind()
|
| | | #toPackIndex = ChConfig.GetItemPackType(curItem.GetType(), toPackIndex)
|
| | |
|
| | | # 常规物品转移到虚拟符印背包
|
| | |
| | | #tmpEquipData.starLV = int(itemData.get('StarLV', '0'))
|
| | | #tmpEquipData.holeCnt = int(itemData.get('HoleCount', '0'))
|
| | | #tmpEquipData.stoneData = eval(itemData.get('StoneData', '[]'))
|
| | | tmpEquipData.isBind = 1 if not isAuctionItem else 0
|
| | | tmpEquipData.isBind = isAuctionItem
|
| | | #tmpEquipData.isSuite = int(itemData.get('IsSuit', '0'))
|
| | | #tmpEquipData.suiteLV = int(itemData.get('SuiteLV', '0'))
|
| | | #if tmpEquipData.suiteLV:
|
| | |
| | | '''获取生成到装备上的传奇属性
|
| | | @return: None 或者 [[传奇属性效果ID列表], [属性值列表]]
|
| | | '''
|
| | | if not curItem.GetIsBind():
|
| | | if curItem.GetIsBind():
|
| | | #GameWorld.DebugLog("拍品无法生成传奇属性!")
|
| | | return
|
| | | itemID = curItem.GetItemTypeID()
|
| | |
| | |
|
| | | if isAuctionItem:
|
| | | curSingleItem.SetUserAttr(ShareDefine.Def_IudetAuctionItemCreateTime, int(time.time()))
|
| | | else:
|
| | | curSingleItem.SetIsBind(1) |
| | | curSingleItem.SetIsBind(1)
|
| | |
|
| | | ItemControler.SetItemCount(curSingleItem, itemCount)
|
| | |
|
| | |
| | | addItemDict = {}
|
| | | addItemDict['ItemID'] = curItem.GetItemTypeID()
|
| | | addItemDict['Count'] = curItem.GetCount()
|
| | | addItemDict['IsAuctionItem'] = 0 if curItem.GetIsBind() else 1
|
| | | addItemDict['IsAuctionItem'] = curItem.GetIsBind()
|
| | | #addItemDict['IsBind'] = int(curItem.GetIsBind())
|
| | | #addItemDict['EquipGS'] = GetEquipGearScore(curItem)
|
| | | #addItemDict['ItemStarLV'] = curItem.GetItemStarLV()
|
| | |
| | | #self.__SetItemProtect(curMapItem, dropType, ownerID)
|
| | | return
|
| | |
|
| | | def __CreateDropItem(self, curNPC, itemID, count, isBind, dropPlayer):
|
| | | def __CreateDropItem(self, curNPC, itemID, count, isAuctionItem, dropPlayer):
|
| | | ## 创建掉落的物品
|
| | | if not isBind and not IpyGameDataPY.GetIpyGameDataNotLog("AuctionItem", itemID):
|
| | | isBind = 1
|
| | | isAuctionItem = not isBind
|
| | | if isAuctionItem and not IpyGameDataPY.GetIpyGameDataNotLog("AuctionItem", itemID):
|
| | | isAuctionItem = 0
|
| | | curItem = ItemControler.GetOutPutItemObj(itemID, count, isAuctionItem, curPlayer=dropPlayer)
|
| | | if not curItem:
|
| | | return
|
| | |
| | | curItem = playerPack.GetAt(itemIndex)
|
| | | if curItem.IsEmpty():
|
| | | return
|
| | | if curItem.GetIsBind():
|
| | | if not curItem.GetIsBind():
|
| | | GameWorld.Log("非拍品,绑定无法上架!", playerID)
|
| | | return
|
| | | itemGUID = curItem.GetGUID()
|
| | |
| | | curItem = playerPack.GetAt(itemIndex)
|
| | | if curItem.IsEmpty():
|
| | | return
|
| | | if curItem.GetIsBind():
|
| | | if not curItem.GetIsBind():
|
| | | GameWorld.Log("非拍品,无法上架!", playerID)
|
| | | return
|
| | | curItemGUID = curItem.GetGUID()
|
| | |
| | | if curPlayer and not familyID:
|
| | | ItemCommon.DelItem(curPlayer, curItem, curItem.GetCount())
|
| | | else:
|
| | | if curItem.GetIsBind():
|
| | | if not curItem.GetIsBind():
|
| | | GameWorld.Log("非拍品,绑定无法上架!", playerID)
|
| | | curItem.Clear()
|
| | | continue
|
| | |
| | | if not curItemData:
|
| | | continue
|
| | |
|
| | | isAuctionItem = not curPackItem.IsBind
|
| | | isAuctionItem = curPackItem.IsBind
|
| | | packType = ChConfig.GetItemPackType(curItemData.GetType())
|
| | | needSpace = ItemControler.GetItemNeedPackCount(packType, curItemData, curPackItem.Count, isAuctionItem)
|
| | | needPackSpaceDict[packType] = needPackSpaceDict.get(packType, 0) + needSpace
|
| | |
| | | for i in xrange(curPackData.Count):
|
| | | curPackItem = curPackData.Items[i]
|
| | | itemID = curPackItem.ItemID
|
| | | isAuctionItem = not curPackItem.IsBind and not auctionItemTimeout
|
| | | isAuctionItem = curPackItem.IsBind and not auctionItemTimeout
|
| | | if ItemControler.GetAppointItemRealID(itemID):
|
| | | curCreateItem = ItemControler.GetItemByData(ItemControler.GetAppointItemDictData(itemID, isAuctionItem))
|
| | | else:
|