From 84d41bd256d53ebafab1ca79b35a9f91d459366a Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期二, 13 四月 2021 16:16:17 +0800
Subject: [PATCH] 8896 【BT2】【主干】【后端】特权令(同步冲突;及修改B209 B210 封包 为B211 B212)

---
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/PyNetPack.ini                           |    4 
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ShareDefine.py                   |    9 +
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetPack.py                   |   20 +-
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py               |  112 ++++++++++++++++++
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/IpyGameDataPY.py                 |   23 +++
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/ChPlayer.py               |    3 
 PySysDB/PySysDBPY.h                                                                                  |    9 +
 ServerPython/CoreServerGroup/GameServer/Script/ChPyNetPack.py                                        |   20 +-
 ServerPython/CoreServerGroup/GameServer/Script/ShareDefine.py                                        |    9 +
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerFuncSysPrivilege.py |    6 
 ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py                                    |  112 ++++++++++++++++++
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py                      |    8 +
 12 files changed, 305 insertions(+), 30 deletions(-)

diff --git a/PySysDB/PySysDBPY.h b/PySysDB/PySysDBPY.h
index 208d3e6..d0ec7bf 100644
--- a/PySysDB/PySysDBPY.h
+++ b/PySysDB/PySysDBPY.h
@@ -2303,6 +2303,15 @@
 	list		AssistPlayerAward;	// 协助奖励物品 物品ID|个数
 };
 
+//功能特权奖励表
+
+struct tagFuncSysPrivilege
+{
+	BYTE		_FuncSysID;	//功能系统ID
+	BYTE		DayNum;		//第X天
+	list		DayAwardItemInfo;	// 奖励物品信息 [[物品ID,个数,是否拍品], ...]
+};
+
 //累计充值奖励表
 
 struct tagHistoryRechargeAward
diff --git a/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetPack.py b/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetPack.py
index 69ae6c7..ebff0fa 100644
--- a/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetPack.py
+++ b/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetPack.py
@@ -15370,9 +15370,9 @@
 
 
 #------------------------------------------------------
-# B2 09 激活功能系统特权奖励 #tagMCActivateFuncSysPrivilege
+# B2 11 激活功能系统特权奖励 #tagCMActivateFuncSysPrivilege
 
-class  tagMCActivateFuncSysPrivilege(Structure):
+class  tagCMActivateFuncSysPrivilege(Structure):
     Head = tagHead()
     ActivateCount = 0    #(BYTE ActivateCount)// 激活个数
     ActivateFuncSysIDList = list()    #(vector<BYTE> ActivateFuncSysIDList)// 激活功能系统ID列表,全部激活则需要发所有ID列表
@@ -15381,7 +15381,7 @@
     def __init__(self):
         self.Clear()
         self.Head.Cmd = 0xB2
-        self.Head.SubCmd = 0x09
+        self.Head.SubCmd = 0x11
         return
 
     def ReadData(self, _lpData, _pos=0, _Len=0):
@@ -15397,7 +15397,7 @@
         self.Head = tagHead()
         self.Head.Clear()
         self.Head.Cmd = 0xB2
-        self.Head.SubCmd = 0x09
+        self.Head.SubCmd = 0x11
         self.ActivateCount = 0
         self.ActivateFuncSysIDList = list()
         return
@@ -15432,8 +15432,8 @@
         return DumpString
 
 
-m_NAtagMCActivateFuncSysPrivilege=tagMCActivateFuncSysPrivilege()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCActivateFuncSysPrivilege.Head.Cmd,m_NAtagMCActivateFuncSysPrivilege.Head.SubCmd))] = m_NAtagMCActivateFuncSysPrivilege
+m_NAtagCMActivateFuncSysPrivilege=tagCMActivateFuncSysPrivilege()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMActivateFuncSysPrivilege.Head.Cmd,m_NAtagCMActivateFuncSysPrivilege.Head.SubCmd))] = m_NAtagCMActivateFuncSysPrivilege
 
 
 #------------------------------------------------------
@@ -15622,7 +15622,7 @@
 
 
 #------------------------------------------------------
-# B2 10 领取功能系统特权奖励 #tagCMGetFuncSysPrivilegeAward
+# B2 12 领取功能系统特权奖励 #tagCMGetFuncSysPrivilegeAward
 
 class  tagCMGetFuncSysPrivilegeAward(Structure):
     _pack_ = 1
