From a802eaaa36aa1467ddd4e30e208f8293412bb41b Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期五, 27 十二月 2024 17:25:40 +0800
Subject: [PATCH] 10289 【越南】【英语】【砍树】【BT】运势-服务端(增加任务类型消耗培养丹34坐骑 35灵宠)

---
 ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py | 1407 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++--
 1 files changed, 1,346 insertions(+), 61 deletions(-)

diff --git a/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py b/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py
index e617a17..427682f 100644
--- a/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py
+++ b/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py
@@ -1747,6 +1747,8 @@
     NameLen = 0    #(BYTE NameLen)
     Name = ""    #(String Name)//名字
     PlayeJob = 0    #(BYTE PlayeJob)//玩家职业
+    Face = 0    #(DWORD Face)//基本脸型
+    FacePic = 0    #(DWORD FacePic)//头像框
     MoneyNum = 0    #(DWORD MoneyNum)//金钱数量
     data = None
 
@@ -1759,6 +1761,8 @@
         self.NameLen,_pos = CommFunc.ReadBYTE(_lpData, _pos)
         self.Name,_pos = CommFunc.ReadString(_lpData, _pos,self.NameLen)
         self.PlayeJob,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+        self.Face,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+        self.FacePic,_pos = CommFunc.ReadDWORD(_lpData, _pos)
         self.MoneyNum,_pos = CommFunc.ReadDWORD(_lpData, _pos)
         return _pos
 
@@ -1766,6 +1770,8 @@
         self.NameLen = 0
         self.Name = ""
         self.PlayeJob = 0
+        self.Face = 0
+        self.FacePic = 0
         self.MoneyNum = 0
         return
 
@@ -1775,6 +1781,8 @@
         length += len(self.Name)
         length += 1
         length += 4
+        length += 4
+        length += 4
 
         return length
 
@@ -1783,6 +1791,8 @@
         data = CommFunc.WriteBYTE(data, self.NameLen)
         data = CommFunc.WriteString(data, self.NameLen, self.Name)
         data = CommFunc.WriteBYTE(data, self.PlayeJob)
+        data = CommFunc.WriteDWORD(data, self.Face)
+        data = CommFunc.WriteDWORD(data, self.FacePic)
         data = CommFunc.WriteDWORD(data, self.MoneyNum)
         return data
 
@@ -1791,12 +1801,16 @@
                                 NameLen:%d,
                                 Name:%s,
                                 PlayeJob:%d,
+                                Face:%d,
+                                FacePic:%d,
                                 MoneyNum:%d
                                 '''\
                                 %(
                                 self.NameLen,
                                 self.Name,
                                 self.PlayeJob,
+                                self.Face,
+                                self.FacePic,
                                 self.MoneyNum
                                 )
         return DumpString
@@ -1885,6 +1899,8 @@
     Name = ""    #(String Name)//玩家名字
     Time = 0    #(DWORD Time)//时间
     PlayeJob = 0    #(BYTE PlayeJob)//玩家职业
+    Face = 0    #(DWORD Face)//基本脸型
+    FacePic = 0    #(DWORD FacePic)//头像框
     MoneyType = 0    #(BYTE MoneyType)//金钱类型
     MoneyNum = 0    #(DWORD MoneyNum)//金钱数量
     GetWay = 0    #(BYTE GetWay)//获得途径
@@ -1907,6 +1923,8 @@
         self.Name,_pos = CommFunc.ReadString(_lpData, _pos,self.NameLen)
         self.Time,_pos = CommFunc.ReadDWORD(_lpData, _pos)
         self.PlayeJob,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+        self.Face,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+        self.FacePic,_pos = CommFunc.ReadDWORD(_lpData, _pos)
         self.MoneyType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
         self.MoneyNum,_pos = CommFunc.ReadDWORD(_lpData, _pos)
         self.GetWay,_pos = CommFunc.ReadBYTE(_lpData, _pos)
@@ -1924,6 +1942,8 @@
         self.Name = ""
         self.Time = 0
         self.PlayeJob = 0
+        self.Face = 0
+        self.FacePic = 0
         self.MoneyType = 0
         self.MoneyNum = 0
         self.GetWay = 0
@@ -1942,6 +1962,8 @@
         length += len(self.Name)
         length += 4
         length += 1
+        length += 4
+        length += 4
         length += 1
         length += 4
         length += 1
@@ -1961,6 +1983,8 @@
         data = CommFunc.WriteString(data, self.NameLen, self.Name)
         data = CommFunc.WriteDWORD(data, self.Time)
         data = CommFunc.WriteBYTE(data, self.PlayeJob)
+        data = CommFunc.WriteDWORD(data, self.Face)
+        data = CommFunc.WriteDWORD(data, self.FacePic)
         data = CommFunc.WriteBYTE(data, self.MoneyType)
         data = CommFunc.WriteDWORD(data, self.MoneyNum)
         data = CommFunc.WriteBYTE(data, self.GetWay)
@@ -1979,6 +2003,8 @@
                                 Name:%s,
                                 Time:%d,
                                 PlayeJob:%d,
+                                Face:%d,
+                                FacePic:%d,
                                 MoneyType:%d,
                                 MoneyNum:%d,
                                 GetWay:%d,
@@ -1995,6 +2021,8 @@
                                 self.Name,
                                 self.Time,
                                 self.PlayeJob,
+                                self.Face,
+                                self.FacePic,
                                 self.MoneyType,
                                 self.MoneyNum,
                                 self.GetWay,
@@ -2968,6 +2996,8 @@
     AddScore = ""    #(String AddScore)//本次对战增加的积分,有正负
     IsWin = 0    #(BYTE IsWin)//是否获胜
     Time = 0    #(DWORD Time)//时间戳
+    Face = 0    #(DWORD Face)//基本脸型
+    FacePic = 0    #(DWORD FacePic)//头像框
     data = None
 
     def __init__(self):
@@ -2988,6 +3018,8 @@
         self.AddScore,_pos = CommFunc.ReadString(_lpData, _pos,self.AddScoreLen)
         self.IsWin,_pos = CommFunc.ReadBYTE(_lpData, _pos)
         self.Time,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+        self.Face,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+        self.FacePic,_pos = CommFunc.ReadDWORD(_lpData, _pos)
         return _pos
 
     def Clear(self):
@@ -3003,6 +3035,8 @@
         self.AddScore = ""
         self.IsWin = 0
         self.Time = 0
+        self.Face = 0
+        self.FacePic = 0
         return
 
     def GetLength(self):
@@ -3018,6 +3052,8 @@
         length += 1
         length += len(self.AddScore)
         length += 1
+        length += 4
+        length += 4
         length += 4
 
         return length
@@ -3036,6 +3072,8 @@
         data = CommFunc.WriteString(data, self.AddScoreLen, self.AddScore)
         data = CommFunc.WriteBYTE(data, self.IsWin)
         data = CommFunc.WriteDWORD(data, self.Time)
+        data = CommFunc.WriteDWORD(data, self.Face)
+        data = CommFunc.WriteDWORD(data, self.FacePic)
         return data
 
     def OutputString(self):
@@ -3051,7 +3089,9 @@
                                 AddScoreLen:%d,
                                 AddScore:%s,
                                 IsWin:%d,
-                                Time:%d
+                                Time:%d,
+                                Face:%d,
+                                FacePic:%d
                                 '''\
                                 %(
                                 self.PlayerID,
@@ -3065,7 +3105,9 @@
                                 self.AddScoreLen,
                                 self.AddScore,
                                 self.IsWin,
-                                self.Time
+                                self.Time,
+                                self.Face,
+                                self.FacePic
                                 )
         return DumpString
 
@@ -3148,6 +3190,8 @@
     FightPower = 0    #(DWORD FightPower)//战力求余亿部分,机器人读等级表取等级对应战力
     FightPowerEx = 0    #(DWORD FightPowerEx)//战力整除亿部分,机器人读等级表取等级对应战力
     Score = 0    #(DWORD Score)//积分
+    Face = 0    #(DWORD Face)//基本脸型
+    FacePic = 0    #(DWORD FacePic)//头像框
     data = None
 
     def __init__(self):
@@ -3164,6 +3208,8 @@
         self.FightPower,_pos = CommFunc.ReadDWORD(_lpData, _pos)
         self.FightPowerEx,_pos = CommFunc.ReadDWORD(_lpData, _pos)
         self.Score,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+        self.Face,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+        self.FacePic,_pos = CommFunc.ReadDWORD(_lpData, _pos)
         return _pos
 
     def Clear(self):
@@ -3175,6 +3221,8 @@
         self.FightPower = 0
         self.FightPowerEx = 0
         self.Score = 0
+        self.Face = 0
+        self.FacePic = 0
         return
 
     def GetLength(self):
@@ -3184,6 +3232,8 @@
         length += 1
         length += 2
         length += 2
+        length += 4
+        length += 4
         length += 4
         length += 4
         length += 4
@@ -3200,6 +3250,8 @@
         data = CommFunc.WriteDWORD(data, self.FightPower)
         data = CommFunc.WriteDWORD(data, self.FightPowerEx)
         data = CommFunc.WriteDWORD(data, self.Score)
+        data = CommFunc.WriteDWORD(data, self.Face)
+        data = CommFunc.WriteDWORD(data, self.FacePic)
         return data
 
     def OutputString(self):
@@ -3211,7 +3263,9 @@
                                 RealmLV:%d,
                                 FightPower:%d,
                                 FightPowerEx:%d,
-                                Score:%d
+                                Score:%d,
+                                Face:%d,
+                                FacePic:%d
                                 '''\
                                 %(
                                 self.PlayerID,
@@ -3221,7 +3275,9 @@
                                 self.RealmLV,
                                 self.FightPower,
                                 self.FightPowerEx,
-                                self.Score
+                                self.Score,
+                                self.Face,
+                                self.FacePic
                                 )
         return DumpString
 
@@ -4652,7 +4708,7 @@
     ID = 0    #(DWORD ID)
     ID2 = 0    #(DWORD ID2)
     Name1 = ""    #(char Name1[33])//名字1,用来显示排序对象名字 
-    Name2 = ""    #(char Name2[33])//名字2
+    Name2 = ""    #(char Name2[65])//名字2
     Type2 = 0    #(BYTE Type2)//附加类型,用来表示排序对象的类型,比如,玩家所属职业门派,宠物类型等
     Value1 = 0    #(DWORD Value1)//排序依赖的值,比如,等级
     Value2 = 0    #(DWORD Value2)//排序依赖的值,比如,战斗力
@@ -4679,7 +4735,7 @@
         self.ID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
         self.ID2,_pos = CommFunc.ReadDWORD(_lpData, _pos)
         self.Name1,_pos = CommFunc.ReadString(_lpData, _pos,33)
-        self.Name2,_pos = CommFunc.ReadString(_lpData, _pos,33)
+        self.Name2,_pos = CommFunc.ReadString(_lpData, _pos,65)
         self.Type2,_pos = CommFunc.ReadBYTE(_lpData, _pos)
         self.Value1,_pos = CommFunc.ReadDWORD(_lpData, _pos)
         self.Value2,_pos = CommFunc.ReadDWORD(_lpData, _pos)
@@ -4724,7 +4780,7 @@
         length += 4
         length += 4
         length += 33
-        length += 33
+        length += 65
         length += 1
         length += 4
         length += 4
@@ -4748,7 +4804,7 @@
         data = CommFunc.WriteDWORD(data, self.ID)
         data = CommFunc.WriteDWORD(data, self.ID2)
         data = CommFunc.WriteString(data, 33, self.Name1)
-        data = CommFunc.WriteString(data, 33, self.Name2)
+        data = CommFunc.WriteString(data, 65, self.Name2)
         data = CommFunc.WriteBYTE(data, self.Type2)
         data = CommFunc.WriteDWORD(data, self.Value1)
         data = CommFunc.WriteDWORD(data, self.Value2)
@@ -5796,6 +5852,8 @@
     LV = 0    #(WORD LV)// 玩家等级
     Job = 0    #(BYTE Job)// 玩家职业
     RealmLV = 0    #(WORD RealmLV)// 玩家境界
+    Face = 0    #(DWORD Face)//基本脸型
+    FacePic = 0    #(DWORD FacePic)//头像框
     EquipShowSwitch = 0    #(DWORD EquipShowSwitch)
     EquipShowIDCount = 0    #(BYTE EquipShowIDCount)
     EquipShowID = list()    #(vector<DWORD> EquipShowID)
@@ -5815,6 +5873,8 @@
         self.LV,_pos = CommFunc.ReadWORD(_lpData, _pos)
         self.Job,_pos = CommFunc.ReadBYTE(_lpData, _pos)
         self.RealmLV,_pos = CommFunc.ReadWORD(_lpData, _pos)
+        self.Face,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+        self.FacePic,_pos = CommFunc.ReadDWORD(_lpData, _pos)
         self.EquipShowSwitch,_pos = CommFunc.ReadDWORD(_lpData, _pos)
         self.EquipShowIDCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
         for i in range(self.EquipShowIDCount):
@@ -5831,6 +5891,8 @@
         self.LV = 0
         self.Job = 0
         self.RealmLV = 0
+        self.Face = 0
+        self.FacePic = 0
         self.EquipShowSwitch = 0
         self.EquipShowIDCount = 0
         self.EquipShowID = list()
@@ -5847,6 +5909,8 @@
         length += 1
         length += 2
         length += 4
+        length += 4
+        length += 4
         length += 1
         length += 4 * self.EquipShowIDCount
 
@@ -5862,6 +5926,8 @@
         data = CommFunc.WriteWORD(data, self.LV)
         data = CommFunc.WriteBYTE(data, self.Job)
         data = CommFunc.WriteWORD(data, self.RealmLV)
+        data = CommFunc.WriteDWORD(data, self.Face)
+        data = CommFunc.WriteDWORD(data, self.FacePic)
         data = CommFunc.WriteDWORD(data, self.EquipShowSwitch)
         data = CommFunc.WriteBYTE(data, self.EquipShowIDCount)
         for i in range(self.EquipShowIDCount):
@@ -5878,6 +5944,8 @@
                                 LV:%d,
                                 Job:%d,
                                 RealmLV:%d,
+                                Face:%d,
+                                FacePic:%d,
                                 EquipShowSwitch:%d,
                                 EquipShowIDCount:%d,
                                 EquipShowID:%s
@@ -5891,6 +5959,8 @@
                                 self.LV,
                                 self.Job,
                                 self.RealmLV,
+                                self.Face,
+                                self.FacePic,
                                 self.EquipShowSwitch,
                                 self.EquipShowIDCount,
                                 "..."
@@ -5983,6 +6053,8 @@
     LV = 0    #(WORD LV)// 玩家等级
     Job = 0    #(BYTE Job)// 玩家职业
     RealmLV = 0    #(WORD RealmLV)// 玩家境界
+    Face = 0    #(DWORD Face)//基本脸型
+    FacePic = 0    #(DWORD FacePic)//头像框
     data = None
 
     def __init__(self):
@@ -5999,6 +6071,8 @@
         self.LV,_pos = CommFunc.ReadWORD(_lpData, _pos)
         self.Job,_pos = CommFunc.ReadBYTE(_lpData, _pos)
         self.RealmLV,_pos = CommFunc.ReadWORD(_lpData, _pos)
+        self.Face,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+        self.FacePic,_pos = CommFunc.ReadDWORD(_lpData, _pos)
         return _pos
 
     def Clear(self):
@@ -6010,6 +6084,8 @@
         self.LV = 0
         self.Job = 0
         self.RealmLV = 0
+        self.Face = 0
+        self.FacePic = 0
         return
 
     def GetLength(self):
@@ -6022,6 +6098,8 @@
         length += 2
         length += 1
         length += 2
+        length += 4
+        length += 4
 
         return length
 
@@ -6035,6 +6113,8 @@
         data = CommFunc.WriteWORD(data, self.LV)
         data = CommFunc.WriteBYTE(data, self.Job)
         data = CommFunc.WriteWORD(data, self.RealmLV)
+        data = CommFunc.WriteDWORD(data, self.Face)
+        data = CommFunc.WriteDWORD(data, self.FacePic)
         return data
 
     def OutputString(self):
@@ -6046,7 +6126,9 @@
                                 Name:%s,
                                 LV:%d,
                                 Job:%d,
-                                RealmLV:%d
+                                RealmLV:%d,
+                                Face:%d,
+                                FacePic:%d
                                 '''\
                                 %(
                                 self.AddTime,
@@ -6056,7 +6138,9 @@
                                 self.Name,
                                 self.LV,
                                 self.Job,
-                                self.RealmLV
+                                self.RealmLV,
+                                self.Face,
+                                self.FacePic
                                 )
         return DumpString
 
