From a572273422ce72347de0697eccc0c57fefb1f85d Mon Sep 17 00:00:00 2001
From: xdh <xiefantasy@qq.com>
Date: 星期三, 27 三月 2019 14:25:49 +0800
Subject: [PATCH] 6244 【后端】【2.0】法宝调整

---
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/SetFabao.py                           |   27 -
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/ItemControler.py                             |    4 
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetPack.py                                    |   52 -----
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py                                |   71 -------
 ServerPython/CoreServerGroup/GameServer/Script/ChPyNetPack.py                                                         |   52 -----
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_MagicWeapon.py |   19 +
 ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py                                                     |   71 -------
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Event/EventSrc/QuestRunner.py                     |    2 
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerMagicWeapon.py                       |  211 ++++-----------------
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/PyNetPack.ini                                            |    5 
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/IpyGameDataPY.py                                  |   27 -
 PySysDB/PySysDBPY.h                                                                                                   |    9 
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerSuccess.py                           |    1 
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Event/EventShell.py                               |    7 
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py                                       |    4 
 15 files changed, 78 insertions(+), 484 deletions(-)

diff --git a/PySysDB/PySysDBPY.h b/PySysDB/PySysDBPY.h
index 88ae5d3..9268dbb 100644
--- a/PySysDB/PySysDBPY.h
+++ b/PySysDB/PySysDBPY.h
@@ -678,9 +678,9 @@
 	DWORD		_ID;	//ID
 	BYTE		TreasureType;	//法宝类型
 	DWORD		PreTreasure;	//前置法宝
-	list		SuccID;	//成就ID
-	list		Potentials;	//技能潜力升级
-	list		SkillPower;	//技能解锁战力
+	DWORD		FBMapID;	//副本ID
+	DWORD		FBLineID;	//副本线路ID
+	DWORD		NeedLV;	//需要等级
 	dict		NeedItem;	//需要消耗物品
 };
 
@@ -693,9 +693,6 @@
 	DWORD		NeedExp;	//需要经验
 	dict		AddAttr;	//属性
 	list		UnLockSkill;	//解锁的技能
-	DWORD		ActiveMWID;	//激活法宝ID
-	list		ItemAward;	//物品奖励[itemID,cnt,isbind]
-	DWORD		ActiveSoulID;	//激活魂ID
 	DWORD		PowerEx;	//额外固定战力
 };
 
diff --git a/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetPack.py b/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetPack.py
index 237882b..770691f 100644
--- a/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetPack.py
+++ b/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetPack.py
@@ -9899,58 +9899,6 @@
 
 
 #------------------------------------------------------
-# A5 16 法宝状态记录 #tagCMMagicWeaponState
-
-class  tagCMMagicWeaponState(Structure):
-    _pack_ = 1
-    _fields_ = [
-                  ("Cmd", c_ubyte),
-                  ("SubCmd", c_ubyte),
-                  ("MWID", c_int),    #法宝ID
-                  ]
-
-    def __init__(self):
-        self.Clear()
-        self.Cmd = 0xA5
-        self.SubCmd = 0x16
-        return
-
-    def ReadData(self, stringData, _pos=0, _len=0):
-        self.Clear()
-        memmove(addressof(self), stringData[_pos:], self.GetLength())
-        return _pos + self.GetLength()
-
-    def Clear(self):
-        self.Cmd = 0xA5
-        self.SubCmd = 0x16
-        self.MWID = 0
-        return
-
-    def GetLength(self):
-        return sizeof(tagCMMagicWeaponState)
-
-    def GetBuffer(self):
-        return string_at(addressof(self), self.GetLength())
-
-    def OutputString(self):
-        DumpString = '''// A5 16 法宝状态记录 //tagCMMagicWeaponState:
-                                Cmd:%s,
-                                SubCmd:%s,
-                                MWID:%d
-                                '''\
-                                %(
-                                self.Cmd,
-                                self.SubCmd,
-                                self.MWID
-                                )
-        return DumpString
-
-
-m_NAtagCMMagicWeaponState=tagCMMagicWeaponState()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMMagicWeaponState.Cmd,m_NAtagCMMagicWeaponState.SubCmd))] = m_NAtagCMMagicWeaponState
-
-
-#------------------------------------------------------
 # A5 15 提升法宝等级 #tagCMMagicWeaponUp
 
 class  tagCMMagicWeaponUp(Structure):
diff --git a/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py b/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py
index 3be2ddf..c85740d 100644
--- a/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py
+++ b/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py
@@ -14901,73 +14901,6 @@
 
 
 #------------------------------------------------------
