hxp
2018-12-30 69388f905d074efd8fea82dcceb29de10eda9291
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/UseItem/ItemCommon.py
@@ -339,7 +339,7 @@
#  @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
@@ -376,6 +376,9 @@
        curSingleItem.SetIsBind(1)
        
    ItemControler.SetItemCount(curSingleItem, itemCount)
    if expireTime > 0:
        curSingleItem.SetUserAttr(ShareDefine.Def_IudetExpireTime, expireTime)
    
    #这里返回的是SingleItem , 如果创建了,未使用,会找出C++内存泄露!!!
    return curSingleItem
@@ -880,24 +883,56 @@
# 特殊判定根据时效时间判定物品是否可以使用
# 过期物品不能使用或装备但是可以出售续费
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 物品实例