From 2417ef936a8a12b8528a1216a6f9233e2beb8aa6 Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期一, 14 一月 2019 17:02:07 +0800
Subject: [PATCH] 5722 【后端】【1.5】跨服BOSS开发(增加封包C1 06 跨服NPC对话 #tagCMCrossNPCTalk)

---
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/UseItem/ItemCommon.py |   61 ++++++++++++++++++++++++------
 1 files changed, 48 insertions(+), 13 deletions(-)

diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/UseItem/ItemCommon.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/UseItem/ItemCommon.py
index 2818ce6..a436f53 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/UseItem/ItemCommon.py
+++ b/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
@@ -377,6 +377,9 @@
         
     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
     
+    isExpireItem, expireTime = GetItemRemainingTime(curItem)
+    if isExpireItem:
+        if expireTime <= 0:
+            return False
+    return True
+
+def GetItemRemainingTime(curItem):
+    ''' 获取物品剩余时间,秒
+    @return: 是否时效物品, 剩余时间 
+    '''
+    
+    isExpireItem = False
     reduceType = curItem.GetEndureReduceType()
-    if reduceType == ChConfig.Def_EquipReduceType_RTimeItem and \
-    curItemPastTime >= curItemExpireTime:
-        # 过期了
-        return False
+    remainingTime = 0
     
-    if reduceType == ChConfig.Def_EquipReduceType_Time:
+    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 物品实例

--
Gitblit v1.8.0