From ccaefa2a93fb82d0db5fc7e74832a292fb860984 Mon Sep 17 00:00:00 2001
From: xdh <xiefantasy@qq.com>
Date: 星期二, 22 一月 2019 14:23:20 +0800
Subject: [PATCH] 5919 【后端】【1.5.100】诛仙塔功能开发

---
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/UseItem/ItemCommon.py |   70 ++++++++++++++++++++++++++++------
 1 files changed, 57 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..1ba3c18 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
 
@@ -475,10 +478,15 @@
     if GetIsDogzEquip(curItem):
         # 神兽装备用不同公式
         value = eval(FormulaControl.GetCompileFormula("EquipGSFormula3", IpyGameDataPY.GetFuncCfg("EquipGSFormula", 3)))
+    elif GetIsZhuXianEquip(curItem):
+        value = eval(FormulaControl.GetCompileFormula("EquipGSFormula4", IpyGameDataPY.GetFuncCfg("EquipGSFormula", 4)))
     else:
         value = eval(FormulaControl.GetCompileFormula("EquipGSFormula", IpyGameDataPY.GetFuncCfg("EquipGSFormula")))
     return value
 
+def GetZhuXianEquipTotalGS(curPlayer):
+    ##诛仙装备总评分
+    return 10000000
 #---------------------------------------------------------------------
 ## 通过效果ID,检查是否为指定物品 
 #  @param curPlayer 当前玩家
@@ -880,24 +888,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 物品实例
@@ -1704,6 +1744,10 @@
     ## 返回是否神兽装备
     return curItem.GetType() in ChConfig.Def_DogzEquiipType
 
+def GetIsZhuXianEquip(curItem):
+    ## 返回是否诛仙装备
+    return curItem.GetType() in ChConfig.Def_ZhuXianEquiipType
+
 ## 返回是否武器
 #  @param curItem 当前物品
 #  @return None

--
Gitblit v1.8.0