From 509d4cb7a3843b37d46073ef717b58f75fb67fa6 Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期五, 09 八月 2019 16:41:23 +0800
Subject: [PATCH] 8197 【主干】【后端】莲台合成分解功能(物品可添加的指定技能存储UserData37)

---
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/UseItem/ItemCommon.py             |   14 +++-----------
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ShareDefine.py                         |    3 ++-
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Event/EventSrc/Operate_ItemCompound.py |   17 +++++++++++------
 ServerPython/CoreServerGroup/GameServer/Script/ShareDefine.py                                              |    3 ++-
 4 files changed, 18 insertions(+), 19 deletions(-)

diff --git a/ServerPython/CoreServerGroup/GameServer/Script/ShareDefine.py b/ServerPython/CoreServerGroup/GameServer/Script/ShareDefine.py
index 54f26cf..c038414 100644
--- a/ServerPython/CoreServerGroup/GameServer/Script/ShareDefine.py
+++ b/ServerPython/CoreServerGroup/GameServer/Script/ShareDefine.py
@@ -1278,7 +1278,8 @@
 Def_IudetWingMaterialItemCount = 29  # 翅膀精炼材料个数列表
 Def_IudetDogzEquipPlus = 31  # 神兽装备强化信息列表 [强化等级, 累计总熟练度]
 Def_IudetItemDecompound = 33  # 拆解返还物品列表 [装备ID,材料1ID,个数,是否绑定,材料2ID,个数,是否绑定,...]
-Def_IudetAddSkillItemID = 35  # 可添加的技能物品ID列表  [itemID, itemID, ...], 这里记物品ID防止物品ID对应技能修改后导致需要处理已经生成的物品问题
+Def_IudetLiantaiItemID = 35  # 合成该莲台的所有莲台ID [itemID, itemID, ...]
+Def_IudetAddSkillID = 37  # 可添加的技能ID列表  [skillID, skillID, ...]
 
 Def_IudetItemColor = 16  # 物品颜色,如果该值没有就取物品
 Def_IudetItemCount = 18  # 物品个数,支持20亿,目前仅特殊转化物品会用到
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Event/EventSrc/Operate_ItemCompound.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Event/EventSrc/Operate_ItemCompound.py
index b71feb3..2eb2541 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Event/EventSrc/Operate_ItemCompound.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Event/EventSrc/Operate_ItemCompound.py
@@ -384,8 +384,8 @@
     ## 获取合成莲台碎片个数
     decCountTotal = 0
     decItemIDList = [curItem.GetItemTypeID()]
-    for i in xrange(curItem.GetUserAttrCount(ShareDefine.Def_IudetAddSkillItemID)):
-        itemID = curItem.GetUserAttrByIndex(ShareDefine.Def_IudetAddSkillItemID, i)
+    for i in xrange(curItem.GetUserAttrCount(ShareDefine.Def_IudetLiantaiItemID)):
+        itemID = curItem.GetUserAttrByIndex(ShareDefine.Def_IudetLiantaiItemID, i)
         if itemID not in decItemIDList:
             decItemIDList.append(itemID)
     liantaiDecomposeIDCountDict = IpyGameDataPY.GetFuncEvalCfg("ComposeLiantai", 3, {})
@@ -403,8 +403,8 @@
     # 所有合成的莲台ID
     if curItemID not in liantaiComposeAllItemIDList:
         liantaiComposeAllItemIDList.append(curItemID)
-    for i in xrange(curItem.GetUserAttrCount(ShareDefine.Def_IudetAddSkillItemID)):
-        itemID = curItem.GetUserAttrByIndex(ShareDefine.Def_IudetAddSkillItemID, i)
+    for i in xrange(curItem.GetUserAttrCount(ShareDefine.Def_IudetLiantaiItemID)):
+        itemID = curItem.GetUserAttrByIndex(ShareDefine.Def_IudetLiantaiItemID, i)
         if itemID not in liantaiComposeAllItemIDList:
             liantaiComposeAllItemIDList.append(itemID)
             
@@ -762,9 +762,14 @@
     # 莲台属性
     if liantaiInfo:
         if liantaiComposeAllItemIDList:
-            curSingleItem.ClearUserAttr(ShareDefine.Def_IudetAddSkillItemID)
+            curSingleItem.ClearUserAttr(ShareDefine.Def_IudetLiantaiItemID)
             for liantaiItemID in liantaiComposeAllItemIDList:
-                curSingleItem.AddUserAttr(ShareDefine.Def_IudetAddSkillItemID, liantaiItemID)
+                curSingleItem.AddUserAttr(ShareDefine.Def_IudetLiantaiItemID, liantaiItemID)
+                
+        if liantaiComposeSkillIDList:
+            curSingleItem.ClearUserAttr(ShareDefine.Def_IudetAddSkillID)
+            for skillID in liantaiComposeSkillIDList:
+                curSingleItem.AddUserAttr(ShareDefine.Def_IudetAddSkillID, skillID)
                 
         if liantaiLegendAttrList:
             curSingleItem.ClearUserAttr(ShareDefine.Def_IudetLegendAttrID)
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 d8bf528..696719e 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
@@ -141,17 +141,9 @@
 def GetItemSkillIDList(curItem):
     ## 获取物品可添加的技能ID列表
     addSkillIDList = []
-    gameData = GameWorld.GetGameData()
-    for i in xrange(curItem.GetUserAttrCount(ShareDefine.Def_IudetAddSkillItemID)):
-        itemID = curItem.GetUserAttrByIndex(ShareDefine.Def_IudetAddSkillItemID, i)
-        itemData = gameData.GetItemByTypeID(itemID)
-        if not itemData:
-            continue
-        for i in xrange(itemData.GetAddSkillCount()):
-            skillID = itemData.GetAddSkill(i)
-            if skillID == 0:
-                break
-            addSkillIDList.append(skillID)
+    for i in xrange(curItem.GetUserAttrCount(ShareDefine.Def_IudetAddSkillID)):
+        skillID = curItem.GetUserAttrByIndex(ShareDefine.Def_IudetAddSkillID, i)
+        addSkillIDList.append(skillID)
     if not addSkillIDList:
         for i in xrange(curItem.GetAddSkillCount()):
             skillID = curItem.GetAddSkill(i)
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ShareDefine.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ShareDefine.py
index 54f26cf..c038414 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ShareDefine.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ShareDefine.py
@@ -1278,7 +1278,8 @@
 Def_IudetWingMaterialItemCount = 29  # 翅膀精炼材料个数列表
 Def_IudetDogzEquipPlus = 31  # 神兽装备强化信息列表 [强化等级, 累计总熟练度]
 Def_IudetItemDecompound = 33  # 拆解返还物品列表 [装备ID,材料1ID,个数,是否绑定,材料2ID,个数,是否绑定,...]
-Def_IudetAddSkillItemID = 35  # 可添加的技能物品ID列表  [itemID, itemID, ...], 这里记物品ID防止物品ID对应技能修改后导致需要处理已经生成的物品问题
+Def_IudetLiantaiItemID = 35  # 合成该莲台的所有莲台ID [itemID, itemID, ...]
+Def_IudetAddSkillID = 37  # 可添加的技能ID列表  [skillID, skillID, ...]
 
 Def_IudetItemColor = 16  # 物品颜色,如果该值没有就取物品
 Def_IudetItemCount = 18  # 物品个数,支持20亿,目前仅特殊转化物品会用到

--
Gitblit v1.8.0