From e618542a206ac40241588ee6c2438733b5426965 Mon Sep 17 00:00:00 2001
From: xdh <xiefantasy@qq.com>
Date: 星期四, 30 五月 2019 19:58:46 +0800
Subject: [PATCH] 7020 【2.0】【后端】符印镶嵌修改

---
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerRune.py |   18 +++++++++++++-----
 1 files changed, 13 insertions(+), 5 deletions(-)

diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerRune.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerRune.py
index d08833e..3eac024 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerRune.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerRune.py
@@ -209,7 +209,9 @@
         if not srcIpyData:
             GameWorld.DebugLog("该符印没有配置属性! 无法镶嵌! itemID=%s" % srcRuneItemID, curPlayer.GetPlayerID())
             return True
-        srcRuneAttrType = srcIpyData.GetAttrType()
+        srcRuneAttrTypeList = srcIpyData.GetAttrType()
+        srcRuneAttrTypeCntDict = {attrType:1 for attrType in srcRuneAttrTypeList}
+        maxSameAttrRuneCnt = IpyGameDataPY.GetFuncCfg('RuneUnlock', 5)
         # 判断是否已有镶嵌该属性类型
         doubleCnt = 0 #双属性符印个数
         for RuneNum in xrange(1, maxRuneHole + 1):
@@ -223,13 +225,19 @@
             if not ipyData:
                 continue
             attrTypeList = ipyData.GetAttrType()
-            if srcRuneAttrType == attrTypeList:
-                GameWorld.DebugLog("已有镶嵌该属性类型! 无法镶嵌! RuneHoleNum=%s,srcRuneAttrType=%s" % (RuneNum, srcRuneAttrType), curPlayer.GetPlayerID())
-                return True
+            for attrType in attrTypeList:
+                if attrType in srcRuneAttrTypeCntDict:
+                    srcRuneAttrTypeCntDict[attrType] += 1
+                    if srcRuneAttrTypeCntDict[attrType] > maxSameAttrRuneCnt:
+                        GameWorld.DebugLog(
+                            "该属性类型已镶嵌数量超过%s! 无法镶嵌! ,attrType=%s" % (maxSameAttrRuneCnt, attrType),
+                            curPlayer.GetPlayerID())
+                        return
+
             if len(attrTypeList) > 1:
                 doubleCnt +=1
         
-        if len(srcRuneAttrType) > 1 and doubleCnt >= __GetCanInlayDoubleAttrRuneCnt(curPlayer):
+        if len(srcRuneAttrTypeList) > 1 and doubleCnt >= __GetCanInlayDoubleAttrRuneCnt(curPlayer):
             GameWorld.DebugLog("当前可镶嵌双属性符印个数已达上限%s! 无法镶嵌! itemID=%s" % (doubleCnt, srcRuneItemID), curPlayer.GetPlayerID())
             return True
         

--
Gitblit v1.8.0