@@ -7680,6 +7764,8 @@
     Job = 0    #(BYTE Job)
     LV = 0    #(WORD LV)//等级
     RealmLV = 0    #(BYTE RealmLV)//境界
+    Face = 0    #(DWORD Face)//基本脸型
+    FacePic = 0    #(DWORD FacePic)//头像框
     MapID = 0    #(DWORD MapID)
     LineID = 0    #(DWORD LineID)
     NPCID = 0    #(DWORD NPCID)
@@ -7699,6 +7785,8 @@
         self.Job,_pos = CommFunc.ReadBYTE(_lpData, _pos)
         self.LV,_pos = CommFunc.ReadWORD(_lpData, _pos)
         self.RealmLV,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+        self.Face,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+        self.FacePic,_pos = CommFunc.ReadDWORD(_lpData, _pos)
         self.MapID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
         self.LineID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
         self.NPCID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
@@ -7713,6 +7801,8 @@
         self.Job = 0
         self.LV = 0
         self.RealmLV = 0
+        self.Face = 0
+        self.FacePic = 0
         self.MapID = 0
         self.LineID = 0
         self.NPCID = 0
@@ -7731,6 +7821,8 @@
         length += 4
         length += 4
         length += 4
+        length += 4
+        length += 4
         length += 2
         length += len(self.ExData)
 
@@ -7744,6 +7836,8 @@
         data = CommFunc.WriteBYTE(data, self.Job)
         data = CommFunc.WriteWORD(data, self.LV)
         data = CommFunc.WriteBYTE(data, self.RealmLV)
+        data = CommFunc.WriteDWORD(data, self.Face)
+        data = CommFunc.WriteDWORD(data, self.FacePic)
         data = CommFunc.WriteDWORD(data, self.MapID)
         data = CommFunc.WriteDWORD(data, self.LineID)
         data = CommFunc.WriteDWORD(data, self.NPCID)
@@ -7759,6 +7853,8 @@
                                 Job:%d,
                                 LV:%d,
                                 RealmLV:%d,
+                                Face:%d,
+                                FacePic:%d,
                                 MapID:%d,
                                 LineID:%d,
                                 NPCID:%d,
@@ -7772,6 +7868,8 @@
                                 self.Job,
                                 self.LV,
                                 self.RealmLV,
+                                self.Face,
+                                self.FacePic,
                                 self.MapID,
                                 self.LineID,
                                 self.NPCID,
@@ -8230,6 +8328,8 @@
     Job = 0    #(BYTE Job)
     LV = 0    #(WORD LV)
     RealmLV = 0    #(BYTE RealmLV)//境界
+    Face = 0    #(DWORD Face)//基本脸型
+    FacePic = 0    #(DWORD FacePic)//头像框
     MapID = 0    #(DWORD MapID)
     LineID = 0    #(DWORD LineID)
     NPCID = 0    #(DWORD NPCID)
@@ -8254,6 +8354,8 @@
         self.Job,_pos = CommFunc.ReadBYTE(_lpData, _pos)
         self.LV,_pos = CommFunc.ReadWORD(_lpData, _pos)
         self.RealmLV,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+        self.Face,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+        self.FacePic,_pos = CommFunc.ReadDWORD(_lpData, _pos)
         self.MapID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
         self.LineID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
         self.NPCID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
@@ -8274,6 +8376,8 @@
         self.Job = 0
         self.LV = 0
         self.RealmLV = 0
+        self.Face = 0
+        self.FacePic = 0
         self.MapID = 0
         self.LineID = 0
         self.NPCID = 0
@@ -8295,6 +8399,8 @@
         length += 4
         length += 4
         length += 4
+        length += 4
+        length += 4
         length += 2
         length += len(self.ExData)
         length += 19
@@ -8311,6 +8417,8 @@
         data = CommFunc.WriteBYTE(data, self.Job)
         data = CommFunc.WriteWORD(data, self.LV)
         data = CommFunc.WriteBYTE(data, self.RealmLV)
+        data = CommFunc.WriteDWORD(data, self.Face)
+        data = CommFunc.WriteDWORD(data, self.FacePic)
         data = CommFunc.WriteDWORD(data, self.MapID)
         data = CommFunc.WriteDWORD(data, self.LineID)
         data = CommFunc.WriteDWORD(data, self.NPCID)
@@ -8329,6 +8437,8 @@
                                 Job:%d,
                                 LV:%d,
                                 RealmLV:%d,
+                                Face:%d,
+                                FacePic:%d,
                                 MapID:%d,
                                 LineID:%d,
                                 NPCID:%d,
@@ -8345,6 +8455,8 @@
                                 self.Job,
                                 self.LV,
                                 self.RealmLV,
+                                self.Face,
+                                self.FacePic,
                                 self.MapID,
                                 self.LineID,
                                 self.NPCID,
@@ -8448,7 +8560,9 @@
     RobPlayerID = 0    #(DWORD RobPlayerID)// 抢夺玩家ID,为0时代表没人抢夺
     RobWorkerCount = 0    #(BYTE RobWorkerCount)// 抢夺工人个数
     RobPlayerName = ""    #(char RobPlayerName[33])
+    RobJob = 0    #(BYTE RobJob)
     RobFace = 0    #(DWORD RobFace)
+    RobFacePic = 0    #(DWORD RobFacePic)
     data = None
 
     def __init__(self):
@@ -8470,7 +8584,9 @@
         self.RobPlayerID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
         self.RobWorkerCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
         self.RobPlayerName,_pos = CommFunc.ReadString(_lpData, _pos,33)
+        self.RobJob,_pos = CommFunc.ReadBYTE(_lpData, _pos)
         self.RobFace,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+        self.RobFacePic,_pos = CommFunc.ReadDWORD(_lpData, _pos)
         return _pos
 
     def Clear(self):
@@ -8487,7 +8603,9 @@
         self.RobPlayerID = 0
         self.RobWorkerCount = 0
         self.RobPlayerName = ""
+        self.RobJob = 0
         self.RobFace = 0
+        self.RobFacePic = 0
         return
 
     def GetLength(self):
@@ -8505,6 +8623,8 @@
         length += 4
         length += 1
         length += 33
+        length += 1
+        length += 4
         length += 4
 
         return length
@@ -8524,7 +8644,9 @@
         data = CommFunc.WriteDWORD(data, self.RobPlayerID)
         data = CommFunc.WriteBYTE(data, self.RobWorkerCount)
         data = CommFunc.WriteString(data, 33, self.RobPlayerName)
+        data = CommFunc.WriteBYTE(data, self.RobJob)
         data = CommFunc.WriteDWORD(data, self.RobFace)
+        data = CommFunc.WriteDWORD(data, self.RobFacePic)
         return data
 
     def OutputString(self):
@@ -8542,7 +8664,9 @@
                                 RobPlayerID:%d,
                                 RobWorkerCount:%d,
                                 RobPlayerName:%s,
-                                RobFace:%d
+                                RobJob:%d,
+                                RobFace:%d,
+                                RobFacePic:%d
                                 '''\
                                 %(
                                 self.Index,
@@ -8558,7 +8682,9 @@
                                 self.RobPlayerID,
                                 self.RobWorkerCount,
                                 self.RobPlayerName,
-                                self.RobFace
+                                self.RobJob,
+                                self.RobFace,
+                                self.RobFacePic
                                 )
         return DumpString
 
@@ -8566,7 +8692,9 @@
 class  tagGCMineArea(Structure):
     PlayerID = 0    #(DWORD PlayerID)// 福地所属玩家ID,可能是自己或其他玩家ID,当ID小于10000时为假人
     PlayerName = ""    #(char PlayerName[33])// 可能为空,如自己或假人
+    Job = 0    #(BYTE Job)
     Face = 0    #(DWORD Face)
+    FacePic = 0    #(DWORD FacePic)
     MineCount = 0    #(BYTE MineCount)
     MineItemList = list()    #(vector<tagGCMineItem> MineItemList)// 矿物列表
     data = None
@@ -8579,7 +8707,9 @@
         self.Clear()
         self.PlayerID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
         self.PlayerName,_pos = CommFunc.ReadString(_lpData, _pos,33)
+        self.Job,_pos = CommFunc.ReadBYTE(_lpData, _pos)
         self.Face,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+        self.FacePic,_pos = CommFunc.ReadDWORD(_lpData, _pos)
         self.MineCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
         for i in range(self.MineCount):
             temMineItemList = tagGCMineItem()
@@ -8590,7 +8720,9 @@
     def Clear(self):
         self.PlayerID = 0
         self.PlayerName = ""
+        self.Job = 0
         self.Face = 0
+        self.FacePic = 0
         self.MineCount = 0
         self.MineItemList = list()
         return
@@ -8599,6 +8731,8 @@
         length = 0
         length += 4
         length += 33
+        length += 1
+        length += 4
         length += 4
         length += 1
         for i in range(self.MineCount):
@@ -8610,7 +8744,9 @@
         data = ''
         data = CommFunc.WriteDWORD(data, self.PlayerID)
         data = CommFunc.WriteString(data, 33, self.PlayerName)
+        data = CommFunc.WriteBYTE(data, self.Job)
         data = CommFunc.WriteDWORD(data, self.Face)
+        data = CommFunc.WriteDWORD(data, self.FacePic)
         data = CommFunc.WriteBYTE(data, self.MineCount)
         for i in range(self.MineCount):
             data = CommFunc.WriteString(data, self.MineItemList[i].GetLength(), self.MineItemList[i].GetBuffer())
@@ -8620,14 +8756,18 @@
         DumpString = '''
                                 PlayerID:%d,
                                 PlayerName:%s,
+                                Job:%d,
                                 Face:%d,