-# A3 12 通知玩家法宝信息 #tagMCMagicWeaponData
-
-class  tagMCMagicWeaponData(Structure):
-    Head = tagHead()
-    Num = 0    #(BYTE Num)//个数
-    MagicWeaponID = list()    #(vector<DWORD> MagicWeaponID)// 已激活的法宝ID列表
-    data = None
-
-    def __init__(self):
-        self.Clear()
-        self.Head.Cmd = 0xA3
-        self.Head.SubCmd = 0x12
-        return
-
-    def ReadData(self, _lpData, _pos=0, _Len=0):
-        self.Clear()
-        _pos = self.Head.ReadData(_lpData, _pos)
-        self.Num,_pos = CommFunc.ReadBYTE(_lpData, _pos)
-        for i in range(self.Num):
-            value,_pos=CommFunc.ReadDWORD(_lpData,_pos)
-            self.MagicWeaponID.append(value)
-        return _pos
-
-    def Clear(self):
-        self.Head = tagHead()
-        self.Head.Clear()
-        self.Head.Cmd = 0xA3
-        self.Head.SubCmd = 0x12
-        self.Num = 0
-        self.MagicWeaponID = list()
-        return
-
-    def GetLength(self):
-        length = 0
-        length += self.Head.GetLength()
-        length += 1
-        length += 4 * self.Num
-
-        return length
-
-    def GetBuffer(self):
-        data = ''
-        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
-        data = CommFunc.WriteBYTE(data, self.Num)
-        for i in range(self.Num):
-            data = CommFunc.WriteDWORD(data, self.MagicWeaponID[i])
-        return data
-
-    def OutputString(self):
-        DumpString = '''
-                                Head:%s,
-                                Num:%d,
-                                MagicWeaponID:%s
-                                '''\
-                                %(
-                                self.Head.OutputString(),
-                                self.Num,
-                                "..."
-                                )
-        return DumpString
-
-
-m_NAtagMCMagicWeaponData=tagMCMagicWeaponData()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCMagicWeaponData.Head.Cmd,m_NAtagMCMagicWeaponData.Head.SubCmd))] = m_NAtagMCMagicWeaponData
-
-
-#------------------------------------------------------
 # A3 52 法宝等级信息 #tagMCMagicWeaponLVInfo
 
 class  tagMCMagicWeaponInfo(Structure):
@@ -14976,7 +14909,6 @@
                   ("MWID", c_int),    
                   ("LV", c_ubyte),    
                   ("Exp", c_int),    
-                  ("State", c_ubyte),    #是否点击法宝认主
                   ("FBPassLV", c_ubyte),    #副本关卡
                   ("IsWear", c_ubyte),    #是否佩戴(仅适用王者法宝)
                   ]
@@ -14994,7 +14926,6 @@
         self.MWID = 0
         self.LV = 0
         self.Exp = 0
-        self.State = 0
         self.FBPassLV = 0
         self.IsWear = 0
         return
@@ -15010,7 +14941,6 @@
                                 MWID:%d,
                                 LV:%d,
                                 Exp:%d,
