From e84f8a63b4d3bd8ee4722f6bb8f40865f09d967c Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期二, 22 一月 2019 20:29:31 +0800
Subject: [PATCH] 5931 【后端】【1.5.100】诛仙装备开发(套装属性、诛仙背包整理、装备总评分、穿戴绑定)

---
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/UseItem/ItemCommon.py |   14 +++++++++++---
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/EquipZhuXian.py       |   23 +++++++++++++++++------
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py                |    2 +-
 3 files changed, 29 insertions(+), 10 deletions(-)

diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py
index ea1a7a4..173dabb 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py
@@ -1483,7 +1483,7 @@
 #自动恢复计算间隔
 Def_HPRestoreInterval = 5000
 #允许重置的背包索引
-Def_CanItemResetPack = [IPY_GameWorld.rptItem, IPY_GameWorld.rptWarehouse, ShareDefine.rptTreasure]
+Def_CanItemResetPack = [IPY_GameWorld.rptItem, IPY_GameWorld.rptWarehouse, ShareDefine.rptTreasure, ShareDefine.rptZhuXianItem]
 #仓库分页个数
 Def_ItemReset_WarehousePageCnt = 56
 #玩家捡起物品的距离 8
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/EquipZhuXian.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/EquipZhuXian.py
index 8f79049..6592e7e 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/EquipZhuXian.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/EquipZhuXian.py
@@ -41,7 +41,7 @@
     if str(equipPlace) not in placeUnlockDict:
         return True
     needTowerLV = placeUnlockDict[str(equipPlace)]
-    curTowerLV = 20 # 已过关的诛仙塔层数
+    curTowerLV = curPlayer.NomalDictGetProperty(ChConfig.Def_Player_Dict_ZhuXianTowerPassLV) # 已过关的诛仙塔层数
     return curTowerLV >= needTowerLV
 
 def CheckLearnZhuXianSkill(curPlayer, skillID):
@@ -83,7 +83,7 @@
     reqEquipPlaceIndex = clientData.EquipIndex
     itemIndex = clientData.ItemIndex
     
-    GameWorld.DebugLog("诛仙穿戴装备: EquipIndex=%s,ItemIndex=%s" % (reqEquipPlaceIndex, itemIndex), playerID)
+    GameWorld.DebugLog("穿戴诛仙装备: EquipIndex=%s,ItemIndex=%s" % (reqEquipPlaceIndex, itemIndex), playerID)
     
     zhuXianItemPack = curPlayer.GetItemManager().GetPack(ShareDefine.rptZhuXianItem)
     curEquip = zhuXianItemPack.GetAt(itemIndex)
@@ -97,9 +97,10 @@
     equipPlace = curEquip.GetEquipPlace()
     equipPlaceIndex = GetZhuXianEquipIndexByPlace(equipPlace)
     if reqEquipPlaceIndex != equipPlaceIndex:
+        reqEquipPlace = GetZhuXianEquipPlaceByIndex(reqEquipPlaceIndex)
         canPlace = False
         for sharePlaceList in ShareDefine.ShareEquipPlace:
-            if reqEquipPlaceIndex in sharePlaceList and equipPlaceIndex in sharePlaceList:
+            if reqEquipPlace in sharePlaceList and equipPlace in sharePlaceList:
                 canPlace = True
                 break
         if not canPlace:
@@ -137,6 +138,8 @@
     curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index)
     playerID = curPlayer.GetPlayerID()
     EquipIndex = clientData.EquipIndex
+    
+    GameWorld.DebugLog("卸下诛仙装备: EquipIndex=%s" % (EquipIndex), playerID)
     
     zhuXianEquipPack = curPlayer.GetItemManager().GetPack(ShareDefine.rptZhuXianEquip)
     if EquipIndex < 0 or EquipIndex >= zhuXianEquipPack.GetCount():
@@ -213,8 +216,9 @@
                 else:
                     PlayerControl.CalcAttrDict_Type(legendAttrID, legendAttrValue, allAttrList)
                     
-    GameWorld.DebugLog("诛仙装备属性: allAttrList=%s" % (allAttrList))
-    GameWorld.DebugLog("    zxSkillPlusAttrDict=%s" % (zxSkillPlusAttrDict))
+#    GameWorld.DebugLog("诛仙装备属性: allAttrList=%s" % (allAttrList))
+#    GameWorld.DebugLog("    zxSkillPlusAttrDict=%s" % (zxSkillPlusAttrDict))
+#    GameWorld.DebugLog("    equipPlaceClassLVDict=%s" % (equipPlaceClassLVDict))
     
     # 缓存技能增强比例,目前暂写死对指定技能伤害百分比提升
     for attrID, plusValue in zxSkillPlusAttrDict.items():
@@ -241,6 +245,9 @@
             skillReducePerDict[effSkillTypeID] = plusValue
             PyGameData.g_zhuXianSkillReducePerDict[playerID] = skillReducePerDict
             
