| | |
| | | self.__CrossServerPutInItem(packIndex, tagItem, event)
|
| | | tagItem.Clear()
|
| | | return True
|
| | | packIndex = ChConfig.GetItemPackType(curItemData.GetType(), packIndex)
|
| | | packIndex = ChConfig.GetItemPackType(curItemData, packIndex)
|
| | |
|
| | | tagItemCount = GetItemCount(tagItem)
|
| | | isAuctionItem = GetIsAuctionItem(tagItem)
|
| | |
| | | GameWorld.DebugLog("传奇属性异常,重新刷新一次属性: packType=%s,itemID=%s,srcScore=%s,updScore=%s"
|
| | | % (packType, curItem.GetItemTypeID(), srcScore, updScore), curPlayer.GetPlayerID())
|
| | | return
|
| | | |
| | | def CheckRolePackEquipAttr(self):
|
| | | ''' 玩家上线修复装备属性bug
|
| | | '''
|
| | | # curPlayer = self.__Player
|
| | | # checkVersion = 20190103
|
| | | # key = "LoginCheckEquipAttr"
|
| | | # curVersion = curPlayer.NomalDictGetProperty(key)
|
| | | # if curVersion == checkVersion:
|
| | | # return
|
| | | # playerID = curPlayer.GetPlayerID()
|
| | | # GameWorld.Log("玩家上线处理装备属性! curVersion=%s,checkVersion=%s" % (curVersion, checkVersion), playerID)
|
| | | # PlayerControl.NomalDictSetProperty(curPlayer, key, checkVersion)
|
| | | return
|
| | |
|
| | | ## 是否能放入物品
|
| | | # @param packIndex 背包索引
|
| | |
| | | return False, 0
|
| | |
|
| | | # 特殊处理不同的物品放入不同的背包,如神兽背包
|
| | | packIndex = ChConfig.GetItemPackType(curItemData.GetType(), packIndex)
|
| | | packIndex = ChConfig.GetItemPackType(curItemData, packIndex)
|
| | |
|
| | | maxCanPutItem = 0
|
| | | curPlayer = self.__Player
|
| | |
| | | curItem = movePack.GetAt(itemIndex)
|
| | | if not curItem or curItem.IsEmpty():
|
| | | continue
|
| | | toPackIndex = ChConfig.GetItemPackType(curItem.GetType(), desPackIndex)
|
| | | toPackIndex = ChConfig.GetItemPackType(curItem, desPackIndex)
|
| | | if toPackIndex in fullPackList:
|
| | | continue
|
| | | if not __DoDropItemToOtherPack(curPlayer, itemControl, fromPackIndex, toPackIndex, itemIndex, curItem):
|
| | |
| | | curItem = movePack.GetAt(index)
|
| | | if not curItem or curItem.IsEmpty():
|
| | | return
|
| | | toPackIndex = ChConfig.GetItemPackType(curItem.GetType(), desPackIndex)
|
| | | toPackIndex = ChConfig.GetItemPackType(curItem, desPackIndex)
|
| | | __DoDropItemToOtherPack(curPlayer, itemControl, fromPackIndex, toPackIndex, index, curItem)
|
| | | return
|
| | |
|
| | |
| | | curItemCount = curItem.GetCount()
|
| | | #curItemIsBind = curItem.GetIsBind()
|
| | | isAuctionItem = GetIsAuctionItem(curItem)
|
| | | #toPackIndex = ChConfig.GetItemPackType(curItem.GetType(), toPackIndex)
|
| | | #toPackIndex = ChConfig.GetItemPackType(curItem, toPackIndex)
|
| | |
|
| | | # 常规物品转移到虚拟符印背包
|
| | | if toPackIndex == ShareDefine.rptRune:
|
| | |
| | | # return 0
|
| | | #===============================================================================
|
| | | #==============================================================================
|
| | | def OnPlayerLogin(curPlayer):
|
| | | __CheckTransferItemPack(curPlayer)
|
| | | return
|
| | |
|
| | | def __CheckTransferItemPack(curPlayer):
|
| | | ## 检查转移物品
|
| | | |
| | | # {调整版本编号:{(原背包类型, 目标背包类型):[物品ID, ...], ...}, ...}
|
| | | transferItemPackRecordDict = IpyGameDataPY.GetFuncEvalCfg("TransferItemPack", 1, {})
|
| | | if not transferItemPackRecordDict:
|
| | | return
|
| | | verList = transferItemPackRecordDict.keys()
|
| | | verList.sort()
|
| | | lastVersion = verList[-1]
|
| | | |
| | | key = "TransferItemPackVer"
|
| | | curVersion = curPlayer.NomalDictGetProperty(key)
|
| | | |
| | | if curVersion >= lastVersion:
|
| | | #GameWorld.DebugLog("已处理过转移物品!curVersion=%s >= lastVersion=%s" % (curVersion, lastVersion))
|
| | | return
|
| | | |
| | | mailItemList = []
|
| | | itemControl = PlayerItemControler(curPlayer)
|
| | | playerID = curPlayer.GetPlayerID()
|
| | | for newVerNum in verList:
|
| | | if newVerNum <= curVersion:
|
| | | continue
|
| | | transferItemPackRule = transferItemPackRecordDict[newVerNum]
|
| | | GameWorld.Log("玩家上线处理物品转移背包! curVersion=%s,newVerNum=%s" % (curVersion, newVerNum), playerID)
|
| | | for transferPackInfo, itemIDList in transferItemPackRule.items():
|
| | | fromPackType, toPackType = transferPackInfo
|
| | | fromPack = curPlayer.GetItemManager().GetPack(fromPackType)
|
| | | #toPack = curPlayer.GetItemManager().GetPack(toPackType)
|
| | | for itemIndex in xrange(fromPack.GetCount()):
|
| | | item = fromPack.GetAt(itemIndex)
|
| | | if not ItemCommon.CheckItemCanUse(item):
|
| | | continue
|
| | | itemID = item.GetItemTypeID()
|
| | | if itemID not in itemIDList:
|
| | | continue
|
| | | itemCount = item.GetCount()
|
| | | |
| | | if __DoDropItemToOtherPack(curPlayer, itemControl, fromPackType, toPackType, itemIndex, item):
|
| | | # 拖成功的不再处理
|
| | | GameWorld.Log(" 直接转移: fromPackType=%s,toPackType=%s,itemIndex=%s,itemID=%s,itemCount=%s" |
| | | % (fromPackType, toPackType, itemIndex, itemID, itemCount), playerID)
|
| | | continue
|
| | | |
| | | GameWorld.Log(" 邮件转移: fromPackType=%s,toPackType=%s,itemIndex=%s,itemID=%s,itemCount=%s" |
| | | % (fromPackType, toPackType, itemIndex, itemID, itemCount), playerID)
|
| | | |
| | | # 不成功的,转发到邮件,最后清除物品
|
| | | mailItemList.append(ItemCommon.GetMailItemDict(item))
|
| | | item.Clear()
|
| | | |
| | | PlayerControl.NomalDictSetProperty(curPlayer, key, newVerNum)
|
| | | curVersion = newVerNum
|
| | | |
| | | if mailItemList:
|
| | | PlayerControl.SendMailByKey("TransferItemPack", [playerID], mailItemList)
|
| | | |
| | | return
|
| | |
|
| | | ## 清除背包中的任务物品
|
| | | # @param curPlayer 当前玩家
|
| | | # @param packIndex 背包类型
|
| | |
| | | isAuctionItem = 0
|
| | |
|
| | | defaultPack = IPY_GameWorld.rptItem if not packIndexList else packIndexList[0]
|
| | | packIndex = ChConfig.GetItemPackType(curItemData.GetType(), defaultPack)
|
| | | packIndex = ChConfig.GetItemPackType(curItemData, defaultPack)
|
| | | if packIndex != defaultPack or not packIndexList:
|
| | | packIndexList = [packIndex]
|
| | |
|
| | |
| | | curItem = GameWorld.GetGameData().GetItemByTypeID(itemID)
|
| | | if not curItem:
|
| | | return False
|
| | | packType = ChConfig.GetItemPackType(curItem.GetType())
|
| | | packType = ChConfig.GetItemPackType(curItem)
|
| | | needSpace = GetItemNeedPackCount(packType, curItem, itemCnt, isAuctionItem)
|
| | | needPackSpaceDict[packType] = needPackSpaceDict.get(packType, 0) + needSpace
|
| | |
|
| | |
| | | if not curItem:
|
| | | GameWorld.ErrLog('GivePlayerItemOrMail 物品ID不存在 itemID=%s'%itemID, curPlayer.GetID())
|
| | | return
|
| | | packType = ChConfig.GetItemPackType(curItem.GetType())
|
| | | packType = ChConfig.GetItemPackType(curItem)
|
| | | needSpace = GetItemNeedPackCount(packType, curItem, itemCnt, isAuctionItem)
|
| | | needPackSpaceDict[packType] = needPackSpaceDict.get(packType, 0) + needSpace
|
| | | isSendMail = False
|