-                                State:%d,
                                 FBPassLV:%d,
                                 IsWear:%d
                                 '''\
@@ -15018,7 +14948,6 @@
                                 self.MWID,
                                 self.LV,
                                 self.Exp,
-                                self.State,
                                 self.FBPassLV,
                                 self.IsWear
                                 )
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/PyNetPack.ini b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/PyNetPack.ini
index 1d2c205..c792523 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/PyNetPack.ini
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/PyNetPack.ini
@@ -1045,7 +1045,7 @@
 Writer = xdh
 Releaser = xdh
 RegType = 0
-RegisterPackCount = 4
+RegisterPackCount = 3
 
 PacketCMD_1=0xA5
 PacketSubCMD_1=0x1D
@@ -1059,9 +1059,6 @@
 PacketSubCMD_3=0x15
 PacketCallFunc_3=OnMagicWeaponUp
 
-PacketCMD_4=0xA5
-PacketSubCMD_4=0x16
-PacketCallFunc_4=SaveMagicWeaponState
 
 ;副本
 [FBCommon]
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py
index 2f430f8..f3a381d 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py
@@ -3867,14 +3867,12 @@
 Def_PDict_RealmExpBeginTime = "RealmExpBeginTime" #境界修为池经验开始计时时间
 
 #法宝
-Def_PDict_MagicWeaponExp = "MagicWeaponExp_%s" #法宝经验 参数法宝ID
-Def_PDict_MagicWeaponIsActive = "MagicWeaponIsActive_%s" #法宝激活状态 参数法宝ID
-Def_PDict_MagicWeaponIsClick = "MagicWeaponIsClick_%s" #法宝点击状态 参数法宝ID
 Def_PDict_MagicWeaponIsWear = "MagicWeaponIsWear_%s" #法宝佩戴状态 参数法宝ID
 Def_PDict_XBXZAwardRecord = "XBXZAwardRecord_%s" #仙宝寻主领奖记录 参数ID
 Def_PDict_MagicWeaponLV = "MagicWeaponLV_%s" #法宝等级 参数法宝ID
 Def_PDict_MagicWeaponUpExp = "MagicWeaponUpExp_%s" #法宝升级经验 参数法宝ID
 Def_PDict_MWFBPassLevel = "MWFBPassLevel_%s" #法宝副本通关关卡 参数(法宝ID)
+
 #炼丹炉
 Def_PDict_AlchemyLV = "AlchemyLV" #炼丹等级
 Def_PDict_AlchemyExp = "AlchemyExp" #炼丹经验
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetPack.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetPack.py
index 237882b..770691f 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetPack.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetPack.py
@@ -9899,58 +9899,6 @@
 
 
 #------------------------------------------------------
-# A5 16 法宝状态记录 #tagCMMagicWeaponState
-
-class  tagCMMagicWeaponState(Structure):
-    _pack_ = 1
-    _fields_ = [
-                  ("Cmd", c_ubyte),
-                  ("SubCmd", c_ubyte),
-                  ("MWID", c_int),    #法宝ID
-                  ]
-
-    def __init__(self):
-        self.Clear()
-        self.Cmd = 0xA5
-        self.SubCmd = 0x16
-        return
-
-    def ReadData(self, stringData, _pos=0, _len=0):
-        self.Clear()
-        memmove(addressof(self), stringData[_pos:], self.GetLength())
-        return _pos + self.GetLength()
-
-    def Clear(self):
-        self.Cmd = 0xA5
-        self.SubCmd = 0x16
-        self.MWID = 0
-        return
-
-    def GetLength(self):
-        return sizeof(tagCMMagicWeaponState)
-
-    def GetBuffer(self):
-        return string_at(addressof(self), self.GetLength())
-
-    def OutputString(self):
-        DumpString = '''// A5 16 法宝状态记录 //tagCMMagicWeaponState:
-                                Cmd:%s,
-                                SubCmd:%s,
-                                MWID:%d
-                                '''\
-                                %(
-                                self.Cmd,
-                                self.SubCmd,
-                                self.MWID
-                                )
-        return DumpString
-
-
-m_NAtagCMMagicWeaponState=tagCMMagicWeaponState()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMMagicWeaponState.Cmd,m_NAtagCMMagicWeaponState.SubCmd))] = m_NAtagCMMagicWeaponState
-
-
-#------------------------------------------------------
 # A5 15 提升法宝等级 #tagCMMagicWeaponUp
 
 class  tagCMMagicWeaponUp(Structure):
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py
index 3be2ddf..c85740d 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py
@@ -14901,73 +14901,6 @@
 
 
 #------------------------------------------------------
-# A3 12 通知玩家法宝信息 #tagMCMagicWeaponData
-
-class  tagMCMagicWeaponData(Structure):
-    Head = tagHead()
-    Num = 0    #(BYTE Num)//个数
-    MagicWeaponID = list()    #(vector<DWORD> MagicWeaponID)// 已激活的法宝ID列表
-    data = None
-
-    def __init__(self):
-        self.Clear()
-        self.Head.Cmd = 0xA3
-        self.Head.SubCmd = 0x12
-        return
-
-    def ReadData(self, _lpData, _pos=0, _Len=0):
-        self.Clear()
-        _pos = self.Head.ReadData(_lpData, _pos)
-        self.Num,_pos = CommFunc.ReadBYTE(_lpData, _pos)
-        for i in range(self.Num):
-            value,_pos=CommFunc.ReadDWORD(_lpData,_pos)
-            self.MagicWeaponID.append(value)
-        return _pos
-
-    def Clear(self):
-        self.Head = tagHead()
-        self.Head.Clear()
-        self.Head.Cmd = 0xA3
-        self.Head.SubCmd = 0x12
-        self.Num = 0
-        self.MagicWeaponID = list()
-        return
-
-    def GetLength(self):
-        length = 0
-        length += self.Head.GetLength()
-        length += 1
-        length += 4 * self.Num
-
-        return length
-
-    def GetBuffer(self):
-        data = ''
-        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
-        data = CommFunc.WriteBYTE(data, self.Num)
-        for i in range(self.Num):
-            data = CommFunc.WriteDWORD(data, self.MagicWeaponID[i])
-        return data
-
-    def OutputString(self):
-        DumpString = '''
-                                Head:%s,
-                                Num:%d,
-                                MagicWeaponID:%s
-                                '''\
-                                %(
-                                self.Head.OutputString(),
-                                self.Num,
-                                "..."
-                                )
-        return DumpString
-
-
-m_NAtagMCMagicWeaponData=tagMCMagicWeaponData()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCMagicWeaponData.Head.Cmd,m_NAtagMCMagicWeaponData.Head.SubCmd))] = m_NAtagMCMagicWeaponData
-
-
-#------------------------------------------------------
 # A3 52 法宝等级信息 #tagMCMagicWeaponLVInfo
 
 class  tagMCMagicWeaponInfo(Structure):
@@ -14976,7 +14909,6 @@
                   ("MWID", c_int),    
                   ("LV", c_ubyte),    
                   ("Exp", c_int),    
-                  ("State", c_ubyte),    #是否点击法宝认主
                   ("FBPassLV", c_ubyte),    #副本关卡
                   ("IsWear", c_ubyte),    #是否佩戴(仅适用王者法宝)
                   ]
@@ -14994,7 +14926,6 @@
         self.MWID = 0
         self.LV = 0
         self.Exp = 0
-        self.State = 0
         self.FBPassLV = 0
         self.IsWear = 0
         return
@@ -15010,7 +14941,6 @@
                                 MWID:%d,
                                 LV:%d,
                                 Exp:%d,
-                                State:%d,
                                 FBPassLV:%d,
                                 IsWear:%d
                                 '''\
@@ -15018,7 +14948,6 @@
                                 self.MWID,
                                 self.LV,
                                 self.Exp,
-                                self.State,
                                 self.FBPassLV,
                                 self.IsWear
                                 )
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Event/EventShell.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Event/EventShell.py
index 9155840..fbfbc0c 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Event/EventShell.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Event/EventShell.py
@@ -1727,13 +1727,6 @@
     RunQuestEvent(curPlayer, "on_activatepet", petID, Def_RunQuestType_Normal)
     return
 