@@ -15636,7 +15636,7 @@
     def __init__(self):
         self.Clear()
         self.Cmd = 0xB2
-        self.SubCmd = 0x10
+        self.SubCmd = 0x12
         return
 
     def ReadData(self, stringData, _pos=0, _len=0):
@@ -15646,7 +15646,7 @@
 
     def Clear(self):
         self.Cmd = 0xB2
-        self.SubCmd = 0x10
+        self.SubCmd = 0x12
         self.FuncSysID = 0
         self.DayNum = 0
         return
@@ -15658,7 +15658,7 @@
         return string_at(addressof(self), self.GetLength())
 
     def OutputString(self):
-        DumpString = '''// B2 10 领取功能系统特权奖励 //tagCMGetFuncSysPrivilegeAward:
+        DumpString = '''// B2 12 领取功能系统特权奖励 //tagCMGetFuncSysPrivilegeAward:
                                 Cmd:%s,
                                 SubCmd:%s,
                                 FuncSysID:%d,
diff --git a/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py b/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py
index 752a366..9764be9 100644
--- a/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py
+++ b/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py
@@ -34159,6 +34159,118 @@
 
 
 #------------------------------------------------------
+# B1 11 功能系统特权信息 #tagMCFuncSysPrivilegeInfoList
+
+class  tagMCFuncSysPrivilegeInfo(Structure):
+    _pack_ = 1
+    _fields_ = [
+                  ("FuncSysID", c_ubyte),    # 功能系统ID
+                  ("ActivateTime", c_int),    # 激活时间戳
+                  ("AwardState", c_int),    # 领奖状态,按天对应二进制位计算是否领奖
+                  ]
+
+    def __init__(self):
+        self.Clear()
+        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.FuncSysID = 0
+        self.ActivateTime = 0
+        self.AwardState = 0
+        return
+
+    def GetLength(self):
+        return sizeof(tagMCFuncSysPrivilegeInfo)
+
+    def GetBuffer(self):
+        return string_at(addressof(self), self.GetLength())
+
+    def OutputString(self):
+        DumpString = '''// B1 11 功能系统特权信息 //tagMCFuncSysPrivilegeInfoList:
+                                FuncSysID:%d,
+                                ActivateTime:%d,
+                                AwardState:%d
+                                '''\
+                                %(
+                                self.FuncSysID,
+                                self.ActivateTime,
+                                self.AwardState
+                                )
+        return DumpString
+
+
+class  tagMCFuncSysPrivilegeInfoList(Structure):
+    Head = tagHead()
+    PrivilegeCount = 0    #(BYTE PrivilegeCount)// 特权个数
+    PrivilegeInfoList = list()    #(vector<tagMCFuncSysPrivilegeInfo> PrivilegeInfoList)// 特权信息列表
+    data = None
+
+    def __init__(self):
+        self.Clear()
+        self.Head.Cmd = 0xB1
+        self.Head.SubCmd = 0x11
+        return
+
+    def ReadData(self, _lpData, _pos=0, _Len=0):
+        self.Clear()
+        _pos = self.Head.ReadData(_lpData, _pos)
+        self.PrivilegeCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+        for i in range(self.PrivilegeCount):
+            temPrivilegeInfoList = tagMCFuncSysPrivilegeInfo()
+            _pos = temPrivilegeInfoList.ReadData(_lpData, _pos)
+            self.PrivilegeInfoList.append(temPrivilegeInfoList)
+        return _pos
+
+    def Clear(self):
+        self.Head = tagHead()
+        self.Head.Clear()
+        self.Head.Cmd = 0xB1
+        self.Head.SubCmd = 0x11
+        self.PrivilegeCount = 0
+        self.PrivilegeInfoList = list()
+        return
+
+    def GetLength(self):
+        length = 0
+        length += self.Head.GetLength()
+        length += 1
+        for i in range(self.PrivilegeCount):
+            length += self.PrivilegeInfoList[i].GetLength()
+
+        return length
+
+    def GetBuffer(self):
+        data = ''
+        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
+        data = CommFunc.WriteBYTE(data, self.PrivilegeCount)
+        for i in range(self.PrivilegeCount):
+            data = CommFunc.WriteString(data, self.PrivilegeInfoList[i].GetLength(), self.PrivilegeInfoList[i].GetBuffer())
+        return data
+
+    def OutputString(self):
+        DumpString = '''
+                                Head:%s,
+                                PrivilegeCount:%d,
+                                PrivilegeInfoList:%s
+                                '''\
+                                %(
+                                self.Head.OutputString(),
+                                self.PrivilegeCount,
+                                "..."
+                                )
+        return DumpString
+
+
+m_NAtagMCFuncSysPrivilegeInfoList=tagMCFuncSysPrivilegeInfoList()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCFuncSysPrivilegeInfoList.Head.Cmd,m_NAtagMCFuncSysPrivilegeInfoList.Head.SubCmd))] = m_NAtagMCFuncSysPrivilegeInfoList
+
+
+#------------------------------------------------------
 # B1 06 通知玩家向目标点移动 #tagMCNotifyPlayerMove
 
 class  tagMCNotifyPlayerMove(Structure):