+#    GameWorld.DebugLog("    PyGameData.g_zhuXianSkillAddPerDict=%s" % PyGameData.g_zhuXianSkillAddPerDict)
+#    GameWorld.DebugLog("    PyGameData.g_zhuXianSkillReducePerDict=%s" % PyGameData.g_zhuXianSkillReducePerDict)
+    
     # 计算套装,目前暂写死对诛仙装备部位基础属性提升
     suitAttrIDPlusPlaceDict = {
                                ShareDefine.Def_Effect_ZXCloakAttrPer:ShareDefine.zxetCloak,
@@ -258,7 +265,7 @@
         for place in placeGroupList:
             if place not in equipPlaceClassLVDict:
                 isSuit = False
-                GameWorld.DebugLog("    未穿戴装备,无法激活诛仙套装! suitType=%s,placeGroupList=%s,place=%s" % (suitType, placeGroupList, place))
+                #GameWorld.DebugLog("    未穿戴装备,无法激活诛仙套装! suitType=%s,placeGroupList=%s,place=%s" % (suitType, placeGroupList, place))
                 break
             if not suitLV:
                 suitLV = equipPlaceClassLVDict[place]
@@ -268,6 +275,7 @@
         if not isSuit or not suitLV:
             continue
         
+        GameWorld.DebugLog("    激活诛仙套装: suitType=%s, suitLV=%s" % (suitType, suitLV))
         suitAttrIpyData = IpyGameDataPY.GetIpyGameData("ZhuXianSuitAttr", suitType, suitLV)
         if not suitAttrIpyData:
             continue
@@ -277,13 +285,16 @@
             continue
         for i, suitEffID in enumerate(suitAttrIDList):
             suitEffValue = suitAttrValueList[i]
+            #GameWorld.DebugLog("        suitEffID=%s,suitEffValue=%s" % (suitEffID, suitEffValue))
             if suitEffID in suitAttrIDPlusPlaceDict:
                 plusPlace = suitAttrIDPlusPlaceDict[suitEffID]
                 if plusPlace not in equipPlaceBaseAttrDict:
                     continue
                 plusEffDict = equipPlaceBaseAttrDict[plusPlace]
+                #GameWorld.DebugLog("            plusPlace=%s,plusEffDict=%s" % (plusPlace, plusEffDict))
                 for plusEffID, plusEffValue in plusEffDict.items():
                     addValue = int(plusEffValue * (10000 + suitEffValue) / 10000.0)
+                    #GameWorld.DebugLog("                plusEffID=%s,plusEffValue=%s,addValue=%s" % (plusEffID, plusEffValue, addValue))
                     PlayerControl.CalcAttrDict_Type(plusEffID, addValue, allAttrListZXSuit)
             else:
                 PlayerControl.CalcAttrDict_Type(suitEffID, suitEffValue, allAttrListZXSuit)
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 a93cdda..5c084b2 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
@@ -500,7 +500,15 @@
 
 def GetZhuXianEquipTotalGS(curPlayer):
     ##诛仙装备总评分
-    return 10000000
+    equipScoreTotal = 0
+    zhuXianEquipPack = curPlayer.GetItemManager().GetPack(ShareDefine.rptZhuXianEquip)
+    for equipIndex in xrange(zhuXianEquipPack.GetCount()):
+        curEquip = zhuXianEquipPack.GetAt(equipIndex)            
+        if curEquip.IsEmpty():
+            continue
+        equipScoreTotal += GetEquipGearScore(curEquip)
+    return equipScoreTotal
+
 #---------------------------------------------------------------------
 ## 通过效果ID,检查是否为指定物品 
 #  @param curPlayer 当前玩家
@@ -1710,7 +1718,7 @@
         DoLogic_ItemBindType(curPlayer, switchItem, ChConfig.Def_BindType_DoEquipBind)
         
     # 装备技能书、坐骑装备绑定
-    if putInPackIndex in [IPY_GameWorld.rptHorseEquip]:
+    if putInPackIndex in [IPY_GameWorld.rptHorseEquip, ShareDefine.rptZhuXianEquip]:
         DoLogic_ItemBindType(curPlayer, curItem, ChConfig.Def_BindType_DoEquipBind)
     
     #交换装备
@@ -1735,7 +1743,7 @@
         DoLogic_ItemBindType(curPlayer, switchItem, ChConfig.Def_BindType_DoEquipBind)
     
     # 装备技能书、坐骑装备绑定
-    if putInPackIndex in [IPY_GameWorld.rptHorseEquip]:
+    if putInPackIndex in [IPY_GameWorld.rptHorseEquip, ShareDefine.rptZhuXianEquip]:
         DoLogic_ItemBindType(curPlayer, emptyItem, ChConfig.Def_BindType_DoEquipBind)
 
     if switchItem.GetGameWorldItemType() == IPY_GameWorld.gwitRoleItem:

--
Gitblit v1.8.0