-def EventRespons_OnActiveMagicWeapon(curPlayer, mwID):
-    # 激活法宝
-    RunQuestEvent(curPlayer, "on_activemagicweapon", mwID, Def_RunQuestType_Normal)
-    RunQuestEvent(curPlayer, "on_activemagicweaponex", mwID, Def_RunQuestType_RunAll)
-    RunQuestEvent(curPlayer, "on_activemagicweaponex", 0, Def_RunQuestType_RunAll)
-    return
-
 def EventRespons_MagicWeaponLV(curPlayer, mwID, lv):
     # 法宝解锁进度
     RunQuestEvent(curPlayer, "magicweaponlv", '%s_%s'%(mwID, lv), Def_RunQuestType_RunAll)
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Event/EventSrc/QuestRunner.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Event/EventSrc/QuestRunner.py
index 4dbf2eb..7f352d3 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Event/EventSrc/QuestRunner.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Event/EventSrc/QuestRunner.py
@@ -7279,8 +7279,6 @@
 def DoType_Active_Magicweapon(curPlayer, curMission, curActionNode):
     mwID = GameWorld.ToIntDef(curActionNode.GetAttribute("id"), 0)
     PlayerMagicWeapon.DoActiveMW(curPlayer, mwID)
-    PlayerMagicWeapon.NotifyMagicWeapon(curPlayer)
-    
     return
 
 ## 人物隐身 <Visible id="0隐身1现身"/>
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/SetFabao.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/SetFabao.py
index 75c5f9d..fad57cf 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/SetFabao.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/SetFabao.py
@@ -30,31 +30,21 @@
 #  @remarks 函数详细说明.
 def OnExec(curPlayer, paramList):
     if len(paramList) == 0:
-        GameWorld.DebugAnswer(curPlayer, "SetFabao 法宝ID 星数(选填) 经验(选填)")
+        GameWorld.DebugAnswer(curPlayer, "SetFabao 法宝ID 等级(选填) 经验(选填)")
         GameWorld.DebugAnswer(curPlayer, "法宝ID: 0-重置所有, 1-激活所有")
         return
     mwID = paramList[0]
-    mwLV = paramList[1] if len(paramList) > 1 else 0
+    mwLV = paramList[1] if len(paramList) > 1 else 1
     exp = paramList[2] if len(paramList) > 2 else 0
     
     if mwID == 0:
-        playerSkillManager = curPlayer.GetSkillManager()
         ipyDataMgr = IpyGameDataPY.IPY_Data()
         for i in xrange(ipyDataMgr.GetTreasureCount()):
             ipyData = ipyDataMgr.GetTreasureByIndex(i)
             mwID = ipyData.GetID()
-            PlayerMagicWeapon.SetMagicWeaponActiveState(curPlayer, mwID, False)
-            PlayerMagicWeapon.SetMagicWeaponClickState(curPlayer, mwID, False)
-            PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_MagicWeaponExp % mwID, 0)
             PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_MagicWeaponLV % mwID, 0)
             PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_MagicWeaponUpExp % mwID, 0)
-#            skillIDList = ipyData.GetUnLockSkill()
-#            for skillID in skillIDList:
-#                playerSkillManager.DeleteSkillBySkillTypeID(skillID)
-            skillIDList = ipyData.GetPotentials()
-            for skillID in skillIDList:
-                playerSkillManager.DeleteSkillBySkillTypeID(skillID)
-        PlayerMagicWeapon.NotifyMagicWeapon(curPlayer, True)
+
         PlayerMagicWeapon.Sycn_MagicWeaponLV(curPlayer)
         PlayerMagicWeapon.CalcMagicWeaponAttr(curPlayer)
         PlayerControl.PlayerControl(curPlayer).RefreshPlayerAttrState()
@@ -64,8 +54,10 @@
         for i in xrange(ipyDataMgr.GetTreasureCount()):
             ipyData = ipyDataMgr.GetTreasureByIndex(i)
             mwID = ipyData.GetID()
+            if PlayerMagicWeapon.GetIsActiveMagicWeapon(curPlayer, mwID):
+                continue
             PlayerMagicWeapon.DoActiveMW(curPlayer, mwID)
-        PlayerMagicWeapon.Sycn_MagicWeaponLV(curPlayer)
+
     else:
         ipyData = PlayerMagicWeapon.GetWMIpyData(mwID)
         if not ipyData:
@@ -77,11 +69,10 @@
             if not nextIpyData:
                 GameWorld.DebugAnswer(curPlayer, "法宝等级不存在!")
                 return
-        for lv in xrange(mwLV+1):
+        for lv in xrange(1, mwLV+1):
             PlayerMagicWeapon.DoActiveMW(curPlayer, mwID, lv)
-        PlayerMagicWeapon.Sycn_MagicWeaponLV(curPlayer, mwID)
-        
-    PlayerMagicWeapon.NotifyMagicWeapon(curPlayer)
+
+
     return
 
 
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_MagicWeapon.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_MagicWeapon.py
index f8cd829..a4473cb 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_MagicWeapon.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_MagicWeapon.py
@@ -446,15 +446,18 @@
         fbMissionID = gameFB.GetGameFBDictByKey(FBPlayerDict_MissionID)
         if fbMissionID:
             EventShell.EventRespons_FBEvent(curPlayer, "cleardevil_pass_%s" % fbMissionID)
