From e7e1e93c2d2237f5fdcb94e4053e7c7584dbc7bf Mon Sep 17 00:00:00 2001
From: xdh <xiefantasy@qq.com>
Date: 星期一, 14 一月 2019 20:12:02 +0800
Subject: [PATCH] 768 【后端】【1.5】新增8-14天活动功能(提前显示)
---
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/ItemControler.py | 55 +++++++++++++++++++++++++++++++++++++++++++++++++++++--
1 files changed, 53 insertions(+), 2 deletions(-)
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/ItemControler.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/ItemControler.py
index 042ae17..3784ef1 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/ItemControler.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/ItemControler.py
@@ -1095,6 +1095,15 @@
PlayerControl.GiveMoney(curPlayer, ShareDefine.TYPE_Price_Honor, itemCount)
return True
+ def __CrossServerPutInItem(self, packIndex, tagItem, event=["", False, {}]):
+ ## 跨服获得物品
+ curPlayer = self.__Player
+ serverGroupID = PlayerControl.GetPlayerServerGroupID(curPlayer)
+ itemData = [tagItem.GetItemTypeID(), tagItem.GetCount(), tagItem.GetIsBind(), tagItem.GetUserData()]
+ itemMsg = {"PlayerID":curPlayer.GetPlayerID(), "ItemData":itemData, "PackIndex":packIndex, "Event":event}
+ GameWorld.SendMsgToClientServer(ShareDefine.CrossServerMsg_PutInItem, itemMsg, [serverGroupID])
+ return
+
## 放入物品
# @param packIndex 背包索引
# @param tagItem 物品
@@ -1111,6 +1120,11 @@
curItemData = GameWorld.GetGameData().GetItemByTypeID(tagItem.GetItemTypeID())
if not curItemData:
return False
+
+ if GameWorld.IsCrossServer():
+ self.__CrossServerPutInItem(packIndex, tagItem, event)
+ tagItem.Clear()
+ return True
packIndex = ChConfig.GetItemPackType(curItemData.GetType(), packIndex)
@@ -1273,10 +1287,32 @@
return
def CheckRolePackEquipAttr(self):
+ ''' 玩家上线修复装备属性bug
+ 版本1:邮件给装备没有传奇属性,检查无传奇属性装备
+ 版本2:绝版属性数值调整,已获得的装备重新刷下
+ '''
curPlayer = self.__Player
+ checkVersion = 20190103
key = "LoginCheckEquipAttr"
- if curPlayer.NomalDictGetProperty(key):
+ curVersion = curPlayer.NomalDictGetProperty(key)
+ if curVersion == checkVersion:
return
+ playerID = curPlayer.GetPlayerID()
+ GameWorld.Log("玩家上线处理装备属性! curVersion=%s,checkVersion=%s" % (curVersion, checkVersion), playerID)
+
+ outOfPrintAttrItemDict = {} # 有绝版属性的定制物品属性信息 {itemID:[绝版属性ID列表, 绝版属性数值列表], ...}
+ ipyDataMgr = IpyGameDataPY.IPY_Data()
+ for i in xrange(ipyDataMgr.GetAppointItemCount()):
+ ipyData = ipyDataMgr.GetAppointItemByIndex(i)
+ outOfPrintAttrList = ipyData.GetOutOfPrintAttr()
+ outOfPrintAttrValueList = ipyData.GetOutOfPrintAttrValue()
+ if not outOfPrintAttrList or len(outOfPrintAttrList) != len(outOfPrintAttrValueList):
+ continue
+ itemID = GetAppointItemRealID(ipyData.GetID())
+ if not itemID:
+ continue
+ outOfPrintAttrItemDict[itemID] = [outOfPrintAttrList, outOfPrintAttrValueList]
+
checkPackList = [IPY_GameWorld.rptEquip, IPY_GameWorld.rptItem, IPY_GameWorld.rptWarehouse]
for packType in checkPackList:
curPack = curPlayer.GetItemManager().GetPack(packType)
@@ -1288,8 +1324,21 @@
isEquip = ItemCommon.CheckItemIsEquip(curItem)
if not isEquip:
continue
+ itemID = curItem.GetItemTypeID()
self.CheckEquipAttr(packType, curItem)
- PlayerControl.NomalDictSetProperty(curPlayer, key, 1)
+
+ # 重刷绝版属性
+ if itemID in outOfPrintAttrItemDict:
+ outOfPrintAttrList, outOfPrintAttrValueList = outOfPrintAttrItemDict[itemID]
+ curItem.ClearUserAttr(ShareDefine.Def_IudetOutOfPrintAttrID)
+ curItem.ClearUserAttr(ShareDefine.Def_IudetOutOfPrintAttrValue)
+ for outOfPrintAttrIndex in xrange(len(outOfPrintAttrList)):
+ curItem.AddUserAttr(ShareDefine.Def_IudetOutOfPrintAttrID, outOfPrintAttrList[outOfPrintAttrIndex])
+ curItem.AddUserAttr(ShareDefine.Def_IudetOutOfPrintAttrValue, outOfPrintAttrValueList[outOfPrintAttrIndex])
+ GameWorld.Log(" 玩家登录重刷装备绝版属性: packType=%s,i=%s,itemID=%s,outOfPrintAttrList=%s,outOfPrintAttrValueList=%s"
+ % (packType, i, itemID, outOfPrintAttrList, outOfPrintAttrValueList), playerID)
+
+ PlayerControl.NomalDictSetProperty(curPlayer, key, checkVersion)
return
## 是否能放入物品
@@ -1301,6 +1350,8 @@
# @return True or False
# @remarks 函数详细说明.
def CanPutInItem(self, packIndex, curItemID, curItemCount, isBind, defaultPile=True):
+ if GameWorld.IsCrossServer():
+ return True
checkRet, putIndex = self.CanPutInItemEx(packIndex, curItemID, curItemCount, isBind, defaultPile)
return checkRet
--
Gitblit v1.8.0