diff --git a/ServerPython/CoreServerGroup/GameServer/Script/ShareDefine.py b/ServerPython/CoreServerGroup/GameServer/Script/ShareDefine.py
index 5f7f9f0..38b4c10 100644
--- a/ServerPython/CoreServerGroup/GameServer/Script/ShareDefine.py
+++ b/ServerPython/CoreServerGroup/GameServer/Script/ShareDefine.py
@@ -947,7 +947,9 @@
 CDBPlayerRefresh_SkillReducePer6,   # 受到技能伤害减少6
 CDBPlayerRefresh_SkillReducePer7,   # 受到技能伤害减少7
 CDBPlayerRefresh_ExAttr17,          # ExAttr17 
-) = range(146, 230)
+CDBPlayerRefresh_BossActScore, # boss 活动积分 230
+CDBPlayerRefresh_FuncSysPrivilege, # 功能特权令 231
+) = range(146, 232)
 
 TYPE_Price_Gold_Paper_Money = 5    # 金钱类型,(先用礼券,再用金子)
 TYPE_Price_Family_Contribution = 6 # 战盟贡献度(活跃度转换得来)
@@ -957,6 +959,7 @@
 TYPE_Price_FamilyActivity = 15    # 仙盟活跃令
 TYPE_Price_FBHelpPoint = 16    # 副本助战积分, 废弃
 TYPE_Price_Honor = 18    # 荣誉
+TYPE_Price_BossActScore = 19    # boss活动积分,bt版用
 TYPE_Price_Rune = 23    # 符印精华点
 TYPE_Price_RuneSplinters = 24    # 符印碎片
 TYPE_Price_TreasureScore = 25    # 寻宝积分
@@ -965,7 +968,7 @@
 TYPE_Price_SoulDust = 28    # 魂尘
 TYPE_Price_SoulSplinters = 29    # 聚魂碎片
 TYPE_Price_SoulCore = 30    # 核心环
-
+TYPE_Price_FuncSysPrivilege = 31    # 功能系统特权令
 
 #以下是旧的金钱类型
 TYPE_Price_Magic_Integral = 101      # 魔方寻宝积分
@@ -988,6 +991,8 @@
                            TYPE_Price_SoulSplinters:CDBPlayerRefresh_SoulSplinters,
                            TYPE_Price_SoulCore:CDBPlayerRefresh_SoulCore,
                            TYPE_Price_Honor:CDBPlayerRefresh_Honor,
+                           TYPE_Price_BossActScore:CDBPlayerRefresh_BossActScore,
+                           TYPE_Price_FuncSysPrivilege:CDBPlayerRefresh_FuncSysPrivilege,
                            }
 
 # 高效战斗状态
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/PyNetPack.ini b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/PyNetPack.ini
index 5078936..a14375b 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/PyNetPack.ini
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/PyNetPack.ini
@@ -1519,11 +1519,11 @@
 RegisterPackCount = 2
 
 PacketCMD_1=0xB2
-PacketSubCMD_1=0x09
+PacketSubCMD_1=0x11
 PacketCallFunc_1=OnActivateFuncSysPrivilege
 
 PacketCMD_2=0xB2
-PacketSubCMD_2=0x10
+PacketSubCMD_2=0x12
 PacketCallFunc_2=OnGetFuncSysPrivilegeAward
 
 ;缥缈仙域
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py
index 72bf2bf..f9d82ad 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py
@@ -287,9 +287,11 @@
 Def_ItemID_SoulSplinters = 701               # 直接给聚魂碎片
 Def_ItemID_SoulCore = 702               # 直接给核心环
 Def_ItemID_Honor = 2141               # 直接给荣誉
