| | |
| | | # @param itemID 物品ID
|
| | | # @return curSingleItem
|
| | | # @remarks 函数详细说明.
|
| | | def CreateSingleItem(itemID, itemCount=1, isBind=0):
|
| | | def CreateSingleItem(itemID, itemCount=1, isBind=0, expireTime=0):
|
| | | curSingleItem = GameWorld.GetItemFactory().CreateItem(itemID)
|
| | | if not curSingleItem:
|
| | | return
|
| | |
| | | curSingleItem.SetIsBind(1)
|
| | |
|
| | | ItemControler.SetItemCount(curSingleItem, itemCount)
|
| | | |
| | | if expireTime > 0:
|
| | | curSingleItem.SetUserAttr(ShareDefine.Def_IudetExpireTime, expireTime)
|
| | |
|
| | | #这里返回的是SingleItem , 如果创建了,未使用,会找出C++内存泄露!!!
|
| | | return curSingleItem
|
| | |
| | | # 特殊判定根据时效时间判定物品是否可以使用
|
| | | # 过期物品不能使用或装备但是可以出售续费
|
| | | 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
|
| | |
|
| | | reduceType = curItem.GetEndureReduceType()
|
| | | if reduceType == ChConfig.Def_EquipReduceType_RTimeItem and \
|
| | | curItemPastTime >= curItemExpireTime:
|
| | | # 过期了
|
| | | isExpireItem, expireTime = GetItemRemainingTime(curItem)
|
| | | if isExpireItem:
|
| | | if expireTime <= 0:
|
| | | return False
|
| | | return True
|
| | |
|
| | | if reduceType == ChConfig.Def_EquipReduceType_Time:
|
| | | def GetItemRemainingTime(curItem):
|
| | | ''' 获取物品剩余时间,秒
|
| | | @return: 是否时效物品, 剩余时间 |
| | | '''
|
| | | |
| | | isExpireItem = False
|
| | | reduceType = curItem.GetEndureReduceType()
|
| | | remainingTime = 0
|
| | | |
| | | 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 物品实例
|