+                                FacePic:%d,
                                 MineCount:%d,
                                 MineItemList:%s
                                 '''\
                                 %(
                                 self.PlayerID,
                                 self.PlayerName,
+                                self.Job,
                                 self.Face,
+                                self.FacePic,
                                 self.MineCount,
                                 "..."
                                 )
@@ -8723,7 +8863,9 @@
     RecordTime = 0    #(DWORD RecordTime)// 记录时间戳
     MineID = 0    #(WORD MineID)// 矿物ID,对应福地采集表中ID
     TagPlayerName = ""    #(char TagPlayerName[33])
+    TagJob = 0    #(BYTE TagJob)
     TagFace = 0    #(DWORD TagFace)
+    TagFacePic = 0    #(DWORD TagFacePic)
     data = None
 
     def __init__(self):
@@ -8737,7 +8879,9 @@
         self.RecordTime,_pos = CommFunc.ReadDWORD(_lpData, _pos)
         self.MineID,_pos = CommFunc.ReadWORD(_lpData, _pos)
         self.TagPlayerName,_pos = CommFunc.ReadString(_lpData, _pos,33)
+        self.TagJob,_pos = CommFunc.ReadBYTE(_lpData, _pos)
         self.TagFace,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+        self.TagFacePic,_pos = CommFunc.ReadDWORD(_lpData, _pos)
         return _pos
 
     def Clear(self):
@@ -8746,7 +8890,9 @@
         self.RecordTime = 0
         self.MineID = 0
         self.TagPlayerName = ""
+        self.TagJob = 0
         self.TagFace = 0
+        self.TagFacePic = 0
         return
 
     def GetLength(self):
@@ -8756,6 +8902,8 @@
         length += 4
         length += 2
         length += 33
+        length += 1
+        length += 4
         length += 4
 
         return length
@@ -8767,7 +8915,9 @@
         data = CommFunc.WriteDWORD(data, self.RecordTime)
         data = CommFunc.WriteWORD(data, self.MineID)
         data = CommFunc.WriteString(data, 33, self.TagPlayerName)
+        data = CommFunc.WriteBYTE(data, self.TagJob)
         data = CommFunc.WriteDWORD(data, self.TagFace)
+        data = CommFunc.WriteDWORD(data, self.TagFacePic)
         return data
 
     def OutputString(self):
@@ -8777,7 +8927,9 @@
                                 RecordTime:%d,
                                 MineID:%d,
                                 TagPlayerName:%s,
-                                TagFace:%d
+                                TagJob:%d,
+                                TagFace:%d,
+                                TagFacePic:%d
                                 '''\
                                 %(
                                 self.RecordType,
@@ -8785,7 +8937,9 @@
                                 self.RecordTime,
                                 self.MineID,
                                 self.TagPlayerName,
-                                self.TagFace
+                                self.TagJob,
+                                self.TagFace,
+                                self.TagFacePic
                                 )
         return DumpString
 
@@ -8929,6 +9083,8 @@
     Job = 0    #(BYTE Job)
     LV = 0    #(WORD LV)
     RealmLV = 0    #(BYTE RealmLV)//境界
+    Face = 0    #(DWORD Face)//基本脸型
+    FacePic = 0    #(DWORD FacePic)//头像框
     data = None
 
     def __init__(self):
@@ -8942,6 +9098,8 @@
         self.Job,_pos = CommFunc.ReadBYTE(_lpData, _pos)
         self.LV,_pos = CommFunc.ReadWORD(_lpData, _pos)
         self.RealmLV,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+        self.Face,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+        self.FacePic,_pos = CommFunc.ReadDWORD(_lpData, _pos)
         return _pos
 
     def Clear(self):
@@ -8950,6 +9108,8 @@
         self.Job = 0
         self.LV = 0
         self.RealmLV = 0
+        self.Face = 0
+        self.FacePic = 0
         return
 
     def GetLength(self):
@@ -8959,6 +9119,8 @@
         length += 1
         length += 2
         length += 1
+        length += 4
+        length += 4
 
         return length
 
@@ -8969,6 +9131,8 @@
         data = CommFunc.WriteBYTE(data, self.Job)
         data = CommFunc.WriteWORD(data, self.LV)
         data = CommFunc.WriteBYTE(data, self.RealmLV)
+        data = CommFunc.WriteDWORD(data, self.Face)
+        data = CommFunc.WriteDWORD(data, self.FacePic)
         return data
 
     def OutputString(self):
@@ -8977,14 +9141,18 @@
                                 PlayerName:%s,
                                 Job:%d,
                                 LV:%d,
-                                RealmLV:%d
+                                RealmLV:%d,
+                                Face:%d,
+                                FacePic:%d
                                 '''\
                                 %(
                                 self.PlayerID,
                                 self.PlayerName,
                                 self.Job,
                                 self.LV,
-                                self.RealmLV
+                                self.RealmLV,
+                                self.Face,
+                                self.FacePic
                                 )
         return DumpString
 
@@ -13134,6 +13302,8 @@
     LV = 0    #(WORD LV)// 玩家等级
     Job = 0    #(BYTE Job)// 玩家职业
     RealmLV = 0    #(WORD RealmLV)// 玩家境界
+    Face = 0    #(DWORD Face)//基本脸型
+    FacePic = 0    #(DWORD FacePic)//头像框
     FightPower = 0    #(DWORD FightPower)// 战力,求余亿
     FightPowerEx = 0    #(DWORD FightPowerEx)// 战力,整除亿
     Value1 = 0    #(DWORD Value1)//值1
@@ -13153,6 +13323,8 @@
         self.LV,_pos = CommFunc.ReadWORD(_lpData, _pos)
         self.Job,_pos = CommFunc.ReadBYTE(_lpData, _pos)
         self.RealmLV,_pos = CommFunc.ReadWORD(_lpData, _pos)
+        self.Face,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+        self.FacePic,_pos = CommFunc.ReadDWORD(_lpData, _pos)
         self.FightPower,_pos = CommFunc.ReadDWORD(_lpData, _pos)
         self.FightPowerEx,_pos = CommFunc.ReadDWORD(_lpData, _pos)
         self.Value1,_pos = CommFunc.ReadDWORD(_lpData, _pos)
@@ -13167,6 +13339,8 @@
         self.LV = 0
         self.Job = 0
         self.RealmLV = 0
+        self.Face = 0
+        self.FacePic = 0
         self.FightPower = 0
         self.FightPowerEx = 0
         self.Value1 = 0
@@ -13186,6 +13360,8 @@
         length += 4
         length += 4
         length += 4
+        length += 4
+        length += 4
 
         return length
 
@@ -13198,6 +13374,8 @@
         data = CommFunc.WriteWORD(data, self.LV)
         data = CommFunc.WriteBYTE(data, self.Job)
         data = CommFunc.WriteWORD(data, self.RealmLV)
+        data = CommFunc.WriteDWORD(data, self.Face)
+        data = CommFunc.WriteDWORD(data, self.FacePic)
         data = CommFunc.WriteDWORD(data, self.FightPower)
         data = CommFunc.WriteDWORD(data, self.FightPowerEx)
         data = CommFunc.WriteDWORD(data, self.Value1)
@@ -13213,6 +13391,8 @@
                                 LV:%d,
                                 Job:%d,
                                 RealmLV:%d,
+                                Face:%d,
+                                FacePic:%d,
                                 FightPower:%d,
                                 FightPowerEx:%d,
                                 Value1:%d,
@@ -13226,6 +13406,8 @@
                                 self.LV,
                                 self.Job,
                                 self.RealmLV,
+                                self.Face,
+                                self.FacePic,
                                 self.FightPower,
                                 self.FightPowerEx,
                                 self.Value1,
@@ -13532,6 +13714,8 @@
     LV = 0    #(WORD LV)// 玩家等级
     Job = 0    #(BYTE Job)// 玩家职业
     RealmLV = 0    #(WORD RealmLV)// 玩家境界
+    Face = 0    #(DWORD Face)//基本脸型
+    FacePic = 0    #(DWORD FacePic)//头像框
     FightPower = 0    #(DWORD FightPower)// 战力,求余亿
     FightPowerEx = 0    #(DWORD FightPowerEx)// 战力,整除亿
     data = None
@@ -13549,6 +13733,8 @@
         self.LV,_pos = CommFunc.ReadWORD(_lpData, _pos)
         self.Job,_pos = CommFunc.ReadBYTE(_lpData, _pos)
         self.RealmLV,_pos = CommFunc.ReadWORD(_lpData, _pos)
+        self.Face,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+        self.FacePic,_pos = CommFunc.ReadDWORD(_lpData, _pos)
         self.FightPower,_pos = CommFunc.ReadDWORD(_lpData, _pos)
         self.FightPowerEx,_pos = CommFunc.ReadDWORD(_lpData, _pos)
         return _pos
@@ -13561,6 +13747,8 @@
         self.LV = 0
         self.Job = 0
         self.RealmLV = 0
+        self.Face = 0
+        self.FacePic = 0
         self.FightPower = 0
         self.FightPowerEx = 0
         return
@@ -13576,6 +13764,8 @@
         length += 2
         length += 4
         length += 4
+        length += 4
+        length += 4
 
         return length
 
@@ -13588,6 +13778,8 @@
         data = CommFunc.WriteWORD(data, self.LV)
         data = CommFunc.WriteBYTE(data, self.Job)
         data = CommFunc.WriteWORD(data, self.RealmLV)
+        data = CommFunc.WriteDWORD(data, self.Face)
+        data = CommFunc.WriteDWORD(data, self.FacePic)
         data = CommFunc.WriteDWORD(data, self.FightPower)
         data = CommFunc.WriteDWORD(data, self.FightPowerEx)
         return data
@@ -13601,6 +13793,8 @@
                                 LV:%d,
                                 Job:%d,
                                 RealmLV:%d,
+                                Face:%d,
+                                FacePic:%d,
                                 FightPower:%d,
                                 FightPowerEx:%d
                                 '''\
@@ -13612,6 +13806,8 @@
                                 self.LV,
                                 self.Job,
                                 self.RealmLV,
+                                self.Face,
+                                self.FacePic,
                                 self.FightPower,
                                 self.FightPowerEx
                                 )
@@ -13626,6 +13822,8 @@
     LV = 0    #(WORD LV)// 玩家等级
     Job = 0    #(BYTE Job)// 玩家职业
     RealmLV = 0    #(WORD RealmLV)// 玩家境界
+    Face = 0    #(DWORD Face)//基本脸型
+    FacePic = 0    #(DWORD FacePic)//头像框
     FightPower = 0    #(DWORD FightPower)// 战力,求余亿
     FightPowerEx = 0    #(DWORD FightPowerEx)// 战力,整除亿
     OfflineValue = 0    #(DWORD OfflineValue)// 离线值:0-在线;1-离线;>1-上次离线时间戳,可用于计算离线多久了;当取不到玩家信息时用1代表已离线;
@@ -13646,6 +13844,8 @@
         self.LV,_pos = CommFunc.ReadWORD(_lpData, _pos)
         self.Job,_pos = CommFunc.ReadBYTE(_lpData, _pos)
         self.RealmLV,_pos = CommFunc.ReadWORD(_lpData, _pos)
+        self.Face,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+        self.FacePic,_pos = CommFunc.ReadDWORD(_lpData, _pos)
         self.FightPower,_pos = CommFunc.ReadDWORD(_lpData, _pos)
         self.FightPowerEx,_pos = CommFunc.ReadDWORD(_lpData, _pos)
         self.OfflineValue,_pos = CommFunc.ReadDWORD(_lpData, _pos)
@@ -13661,6 +13861,8 @@
         self.LV = 0
         self.Job = 0
         self.RealmLV = 0
+        self.Face = 0
+        self.FacePic = 0
         self.FightPower = 0
         self.FightPowerEx = 0
         self.OfflineValue = 0
@@ -13682,6 +13884,8 @@
         length += 4
         length += 4
         length += 4
+        length += 4
+        length += 4
 
         return length
 
@@ -13694,6 +13898,8 @@
         data = CommFunc.WriteWORD(data, self.LV)
         data = CommFunc.WriteBYTE(data, self.Job)
         data = CommFunc.WriteWORD(data, self.RealmLV)
+        data = CommFunc.WriteDWORD(data, self.Face)
+        data = CommFunc.WriteDWORD(data, self.FacePic)
         data = CommFunc.WriteDWORD(data, self.FightPower)
         data = CommFunc.WriteDWORD(data, self.FightPowerEx)
         data = CommFunc.WriteDWORD(data, self.OfflineValue)
@@ -13710,6 +13916,8 @@
                                 LV:%d,
                                 Job:%d,
                                 RealmLV:%d,
+                                Face:%d,
+                                FacePic:%d,
                                 FightPower:%d,
                                 FightPowerEx:%d,
                                 OfflineValue:%d,
@@ -13724,6 +13932,8 @@
                                 self.LV,
                                 self.Job,
                                 self.RealmLV,
+                                self.Face,
+                                self.FacePic,
                                 self.FightPower,
                                 self.FightPowerEx,
                                 self.OfflineValue,
@@ -14304,6 +14514,8 @@
     Job = 0    #(BYTE Job)// 玩家职业
     JobLevel = 0    #(BYTE JobLevel)// 玩家职业阶级
     RealmLV = 0    #(WORD RealmLV)// 玩家境界等级