+Def_ItemID_FuncSysPrivilege = 894               # 直接给功能特权令
 Def_TransformItemIDList = [Def_ItemID_FamilyContribution, Def_ItemID_FamilyActive, Def_ItemID_SP, Def_ItemID_GoldPaper, 
                            Def_ItemID_RealmPoint, Def_ItemID_SilverMoney, Def_ItemID_BossReborn, Def_ItemID_Ysog,
-                           Def_ItemID_SoulDust, Def_ItemID_SoulSplinters, Def_ItemID_SoulCore, Def_ItemID_Honor, Def_ItemID_GoldMoney]
+                           Def_ItemID_SoulDust, Def_ItemID_SoulSplinters, Def_ItemID_SoulCore, Def_ItemID_Honor, Def_ItemID_GoldMoney,
+                           Def_ItemID_FuncSysPrivilege]
 #---------------------------------------------------------------------
 #写死的物品类型都放这边
 Def_ItemType_All = -1             #所有类型
@@ -4094,6 +4096,10 @@
 Def_PDict_ArenaItemAddCount = "ArenaItemAddCount" # 今日已使用物品增加次数
 Def_PDict_ArenaBattleTagID = "ArenaBattleTagID" # 当前对战的对手ID
 
+#功能系统特权
+Def_PDict_FuncSysPrivilegeActTime = "FuncSysPrivilegeActTime_%s" # 系统功能特权激活时间戳,参数(系统功能ID)
+Def_PDict_FuncSysPrivilegeAward = "FuncSysPrivilegeAward_%s" # 系统功能特权领奖记录,参数(系统功能ID)
+
 #-------------------------------------------------------------------------------
 #可以从07 41封包购买的背包类型,和对应字典{背包类型:[字典key, 默认格子数]}
 
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetPack.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetPack.py
index 69ae6c7..ebff0fa 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetPack.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetPack.py
@@ -15370,9 +15370,9 @@
 
 
 #------------------------------------------------------
-# B2 09 激活功能系统特权奖励 #tagMCActivateFuncSysPrivilege
+# B2 11 激活功能系统特权奖励 #tagCMActivateFuncSysPrivilege
 
-class  tagMCActivateFuncSysPrivilege(Structure):
+class  tagCMActivateFuncSysPrivilege(Structure):
     Head = tagHead()
     ActivateCount = 0    #(BYTE ActivateCount)// 激活个数
     ActivateFuncSysIDList = list()    #(vector<BYTE> ActivateFuncSysIDList)// 激活功能系统ID列表,全部激活则需要发所有ID列表
@@ -15381,7 +15381,7 @@
     def __init__(self):
         self.Clear()
         self.Head.Cmd = 0xB2
-        self.Head.SubCmd = 0x09
+        self.Head.SubCmd = 0x11
         return
 
     def ReadData(self, _lpData, _pos=0, _Len=0):
@@ -15397,7 +15397,7 @@
         self.Head = tagHead()
         self.Head.Clear()
         self.Head.Cmd = 0xB2
-        self.Head.SubCmd = 0x09
+        self.Head.SubCmd = 0x11
         self.ActivateCount = 0
         self.ActivateFuncSysIDList = list()
         return
@@ -15432,8 +15432,8 @@
         return DumpString
 
 
-m_NAtagMCActivateFuncSysPrivilege=tagMCActivateFuncSysPrivilege()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCActivateFuncSysPrivilege.Head.Cmd,m_NAtagMCActivateFuncSysPrivilege.Head.SubCmd))] = m_NAtagMCActivateFuncSysPrivilege
+m_NAtagCMActivateFuncSysPrivilege=tagCMActivateFuncSysPrivilege()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMActivateFuncSysPrivilege.Head.Cmd,m_NAtagCMActivateFuncSysPrivilege.Head.SubCmd))] = m_NAtagCMActivateFuncSysPrivilege
 
 
 #------------------------------------------------------
@@ -15622,7 +15622,7 @@
 
 
 #------------------------------------------------------
