From 7b48b6e603e2eeeacdb737210d74212ed77f7943 Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期六, 16 三月 2019 17:38:03 +0800
Subject: [PATCH] 6332 【后端】【2.0】主要是拍品相关规则调整及背包优化(使用拍品数据同步优化)
---
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/UseItem/ItemCommon.py | 38 ++++++++++++++++++++++++++++++++++++++
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/ChItem.py | 15 ++++-----------
2 files changed, 42 insertions(+), 11 deletions(-)
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/ChItem.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/ChItem.py
index 4e52c5d..020bc8b 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/ChItem.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/ChItem.py
@@ -1547,9 +1547,8 @@
## 玩家使用拍品
playerID = curPlayer.GetPlayerID()
itemID = curItem.GetItemTypeID()
-
+
curItem.SetIsBind(0) # 设置为非拍品
- curItem.ClearUserAttr(ShareDefine.Def_IudetAuctionItemCreateTime)
GameWorld.DebugLog("玩家使用拍品: itemID=%s" % (itemID), playerID)
if ItemCommon.GetIsEquip(curItem):
@@ -1559,15 +1558,9 @@
GameWorld.ErrLog("使用装备拍品没有传奇属性!itemID=%s" % (itemID), playerID)
return
attrIDList, attrValueList = legendAttrInfo
- # 传奇属性
- if attrIDList and attrValueList and len(attrIDList) == len(attrValueList):
- curItem.ClearUserAttr(ShareDefine.Def_IudetLegendAttrID)
- curItem.ClearUserAttr(ShareDefine.Def_IudetLegendAttrValue)
- for i, attrID in enumerate(attrIDList):
- value = attrValueList[i]
- curItem.AddUserAttr(ShareDefine.Def_IudetLegendAttrID, attrID)
- curItem.AddUserAttr(ShareDefine.Def_IudetLegendAttrValue, value)
- ItemCommon.MakeEquipGS(curItem)
+ updateDict = {ShareDefine.Def_IudetLegendAttrID:attrIDList, ShareDefine.Def_IudetLegendAttrValue:attrValueList}
+ delKeyList = [ShareDefine.Def_IudetAuctionItemCreateTime]
+ ItemCommon.UpdateItemUserData(curItem, updateDict, delKeyList, isUpdateGS=True)
return
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 dc5f9ab..c1057d7 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
@@ -389,6 +389,44 @@
#这里返回的是SingleItem , 如果创建了,未使用,会找出C++内存泄露!!!
return curSingleItem
+def UpdateItemUserData(curItem, updateDict={}, delKeyList=[], isUpdateGS=False):
+ ''' 更新物品UserData数据
+ @param curItem: IPY_SingleItem 或 IPY_RoleItem
+ @param updateDict: 需要更新的数据 {key:value, key:valueList, ...}
+ @param delKeyList: 需要删除的数据 key列表[key, ...]
+ @param isUpdateGS: 是否更新评分
+ @note: UserData格式举例 {'17':['65','7','52'],'50':['0'],'19':['420','380','50'],'50':['1552728662']}
+ '''
+
+ isRoleItem = False
+ if not hasattr(curItem, "SetUserData"):
+ item = curItem.GetItem()
+ isRoleItem = True
+ else:
+ item = curItem
+ userData = item.GetUserData()
+ if not userData:
+ userDataDict = {}
+ else:
+ userDataDict = eval(userData)
+
+ for delKey in delKeyList:
+ userDataDict.pop(str(delKey), None)
+
+ for key, value in updateDict.items():
+ if type(value) == int:
+ valueList = ['%s' % value]
+ elif type(value) == list:
+ valueList = ['%s' % v for v in value]
+ userDataDict['%s' % key] = valueList
+
+ UserData = str(userDataDict).replace(" ", "")
+ item.SetUserData(UserData, len(UserData))
+ if isUpdateGS:
+ MakeEquipGS(curItem)
+ elif isRoleItem:
+ curItem.SetIsBind(curItem.GetIsBind()) # 为了触发物品同步
+ return
def MakeEquipGS(curItem):
if not CheckNoteEquipGS(curItem):
--
Gitblit v1.8.0