-        # 成就
+        #触发激活法宝
         level = gameFB.GetGameFBDictByKey(FBPlayerDict_Level)
-        PlayerSuccess.DoAddSuccessProgress(curPlayer, ShareDefine.SuccType_PassWagicWeapon, 1, [lineID + 1, level])
-        # 更新关卡
-        if level:
-            ipyData = IpyGameDataPY.GetIpyGameDataByCondition('MagicWeaponFB', {'LineID':lineID, 'Level':level})
-            if ipyData:
-                mwID = ipyData.GetMWID()
-                PlayerMagicWeapon.UptateMWFBPasslv(curPlayer, mwID, level)
+        PlayerMagicWeapon.ActiveMagicWeaponByFB(curPlayer, ChConfig.Def_FBMapID_MagicWeapon, lineID, level)
+#        # 成就
+#        level = gameFB.GetGameFBDictByKey(FBPlayerDict_Level)
+#        PlayerSuccess.DoAddSuccessProgress(curPlayer, ShareDefine.SuccType_PassWagicWeapon, 1, [lineID + 1, level])
+#        # 更新关卡
+#        if level:
+#            ipyData = IpyGameDataPY.GetIpyGameDataByCondition('MagicWeaponFB', {'LineID':lineID, 'Level':level})
+#            if ipyData:
+#                mwID = ipyData.GetMWID()
+#                PlayerMagicWeapon.UptateMWFBPasslv(curPlayer, mwID, level)
                 
     
     DoFBHelp(curPlayer, tick)
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/IpyGameDataPY.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/IpyGameDataPY.py
index f4b77e0..3221f97 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/IpyGameDataPY.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/IpyGameDataPY.py
@@ -570,9 +570,9 @@
                         ("DWORD", "ID", 1),
                         ("BYTE", "TreasureType", 0),
                         ("DWORD", "PreTreasure", 0),
-                        ("list", "SuccID", 0),
-                        ("list", "Potentials", 0),
-                        ("list", "SkillPower", 0),
+                        ("DWORD", "FBMapID", 0),
+                        ("DWORD", "FBLineID", 0),
+                        ("DWORD", "NeedLV", 0),
                         ("dict", "NeedItem", 0),
                         ),
 
@@ -582,9 +582,6 @@
                         ("DWORD", "NeedExp", 0),
                         ("dict", "AddAttr", 0),
                         ("list", "UnLockSkill", 0),
-                        ("DWORD", "ActiveMWID", 0),
-                        ("list", "ItemAward", 0),
-                        ("DWORD", "ActiveSoulID", 0),
                         ("DWORD", "PowerEx", 0),
                         ),
 
@@ -2525,18 +2522,18 @@
         self.ID = 0
         self.TreasureType = 0
         self.PreTreasure = 0
-        self.SuccID = []
-        self.Potentials = []
-        self.SkillPower = []
+        self.FBMapID = 0
+        self.FBLineID = 0
+        self.NeedLV = 0
         self.NeedItem = {}
         return
         
     def GetID(self): return self.ID # ID
     def GetTreasureType(self): return self.TreasureType # 法宝类型
     def GetPreTreasure(self): return self.PreTreasure # 前置法宝
-    def GetSuccID(self): return self.SuccID # 成就ID
-    def GetPotentials(self): return self.Potentials # 技能潜力升级
-    def GetSkillPower(self): return self.SkillPower # 技能解锁战力
+    def GetFBMapID(self): return self.FBMapID # 副本ID
+    def GetFBLineID(self): return self.FBLineID # 副本线路ID
+    def GetNeedLV(self): return self.NeedLV # 需要等级
     def GetNeedItem(self): return self.NeedItem # 需要消耗物品
 
 # 法宝升级表
@@ -2548,9 +2545,6 @@
         self.NeedExp = 0
         self.AddAttr = {}
         self.UnLockSkill = []
-        self.ActiveMWID = 0
-        self.ItemAward = []
-        self.ActiveSoulID = 0
         self.PowerEx = 0
         return
         
@@ -2559,9 +2553,6 @@
     def GetNeedExp(self): return self.NeedExp # 需要经验
     def GetAddAttr(self): return self.AddAttr # 属性
     def GetUnLockSkill(self): return self.UnLockSkill # 解锁的技能
-    def GetActiveMWID(self): return self.ActiveMWID # 激活法宝ID
-    def GetItemAward(self): return self.ItemAward # 物品奖励[itemID,cnt,isbind]
-    def GetActiveSoulID(self): return self.ActiveSoulID # 激活魂ID
     def GetPowerEx(self): return self.PowerEx # 额外固定战力
 
 # 连续签到奖励表
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 359e937..591fedb 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/ItemControler.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/ItemControler.py
@@ -31,6 +31,7 @@
 import ChPyNetSendPack
 import NetPackCommon
 import Operate_EquipStone
+import PlayerMagicWeapon
 import IpyGameDataPY
 import DataRecordPack
 import EventShell
@@ -1094,7 +1095,8 @@
         itemID = tagItem.GetItemTypeID()
         #激活成就的道具
         if tagItem.GetType() == ChConfig.Def_ItemType_SuccessItem:
-            PlayerSuccess.DoAddSuccessProgress(curPlayer, ShareDefine.SuccType_GetSpecialItem, 1, [tagItem.GetEffectByIndex(0).GetEffectValue(0)])
+            PlayerMagicWeapon.DoActiveMW(curPlayer, tagItem.GetEffectByIndex(0).GetEffectValue(0))
+            tagItem.Clear()
             return True
         if itemID in ChConfig.Def_TransformItemIDList:
             # 直接转化为对应货币的物品仅在放入背包时直接转化,否则还是以真实物品的形式存在,但堆叠上限需要做特殊处理
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerMagicWeapon.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerMagicWeapon.py
index b725a41..ae1f2f7 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerMagicWeapon.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerMagicWeapon.py
@@ -9,7 +9,7 @@
 # @date 2017-05-18
 # @version 1.0
 #
-# 详细描述: 法宝系统
+# 详细描述: 法宝系统 目前激活方式:1.任务接口激活 2.通关副本 3.获得某物品 4.仙宝寻主
 #
 #-------------------------------------------------------------------------------
 #"""Version = 2017-05-18 12:00"""
@@ -38,15 +38,10 @@
 
 import random
 
-g_succInfoDict = {}
-g_potentialsSkillDict = {}
-
-
 ##登录处理
 # @param curPlayer 玩家
 # @return None
 def PlayerMagicWeaponLogin(curPlayer):
-    NotifyMagicWeapon(curPlayer, True)
     SyncXBXZAwardRecord(curPlayer)
     Sycn_MagicWeaponLV(curPlayer)
     return
@@ -63,78 +58,61 @@
 #    mwID = ipyData.GetID()
 #    GameWorld.DebugLog("法宝功能开启 激活第一个法宝 mwID=%s"%mwID)
 #    DoActiveMW(curPlayer, mwID)
-#    NotifyMagicWeapon(curPlayer)
+
     return True
 
 
-def GetIsActiveMagicWeapon(curPlayer, mwID, lv=0):
-    #获取法宝是否激活
-    #通过玩家字典值可直接判断是否已经激活,这里可不验证法宝ID是否存在,即使传入不存在的也是返回未激活
-    #if not GetWMIpyData(mwID):
-    #    return False
-    if lv:
-        curMWLV = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_MagicWeaponLV % mwID)
-        return curMWLV >= lv
-    return GameWorld.GetDictValueByBit(curPlayer, ChConfig.Def_PDict_MagicWeaponIsActive, mwID, True)
+def GetIsActiveMagicWeapon(curPlayer, mwID, lv=1):
+    #获取法宝是否达到X级
+    curMWLV = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_MagicWeaponLV % mwID)
+    return curMWLV >= lv
 
 
-def SetMagicWeaponActiveState(curPlayer, mwID, isActive=True):
-    #设置法宝激活状态
-    GameWorld.SetDictValueByBit(curPlayer, ChConfig.Def_PDict_MagicWeaponIsActive, mwID, isActive, True)
-    return
 
-
-def ActiveMagicWeapon(curPlayer, succID):
-    ##激活法宝
-    mwID = GetMWIDBySuccID(succID)
-    if mwID == None:
-        return
-    
-    isActive = GetIsActiveMagicWeapon(curPlayer, mwID)
-    if isActive:
-        return
-    succIDList = GetNeedSuccIDByMWID(mwID)
-    needExp = len(succIDList)
-    curExp = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_MagicWeaponExp % mwID)
-    
-    if curExp >= needExp:
-        return
-    
-    newExp = min(needExp, curExp + 1)
-    PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_MagicWeaponExp % mwID, newExp)
-    DataRecordPack.DR_MagicWeaponExp(curPlayer, mwID, succID, newExp, needExp)
-    ipyData = GetWMIpyData(mwID)
-    needItemDict = ipyData.GetNeedItem()
-    #GameWorld.DebugLog('    激活法宝 mwID=%s,curExp=%s,succIDList=%s' % (mwID, newExp,succIDList))
-    if newExp >= needExp and not needItemDict:
-        #成就条件达成 激活法宝
+def ActiveMagicWeaponByFB(curPlayer, mapID, lineID, passLV=0):
+    ##通关副本激活法宝(人族、魔族法宝)
+    ipyData = IpyGameDataPY.GetIpyGameDataByCondition('MagicWeaponFB', {'LineID':lineID, 'Level':passLV})
+    if ipyData:
+        mwID = ipyData.GetMWID()
+        GameWorld.Log('更新魔族副本关卡 mwID=%s,level=%s' % (mwID, passLV), curPlayer.GetID())
+        PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_MWFBPassLevel % mwID, passLV)
+        Sycn_MagicWeaponLV(curPlayer, mwID)
+        EventShell.EventRespons_MagicWeaponFBPassLV(curPlayer, mwID, passLV)
+        ipyDataList = IpyGameDataPY.GetIpyGameDataByCondition('MagicWeaponFB', {'LineID':lineID}, True)
+        maxLevel = ipyDataList[-1].GetLevel()
+        if passLV >= maxLevel:
+            DoActiveMW(curPlayer, mwID)
+        else:
+            CalcMagicWeaponAttr(curPlayer)
+            PlayerControl.PlayerControl(curPlayer).RefreshPlayerAttrState()
+    else:
+        ipyData = IpyGameDataPY.GetIpyGameDataByCondition('Treasure', {'FBMapID':mapID, 'FBLineID':lineID})
+        if not ipyData:
+            return
+        if curPlayer.GetLV() < ipyData.GetNeedLV():
+            GameWorld.Log('通关副本激活法宝 ,等级不足!!!mwID=%s, needLV=%s' % (mwID, ipyData.GetNeedLV()))
+            return
+        mwID = ipyData.GetID()
         DoActiveMW(curPlayer, mwID)