-# B2 10 领取功能系统特权奖励 #tagCMGetFuncSysPrivilegeAward
+# B2 12 领取功能系统特权奖励 #tagCMGetFuncSysPrivilegeAward
 
 class  tagCMGetFuncSysPrivilegeAward(Structure):
     _pack_ = 1
@@ -15636,7 +15636,7 @@
     def __init__(self):
         self.Clear()
         self.Cmd = 0xB2
-        self.SubCmd = 0x10
+        self.SubCmd = 0x12
         return
 
     def ReadData(self, stringData, _pos=0, _len=0):
@@ -15646,7 +15646,7 @@
 
     def Clear(self):
         self.Cmd = 0xB2
-        self.SubCmd = 0x10
+        self.SubCmd = 0x12
         self.FuncSysID = 0
         self.DayNum = 0
         return
@@ -15658,7 +15658,7 @@
         return string_at(addressof(self), self.GetLength())
 
     def OutputString(self):
-        DumpString = '''// B2 10 领取功能系统特权奖励 //tagCMGetFuncSysPrivilegeAward:
+        DumpString = '''// B2 12 领取功能系统特权奖励 //tagCMGetFuncSysPrivilegeAward:
                                 Cmd:%s,
                                 SubCmd:%s,
                                 FuncSysID:%d,
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py
index 752a366..9764be9 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py
@@ -34159,6 +34159,118 @@
 
 
 #------------------------------------------------------
+# B1 11 功能系统特权信息 #tagMCFuncSysPrivilegeInfoList
+
+class  tagMCFuncSysPrivilegeInfo(Structure):
+    _pack_ = 1
+    _fields_ = [
+                  ("FuncSysID", c_ubyte),    # 功能系统ID
+                  ("ActivateTime", c_int),    # 激活时间戳
+                  ("AwardState", c_int),    # 领奖状态,按天对应二进制位计算是否领奖
+                  ]
+
+    def __init__(self):
+        self.Clear()
+        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.FuncSysID = 0
+        self.ActivateTime = 0
+        self.AwardState = 0
+        return
+
+    def GetLength(self):
+        return sizeof(tagMCFuncSysPrivilegeInfo)
+
+    def GetBuffer(self):
+        return string_at(addressof(self), self.GetLength())
+
+    def OutputString(self):
+        DumpString = '''// B1 11 功能系统特权信息 //tagMCFuncSysPrivilegeInfoList:
+                                FuncSysID:%d,
+                                ActivateTime:%d,
+                                AwardState:%d
+                                '''\
+                                %(
+                                self.FuncSysID,
+                                self.ActivateTime,
+                                self.AwardState
+                                )
+        return DumpString
+
+
+class  tagMCFuncSysPrivilegeInfoList(Structure):
+    Head = tagHead()
+    PrivilegeCount = 0    #(BYTE PrivilegeCount)// 特权个数
+    PrivilegeInfoList = list()    #(vector<tagMCFuncSysPrivilegeInfo> PrivilegeInfoList)// 特权信息列表
+    data = None
+
+    def __init__(self):
+        self.Clear()
+        self.Head.Cmd = 0xB1
+        self.Head.SubCmd = 0x11
+        return
+
+    def ReadData(self, _lpData, _pos=0, _Len=0):
+        self.Clear()
+        _pos = self.Head.ReadData(_lpData, _pos)
+        self.PrivilegeCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+        for i in range(self.PrivilegeCount):
+            temPrivilegeInfoList = tagMCFuncSysPrivilegeInfo()
+            _pos = temPrivilegeInfoList.ReadData(_lpData, _pos)
+            self.PrivilegeInfoList.append(temPrivilegeInfoList)
+        return _pos
+
+    def Clear(self):
+        self.Head = tagHead()
+        self.Head.Clear()
+        self.Head.Cmd = 0xB1
+        self.Head.SubCmd = 0x11
+        self.PrivilegeCount = 0
+        self.PrivilegeInfoList = list()
+        return
+
+    def GetLength(self):
+        length = 0
+        length += self.Head.GetLength()
+        length += 1
+        for i in range(self.PrivilegeCount):
+            length += self.PrivilegeInfoList[i].GetLength()
+
+        return length
+
+    def GetBuffer(self):
+        data = ''
+        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
+        data = CommFunc.WriteBYTE(data, self.PrivilegeCount)
+        for i in range(self.PrivilegeCount):
+            data = CommFunc.WriteString(data, self.PrivilegeInfoList[i].GetLength(), self.PrivilegeInfoList[i].GetBuffer())
+        return data
+
+    def OutputString(self):
+        DumpString = '''
+                                Head:%s,
+                                PrivilegeCount:%d,
+                                PrivilegeInfoList:%s
+                                '''\
+                                %(
+                                self.Head.OutputString(),
+                                self.PrivilegeCount,
+                                "..."
+                                )
+        return DumpString
+
+
+m_NAtagMCFuncSysPrivilegeInfoList=tagMCFuncSysPrivilegeInfoList()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCFuncSysPrivilegeInfoList.Head.Cmd,m_NAtagMCFuncSysPrivilegeInfoList.Head.SubCmd))] = m_NAtagMCFuncSysPrivilegeInfoList
+
+
+#------------------------------------------------------
 # B1 06 通知玩家向目标点移动 #tagMCNotifyPlayerMove
 
 class  tagMCNotifyPlayerMove(Structure):
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/IpyGameDataPY.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/IpyGameDataPY.py
index d873b36..cd8d9f7 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/IpyGameDataPY.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/IpyGameDataPY.py
@@ -1779,6 +1779,12 @@
                         ("list", "AssistPlayerAward", 0),
                         ),
 
