From fe645e03c09fce1624ff7354beaed01375f1453c Mon Sep 17 00:00:00 2001
From: hch <305670599@qq.com>
Date: 星期三, 19 九月 2018 17:53:44 +0800
Subject: [PATCH] Merge branch 'master' of http://192.168.0.87:10010/r/SnxxServerCode

---
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerRune.py          |    3 +
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/ItemControler.py         |   10 +++--
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerDogz.py          |   28 +++++++++-----
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ShareDefine.py                |    1 
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetPack.py                |   10 +++++
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Event/EventSrc/QuestCommon.py |    2 
 ServerPython/CoreServerGroup/GameServer/Script/ChPyNetPack.py                                     |   10 +++++
 ServerPython/CoreServerGroup/GameServer/Script/ShareDefine.py                                     |    1 
 8 files changed, 49 insertions(+), 16 deletions(-)

diff --git a/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetPack.py b/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetPack.py
index ff5f5b4..8213deb 100644
--- a/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetPack.py
+++ b/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetPack.py
@@ -8270,6 +8270,7 @@
     EquipIndex = 0    #(BYTE EquipIndex)//神兽装备背包中索引
     IndexCount = 0    #(BYTE IndexCount)//材料所在神兽物品背包索引的数量
     IndexList = list()    #(vector<BYTE> IndexList)//材料所在神兽物品背包索引列表
+    IndexUseCountList = list()    #(vector<DWORD> IndexUseCountList)//材料所在神兽物品背包索引对应使用个数列表
     IsDouble = 0    #(BYTE IsDouble)//是否双倍强化
     data = None
 
@@ -8287,6 +8288,9 @@
         for i in range(self.IndexCount):
             value,_pos=CommFunc.ReadBYTE(_lpData,_pos)
             self.IndexList.append(value)
+        for i in range(self.IndexCount):
+            value,_pos=CommFunc.ReadDWORD(_lpData,_pos)
+            self.IndexUseCountList.append(value)
         self.IsDouble,_pos = CommFunc.ReadBYTE(_lpData, _pos)
         return _pos
 
@@ -8298,6 +8302,7 @@
         self.EquipIndex = 0
         self.IndexCount = 0
         self.IndexList = list()
+        self.IndexUseCountList = list()
         self.IsDouble = 0
         return
 
@@ -8307,6 +8312,7 @@
         length += 1
         length += 1
         length += 1 * self.IndexCount
+        length += 4 * self.IndexCount
         length += 1
 
         return length
@@ -8318,6 +8324,8 @@
         data = CommFunc.WriteBYTE(data, self.IndexCount)
         for i in range(self.IndexCount):
             data = CommFunc.WriteBYTE(data, self.IndexList[i])
+        for i in range(self.IndexCount):
+            data = CommFunc.WriteDWORD(data, self.IndexUseCountList[i])
         data = CommFunc.WriteBYTE(data, self.IsDouble)
         return data
 
@@ -8327,6 +8335,7 @@
                                 EquipIndex:%d,
                                 IndexCount:%d,
                                 IndexList:%s,