+    Face = 0    #(DWORD Face)//基本脸型
+    FacePic = 0    #(DWORD FacePic)//头像框
     data = None
 
     def __init__(self):
@@ -14319,6 +14531,8 @@
         self.Job,_pos = CommFunc.ReadBYTE(_lpData, _pos)
         self.JobLevel,_pos = CommFunc.ReadBYTE(_lpData, _pos)
         self.RealmLV,_pos = CommFunc.ReadWORD(_lpData, _pos)
+        self.Face,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+        self.FacePic,_pos = CommFunc.ReadDWORD(_lpData, _pos)
         return _pos
 
     def Clear(self):
@@ -14329,6 +14543,8 @@
         self.Job = 0
         self.JobLevel = 0
         self.RealmLV = 0
+        self.Face = 0
+        self.FacePic = 0
         return
 
     def GetLength(self):
@@ -14340,6 +14556,8 @@
         length += 1
         length += 1
         length += 2
+        length += 4
+        length += 4
 
         return length
 
@@ -14352,6 +14570,8 @@
         data = CommFunc.WriteBYTE(data, self.Job)
         data = CommFunc.WriteBYTE(data, self.JobLevel)
         data = CommFunc.WriteWORD(data, self.RealmLV)
+        data = CommFunc.WriteDWORD(data, self.Face)
+        data = CommFunc.WriteDWORD(data, self.FacePic)
         return data
 
     def OutputString(self):
@@ -14362,7 +14582,9 @@
                                 LV:%d,
                                 Job:%d,
                                 JobLevel:%d,
-                                RealmLV:%d
+                                RealmLV:%d,
+                                Face:%d,
+                                FacePic:%d
                                 '''\
                                 %(
                                 self.PlayerID,
@@ -14371,7 +14593,9 @@
                                 self.LV,
                                 self.Job,
                                 self.JobLevel,
-                                self.RealmLV
+                                self.RealmLV,
+                                self.Face,
+                                self.FacePic
                                 )
         return DumpString
 
@@ -14454,6 +14678,8 @@
     Job = 0    #(BYTE Job)// 玩家职业
     JobLevel = 0    #(BYTE JobLevel)// 玩家职业阶级
     RealmLV = 0    #(WORD RealmLV)// 玩家境界等级
+    Face = 0    #(DWORD Face)//基本脸型
+    FacePic = 0    #(DWORD FacePic)//头像框
     data = None
 
     def __init__(self):
@@ -14472,6 +14698,8 @@
         self.Job,_pos = CommFunc.ReadBYTE(_lpData, _pos)
         self.JobLevel,_pos = CommFunc.ReadBYTE(_lpData, _pos)
         self.RealmLV,_pos = CommFunc.ReadWORD(_lpData, _pos)
+        self.Face,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+        self.FacePic,_pos = CommFunc.ReadDWORD(_lpData, _pos)
         return _pos
 
     def Clear(self):
@@ -14486,6 +14714,8 @@
         self.Job = 0
         self.JobLevel = 0
         self.RealmLV = 0
+        self.Face = 0
+        self.FacePic = 0
         return
 
     def GetLength(self):
@@ -14498,6 +14728,8 @@
         length += 1
         length += 1
         length += 2
+        length += 4
+        length += 4
 
         return length
 
@@ -14511,6 +14743,8 @@
         data = CommFunc.WriteBYTE(data, self.Job)
         data = CommFunc.WriteBYTE(data, self.JobLevel)
         data = CommFunc.WriteWORD(data, self.RealmLV)
+        data = CommFunc.WriteDWORD(data, self.Face)
+        data = CommFunc.WriteDWORD(data, self.FacePic)
         return data
 
     def OutputString(self):
@@ -14522,7 +14756,9 @@
                                 LV:%d,
                                 Job:%d,
                                 JobLevel:%d,
-                                RealmLV:%d
+                                RealmLV:%d,
+                                Face:%d,
+                                FacePic:%d
                                 '''\
                                 %(
                                 self.Head.OutputString(),
@@ -14532,7 +14768,9 @@
                                 self.LV,
                                 self.Job,
                                 self.JobLevel,
-                                self.RealmLV
+                                self.RealmLV,
+                                self.Face,
+                                self.FacePic
                                 )
         return DumpString
 
@@ -14983,6 +15221,8 @@
     Job = 0    #(BYTE Job)// 玩家职业
     JobLevel = 0    #(BYTE JobLevel)// 玩家职业阶级
     RealmLV = 0    #(WORD RealmLV)// 玩家境界等级
+    Face = 0    #(DWORD Face)//基本脸型
+    FacePic = 0    #(DWORD FacePic)//头像框
     PlayerState = 0    #(BYTE PlayerState)// 0: 离线 1:在线
     MapID = 0    #(DWORD MapID)// 地图ID
     LineID = 0    #(BYTE LineID)// 线路ID
@@ -15003,6 +15243,8 @@
         self.Job,_pos = CommFunc.ReadBYTE(_lpData, _pos)
         self.JobLevel,_pos = CommFunc.ReadBYTE(_lpData, _pos)
         self.RealmLV,_pos = CommFunc.ReadWORD(_lpData, _pos)
+        self.Face,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+        self.FacePic,_pos = CommFunc.ReadDWORD(_lpData, _pos)
         self.PlayerState,_pos = CommFunc.ReadBYTE(_lpData, _pos)
         self.MapID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
         self.LineID,_pos = CommFunc.ReadBYTE(_lpData, _pos)
@@ -15018,6 +15260,8 @@
         self.Job = 0
         self.JobLevel = 0
         self.RealmLV = 0
+        self.Face = 0
+        self.FacePic = 0
         self.PlayerState = 0
         self.MapID = 0
         self.LineID = 0
@@ -15034,6 +15278,8 @@
         length += 1
         length += 1
         length += 2
+        length += 4
+        length += 4
         length += 1
         length += 4
         length += 1
@@ -15051,6 +15297,8 @@
         data = CommFunc.WriteBYTE(data, self.Job)
         data = CommFunc.WriteBYTE(data, self.JobLevel)
         data = CommFunc.WriteWORD(data, self.RealmLV)
+        data = CommFunc.WriteDWORD(data, self.Face)
+        data = CommFunc.WriteDWORD(data, self.FacePic)
         data = CommFunc.WriteBYTE(data, self.PlayerState)
         data = CommFunc.WriteDWORD(data, self.MapID)
         data = CommFunc.WriteBYTE(data, self.LineID)
@@ -15067,6 +15315,8 @@
                                 Job:%d,
                                 JobLevel:%d,
                                 RealmLV:%d,
+                                Face:%d,
+                                FacePic:%d,
                                 PlayerState:%d,
                                 MapID:%d,
                                 LineID:%d
@@ -15081,6 +15331,8 @@
                                 self.Job,
                                 self.JobLevel,
                                 self.RealmLV,
+                                self.Face,
+                                self.FacePic,
                                 self.PlayerState,
                                 self.MapID,
                                 self.LineID
@@ -16056,6 +16308,8 @@
     FightPower = 0    #(DWORD FightPower)// 战力求余亿部分
     FightPowerEx = 0    #(DWORD FightPowerEx)// 战力整除亿部分
     RealmLV = 0    #(WORD RealmLV)
+    Face = 0    #(DWORD Face)//基本脸型
+    FacePic = 0    #(DWORD FacePic)//头像框
     data = None
 
     def __init__(self):
@@ -16072,6 +16326,8 @@
         self.FightPower,_pos = CommFunc.ReadDWORD(_lpData, _pos)
         self.FightPowerEx,_pos = CommFunc.ReadDWORD(_lpData, _pos)
         self.RealmLV,_pos = CommFunc.ReadWORD(_lpData, _pos)
+        self.Face,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+        self.FacePic,_pos = CommFunc.ReadDWORD(_lpData, _pos)
         return _pos
 
     def Clear(self):
@@ -16083,6 +16339,8 @@
         self.FightPower = 0
         self.FightPowerEx = 0
         self.RealmLV = 0
+        self.Face = 0
+        self.FacePic = 0
         return
 
     def GetLength(self):
@@ -16095,6 +16353,8 @@
         length += 4
         length += 4
         length += 2
+        length += 4
+        length += 4
 
         return length
 
@@ -16108,6 +16368,8 @@
         data = CommFunc.WriteDWORD(data, self.FightPower)
         data = CommFunc.WriteDWORD(data, self.FightPowerEx)
         data = CommFunc.WriteWORD(data, self.RealmLV)
+        data = CommFunc.WriteDWORD(data, self.Face)
+        data = CommFunc.WriteDWORD(data, self.FacePic)
         return data
 
     def OutputString(self):
@@ -16119,7 +16381,9 @@
                                 LV:%d,
                                 FightPower:%d,
                                 FightPowerEx:%d,
-                                RealmLV:%d
+                                RealmLV:%d,
+                                Face:%d,
+                                FacePic:%d
                                 '''\
                                 %(
                                 self.PlayerID,
@@ -16129,7 +16393,9 @@
                                 self.LV,
                                 self.FightPower,
                                 self.FightPowerEx,
-                                self.RealmLV
+                                self.RealmLV,
+                                self.Face,
+                                self.FacePic
                                 )
         return DumpString
 
@@ -16585,7 +16851,7 @@
     ID = 0    #(DWORD ID)
     ID2 = 0    #(DWORD ID2)
     Name1 = ""    #(char Name1[33])//名字1,用来显示排序对象名字 
-    Name2 = ""    #(char Name2[33])//名字2
+    Name2 = ""    #(char Name2[65])//名字2
     Type2 = 0    #(BYTE Type2)//附加类型,用来表示排序对象的类型,比如,玩家所属职业门派,宠物类型等
     Value1 = 0    #(DWORD Value1)//自定义值1
     Value2 = 0    #(DWORD Value2)//自定义值2
@@ -16612,7 +16878,7 @@
         self.ID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
         self.ID2,_pos = CommFunc.ReadDWORD(_lpData, _pos)
         self.Name1,_pos = CommFunc.ReadString(_lpData, _pos,33)
-        self.Name2,_pos = CommFunc.ReadString(_lpData, _pos,33)
+        self.Name2,_pos = CommFunc.ReadString(_lpData, _pos,65)
         self.Type2,_pos = CommFunc.ReadBYTE(_lpData, _pos)
         self.Value1,_pos = CommFunc.ReadDWORD(_lpData, _pos)
         self.Value2,_pos = CommFunc.ReadDWORD(_lpData, _pos)
@@ -16657,7 +16923,7 @@
         length += 4
         length += 4
         length += 33
-        length += 33
+        length += 65
         length += 1
         length += 4
         length += 4
@@ -16681,7 +16947,7 @@
         data = CommFunc.WriteDWORD(data, self.ID)
         data = CommFunc.WriteDWORD(data, self.ID2)
         data = CommFunc.WriteString(data, 33, self.Name1)
-        data = CommFunc.WriteString(data, 33, self.Name2)
+        data = CommFunc.WriteString(data, 65, self.Name2)
         data = CommFunc.WriteBYTE(data, self.Type2)
         data = CommFunc.WriteDWORD(data, self.Value1)
         data = CommFunc.WriteDWORD(data, self.Value2)
@@ -17077,6 +17343,8 @@
     FightPower = 0    #(DWORD FightPower)// 战力求余亿部分
     FightPowerEx = 0    #(DWORD FightPowerEx)// 战力整除亿部分
     RealmLV = 0    #(WORD RealmLV)
+    Face = 0    #(DWORD Face)//基本脸型
+    FacePic = 0    #(DWORD FacePic)//头像框
     data = None
 
     def __init__(self):
@@ -17093,6 +17361,8 @@
         self.FightPower,_pos = CommFunc.ReadDWORD(_lpData, _pos)
         self.FightPowerEx,_pos = CommFunc.ReadDWORD(_lpData, _pos)
         self.RealmLV,_pos = CommFunc.ReadWORD(_lpData, _pos)
+        self.Face,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+        self.FacePic,_pos = CommFunc.ReadDWORD(_lpData, _pos)
         return _pos
 
     def Clear(self):
@@ -17104,6 +17374,8 @@
         self.FightPower = 0
         self.FightPowerEx = 0
         self.RealmLV = 0
+        self.Face = 0
+        self.FacePic = 0
         return
 
     def GetLength(self):
@@ -17116,6 +17388,8 @@
         length += 4
         length += 4
         length += 2
+        length += 4
+        length += 4
 
         return length
 
@@ -17129,6 +17403,8 @@
         data = CommFunc.WriteDWORD(data, self.FightPower)
         data = CommFunc.WriteDWORD(data, self.FightPowerEx)
         data = CommFunc.WriteWORD(data, self.RealmLV)
+        data = CommFunc.WriteDWORD(data, self.Face)
+        data = CommFunc.WriteDWORD(data, self.FacePic)
         return data
 
     def OutputString(self):
@@ -17140,7 +17416,9 @@
                                 LV:%d,
                                 FightPower:%d,
                                 FightPowerEx:%d,
-                                RealmLV:%d
+                                RealmLV:%d,
+                                Face:%d,
+                                FacePic:%d
                                 '''\
                                 %(
                                 self.PlayerID,
@@ -17150,7 +17428,9 @@
                                 self.LV,
                                 self.FightPower,
                                 self.FightPowerEx,
-                                self.RealmLV
+                                self.RealmLV,
+                                self.Face,
+                                self.FacePic
                                 )
         return DumpString
 