+                "FuncSysPrivilege":(
+                        ("BYTE", "FuncSysID", 1),
+                        ("BYTE", "DayNum", 0),
+                        ("list", "DayAwardItemInfo", 0),
+                        ),
+
                 "HistoryRechargeAward":(
                         ("BYTE", "ID", 1),
                         ("float", "NeedRMB", 0),
@@ -5462,6 +5468,19 @@
     def GetRequestPlayerAward(self): return self.RequestPlayerAward #  发布奖励物品 物品ID|个数
     def GetAssistPlayerAward(self): return self.AssistPlayerAward #  协助奖励物品 物品ID|个数
 
+# 功能特权奖励表
+class IPY_FuncSysPrivilege():
+    
+    def __init__(self):
+        self.FuncSysID = 0
+        self.DayNum = 0
+        self.DayAwardItemInfo = []
+        return
+        
+    def GetFuncSysID(self): return self.FuncSysID # 功能系统ID
+    def GetDayNum(self): return self.DayNum # 第X天
+    def GetDayAwardItemInfo(self): return self.DayAwardItemInfo #  奖励物品信息 [[物品ID,个数,是否拍品], ...]
+
 # 累计充值奖励表
 class IPY_HistoryRechargeAward():
     
@@ -5861,6 +5880,8 @@
         self.ipyHorsePetSkinLen = len(self.ipyHorsePetSkinCache)
         self.ipyAssistThanksGiftCache = self.__LoadFileData("AssistThanksGift", IPY_AssistThanksGift)
         self.ipyAssistThanksGiftLen = len(self.ipyAssistThanksGiftCache)
+        self.ipyFuncSysPrivilegeCache = self.__LoadFileData("FuncSysPrivilege", IPY_FuncSysPrivilege)
+        self.ipyFuncSysPrivilegeLen = len(self.ipyFuncSysPrivilegeCache)
         self.ipyHistoryRechargeAwardCache = self.__LoadFileData("HistoryRechargeAward", IPY_HistoryRechargeAward)
         self.ipyHistoryRechargeAwardLen = len(self.ipyHistoryRechargeAwardCache)
         Log("IPY_FuncConfig count=%s" % len(self.ipyFuncConfigDict))
@@ -6391,6 +6412,8 @@
     def GetHorsePetSkinByIndex(self, index): return self.ipyHorsePetSkinCache[index]
     def GetAssistThanksGiftCount(self): return self.ipyAssistThanksGiftLen
     def GetAssistThanksGiftByIndex(self, index): return self.ipyAssistThanksGiftCache[index]
+    def GetFuncSysPrivilegeCount(self): return self.ipyFuncSysPrivilegeLen
+    def GetFuncSysPrivilegeByIndex(self, index): return self.ipyFuncSysPrivilegeCache[index]
     def GetHistoryRechargeAwardCount(self): return self.ipyHistoryRechargeAwardLen
     def GetHistoryRechargeAwardByIndex(self, index): return self.ipyHistoryRechargeAwardCache[index]
 
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/ChPlayer.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/ChPlayer.py
index 8c2515a..c5215ab 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/ChPlayer.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/ChPlayer.py
@@ -117,6 +117,7 @@
 import PlayerLuckyTreasure
 import Item_ResetAttrPoint
 import CrossActCTGBillboard
+import PlayerFuncSysPrivilege
 import CrossRealmPlayer
 import ChNetSendPack
 import FamilyRobBoss
@@ -756,6 +757,8 @@
     GY_Query_BossFirstKill.OnPlayerLogin(curPlayer)
     #创角奖励
     Sync_CreateRoleAwardInfo(curPlayer)
+    #功能系统特权
+    PlayerFuncSysPrivilege.OnPlayerLogin(curPlayer)
     #每日分享奖励
     shareGameAwardState = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_ShareGameAwardState)
     if shareGameAwardState:
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerFuncSysPrivilege.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerFuncSysPrivilege.py
index 3c0f713..805e524 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerFuncSysPrivilege.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerFuncSysPrivilege.py
@@ -31,9 +31,9 @@
     Sync_FuncSysPrivilege(curPlayer)
     return
 