+                                IndexUseCountList:%s,
                                 IsDouble:%d
                                 '''\
                                 %(
@@ -8334,6 +8343,7 @@
                                 self.EquipIndex,
                                 self.IndexCount,
                                 "...",
+                                "...",
                                 self.IsDouble
                                 )
         return DumpString
diff --git a/ServerPython/CoreServerGroup/GameServer/Script/ShareDefine.py b/ServerPython/CoreServerGroup/GameServer/Script/ShareDefine.py
index c73e566..4887c3b 100644
--- a/ServerPython/CoreServerGroup/GameServer/Script/ShareDefine.py
+++ b/ServerPython/CoreServerGroup/GameServer/Script/ShareDefine.py
@@ -1232,6 +1232,7 @@
 Def_IudetCreateItemLoginDay = 34  # 创建物品时的登录天数
 Def_IudetLastOpenItemLoginDay = 36  # 上一次开启物品时的登录天数
 Def_IudetRuneLV = 38  # 符印等级
+Def_IudetRuneSource = 40  # 符印来源 老号0,默认1,合成2(主要用来区分是否合成获得)
 Def_IudetWingProgressValue = 42 #羽翼精炼值
 Def_IudetCreateTime = 44 # 时效物品的创建时间
 
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetPack.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetPack.py
index ff5f5b4..8213deb 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetPack.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetPack.py
@@ -8270,6 +8270,7 @@
     EquipIndex = 0    #(BYTE EquipIndex)//神兽装备背包中索引
     IndexCount = 0    #(BYTE IndexCount)//材料所在神兽物品背包索引的数量
     IndexList = list()    #(vector<BYTE> IndexList)//材料所在神兽物品背包索引列表
+    IndexUseCountList = list()    #(vector<DWORD> IndexUseCountList)//材料所在神兽物品背包索引对应使用个数列表
     IsDouble = 0    #(BYTE IsDouble)//是否双倍强化
     data = None
 
@@ -8287,6 +8288,9 @@
         for i in range(self.IndexCount):
             value,_pos=CommFunc.ReadBYTE(_lpData,_pos)
             self.IndexList.append(value)
+        for i in range(self.IndexCount):
+            value,_pos=CommFunc.ReadDWORD(_lpData,_pos)
+            self.IndexUseCountList.append(value)
         self.IsDouble,_pos = CommFunc.ReadBYTE(_lpData, _pos)
         return _pos
 
@@ -8298,6 +8302,7 @@
         self.EquipIndex = 0
         self.IndexCount = 0
         self.IndexList = list()
+        self.IndexUseCountList = list()
         self.IsDouble = 0
         return
 
@@ -8307,6 +8312,7 @@
         length += 1
         length += 1
         length += 1 * self.IndexCount
+        length += 4 * self.IndexCount
         length += 1
 
         return length
@@ -8318,6 +8324,8 @@
         data = CommFunc.WriteBYTE(data, self.IndexCount)
         for i in range(self.IndexCount):
             data = CommFunc.WriteBYTE(data, self.IndexList[i])
+        for i in range(self.IndexCount):
+            data = CommFunc.WriteDWORD(data, self.IndexUseCountList[i])
         data = CommFunc.WriteBYTE(data, self.IsDouble)
         return data
 
@@ -8327,6 +8335,7 @@
                                 EquipIndex:%d,
                                 IndexCount:%d,
                                 IndexList:%s,
+                                IndexUseCountList:%s,
                                 IsDouble:%d
                                 '''\
                                 %(
@@ -8334,6 +8343,7 @@
                                 self.EquipIndex,
                                 self.IndexCount,
                                 "...",
+                                "...",
                                 self.IsDouble
                                 )
         return DumpString
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Event/EventSrc/QuestCommon.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Event/EventSrc/QuestCommon.py
index 1364ae6..19a889f 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Event/EventSrc/QuestCommon.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Event/EventSrc/QuestCommon.py
@@ -100,7 +100,7 @@
 
 Def_Mission_Type_Main = 0 # 主线剧情
 Def_Mission_Type_MainHid = 120 # 隐藏主线剧情
-Def_GM_Active_Mission_Type = 20
+Def_GM_Active_Mission_Type = 999 #暂时不用,配大点
 Def_Mission_Type_RunDaily = 7
 Def_Mission_Type_RunFamily = 12
 
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 2742f25..a6dd710 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/ItemControler.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/ItemControler.py
@@ -1017,7 +1017,8 @@
         eventName, isForceEvent, addDict = event
         isNeedRecord = isForceEvent or ItemNeedRecord(tagItem)
         if packIndex == ShareDefine.rptRune:
-            setItemKeyData = GetRuneItemKeyData(tagItem.GetItemTypeID(), tagItem.GetUserAttr(ShareDefine.Def_IudetRuneLV))
+            runeSource = tagItem.GetUserAttr(ShareDefine.Def_IudetRuneSource) or 1
+            setItemKeyData = GetRuneItemKeyData(tagItem.GetItemTypeID(), tagItem.GetUserAttr(ShareDefine.Def_IudetRuneLV), source=runeSource)
 
         refreshPlaceList = []
         for place in xrange(ItemCommon.GetVPackCnt(packIndex)):
@@ -1297,13 +1298,14 @@
         return True, itemIndex
     
 #==============================================================================
-# 符印物品存储字典数值数据结构: 前5位为物品ID, 6~8位为强化等级, 第10位为是否锁定
-def GetRuneItemKeyData(itemID, RuneLV, lockState=0):
+# 符印物品存储字典数值数据结构: 前5位为物品ID, 6~8位为强化等级, 第9位为来源(老号0,默认1,合成2),第10位为是否锁定
+def GetRuneItemKeyData(itemID, RuneLV, lockState=0, source=1):
     lockState = 1 if lockState > 0 else 0
-    return lockState * 1000000000 + min(RuneLV, 999) * 100000 + itemID
+    return lockState * 1000000000 + source * 100000000 + min(RuneLV, 999) * 100000 + itemID
 def GetRuneItemID(keyData): return keyData % 100000
 def GetRuneItemPlusLV(keyData): return keyData % 100000000 / 100000
 def GetRuneItemIsLock(keyData): return keyData / 1000000000
+def GetRuneItemSource(keyData): return keyData % 1000000000 / 100000000
 def IsRuneItemNeedRecord(curItem, plusLV):
     return plusLV > 0 or curItem.GetItemColor() >= ChConfig.Def_Quality_Orange
 
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerDogz.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerDogz.py
index ccb1d2d..5620200 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerDogz.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerDogz.py
@@ -314,6 +314,7 @@
 #    BYTE        EquipIndex;    //神兽装备背包中索引
 #    BYTE        IndexCount;        //材料所在神兽物品背包索引的数量
 #    BYTE        IndexList[IndexCount];    //材料所在神兽物品背包索引列表
+#    BYTE        IndexUseCountList[IndexCount];    //材料所在神兽物品背包索引对应使用个数列表
 #    BYTE        IsDouble;        //是否双倍强化
 #};
 def OnDogzEquipPlus(index, clientData, tick):
@@ -321,8 +322,14 @@
     playerID = curPlayer.GetPlayerID()
     equipIndex = clientData.EquipIndex
     indexList = clientData.IndexList
+    indexUseCountList = clientData.IndexUseCountList
     isDouble = clientData.IsDouble
-    GameWorld.DebugLog("神兽装备强化: equipIndex=%s,indexList=%s,isDouble=%s" % (equipIndex, indexList, isDouble), playerID)
+    GameWorld.DebugLog("神兽装备强化: equipIndex=%s,indexList=%s,indexUseCountList=%s,isDouble=%s" 
+                       % (equipIndex, indexList, indexUseCountList, isDouble), playerID)
+    
+    if len(indexList) != len(indexUseCountList):
+        GameWorld.DebugLog("    指定消耗的个数数据长度错误!")
+        return
     
     dogzEquipPack = curPlayer.GetItemManager().GetPack(ShareDefine.rptDogzEquip)
     curEquip = dogzEquipPack.GetAt(equipIndex)
@@ -370,24 +377,25 @@
             GameWorld.ErrLog("神兽背包物品无经验效果,无法强化!i=%s,itemID=%s" % (i, curItem.GetItemTypeID()), playerID)
             return
         
+        delCount = max(1, min(curItem.GetCount(), indexUseCountList[i]))
         baseExp = effect.GetEffectValue(0)
         doubleCostGold = effect.GetEffectValue(1)
         
-        addExp = baseExp
+        addExp = baseExp * delCount
         plusInfoCount = curItem.GetUserAttrCount(ShareDefine.Def_IudetDogzEquipPlus)
         if not plusInfoCount:
             if isDouble and doubleCostGold:
-                addExp = (baseExp * 2)
-                costGoldTotal += doubleCostGold
-            GameWorld.DebugLog("    强化: addExp=%s,baseExp=%s,isDouble=%s,doubleCostGold=%s,costGoldTotal=%s" 
-                               % (addExp, baseExp, isDouble, doubleCostGold, costGoldTotal), playerID)
+                addExp = (baseExp * 2 * delCount)
+                costGoldTotal += doubleCostGold * delCount
+            GameWorld.DebugLog("    强化: addExp=%s,delCount=%s,baseExp=%s,isDouble=%s,doubleCostGold=%s,costGoldTotal=%s" 
+                               % (addExp, delCount, baseExp, isDouble, doubleCostGold, costGoldTotal), playerID)
         else:
             #plusLV = curItem.GetUserAttrByIndex(ShareDefine.Def_IudetDogzEquipPlus, 0)
             plusExpTotal = curItem.GetUserAttrByIndex(ShareDefine.Def_IudetDogzEquipPlus, 1)
             addExp += plusExpTotal
-            GameWorld.DebugLog("    强化: addExp=%s,baseExp=%s,plusExpTotal=%s" % (addExp, baseExp, plusExpTotal), playerID)
+            GameWorld.DebugLog("    强化: addExp=%s,delCount=%s,baseExp=%s,plusExpTotal=%s" % (addExp, delCount, baseExp, plusExpTotal), playerID)
         addExpTotal += addExp
-        delItemList.append(curItem)
+        delItemList.append([curItem, delCount])
         
     if not delItemList:
         GameWorld.DebugLog("    没有材料可强化!", playerID)
@@ -401,8 +409,8 @@
                                       ChConfig.Def_Cost_DogzEquipPlus, infoDict):
             return
         
-    for delItem in delItemList:
-        ItemCommon.DelItem(curPlayer, delItem, curItem.GetCount(), False, ChConfig.ItemDel_DogzEquipPlus, infoDict)
+    for delItem, delCount in delItemList:
+        ItemCommon.DelItem(curPlayer, delItem, delCount, False, ChConfig.ItemDel_DogzEquipPlus, infoDict)
         
     updPlusLV = curPlusLV
     doCount, maxDoCount = 0, maxPlusLV * 2
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 06b876f..c6acf5e 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerRune.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerRune.py
@@ -422,7 +422,7 @@
                     decompose += decompose * addPer / ShareDefine.Def_MaxRateValue
                     
             ipyData = IpyGameDataPY.GetIpyGameDataNotLog('RuneCompound', RuneItemID)
-            if ipyData:
+            if ipyData and ItemControler.GetRuneItemSource(RuneData) in [0,2]:
                 totalMJ += ipyData.GetNeedMJ()
             
 
@@ -568,6 +568,7 @@
     #给新物品
     curItem = ItemControler.GetOutPutItemObj(tagItemID)
     curItem.SetUserAttr(ShareDefine.Def_IudetRuneLV, tagItemLV)
+    curItem.SetUserAttr(ShareDefine.Def_IudetRuneSource, 2)
     PlayerItemControler = ItemControler.PlayerItemControler(curPlayer)
     PlayerItemControler.PutInItem(ShareDefine.rptRune, curItem, event=[ChConfig.ItemGive_RuneCompound, False, {}])
     return
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ShareDefine.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ShareDefine.py
index c73e566..4887c3b 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ShareDefine.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ShareDefine.py
@@ -1232,6 +1232,7 @@
 Def_IudetCreateItemLoginDay = 34  # 创建物品时的登录天数
 Def_IudetLastOpenItemLoginDay = 36  # 上一次开启物品时的登录天数
 Def_IudetRuneLV = 38  # 符印等级
+Def_IudetRuneSource = 40  # 符印来源 老号0,默认1,合成2(主要用来区分是否合成获得)
 Def_IudetWingProgressValue = 42 #羽翼精炼值
 Def_IudetCreateTime = 44 # 时效物品的创建时间
 

--
Gitblit v1.8.0