@@ -17269,6 +17549,8 @@
     NameLen = 0    #(BYTE NameLen)
     PlayerName = ""    #(String PlayerName)
     Job = 0    #(BYTE Job)
+    Face = 0    #(DWORD Face)//基本脸型
+    FacePic = 0    #(DWORD FacePic)//头像框
     FightPower = 0    #(DWORD FightPower)
     RealmLV = 0    #(WORD RealmLV)
     PKScore = 0    #(DWORD PKScore)
@@ -17285,6 +17567,8 @@
         self.NameLen,_pos = CommFunc.ReadBYTE(_lpData, _pos)
         self.PlayerName,_pos = CommFunc.ReadString(_lpData, _pos,self.NameLen)
         self.Job,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+        self.Face,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+        self.FacePic,_pos = CommFunc.ReadDWORD(_lpData, _pos)
         self.FightPower,_pos = CommFunc.ReadDWORD(_lpData, _pos)
         self.RealmLV,_pos = CommFunc.ReadWORD(_lpData, _pos)
         self.PKScore,_pos = CommFunc.ReadDWORD(_lpData, _pos)
@@ -17296,6 +17580,8 @@
         self.NameLen = 0
         self.PlayerName = ""
         self.Job = 0
+        self.Face = 0
+        self.FacePic = 0
         self.FightPower = 0
         self.RealmLV = 0
         self.PKScore = 0
@@ -17309,6 +17595,8 @@
         length += len(self.PlayerName)
         length += 1
         length += 4
+        length += 4
+        length += 4
         length += 2
         length += 4
         length += 1
@@ -17321,6 +17609,8 @@
         data = CommFunc.WriteBYTE(data, self.NameLen)
         data = CommFunc.WriteString(data, self.NameLen, self.PlayerName)
         data = CommFunc.WriteBYTE(data, self.Job)
+        data = CommFunc.WriteDWORD(data, self.Face)
+        data = CommFunc.WriteDWORD(data, self.FacePic)
         data = CommFunc.WriteDWORD(data, self.FightPower)
         data = CommFunc.WriteWORD(data, self.RealmLV)
         data = CommFunc.WriteDWORD(data, self.PKScore)
@@ -17333,6 +17623,8 @@
                                 NameLen:%d,
                                 PlayerName:%s,
                                 Job:%d,
+                                Face:%d,
+                                FacePic:%d,
                                 FightPower:%d,
                                 RealmLV:%d,
                                 PKScore:%d,
@@ -17343,6 +17635,8 @@
                                 self.NameLen,
                                 self.PlayerName,
                                 self.Job,
+                                self.Face,
+                                self.FacePic,
                                 self.FightPower,
                                 self.RealmLV,
                                 self.PKScore,
@@ -17440,6 +17734,8 @@
     PlayerName = ""    #(String PlayerName)// 跨服名字
     Job = 0    #(BYTE Job)
     LV = 0    #(WORD LV)
+    Face = 0    #(DWORD Face)//基本脸型
+    FacePic = 0    #(DWORD FacePic)//头像框
     MaxHP = 0    #(DWORD MaxHP)// 默认满血,求余亿部分
     MaxHPEx = 0    #(DWORD MaxHPEx)// 默认满血,整除亿部分
     MaxProDef = 0    #(DWORD MaxProDef)// 最大护盾
@@ -17456,6 +17752,8 @@
         self.PlayerName,_pos = CommFunc.ReadString(_lpData, _pos,self.NameLen)
         self.Job,_pos = CommFunc.ReadBYTE(_lpData, _pos)
         self.LV,_pos = CommFunc.ReadWORD(_lpData, _pos)
+        self.Face,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+        self.FacePic,_pos = CommFunc.ReadDWORD(_lpData, _pos)
         self.MaxHP,_pos = CommFunc.ReadDWORD(_lpData, _pos)
         self.MaxHPEx,_pos = CommFunc.ReadDWORD(_lpData, _pos)
         self.MaxProDef,_pos = CommFunc.ReadDWORD(_lpData, _pos)
@@ -17467,6 +17765,8 @@
         self.PlayerName = ""
         self.Job = 0
         self.LV = 0
+        self.Face = 0
+        self.FacePic = 0
         self.MaxHP = 0
         self.MaxHPEx = 0
         self.MaxProDef = 0
@@ -17482,6 +17782,8 @@
         length += 4
         length += 4
         length += 4
+        length += 4
+        length += 4
 
         return length
 
@@ -17492,6 +17794,8 @@
         data = CommFunc.WriteString(data, self.NameLen, self.PlayerName)
         data = CommFunc.WriteBYTE(data, self.Job)
         data = CommFunc.WriteWORD(data, self.LV)
+        data = CommFunc.WriteDWORD(data, self.Face)
+        data = CommFunc.WriteDWORD(data, self.FacePic)
         data = CommFunc.WriteDWORD(data, self.MaxHP)
         data = CommFunc.WriteDWORD(data, self.MaxHPEx)
         data = CommFunc.WriteDWORD(data, self.MaxProDef)
@@ -17504,6 +17808,8 @@
                                 PlayerName:%s,
                                 Job:%d,
                                 LV:%d,
+                                Face:%d,
+                                FacePic:%d,
                                 MaxHP:%d,
                                 MaxHPEx:%d,
                                 MaxProDef:%d
@@ -17514,6 +17820,8 @@
                                 self.PlayerName,
                                 self.Job,
                                 self.LV,
+                                self.Face,
+                                self.FacePic,
                                 self.MaxHP,
                                 self.MaxHPEx,
                                 self.MaxProDef
@@ -28585,13 +28893,11 @@
 #------------------------------------------------------
 # A3 51 寻宝功能信息 #tagMCTreasureInfo
 
-class  tagMCTreasureTypeInfo(Structure):
+class  tagMCTreasureGridLimit(Structure):
     _pack_ = 1
     _fields_ = [
-                  ("TreasureType", c_ubyte),    #寻宝类型
-                  ("LuckValue", c_ushort),    #当前幸运值
-                  ("TreasureCount", c_int),    #已寻宝总次数
-                  ("FreeCountToday", c_ushort),    #今日已免费寻宝次数
+                  ("GridNum", c_ubyte),    # 有限制抽取次数的格子编号
+                  ("GridCnt", c_ushort),    # 已抽到次数
                   ]
 
     def __init__(self):
@@ -28604,30 +28910,109 @@
         return _pos + self.GetLength()
 
     def Clear(self):
-        self.TreasureType = 0
-        self.LuckValue = 0
-        self.TreasureCount = 0
-        self.FreeCountToday = 0
+        self.GridNum = 0
+        self.GridCnt = 0
         return
 
     def GetLength(self):
-        return sizeof(tagMCTreasureTypeInfo)
+        return sizeof(tagMCTreasureGridLimit)
 
     def GetBuffer(self):
         return string_at(addressof(self), self.GetLength())
 
     def OutputString(self):
         DumpString = '''// A3 51 寻宝功能信息 //tagMCTreasureInfo:
+                                GridNum:%d,
+                                GridCnt:%d
+                                '''\
+                                %(
+                                self.GridNum,
+                                self.GridCnt
+                                )
+        return DumpString
+
+
+class  tagMCTreasureTypeInfo(Structure):
+    TreasureType = 0    #(BYTE TreasureType)//寻宝类型
+    LuckValue = 0    #(WORD LuckValue)//当前幸运值
+    TreasureCount = 0    #(DWORD TreasureCount)//已寻宝总次数
+    FreeCountToday = 0    #(WORD FreeCountToday)//今日已免费寻宝次数
+    TreasureCntAward = 0    #(DWORD TreasureCntAward)//累计寻宝次数对应奖励领奖状态,按奖励记录索引二进制记录是否已领取
+    GridLimitCnt = 0    #(BYTE GridLimitCnt)
+    GridLimitCntList = list()    #(vector<tagMCTreasureGridLimit> GridLimitCntList)//有限制抽取次数的格子次数信息
+    data = None
+
+    def __init__(self):
+        self.Clear()
+        return
+
+    def ReadData(self, _lpData, _pos=0, _Len=0):
+        self.Clear()
+        self.TreasureType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+        self.LuckValue,_pos = CommFunc.ReadWORD(_lpData, _pos)
+        self.TreasureCount,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+        self.FreeCountToday,_pos = CommFunc.ReadWORD(_lpData, _pos)
+        self.TreasureCntAward,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+        self.GridLimitCnt,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+        for i in range(self.GridLimitCnt):
+            temGridLimitCntList = tagMCTreasureGridLimit()
+            _pos = temGridLimitCntList.ReadData(_lpData, _pos)
+            self.GridLimitCntList.append(temGridLimitCntList)
+        return _pos
+
+    def Clear(self):
+        self.TreasureType = 0
+        self.LuckValue = 0
+        self.TreasureCount = 0
+        self.FreeCountToday = 0
+        self.TreasureCntAward = 0
+        self.GridLimitCnt = 0
+        self.GridLimitCntList = list()
+        return
+
+    def GetLength(self):
+        length = 0
+        length += 1
+        length += 2
+        length += 4
+        length += 2
+        length += 4
+        length += 1
+        for i in range(self.GridLimitCnt):
+            length += self.GridLimitCntList[i].GetLength()
+
+        return length
+
+    def GetBuffer(self):
+        data = ''
+        data = CommFunc.WriteBYTE(data, self.TreasureType)
+        data = CommFunc.WriteWORD(data, self.LuckValue)
+        data = CommFunc.WriteDWORD(data, self.TreasureCount)
+        data = CommFunc.WriteWORD(data, self.FreeCountToday)
+        data = CommFunc.WriteDWORD(data, self.TreasureCntAward)
+        data = CommFunc.WriteBYTE(data, self.GridLimitCnt)
+        for i in range(self.GridLimitCnt):
+            data = CommFunc.WriteString(data, self.GridLimitCntList[i].GetLength(), self.GridLimitCntList[i].GetBuffer())
+        return data
+
+    def OutputString(self):
+        DumpString = '''
                                 TreasureType:%d,
                                 LuckValue:%d,
                                 TreasureCount:%d,
-                                FreeCountToday:%d
+                                FreeCountToday:%d,
+                                TreasureCntAward:%d,
+                                GridLimitCnt:%d,
+                                GridLimitCntList:%s
                                 '''\
                                 %(
                                 self.TreasureType,
                                 self.LuckValue,
                                 self.TreasureCount,
-                                self.FreeCountToday
+                                self.FreeCountToday,
+                                self.TreasureCntAward,
+                                self.GridLimitCnt,
+                                "..."
                                 )
         return DumpString
 
@@ -29802,6 +30187,62 @@
 
 m_NAtagMCFamilySitInfo=tagMCFamilySitInfo()
 ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCFamilySitInfo.Cmd,m_NAtagMCFamilySitInfo.SubCmd))] = m_NAtagMCFamilySitInfo
+
+
+#------------------------------------------------------
+# A5 12 珍宝阁信息 #tagMCFamilyZhenbaogeInfo
+
+class  tagMCFamilyZhenbaogeInfo(Structure):
+    _pack_ = 1
+    _fields_ = [
+                  ("Cmd", c_ubyte),
+                  ("SubCmd", c_ubyte),
+                  ("CutState", c_ubyte),    # 今日是否已砍价,此状态为全局状态,与盟Action砍价状态不同
+                  ("BuyState", c_ubyte),    # 今日是否已购买,此状态为全局状态,与盟Action购买状态不同
+                  ]
+
+    def __init__(self):
+        self.Clear()
+        self.Cmd = 0xA5
+        self.SubCmd = 0x12
+        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 = 0x12
+        self.CutState = 0
+        self.BuyState = 0
+        return
+
+    def GetLength(self):
+        return sizeof(tagMCFamilyZhenbaogeInfo)
+
+    def GetBuffer(self):
+        return string_at(addressof(self), self.GetLength())
+
+    def OutputString(self):
+        DumpString = '''// A5 12 珍宝阁信息 //tagMCFamilyZhenbaogeInfo:
+                                Cmd:%s,
+                                SubCmd:%s,
+                                CutState:%d,
+                                BuyState:%d
+                                '''\
+                                %(
+                                self.Cmd,
+                                self.SubCmd,
+                                self.CutState,
+                                self.BuyState
+                                )
+        return DumpString
+
+
+m_NAtagMCFamilyZhenbaogeInfo=tagMCFamilyZhenbaogeInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCFamilyZhenbaogeInfo.Cmd,m_NAtagMCFamilyZhenbaogeInfo.SubCmd))] = m_NAtagMCFamilyZhenbaogeInfo
 
 
 #------------------------------------------------------
@@ -32618,6 +33059,218 @@
 
 m_NAtagObjInfoListRefresh=tagObjInfoListRefresh()
 ChNetPackDict[eval("0x%02x%02x"%(m_NAtagObjInfoListRefresh.Head.Cmd,m_NAtagObjInfoListRefresh.Head.SubCmd))] = m_NAtagObjInfoListRefresh