-#// B2 09 激活功能系统特权奖励 #tagMCActivateFuncSysPrivilege
+#// B2 11 激活功能系统特权奖励 #tagCMActivateFuncSysPrivilege
 #
-#struct    tagMCActivateFuncSysPrivilege
+#struct    tagCMActivateFuncSysPrivilege
 #{
 #    tagHead         Head;
 #    BYTE        ActivateCount;    // 激活个数
@@ -90,7 +90,7 @@
     Sync_FuncSysPrivilege(curPlayer, canActivateList)
     return
 
-#// B2 10 领取功能系统特权奖励 #tagCMGetFuncSysPrivilegeAward
+#// B2 12 领取功能系统特权奖励 #tagCMGetFuncSysPrivilegeAward
 #
 #struct    tagCMGetFuncSysPrivilegeAward
 #{
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ShareDefine.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ShareDefine.py
index 5f7f9f0..38b4c10 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ShareDefine.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ShareDefine.py
@@ -947,7 +947,9 @@
 CDBPlayerRefresh_SkillReducePer6,   # 受到技能伤害减少6
 CDBPlayerRefresh_SkillReducePer7,   # 受到技能伤害减少7
 CDBPlayerRefresh_ExAttr17,          # ExAttr17 
-) = range(146, 230)
+CDBPlayerRefresh_BossActScore, # boss 活动积分 230
+CDBPlayerRefresh_FuncSysPrivilege, # 功能特权令 231
+) = range(146, 232)
 
 TYPE_Price_Gold_Paper_Money = 5    # 金钱类型,(先用礼券,再用金子)
 TYPE_Price_Family_Contribution = 6 # 战盟贡献度(活跃度转换得来)
@@ -957,6 +959,7 @@
 TYPE_Price_FamilyActivity = 15    # 仙盟活跃令
 TYPE_Price_FBHelpPoint = 16    # 副本助战积分, 废弃
 TYPE_Price_Honor = 18    # 荣誉
+TYPE_Price_BossActScore = 19    # boss活动积分,bt版用
 TYPE_Price_Rune = 23    # 符印精华点
 TYPE_Price_RuneSplinters = 24    # 符印碎片
 TYPE_Price_TreasureScore = 25    # 寻宝积分
@@ -965,7 +968,7 @@
 TYPE_Price_SoulDust = 28    # 魂尘
 TYPE_Price_SoulSplinters = 29    # 聚魂碎片
 TYPE_Price_SoulCore = 30    # 核心环
-
+TYPE_Price_FuncSysPrivilege = 31    # 功能系统特权令
 
 #以下是旧的金钱类型
 TYPE_Price_Magic_Integral = 101      # 魔方寻宝积分
@@ -988,6 +991,8 @@
                            TYPE_Price_SoulSplinters:CDBPlayerRefresh_SoulSplinters,
                            TYPE_Price_SoulCore:CDBPlayerRefresh_SoulCore,
                            TYPE_Price_Honor:CDBPlayerRefresh_Honor,
+                           TYPE_Price_BossActScore:CDBPlayerRefresh_BossActScore,
+                           TYPE_Price_FuncSysPrivilege:CDBPlayerRefresh_FuncSysPrivilege,
                            }
 
 # 高效战斗状态

--
Gitblit v1.8.0