From ecfe8b45ee59dcc926fec0ece5a4b6b2b583121d Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期二, 15 一月 2019 23:35:03 +0800
Subject: [PATCH] 5722 【后端】【1.5】跨服BOSS开发(跨服聊天名字默认使用跨服名字格式)
---
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/UseItem/ItemCommon.py | 92 +++++++++++++++++++++++++++++++++------------
1 files changed, 67 insertions(+), 25 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 2a711d8..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
@@ -29,7 +29,6 @@
import DataRecordPack
import EventReport
import ChItem
-import PlayerMergeEvent
import IpyGameDataPY
import Operate_EquipStone
import PlayerViewCacheTube
@@ -340,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
@@ -378,6 +377,9 @@
ItemControler.SetItemCount(curSingleItem, itemCount)
+ if expireTime > 0:
+ curSingleItem.SetUserAttr(ShareDefine.Def_IudetExpireTime, expireTime)
+
#这里返回的是SingleItem , 如果创建了,未使用,会找出C++内存泄露!!!
return curSingleItem
@@ -881,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 物品实例
@@ -1423,11 +1457,6 @@
#系统提示 LostRes 失去物品
#if needSysmsg:
# PlayerControl.NotifyCode(curPlayer, 'LostRes', [itemTypeID, totalUseCnt])
-
- #添加跨服服务器中使用物品事件
- if itemTypeID in ReadChConfig.GetEvalChConfig("MergeServerCanUseItemID"):
- eventInfo = [itemTypeID, totalUseCnt, makeItemBind, eventName, saveDataDict]
- PlayerMergeEvent.AddMSPlayerEvent(curPlayer.GetPlayerID(), PlayerMergeEvent.Def_MSPEvent_DelItem, eventInfo)
return makeItemBind
def GetCostItemIndexList(costItemInfo, itemPack, bindFirst=True):
@@ -1516,7 +1545,18 @@
def GetShopItemPrice(itemID, priceType):
''' 获取商城物品对应价格 '''
- ipyData = IpyGameDataPY.GetIpyGameDataByCondition("Store", {"ItemID":itemID, "MoneyType":priceType}, isLogNone=False)
+ # 系统固定商店类型: 仙玉(2-常用道具,3-成长变强),绑玉(4-绑玉商城)
+ priceTypeShopTypeDict = {IPY_GameWorld.TYPE_Price_Gold_Money:[2, 3],
+ IPY_GameWorld.TYPE_Price_Gold_Paper:[4],
+ }
+ ipyData = None
+ if priceType in priceTypeShopTypeDict:
+ for shopType in priceTypeShopTypeDict[priceType]:
+ ipyData = IpyGameDataPY.GetIpyGameDataByCondition("Store", {"ShopType":shopType, "ItemID":itemID, "MoneyType":priceType}, isLogNone=False)
+ if ipyData:
+ break
+ else:
+ ipyData = IpyGameDataPY.GetIpyGameDataByCondition("Store", {"ItemID":itemID, "MoneyType":priceType}, isLogNone=False)
if not ipyData:
return 0
return ipyData.GetMoneyNum()
@@ -1812,11 +1852,6 @@
ItemControler.SetItemCount(curItem, curItemCnt - delCnt,
curPlayer.GetPlayerID(), curPlayer.GetAccID(),
curPlayer.GetPlayerName())
-
- #添加跨服服务器中使用物品事件
- if curItemTypeID in ReadChConfig.GetEvalChConfig("MergeServerCanUseItemID"):
- eventInfo = [curItemTypeID, delCnt, curItemBind, recordName, saveDataDict]
- PlayerMergeEvent.AddMSPlayerEvent(curPlayer.GetPlayerID(), PlayerMergeEvent.Def_MSPEvent_DelItem, eventInfo)
return
def DelVPackItem(curPlayer, packIndex, placeList, eventName=""):
@@ -1838,6 +1873,13 @@
itemName = str(itemID) if not curItemData else curItemData.GetName()
itemName = "%s LV%s" % (itemName, plusLV + 1)
isNeedRecord = curItemData and ItemControler.IsRuneItemNeedRecord(curItemData, plusLV)
+ if packIndex == ShareDefine.rptGatherSoul:
+ itemID = ItemControler.GetGatherSoulItemID(itemKeyData)
+ plusLV = ItemControler.GetGatherSoulItemPlusLV(itemKeyData)
+ curItemData = GameWorld.GetGameData().GetItemByTypeID(itemID)
+ itemName = str(itemID) if not curItemData else curItemData.GetName()
+ itemName = "%s LV%s" % (itemName, plusLV + 1)
+ isNeedRecord = curItemData and ItemControler.IsGatherSoulItemNeedRecord(curItemData, plusLV)
PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_VPackItem % (packIndex, place), 0)
if isNeedRecord:
--
Gitblit v1.8.0