+
+
+#------------------------------------------------------
+# A8 01 获得奖励信息 #tagMCGiveAwardInfo
+
+class  tagMCGiveAwardMoney(Structure):
+    _pack_ = 1
+    _fields_ = [
+                  ("MoneyType", c_ubyte),    
+                  ("MoneyValue", 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.MoneyType = 0
+        self.MoneyValue = 0
+        return
+
+    def GetLength(self):
+        return sizeof(tagMCGiveAwardMoney)
+
+    def GetBuffer(self):
+        return string_at(addressof(self), self.GetLength())
+
+    def OutputString(self):
+        DumpString = '''// A8 01 获得奖励信息 //tagMCGiveAwardInfo:
+                                MoneyType:%d,
+                                MoneyValue:%d
+                                '''\
+                                %(
+                                self.MoneyType,
+                                self.MoneyValue
+                                )
+        return DumpString
+
+
+class  tagMCGiveAwardItem(Structure):
+    _pack_ = 1
+    _fields_ = [
+                  ("ItemID", c_int),    
+                  ("Count", c_int),    
+                  ("IsBind", c_ubyte),    
+                  ]
+
+    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.ItemID = 0
+        self.Count = 0
+        self.IsBind = 0
+        return
+
+    def GetLength(self):
+        return sizeof(tagMCGiveAwardItem)
+
+    def GetBuffer(self):
+        return string_at(addressof(self), self.GetLength())
+
+    def OutputString(self):
+        DumpString = '''// A8 01 获得奖励信息 //tagMCGiveAwardInfo:
+                                ItemID:%d,
+                                Count:%d,
+                                IsBind:%d
+                                '''\
+                                %(
+                                self.ItemID,
+                                self.Count,
+                                self.IsBind
+                                )
+        return DumpString
+
+
+class  tagMCGiveAwardInfo(Structure):
+    Head = tagHead()
+    EventLen = 0    #(BYTE EventLen)
+    EventName = ""    #(String EventName)
+    Exp = 0    #(DWORD Exp)// 奖励经验,求余亿部分
+    ExpPoint = 0    #(DWORD ExpPoint)// 奖励经验,整除亿部分
+    MoneyLen = 0    #(BYTE MoneyLen)
+    MoneyList = list()    #(vector<tagMCGiveAwardMoney> MoneyList)// 奖励货币
+    ItemLen = 0    #(BYTE ItemLen)
+    ItemList = list()    #(vector<tagMCGiveAwardItem> ItemList)// 奖励物品
+    DataLen = 0    #(WORD DataLen)
+    DataEx = ""    #(String DataEx)// 扩展信息,可由不同的Event自定义信息内容
+    data = None
+
+    def __init__(self):
+        self.Clear()
+        self.Head.Cmd = 0xA8
+        self.Head.SubCmd = 0x01
+        return
+
+    def ReadData(self, _lpData, _pos=0, _Len=0):
+        self.Clear()
+        _pos = self.Head.ReadData(_lpData, _pos)
+        self.EventLen,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+        self.EventName,_pos = CommFunc.ReadString(_lpData, _pos,self.EventLen)
+        self.Exp,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+        self.ExpPoint,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+        self.MoneyLen,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+        for i in range(self.MoneyLen):
+            temMoneyList = tagMCGiveAwardMoney()
+            _pos = temMoneyList.ReadData(_lpData, _pos)
+            self.MoneyList.append(temMoneyList)
+        self.ItemLen,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+        for i in range(self.ItemLen):
+            temItemList = tagMCGiveAwardItem()
+            _pos = temItemList.ReadData(_lpData, _pos)
+            self.ItemList.append(temItemList)
+        self.DataLen,_pos = CommFunc.ReadWORD(_lpData, _pos)
+        self.DataEx,_pos = CommFunc.ReadString(_lpData, _pos,self.DataLen)
+        return _pos
+
+    def Clear(self):
+        self.Head = tagHead()
+        self.Head.Clear()
+        self.Head.Cmd = 0xA8
+        self.Head.SubCmd = 0x01
+        self.EventLen = 0
+        self.EventName = ""
+        self.Exp = 0
+        self.ExpPoint = 0
+        self.MoneyLen = 0
+        self.MoneyList = list()
+        self.ItemLen = 0
+        self.ItemList = list()
+        self.DataLen = 0
+        self.DataEx = ""
+        return
+
+    def GetLength(self):
+        length = 0
+        length += self.Head.GetLength()
+        length += 1
+        length += len(self.EventName)
+        length += 4
+        length += 4
+        length += 1
+        for i in range(self.MoneyLen):
+            length += self.MoneyList[i].GetLength()
+        length += 1
+        for i in range(self.ItemLen):
+            length += self.ItemList[i].GetLength()
+        length += 2
+        length += len(self.DataEx)
+
+        return length
+
+    def GetBuffer(self):
+        data = ''
+        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
+        data = CommFunc.WriteBYTE(data, self.EventLen)
+        data = CommFunc.WriteString(data, self.EventLen, self.EventName)
+        data = CommFunc.WriteDWORD(data, self.Exp)
+        data = CommFunc.WriteDWORD(data, self.ExpPoint)
+        data = CommFunc.WriteBYTE(data, self.MoneyLen)
+        for i in range(self.MoneyLen):
+            data = CommFunc.WriteString(data, self.MoneyList[i].GetLength(), self.MoneyList[i].GetBuffer())
+        data = CommFunc.WriteBYTE(data, self.ItemLen)
+        for i in range(self.ItemLen):
+            data = CommFunc.WriteString(data, self.ItemList[i].GetLength(), self.ItemList[i].GetBuffer())
+        data = CommFunc.WriteWORD(data, self.DataLen)
+        data = CommFunc.WriteString(data, self.DataLen, self.DataEx)
+        return data
+
+    def OutputString(self):
+        DumpString = '''
+                                Head:%s,
+                                EventLen:%d,
+                                EventName:%s,
+                                Exp:%d,
+                                ExpPoint:%d,
+                                MoneyLen:%d,
+                                MoneyList:%s,
+                                ItemLen:%d,
+                                ItemList:%s,
+                                DataLen:%d,
+                                DataEx:%s
+                                '''\
+                                %(
+                                self.Head.OutputString(),
+                                self.EventLen,
+                                self.EventName,
+                                self.Exp,
+                                self.ExpPoint,
+                                self.MoneyLen,
+                                "...",
+                                self.ItemLen,
+                                "...",
+                                self.DataLen,
+                                self.DataEx
+                                )
+        return DumpString
+
+
+m_NAtagMCGiveAwardInfo=tagMCGiveAwardInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCGiveAwardInfo.Head.Cmd,m_NAtagMCGiveAwardInfo.Head.SubCmd))] = m_NAtagMCGiveAwardInfo
 
 
 #------------------------------------------------------
@@ -37663,6 +38316,8 @@
     DayNum = 0    #(BYTE DayNum)//天编号,从1开始,过期未签到领取的天可消耗货币补签领取
     Count = 0    #(BYTE Count)// 奖励物品数
     AwardItemList = list()    #(vector<tagMCActLoginNewItem> AwardItemList)// 奖励物品列表
+    CountEx = 0    #(BYTE CountEx)// 额外奖励物品数
+    AwardItemListEx = list()    #(vector<tagMCActLoginNewItem> AwardItemListEx)//  额外奖励物品列表
     data = None
 
     def __init__(self):
@@ -37677,12 +38332,19 @@
             temAwardItemList = tagMCActLoginNewItem()
             _pos = temAwardItemList.ReadData(_lpData, _pos)
             self.AwardItemList.append(temAwardItemList)
+        self.CountEx,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+        for i in range(self.CountEx):
+            temAwardItemListEx = tagMCActLoginNewItem()
+            _pos = temAwardItemListEx.ReadData(_lpData, _pos)
+            self.AwardItemListEx.append(temAwardItemListEx)
         return _pos
 
     def Clear(self):
         self.DayNum = 0
         self.Count = 0
         self.AwardItemList = list()
+        self.CountEx = 0
+        self.AwardItemListEx = list()
         return
 
     def GetLength(self):
@@ -37691,6 +38353,9 @@
         length += 1
         for i in range(self.Count):
             length += self.AwardItemList[i].GetLength()
+        length += 1
+        for i in range(self.CountEx):
+            length += self.AwardItemListEx[i].GetLength()
 
         return length
 
@@ -37700,17 +38365,24 @@
         data = CommFunc.WriteBYTE(data, self.Count)
         for i in range(self.Count):
             data = CommFunc.WriteString(data, self.AwardItemList[i].GetLength(), self.AwardItemList[i].GetBuffer())
+        data = CommFunc.WriteBYTE(data, self.CountEx)
+        for i in range(self.CountEx):
+            data = CommFunc.WriteString(data, self.AwardItemListEx[i].GetLength(), self.AwardItemListEx[i].GetBuffer())
         return data
 
     def OutputString(self):
         DumpString = '''
                                 DayNum:%d,
                                 Count:%d,
-                                AwardItemList:%s
+                                AwardItemList:%s,
+                                CountEx:%d,
+                                AwardItemListEx:%s
                                 '''\
                                 %(
                                 self.DayNum,
                                 self.Count,
+                                "...",
+                                self.CountEx,
                                 "..."
                                 )
         return DumpString
@@ -37724,6 +38396,7 @@
     LimitLV = 0    #(WORD LimitLV)// 限制等级
     RepSignMoneyType = 0    #(BYTE RepSignMoneyType)// 补签消耗货币类型
     RepSignMoneyValue = 0    #(DWORD RepSignMoneyValue)// 补签消耗货币值
+    AwardExCTGID = 0    #(WORD AwardExCTGID)// 扩展奖励礼包充值ID,大于0时代表可以购买礼包每日登录可领取额外奖励
     DayCount = 0    #(BYTE DayCount)
     AwardDayList = list()    #(vector<tagMCActLoginNewDay> AwardDayList)// 奖励天列表
     data = None
@@ -37743,6 +38416,7 @@
         self.LimitLV,_pos = CommFunc.ReadWORD(_lpData, _pos)
         self.RepSignMoneyType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
         self.RepSignMoneyValue,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+        self.AwardExCTGID,_pos = CommFunc.ReadWORD(_lpData, _pos)
         self.DayCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
         for i in range(self.DayCount):
             temAwardDayList = tagMCActLoginNewDay()
@@ -37761,6 +38435,7 @@
         self.LimitLV = 0
         self.RepSignMoneyType = 0
         self.RepSignMoneyValue = 0
+        self.AwardExCTGID = 0
         self.DayCount = 0
         self.AwardDayList = list()
         return
@@ -37774,6 +38449,7 @@
         length += 2
         length += 1
         length += 4
+        length += 2
         length += 1
         for i in range(self.DayCount):
             length += self.AwardDayList[i].GetLength()
@@ -37789,6 +38465,7 @@
         data = CommFunc.WriteWORD(data, self.LimitLV)
         data = CommFunc.WriteBYTE(data, self.RepSignMoneyType)
         data = CommFunc.WriteDWORD(data, self.RepSignMoneyValue)
+        data = CommFunc.WriteWORD(data, self.AwardExCTGID)
         data = CommFunc.WriteBYTE(data, self.DayCount)
         for i in range(self.DayCount):
             data = CommFunc.WriteString(data, self.AwardDayList[i].GetLength(), self.AwardDayList[i].GetBuffer())
@@ -37803,6 +38480,7 @@
                                 LimitLV:%d,
                                 RepSignMoneyType:%d,
                                 RepSignMoneyValue:%d,
+                                AwardExCTGID:%d,
                                 DayCount:%d,
                                 AwardDayList:%s
                                 '''\
@@ -37814,6 +38492,7 @@
                                 self.LimitLV,
                                 self.RepSignMoneyType,
                                 self.RepSignMoneyValue,
+                                self.AwardExCTGID,
                                 self.DayCount,
                                 "..."
                                 )
@@ -37833,7 +38512,8 @@
                   ("Cmd", c_ubyte),
                   ("SubCmd", c_ubyte),
                   ("ActNum", c_ubyte),    # 活动编号
-                  ("LoginAward", c_int),    # 是否已领取,按天索引0代表第1天记录当天是否已领取
+                  ("LoginAward", c_int),    # 普通奖励领取记录,按天对应二进制位记录是否已领取
+                  ("LoginAwardEx", c_int),    # 额外奖励领取记录,按天对应二进制位记录是否已领取
                   ]
 
     def __init__(self):
@@ -37852,6 +38532,7 @@
         self.SubCmd = 0x70
         self.ActNum = 0
         self.LoginAward = 0
+        self.LoginAwardEx = 0
         return
 
     def GetLength(self):
@@ -37865,19 +38546,402 @@
                                 Cmd:%s,
                                 SubCmd:%s,
                                 ActNum:%d,
-                                LoginAward:%d
+                                LoginAward:%d,
+                                LoginAwardEx:%d
                                 '''\
                                 %(
                                 self.Cmd,
                                 self.SubCmd,
                                 self.ActNum,
-                                self.LoginAward
+                                self.LoginAward,
+                                self.LoginAwardEx
                                 )
         return DumpString
 
 
 m_NAtagMCActLoginPlayerInfoNew=tagMCActLoginPlayerInfoNew()
 ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCActLoginPlayerInfoNew.Cmd,m_NAtagMCActLoginPlayerInfoNew.SubCmd))] = m_NAtagMCActLoginPlayerInfoNew