-        
     return
 
 
-def DoActiveMW(curPlayer, mwID, mwLV=0):
+def DoActiveMW(curPlayer, mwID, mwLV=1):
     if not GetWMIpyData(mwID):
         return
     PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_MagicWeaponLV % mwID, mwLV)
-    if mwLV == 0:
-        SetMagicWeaponActiveState(curPlayer, mwID)
-        #通知
-        NotifyMagicWeapon(curPlayer)
-        
+    if mwLV == 1:
+
         if mwID in IpyGameDataPY.GetFuncEvalCfg('UnblockTreasure'):
             PlayerControl.NotifyCode(curPlayer, 'UnblockTreasure', [curPlayer.GetName(), mwID])
         else:
             sysMark = IpyGameDataPY.GetFuncEvalCfg('UnblockTreasure', 2, {}).get(mwID, 'UnblockTreasure')
             PlayerControl.WorldNotify(0, sysMark, [curPlayer.GetName(), mwID])
         
-        #任务
-        EventShell.EventRespons_OnActiveMagicWeapon(curPlayer, mwID)
-    else:
-        
-        #通知客户端等级
-        Sycn_MagicWeaponLV(curPlayer, mwID)
-        EventShell.EventRespons_MagicWeaponLV(curPlayer, mwID, mwLV)
+
+    EventShell.EventRespons_MagicWeaponLV(curPlayer, mwID, mwLV)
+    #通知客户端等级
+    Sycn_MagicWeaponLV(curPlayer, mwID)
     #成就
     PlayerSuccess.DoAddSuccessProgress(curPlayer, ShareDefine.SuccType_GetMagicWeapon, 1, [mwID, mwLV])
 
@@ -145,25 +123,7 @@
     skillIDList = upIpyData.GetUnLockSkill()
     for skillID in skillIDList:
         GiveSkill(curPlayer, skillID, GameWorld.GetGameWorld().GetTick())
-    #物品奖励
-    itemAward = upIpyData.GetItemAward()
-    if itemAward:
-        itemID, itemCnt, isBind = itemAward
-        packSpace = ItemCommon.GetItemPackSpace(curPlayer, IPY_GameWorld.rptItem, 1)
-        if 1 > packSpace:
-            PlayerControl.SendMailByKey('TreasureWakeUp', [curPlayer.GetID()], [itemAward])
-        else:
-            ItemControler.GivePlayerItem(curPlayer, itemID, itemCnt, 0, [IPY_GameWorld.rptItem], event=["MWAward", False, {"mwID":mwID}])
-    activeMWID = upIpyData.GetActiveMWID()
-    if activeMWID == mwID:
-        GameWorld.ErrLog('    TreasureUp.txt 配置异常 不可激活自身法宝 mwID=%s' % mwID)
-    elif activeMWID:
-        DoActiveMW(curPlayer, activeMWID)
-    
-    #激活魂
-#    activeSoulID = upIpyData.GetActiveSoulID()
-#    if activeSoulID:
-#        __DoActiveMWSoul(curPlayer, activeSoulID, False)
+        
     
     CalcMagicWeaponAttr(curPlayer)
     PlayerControl.PlayerControl(curPlayer).RefreshPlayerAttrState()
@@ -181,32 +141,6 @@
 
 
 def GetWMIpyData(mwID):return IpyGameDataPY.GetIpyGameData('Treasure', mwID)
-
-
-def GetNeedSuccIDByMWID(mwID, ipyData=None):
-    ##获取法宝ID开启需要完成的成就ID
-    if not ipyData:
-        ipyData = GetWMIpyData(mwID)
-        if not ipyData:
-            return []
-    succIDList = list(ipyData.GetSuccID())
-    return succIDList
-
-
-def GetMWIDBySuccID(succID):
-    global g_succInfoDict
-    
-    if not g_succInfoDict:
-        ipyDataMgr = IpyGameDataPY.IPY_Data()
-        for i in xrange(ipyDataMgr.GetTreasureCount()):
-            ipyData = ipyDataMgr.GetTreasureByIndex(i)
-            mwID = ipyData.GetID()
-            succIDList = GetNeedSuccIDByMWID(mwID, ipyData)
-            for succid in succIDList:
-                if succid in g_succInfoDict:
-                    GameWorld.ErrLog('    存在相同成就激活条件的法宝 %s 和 %s' % (mwID, g_succInfoDict[succid]))
-                g_succInfoDict[succid] = mwID
-    return g_succInfoDict.get(succID)
 
 
 def GetMWActiveCntTotal(curPlayer):
