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