+
+
+#------------------------------------------------------
+# AA 88 轮回殿活动信息 #tagMCActLunhuidianInfo
+
+class  tagMCActLunhuidianItem(Structure):
+    _pack_ = 1
+    _fields_ = [
+                  ("ItemID", c_int),    
+                  ("ItemCount", c_ushort),    
+                  ("IsBind", c_ubyte),    
+                  ]
+
+    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.ItemID = 0
+        self.ItemCount = 0
+        self.IsBind = 0
+        return
+
+    def GetLength(self):
+        return sizeof(tagMCActLunhuidianItem)
+
+    def GetBuffer(self):
+        return string_at(addressof(self), self.GetLength())
+
+    def OutputString(self):
+        DumpString = '''// AA 88 轮回殿活动信息 //tagMCActLunhuidianInfo:
+                                ItemID:%d,
+                                ItemCount:%d,
+                                IsBind:%d
+                                '''\
+                                %(
+                                self.ItemID,
+                                self.ItemCount,
+                                self.IsBind
+                                )
+        return DumpString
+
+
+class  tagMCActLunhuidianAward(Structure):
+    AwardIndex = 0    #(BYTE AwardIndex)// 奖励记录索引 0~30
+    NeedValue = 0    #(DWORD NeedValue)// 奖励所需值
+    Count = 0    #(BYTE Count)// 奖励物品数
+    AwardItemList = list()    #(vector<tagMCActLunhuidianItem> AwardItemList)// 奖励物品列表
+    data = None
+
+    def __init__(self):
+        self.Clear()
+        return
+
+    def ReadData(self, _lpData, _pos=0, _Len=0):
+        self.Clear()
+        self.AwardIndex,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+        self.NeedValue,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+        self.Count,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+        for i in range(self.Count):
+            temAwardItemList = tagMCActLunhuidianItem()
+            _pos = temAwardItemList.ReadData(_lpData, _pos)
+            self.AwardItemList.append(temAwardItemList)
+        return _pos
+
+    def Clear(self):
+        self.AwardIndex = 0
+        self.NeedValue = 0
+        self.Count = 0
+        self.AwardItemList = list()
+        return
+
+    def GetLength(self):
+        length = 0
+        length += 1
+        length += 4
+        length += 1
+        for i in range(self.Count):
+            length += self.AwardItemList[i].GetLength()
+
+        return length
+
+    def GetBuffer(self):
+        data = ''
+        data = CommFunc.WriteBYTE(data, self.AwardIndex)
+        data = CommFunc.WriteDWORD(data, self.NeedValue)
+        data = CommFunc.WriteBYTE(data, self.Count)
+        for i in range(self.Count):
+            data = CommFunc.WriteString(data, self.AwardItemList[i].GetLength(), self.AwardItemList[i].GetBuffer())
+        return data
+
+    def OutputString(self):
+        DumpString = '''
+                                AwardIndex:%d,
+                                NeedValue:%d,
+                                Count:%d,
+                                AwardItemList:%s
+                                '''\
+                                %(
+                                self.AwardIndex,
+                                self.NeedValue,
+                                self.Count,
+                                "..."
+                                )
+        return DumpString
+
+
+class  tagMCActLunhuidianRound(Structure):
+    RoundType = 0    #(BYTE RoundType)// 轮回类型
+    AwardType = 0    #(BYTE AwardType)// 奖励类型 1-消耗货币;2-寻宝次数
+    AwardTypeValue = 0    #(DWORD AwardTypeValue)// 奖励类型对应值,消耗货币时为对应的货币类型,寻宝时为对应的寻宝类型
+    RoundMax = 0    #(BYTE RoundMax)// 最大可循环轮次
+    AwardCount = 0    #(BYTE AwardCount)
+    AwardList = list()    #(vector<tagMCActLunhuidianAward> AwardList)// 每轮奖励列表
+    CTGIDCount = 0    #(BYTE CTGIDCount)
+    CTGIDList = list()    #(vector<WORD> CTGIDList)// CTGID列表
+    ShopType = 0    #(WORD ShopType)// 开放商店类型,可能为0不开放
+    data = None
+
+    def __init__(self):
+        self.Clear()
+        return
+
+    def ReadData(self, _lpData, _pos=0, _Len=0):
+        self.Clear()
+        self.RoundType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+        self.AwardType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+        self.AwardTypeValue,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+        self.RoundMax,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+        self.AwardCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+        for i in range(self.AwardCount):
+            temAwardList = tagMCActLunhuidianAward()
+            _pos = temAwardList.ReadData(_lpData, _pos)
+            self.AwardList.append(temAwardList)
+        self.CTGIDCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+        for i in range(self.CTGIDCount):
+            value,_pos=CommFunc.ReadWORD(_lpData,_pos)
+            self.CTGIDList.append(value)
+        self.ShopType,_pos = CommFunc.ReadWORD(_lpData, _pos)
+        return _pos
+
+    def Clear(self):
+        self.RoundType = 0
+        self.AwardType = 0
+        self.AwardTypeValue = 0
+        self.RoundMax = 0
+        self.AwardCount = 0
+        self.AwardList = list()
+        self.CTGIDCount = 0
+        self.CTGIDList = list()
+        self.ShopType = 0
+        return
+
+    def GetLength(self):
+        length = 0
+        length += 1
+        length += 1
+        length += 4
+        length += 1
+        length += 1
+        for i in range(self.AwardCount):
+            length += self.AwardList[i].GetLength()
+        length += 1
+        length += 2 * self.CTGIDCount
+        length += 2
+
+        return length
+
+    def GetBuffer(self):
+        data = ''
+        data = CommFunc.WriteBYTE(data, self.RoundType)
+        data = CommFunc.WriteBYTE(data, self.AwardType)
+        data = CommFunc.WriteDWORD(data, self.AwardTypeValue)
+        data = CommFunc.WriteBYTE(data, self.RoundMax)
+        data = CommFunc.WriteBYTE(data, self.AwardCount)
+        for i in range(self.AwardCount):
+            data = CommFunc.WriteString(data, self.AwardList[i].GetLength(), self.AwardList[i].GetBuffer())
+        data = CommFunc.WriteBYTE(data, self.CTGIDCount)
+        for i in range(self.CTGIDCount):
+            data = CommFunc.WriteWORD(data, self.CTGIDList[i])
+        data = CommFunc.WriteWORD(data, self.ShopType)
+        return data
+
+    def OutputString(self):
+        DumpString = '''
+                                RoundType:%d,
+                                AwardType:%d,
+                                AwardTypeValue:%d,
+                                RoundMax:%d,
+                                AwardCount:%d,
+                                AwardList:%s,
+                                CTGIDCount:%d,
+                                CTGIDList:%s,
+                                ShopType:%d
+                                '''\
+                                %(
+                                self.RoundType,
+                                self.AwardType,
+                                self.AwardTypeValue,
+                                self.RoundMax,
+                                self.AwardCount,
+                                "...",
+                                self.CTGIDCount,
+                                "...",
+                                self.ShopType
+                                )
+        return DumpString
+
+
+class  tagMCActLunhuidianInfo(Structure):
+    Head = tagHead()
+    ActNum = 0    #(BYTE ActNum)// 活动编号
+    StartDate = ""    #(char StartDate[10])// 开始日期 y-m-d
+    EndtDate = ""    #(char EndtDate[10])// 结束日期 y-m-d
+    ResetType = 0    #(BYTE ResetType)// 重置类型,0-0点重置;1-5点重置
+    LimitLV = 0    #(WORD LimitLV)// 限制等级
+    RoundCount = 0    #(BYTE RoundCount)
+    RoundList = list()    #(vector<tagMCActLunhuidianRound> RoundList)// 轮回列表,支持多个不同类型轮回同时开启
+    data = None
+
+    def __init__(self):
+        self.Clear()
+        self.Head.Cmd = 0xAA
+        self.Head.SubCmd = 0x88
+        return
+
+    def ReadData(self, _lpData, _pos=0, _Len=0):
+        self.Clear()
+        _pos = self.Head.ReadData(_lpData, _pos)
+        self.ActNum,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+        self.StartDate,_pos = CommFunc.ReadString(_lpData, _pos,10)
+        self.EndtDate,_pos = CommFunc.ReadString(_lpData, _pos,10)
+        self.ResetType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+        self.LimitLV,_pos = CommFunc.ReadWORD(_lpData, _pos)
+        self.RoundCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+        for i in range(self.RoundCount):
+            temRoundList = tagMCActLunhuidianRound()
+            _pos = temRoundList.ReadData(_lpData, _pos)
+            self.RoundList.append(temRoundList)
+        return _pos
+
+    def Clear(self):
+        self.Head = tagHead()
+        self.Head.Clear()
+        self.Head.Cmd = 0xAA
+        self.Head.SubCmd = 0x88
+        self.ActNum = 0
+        self.StartDate = ""
+        self.EndtDate = ""
+        self.ResetType = 0
+        self.LimitLV = 0
+        self.RoundCount = 0
+        self.RoundList = list()
+        return
+
+    def GetLength(self):
+        length = 0
+        length += self.Head.GetLength()
+        length += 1
+        length += 10
+        length += 10
+        length += 1
+        length += 2
+        length += 1
+        for i in range(self.RoundCount):
+            length += self.RoundList[i].GetLength()
+
+        return length
+
+    def GetBuffer(self):
+        data = ''
+        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
+        data = CommFunc.WriteBYTE(data, self.ActNum)
+        data = CommFunc.WriteString(data, 10, self.StartDate)
+        data = CommFunc.WriteString(data, 10, self.EndtDate)
+        data = CommFunc.WriteBYTE(data, self.ResetType)
+        data = CommFunc.WriteWORD(data, self.LimitLV)
+        data = CommFunc.WriteBYTE(data, self.RoundCount)
+        for i in range(self.RoundCount):
+            data = CommFunc.WriteString(data, self.RoundList[i].GetLength(), self.RoundList[i].GetBuffer())
+        return data
+
+    def OutputString(self):
+        DumpString = '''
+                                Head:%s,
+                                ActNum:%d,
+                                StartDate:%s,
+                                EndtDate:%s,
+                                ResetType:%d,
+                                LimitLV:%d,
+                                RoundCount:%d,
+                                RoundList:%s
+                                '''\
+                                %(
+                                self.Head.OutputString(),
+                                self.ActNum,
+                                self.StartDate,
+                                self.EndtDate,
+                                self.ResetType,
+                                self.LimitLV,
+                                self.RoundCount,
+                                "..."
+                                )
+        return DumpString
+
+
+m_NAtagMCActLunhuidianInfo=tagMCActLunhuidianInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCActLunhuidianInfo.Head.Cmd,m_NAtagMCActLunhuidianInfo.Head.SubCmd))] = m_NAtagMCActLunhuidianInfo
+
+
+#------------------------------------------------------
+# AA 89 轮回殿活动玩家信息 #tagMCActLunhuidianPlayerInfo
+
+class  tagMCActLunhuidianPlayerInfo(Structure):
+    _pack_ = 1
+    _fields_ = [
+                  ("Cmd", c_ubyte),
+                  ("SubCmd", c_ubyte),
+                  ("ActNum", c_ubyte),    # 活动编号
+                  ("RoundType", c_ubyte),    # 轮回类型
+                  ("CurRound", c_ubyte),    # 当前轮次
+                  ("CurValue", c_int),    # 累计值
+                  ("AwardRecord", c_int),    # 当前轮次奖励领奖记录,按奖励索引二进制位存储是否已领取,所有奖励已领取后自动进入下一轮,且重置该奖励状态
+                  ]
+
+    def __init__(self):
+        self.Clear()
+        self.Cmd = 0xAA
+        self.SubCmd = 0x89
+        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 = 0xAA
+        self.SubCmd = 0x89
+        self.ActNum = 0
+        self.RoundType = 0
+        self.CurRound = 0
+        self.CurValue = 0
+        self.AwardRecord = 0
+        return
+
+    def GetLength(self):
+        return sizeof(tagMCActLunhuidianPlayerInfo)
+
+    def GetBuffer(self):
+        return string_at(addressof(self), self.GetLength())
+
+    def OutputString(self):
+        DumpString = '''// AA 89 轮回殿活动玩家信息 //tagMCActLunhuidianPlayerInfo:
+                                Cmd:%s,
+                                SubCmd:%s,
+                                ActNum:%d,
+                                RoundType:%d,
+                                CurRound:%d,
+                                CurValue:%d,
+                                AwardRecord:%d
+                                '''\
+                                %(
+                                self.Cmd,
+                                self.SubCmd,
+                                self.ActNum,
+                                self.RoundType,
+                                self.CurRound,
+                                self.CurValue,
+                                self.AwardRecord
+                                )
+        return DumpString
+
+
+m_NAtagMCActLunhuidianPlayerInfo=tagMCActLunhuidianPlayerInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCActLunhuidianPlayerInfo.Cmd,m_NAtagMCActLunhuidianPlayerInfo.SubCmd))] = m_NAtagMCActLunhuidianPlayerInfo
 
 
 #------------------------------------------------------