@@ -270,26 +204,6 @@
     PlayerControl.PlayerControl(curPlayer).RefreshSkillFightPowerEx(skillResID, 0)
     return
 
-
-def NotifyMagicWeapon(curPlayer, isLogin=False):
-    #通知法宝信息
-    packData = ChPyNetSendPack.tagMCMagicWeaponData()
-    packData.Clear()
-    packData.MagicWeaponID = []
-
-    ipyDataMgr = IpyGameDataPY.IPY_Data()
-    for i in xrange(ipyDataMgr.GetTreasureCount()):
-        ipyData = ipyDataMgr.GetTreasureByIndex(i)
-        magicWeaponID = ipyData.GetID()
-        isActive = GetIsActiveMagicWeapon(curPlayer, magicWeaponID)
-        if not isActive:
-            continue
-        packData.MagicWeaponID.append(magicWeaponID)
-        
-    packData.Num = len(packData.MagicWeaponID)
-    if packData.Num or isLogin:
-        NetPackCommon.SendFakePack(curPlayer, packData)
-    return
 
 ##--------------------------------------------------------------------------------------------------
 
@@ -386,11 +300,7 @@
     if isActive:
         GameWorld.DebugLog('    该法宝已开启! mwID=%s' % mwID)
         return
-    succIDList = GetNeedSuccIDByMWID(mwID)
-    curExp = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_MagicWeaponExp % mwID)
-    if curExp < len(succIDList):
-        GameWorld.DebugLog('    该法宝所需成就未完成! mwID=%s, curExp=%s, succIDList=%s' % (mwID, curExp, succIDList))
-        return
+
     #消耗物品判断
     ipyData = GetWMIpyData(mwID)
     needItemDict = ipyData.GetNeedItem()
@@ -602,16 +512,15 @@
     for mwID in needCalList:
         mwLv = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_MagicWeaponLV % mwID)
         curUpExp = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_MagicWeaponUpExp % mwID)
-        state = GetIsClickMagicWeapon(curPlayer, mwID)
+        
         FBPassLV = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_MWFBPassLevel % mwID)
         isWear = GetIsWearMagicWeapon(curPlayer, mwID)
-        if isAll and not mwLv and not curUpExp and not state and not FBPassLV and not isWear:
+        if isAll and not mwLv and not curUpExp and not FBPassLV and not isWear:
             continue
         pack = ChPyNetSendPack.tagMCMagicWeaponInfo()
         pack.MWID = mwID
         pack.LV = mwLv
         pack.Exp = curUpExp
-        pack.State = state
         pack.FBPassLV = FBPassLV
         pack.IsWear = isWear
         sendPack.InfoList.append(pack)
@@ -620,34 +529,6 @@
         NetPackCommon.SendFakePack(curPlayer, sendPack)
     return
 
-
-#// A5 16 法宝状态记录 #tagCMMagicWeaponState
-#
-#struct    tagCMMagicWeaponState
-#
-#{
-#    tagHead        Head;
-#    DWORD        MWID;    //法宝ID
-#};
-def SaveMagicWeaponState(index, clientData, tick):
-    curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index)
-    mwID = clientData.MWID
-    if GetIsClickMagicWeapon(curPlayer, mwID):
-        return
-    SetMagicWeaponClickState(curPlayer, mwID)
-    Sycn_MagicWeaponLV(curPlayer, mwID)
-    return
-
-
-def GetIsClickMagicWeapon(curPlayer, mwID):
-    #获取法宝是否点击认主
-    return GameWorld.GetDictValueByBit(curPlayer, ChConfig.Def_PDict_MagicWeaponIsClick, mwID, True)
-
-
-def SetMagicWeaponClickState(curPlayer, mwID, state=1):
-    #设置法宝是否点击认主状态
-    GameWorld.SetDictValueByBit(curPlayer, ChConfig.Def_PDict_MagicWeaponIsClick, mwID, state, True)
-    return
 
 
 #// A5 1D 法宝佩戴 #tagCMWearMagicWeapon
@@ -691,13 +572,3 @@
     GameWorld.SetDictValueByBit(curPlayer, ChConfig.Def_PDict_MagicWeaponIsWear, mwID, state, True)
     return
 
-
-def UptateMWFBPasslv(curPlayer, mwID, passLV):
-    GameWorld.Log('更新关卡 mwID=%s,level=%s' % (mwID, passLV), curPlayer.GetID())
-    PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_MWFBPassLevel % mwID, passLV)
-    CalcMagicWeaponAttr(curPlayer)
-    PlayerControl.PlayerControl(curPlayer).RefreshPlayerAttrState()
-    Sycn_MagicWeaponLV(curPlayer, mwID)
-    
-    EventShell.EventRespons_MagicWeaponFBPassLV(curPlayer, mwID, passLV)
-    return
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerSuccess.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerSuccess.py
index 97c2873..135532a 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerSuccess.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerSuccess.py
@@ -85,7 +85,6 @@
         SetSuccFinish(curPlayer, succID, 0)
         
         Sync_SuccTypeIndexAwardRecord(curPlayer, [succID], True) #设置成未领取的在外层同步
-        PlayerMagicWeapon.ActiveMagicWeapon(curPlayer, succID)
         EventShell.EventRespons_SuccessFinish(curPlayer, succID)
         
     return 

--
Gitblit v1.8.0