| | |
| | | def DoTransformItem(self, curPlayer, tagItem, event=["", False, {}]):
|
| | | ## 将特殊物品转化为对应数值
|
| | | itemID = tagItem.GetItemTypeID()
|
| | | itemCount = max(tagItem.GetUserAttr(ShareDefine.Def_IudetItemCount), tagItem.GetCount())
|
| | | itemCount = tagItem.GetCount()
|
| | | eventName, isForceEvent, addDict = event
|
| | | if isForceEvent:
|
| | | pass
|
| | |
| | |
|
| | | return
|
| | |
|
| | | def CheckGiveBindMoneyTypeItem(curPlayer, checkMoneyType=None):
|
| | | ## 检查给绑定货币的展示物品
|
| | | bindMoneyItemInfo = IpyGameDataPY.GetFuncEvalCfg("PutInItemPack", 2, {})
|
| | | |
| | | needMoneyItemDict = {}
|
| | | for itemIDStr, moneyType in bindMoneyItemInfo.items():
|
| | | if checkMoneyType != None and moneyType != checkMoneyType:
|
| | | continue
|
| | | if PlayerControl.GetMoney(curPlayer, moneyType): # 有货币时才需要
|
| | | needMoneyItemDict[int(itemIDStr)] = moneyType
|
| | | |
| | | if not needMoneyItemDict:
|
| | | #GameWorld.DebugLog("绑定货币显示物品已经都有了")
|
| | | return
|
| | | |
| | | curPack = curPlayer.GetItemManager().GetPack(IPY_GameWorld.rptItem)
|
| | | for i in xrange(curPack.GetCount()):
|
| | | curItem = curPack.GetAt(i)
|
| | | if not curItem or curItem.IsEmpty():
|
| | | continue
|
| | | itemID = curItem.GetItemTypeID()
|
| | | if itemID in needMoneyItemDict:
|
| | | needMoneyItemDict.pop(itemID)
|
| | | if not needMoneyItemDict:
|
| | | break
|
| | | |
| | | # 还有没给的物品补给,后端只负责给物品,不处理个数,前端对该类物品默认绑定货币对应的值来显示个数
|
| | | for itemID, moneyType in needMoneyItemDict.items():
|
| | | if not GivePlayerItem(curPlayer, itemID, 1, False, [IPY_GameWorld.rptItem]):
|
| | | break
|
| | | GameWorld.DebugLog("给绑定货币显示物品: moneyType=%s,itemID=%s" % (moneyType, itemID))
|
| | | |
| | | return
|
| | |
|
| | | def GivePlayerItem(curPlayer, itemID, itemCount, isAuctionItem, packIndexList=None, event=["", False, {}], setAttrDict=None):
|
| | | '''给玩家物品
|
| | | @param isAuctionItem: 是否拍品
|
| | |
| | |
|
| | | #常规物品
|
| | | isOK = False
|
| | | for _ in range(itemCount/65535 + 1):
|
| | | for _ in range(itemCount/ChConfig.Def_ItemCount_Max + 1):
|
| | | if itemCount <= 0:
|
| | | break
|
| | | giveItem = GetOutPutItemObj(itemID, itemCount, isAuctionItem, curPlayer=curPlayer, setAttrDict=setAttrDict)
|
| | |
| | | # @return: 给成功总数,0代表给失败了
|
| | |
|
| | | giveOKCount = 0
|
| | | for _ in range(itemCount/65535 + 1):
|
| | | for _ in range(itemCount/ChConfig.Def_ItemCount_Max + 1):
|
| | | if giveOKCount >= itemCount:
|
| | | break
|
| | | giveItem = GetOutPutItemObj(itemID, itemCount - giveOKCount, isAuctionItem, curPlayer=curPlayer)
|
| | |
| | | # @return None
|
| | | def SetItemCount(item, cnt, playerID=0, accID=0, playerName=""):
|
| | | if not item.IsEmpty():
|
| | | if cnt > 0 and IsPutinAutoTransformItem(item):
|
| | | item.SetUserAttr(ShareDefine.Def_IudetItemCount, min(cnt, ChConfig.Def_UpperLimit_DWord))
|
| | | else:
|
| | | item.SetCount(min(cnt, 65535))
|
| | | item.SetCount(min(cnt, ChConfig.Def_ItemCount_Max))
|
| | | else:
|
| | | try:
|
| | | 1 / 0
|
| | |
| | | GameWorld.ErrLog(errorInfo + str(traceback.extract_stack()) + "\n" + traceback.format_exc())
|
| | | raise
|
| | |
|
| | | def GetItemCount(item):
|
| | | if IsPutinAutoTransformItem(item):
|
| | | return item.GetUserAttr(ShareDefine.Def_IudetItemCount)
|
| | | return item.GetCount()
|
| | | def GetItemCount(item): return item.GetCount()
|
| | |
|
| | | def GetItemNeedPackCount(packType, itemData, itemCount, isAuctionItem=0):
|
| | | # 20201223 主干取消拍品有效时长设定
|