@@ -41242,6 +42306,98 @@
 
 m_NAtagMCActXianXiaMJLayerInfo=tagMCActXianXiaMJLayerInfo()
 ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCActXianXiaMJLayerInfo.Head.Cmd,m_NAtagMCActXianXiaMJLayerInfo.Head.SubCmd))] = m_NAtagMCActXianXiaMJLayerInfo
+
+
+#------------------------------------------------------
+# AA 87 运势活动信息 #tagMCActYunshiInfo
+
+class  tagMCActYunshiInfo(Structure):
+    Head = tagHead()
+    ActNum = 0    #(BYTE ActNum)// 活动编号
+    StartDate = ""    #(char StartDate[10])// 开始日期 y-m-d
+    EndtDate = ""    #(char EndtDate[10])// 结束日期 y-m-d
+    ResetType = 0    #(BYTE ResetType)// 重置类型,0-0点重置;1-5点重置
+    LimitLV = 0    #(WORD LimitLV)// 限制等级
+    TreasureType = 0    #(BYTE TreasureType)// 活动寻宝类型
+    data = None
+
+    def __init__(self):
+        self.Clear()
+        self.Head.Cmd = 0xAA
+        self.Head.SubCmd = 0x87
+        return
+
+    def ReadData(self, _lpData, _pos=0, _Len=0):
+        self.Clear()
+        _pos = self.Head.ReadData(_lpData, _pos)
+        self.ActNum,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+        self.StartDate,_pos = CommFunc.ReadString(_lpData, _pos,10)
+        self.EndtDate,_pos = CommFunc.ReadString(_lpData, _pos,10)
+        self.ResetType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+        self.LimitLV,_pos = CommFunc.ReadWORD(_lpData, _pos)
+        self.TreasureType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+        return _pos
+
+    def Clear(self):
+        self.Head = tagHead()
+        self.Head.Clear()
+        self.Head.Cmd = 0xAA
+        self.Head.SubCmd = 0x87
+        self.ActNum = 0
+        self.StartDate = ""
+        self.EndtDate = ""
+        self.ResetType = 0
+        self.LimitLV = 0
+        self.TreasureType = 0
+        return
+
+    def GetLength(self):
+        length = 0
+        length += self.Head.GetLength()
+        length += 1
+        length += 10
+        length += 10
+        length += 1
+        length += 2
+        length += 1
+
+        return length
+
+    def GetBuffer(self):
+        data = ''
+        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
+        data = CommFunc.WriteBYTE(data, self.ActNum)
+        data = CommFunc.WriteString(data, 10, self.StartDate)
+        data = CommFunc.WriteString(data, 10, self.EndtDate)
+        data = CommFunc.WriteBYTE(data, self.ResetType)
+        data = CommFunc.WriteWORD(data, self.LimitLV)
+        data = CommFunc.WriteBYTE(data, self.TreasureType)
+        return data
+
+    def OutputString(self):
+        DumpString = '''
+                                Head:%s,
+                                ActNum:%d,
+                                StartDate:%s,
+                                EndtDate:%s,
+                                ResetType:%d,
+                                LimitLV:%d,
+                                TreasureType:%d
+                                '''\
+                                %(
+                                self.Head.OutputString(),
+                                self.ActNum,
+                                self.StartDate,
+                                self.EndtDate,
+                                self.ResetType,
+                                self.LimitLV,
+                                self.TreasureType
+                                )
+        return DumpString
+
+
+m_NAtagMCActYunshiInfo=tagMCActYunshiInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCActYunshiInfo.Head.Cmd,m_NAtagMCActYunshiInfo.Head.SubCmd))] = m_NAtagMCActYunshiInfo
 
 
 #------------------------------------------------------
@@ -47627,6 +48783,121 @@
 
 
 #------------------------------------------------------
+# AA 05 推金币信息 #tagMCTuijinbiInfo
+
+class  tagMCTuijinbiPool(Structure):
+    _pack_ = 1
+    _fields_ = [
+                  ("PrizeType", c_ubyte),    # 台面奖励类型: 1-金币;2-仙玉币
+                  ("PrizeCount", 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.PrizeType = 0
+        self.PrizeCount = 0
+        return
+
+    def GetLength(self):
+        return sizeof(tagMCTuijinbiPool)
+
+    def GetBuffer(self):
+        return string_at(addressof(self), self.GetLength())
+
+    def OutputString(self):
+        DumpString = '''// AA 05 推金币信息 //tagMCTuijinbiInfo:
+                                PrizeType:%d,
+                                PrizeCount:%d
+                                '''\
+                                %(
+                                self.PrizeType,
+                                self.PrizeCount
+                                )
+        return DumpString
+
+
+class  tagMCTuijinbiInfo(Structure):
+    Head = tagHead()
+    DrawNum = 0    #(BYTE DrawNum)// 本次抽中位置,为0时表示非抽奖同步
+    PoolPrizeCnt = 0    #(BYTE PoolPrizeCnt)
+    PoolPrizeList = list()    #(vector<tagMCTuijinbiPool> PoolPrizeList)// 台面奖池信息列表,每次都完整通知
+    data = None
+
+    def __init__(self):
+        self.Clear()
+        self.Head.Cmd = 0xAA
+        self.Head.SubCmd = 0x05
+        return
+
+    def ReadData(self, _lpData, _pos=0, _Len=0):
+        self.Clear()
+        _pos = self.Head.ReadData(_lpData, _pos)
+        self.DrawNum,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+        self.PoolPrizeCnt,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+        for i in range(self.PoolPrizeCnt):
+            temPoolPrizeList = tagMCTuijinbiPool()
+            _pos = temPoolPrizeList.ReadData(_lpData, _pos)
+            self.PoolPrizeList.append(temPoolPrizeList)
+        return _pos
+
+    def Clear(self):
+        self.Head = tagHead()
+        self.Head.Clear()
+        self.Head.Cmd = 0xAA
+        self.Head.SubCmd = 0x05
+        self.DrawNum = 0
+        self.PoolPrizeCnt = 0
+        self.PoolPrizeList = list()
+        return
+
+    def GetLength(self):
+        length = 0
+        length += self.Head.GetLength()
+        length += 1
+        length += 1
+        for i in range(self.PoolPrizeCnt):
+            length += self.PoolPrizeList[i].GetLength()
+
+        return length
+
+    def GetBuffer(self):
+        data = ''
+        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
+        data = CommFunc.WriteBYTE(data, self.DrawNum)
+        data = CommFunc.WriteBYTE(data, self.PoolPrizeCnt)
+        for i in range(self.PoolPrizeCnt):
+            data = CommFunc.WriteString(data, self.PoolPrizeList[i].GetLength(), self.PoolPrizeList[i].GetBuffer())
+        return data
+
+    def OutputString(self):
+        DumpString = '''
+                                Head:%s,
+                                DrawNum:%d,
+                                PoolPrizeCnt:%d,
+                                PoolPrizeList:%s
+                                '''\
+                                %(
+                                self.Head.OutputString(),
+                                self.DrawNum,
+                                self.PoolPrizeCnt,
+                                "..."
+                                )
+        return DumpString
+
+
+m_NAtagMCTuijinbiInfo=tagMCTuijinbiInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCTuijinbiInfo.Head.Cmd,m_NAtagMCTuijinbiInfo.Head.SubCmd))] = m_NAtagMCTuijinbiInfo
+
+
+#------------------------------------------------------
 # AA 0A 周狂欢活动信息 #tagMCWeekPartyInfo
 
 class  tagMCWeekPartyItem(Structure):
@@ -49984,9 +51255,9 @@
     _pack_ = 1
     _fields_ = [
                   ("FaceID", c_int),    #头像ID
-                  ("LightTime", c_int),    #点亮时间戳
-                  ("ExpireTime", c_int),    #有效时间秒,0为配表固定时间,如果配表时间也为0即代表永久;到期时间=点亮时间+有效时间
-                  ("Star", c_ubyte),    # 星级
+                  ("State", c_ubyte),    #是否已激活
+                  ("EndTime", c_int),    #到期时间戳,0为永久
+                  ("Star", c_ubyte),    #星级
                   ]
 
     def __init__(self):
@@ -50000,8 +51271,8 @@
 
     def Clear(self):
         self.FaceID = 0
-        self.LightTime = 0
-        self.ExpireTime = 0
+        self.State = 0
+        self.EndTime = 0
         self.Star = 0
         return
 
@@ -50014,14 +51285,14 @@
     def OutputString(self):
         DumpString = '''// B1 17 头像信息 //tagMCFaceInfo:
                                 FaceID:%d,
-                                LightTime:%d,
-                                ExpireTime:%d,
+                                State:%d,
+                                EndTime:%d,
                                 Star:%d
                                 '''\
                                 %(
                                 self.FaceID,
-                                self.LightTime,
-                                self.ExpireTime,
+                                self.State,
+                                self.EndTime,
                                 self.Star
                                 )
         return DumpString
@@ -50100,8 +51371,8 @@
     _pack_ = 1
     _fields_ = [
                   ("FacePicID", c_int),    #头像框ID
-                  ("LightTime", c_int),    #点亮时间戳
-                  ("ExpireTime", c_int),    #有效时间秒,0为配表固定时间,如果配表时间也为0即代表永久;到期时间=点亮时间+有效时间
+                  ("State", c_ubyte),    #是否已激活
+                  ("EndTime", c_int),    #到期时间戳,0为永久
                   ("Star", c_ubyte),    #星级
                   ]
 
@@ -50116,8 +51387,8 @@
 
     def Clear(self):
         self.FacePicID = 0
-        self.LightTime = 0
-        self.ExpireTime = 0
+        self.State = 0
+        self.EndTime = 0
         self.Star = 0
         return
 
@@ -50130,14 +51401,14 @@
     def OutputString(self):
         DumpString = '''// B1 18 头像框信息 //tagMCFacePicInfo:
                                 FacePicID:%d,
-                                LightTime:%d,
-                                ExpireTime:%d,
+                                State:%d,
+                                EndTime:%d,
                                 Star:%d
                                 '''\
                                 %(
                                 self.FacePicID,
-                                self.LightTime,
-                                self.ExpireTime,
+                                self.State,
+                                self.EndTime,
                                 self.Star
                                 )
         return DumpString
@@ -52313,6 +53584,8 @@
     LV = 0    #(WORD LV)// 玩家等级
     Job = 0    #(BYTE Job)// 玩家职业, 如果是机器人,则职业有值,服务端控制
     RealmLV = 0    #(WORD RealmLV)// 玩家境界等级
+    Face = 0    #(DWORD Face)//基本脸型
+    FacePic = 0    #(DWORD FacePic)//头像框
     FightPower = 0    #(DWORD FightPower)// 玩家战力
     Relation = 0    #(BYTE Relation)// 关系:0-无,1-好友,2-盟友
     IsNeedGold = 0    #(BYTE IsNeedGold)// 是否需要仙玉召唤
@@ -52331,6 +53604,8 @@
         self.LV,_pos = CommFunc.ReadWORD(_lpData, _pos)
         self.Job,_pos = CommFunc.ReadBYTE(_lpData, _pos)
         self.RealmLV,_pos = CommFunc.ReadWORD(_lpData, _pos)
+        self.Face,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+        self.FacePic,_pos = CommFunc.ReadDWORD(_lpData, _pos)
         self.FightPower,_pos = CommFunc.ReadDWORD(_lpData, _pos)
         self.Relation,_pos = CommFunc.ReadBYTE(_lpData, _pos)
         self.IsNeedGold,_pos = CommFunc.ReadBYTE(_lpData, _pos)
@@ -52344,6 +53619,8 @@
         self.LV = 0
         self.Job = 0
         self.RealmLV = 0
+        self.Face = 0
+        self.FacePic = 0
         self.FightPower = 0
         self.Relation = 0
         self.IsNeedGold = 0
@@ -52359,6 +53636,8 @@
         length += 1
         length += 2
         length += 4
+        length += 4
+        length += 4
         length += 1
         length += 1
 
@@ -52373,6 +53652,8 @@
         data = CommFunc.WriteWORD(data, self.LV)
         data = CommFunc.WriteBYTE(data, self.Job)
         data = CommFunc.WriteWORD(data, self.RealmLV)
+        data = CommFunc.WriteDWORD(data, self.Face)
+        data = CommFunc.WriteDWORD(data, self.FacePic)
         data = CommFunc.WriteDWORD(data, self.FightPower)
         data = CommFunc.WriteBYTE(data, self.Relation)
         data = CommFunc.WriteBYTE(data, self.IsNeedGold)
@@ -52387,6 +53668,8 @@
                                 LV:%d,
                                 Job:%d,
                                 RealmLV:%d,
+                                Face:%d,
+                                FacePic:%d,
                                 FightPower:%d,
                                 Relation:%d,
                                 IsNeedGold:%d
@@ -52399,6 +53682,8 @@
                                 self.LV,
                                 self.Job,
                                 self.RealmLV,
+                                self.Face,
+                                self.FacePic,
                                 self.FightPower,
                                 self.Relation,
                                 self.IsNeedGold

--
Gitblit v1.8.0