From d2d8ca57a661abb973550f35b8112b5078c1defb Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期一, 16 十二月 2024 15:27:39 +0800
Subject: [PATCH] 10297 【越南】【英语】【砍树】【tqxbqy】轮回殿-服务端(奖励类型增加类型3 - 消耗物品,目前支持坐骑经验丹、灵宠经验丹)

---
 Tool/RobotTest/Protocol/PacketsReceived.py |  638 +++++++++++++++++++++++++++++++++++++++------------------
 1 files changed, 432 insertions(+), 206 deletions(-)

diff --git a/Tool/RobotTest/Protocol/PacketsReceived.py b/Tool/RobotTest/Protocol/PacketsReceived.py
index 94eb581..f67e2b9 100644
--- a/Tool/RobotTest/Protocol/PacketsReceived.py
+++ b/Tool/RobotTest/Protocol/PacketsReceived.py
@@ -983,7 +983,7 @@
     LV = 0    #(WORD LV)//等级
     LVEx = 0    #(WORD LVEx)//玩家等级副本,用于转生
     LV2 = 0    #(WORD LV2)//大师等级
-    ExpPoint = 0    #(WORD ExpPoint)//扩充经验点数
+    ExpPoint = 0    #(DWORD ExpPoint)//扩充经验点数
     TotalExp = 0    #(DWORD TotalExp)//总经验
     Family = 0    #(DWORD Family)//家族
     FamilyName = ""    #(char FamilyName[33])//家族名称
@@ -1028,7 +1028,7 @@
     BackpackLV = 0    #(BYTE BackpackLV)//背包等级
     WarehouseLV = 0    #(BYTE WarehouseLV)//仓库等级
     TeamID = 0    #(DWORD TeamID)//队伍ID
-    UseGoldType = 0    #(BYTE UseGoldType)//默认用金子/金票        类型为MoneyType
+    UseGoldType = 0    #(BYTE UseGoldType)//默认用金子/金票		类型为MoneyType
     UseSilverType = 0    #(BYTE UseSilverType)//默认用的银子/银票
     AttackMode = 0    #(BYTE AttackMode)//攻击模式
     LastWeekOnlineTime = 0    #(DWORD LastWeekOnlineTime)//上周在线时间
@@ -1062,6 +1062,15 @@
     OperateInfo = 0    #(DWORD OperateInfo)//玩家附加运营商信息
     Operate = ""    #(char Operate[15])//所属运营商平台名
     ServerID = 0    #(DWORD ServerID)//所属区服ID
+    ExAttr15 = 0    #(DWORD ExAttr15)//预留的扩展属性字段,用来存放项目特定的属性
+    ExAttr16 = 0    #(DWORD ExAttr16)//预留的扩展属性字段,用来存放项目特定的属性
+    ExAttr17 = 0    #(DWORD ExAttr17)//预留的扩展属性字段,用来存放项目特定的属性
+    ExAttr18 = 0    #(DWORD ExAttr18)//预留的扩展属性字段,用来存放项目特定的属性
+    ExAttr19 = 0    #(DWORD ExAttr19)//预留的扩展属性字段,用来存放项目特定的属性
+    ExAttr20 = 0    #(DWORD ExAttr20)//预留的扩展属性字段,用来存放项目特定的属性
+    HPEx = 0    #(DWORD HPEx)//当前血量 超过E的记录
+    Face = 0    #(DWORD Face)//基本脸型
+    RoleType = 0    #(DWORD RoleType)//角色类型(各项目可自定义含义,如种族,与职业区分)		
     data = None
 
     def __init__(self):
@@ -1084,7 +1093,7 @@
         self.LV,_pos = CommFunc.ReadWORD(_lpData, _pos)
         self.LVEx,_pos = CommFunc.ReadWORD(_lpData, _pos)
         self.LV2,_pos = CommFunc.ReadWORD(_lpData, _pos)
-        self.ExpPoint,_pos = CommFunc.ReadWORD(_lpData, _pos)
+        self.ExpPoint,_pos = CommFunc.ReadDWORD(_lpData, _pos)
         self.TotalExp,_pos = CommFunc.ReadDWORD(_lpData, _pos)
         self.Family,_pos = CommFunc.ReadDWORD(_lpData, _pos)
         self.FamilyName,_pos = CommFunc.ReadString(_lpData, _pos,33)
@@ -1163,6 +1172,15 @@
         self.OperateInfo,_pos = CommFunc.ReadDWORD(_lpData, _pos)
         self.Operate,_pos = CommFunc.ReadString(_lpData, _pos,15)
         self.ServerID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+        self.ExAttr15,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+        self.ExAttr16,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+        self.ExAttr17,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+        self.ExAttr18,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+        self.ExAttr19,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+        self.ExAttr20,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+        self.HPEx,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+        self.Face,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+        self.RoleType,_pos = CommFunc.ReadDWORD(_lpData, _pos)
         return _pos
 
     def Clear(self):
@@ -1260,6 +1278,15 @@
         self.OperateInfo = 0
         self.Operate = ""
         self.ServerID = 0
+        self.ExAttr15 = 0
+        self.ExAttr16 = 0
+        self.ExAttr17 = 0
+        self.ExAttr18 = 0
+        self.ExAttr19 = 0
+        self.ExAttr20 = 0
+        self.HPEx = 0
+        self.Face = 0
+        self.RoleType = 0
         return
 
     def GetLength(self):
@@ -1276,7 +1303,7 @@
         length += 2
         length += 2
         length += 2
-        length += 2
+        length += 4
         length += 4
         length += 4
         length += 33
@@ -1355,6 +1382,15 @@
         length += 4
         length += 15
         length += 4
+        length += 4
+        length += 4
+        length += 4
+        length += 4
+        length += 4
+        length += 4
+        length += 4
+        length += 4
+        length += 4
 
         return length
 
@@ -1372,7 +1408,7 @@
         data = CommFunc.WriteWORD(data, self.LV)
         data = CommFunc.WriteWORD(data, self.LVEx)
         data = CommFunc.WriteWORD(data, self.LV2)
-        data = CommFunc.WriteWORD(data, self.ExpPoint)
+        data = CommFunc.WriteDWORD(data, self.ExpPoint)
         data = CommFunc.WriteDWORD(data, self.TotalExp)
         data = CommFunc.WriteDWORD(data, self.Family)
         data = CommFunc.WriteString(data, 33, self.FamilyName)
@@ -1451,6 +1487,15 @@
         data = CommFunc.WriteDWORD(data, self.OperateInfo)
         data = CommFunc.WriteString(data, 15, self.Operate)
         data = CommFunc.WriteDWORD(data, self.ServerID)
+        data = CommFunc.WriteDWORD(data, self.ExAttr15)
+        data = CommFunc.WriteDWORD(data, self.ExAttr16)
+        data = CommFunc.WriteDWORD(data, self.ExAttr17)
+        data = CommFunc.WriteDWORD(data, self.ExAttr18)
+        data = CommFunc.WriteDWORD(data, self.ExAttr19)
+        data = CommFunc.WriteDWORD(data, self.ExAttr20)
+        data = CommFunc.WriteDWORD(data, self.HPEx)
+        data = CommFunc.WriteDWORD(data, self.Face)
+        data = CommFunc.WriteDWORD(data, self.RoleType)
         return data
 
     def OutputString(self):
@@ -1545,7 +1590,16 @@
                                 ExAttr14:%d,
                                 OperateInfo:%d,
                                 Operate:%s,
-                                ServerID:%d
+                                ServerID:%d,
+                                ExAttr15:%d,
+                                ExAttr16:%d,
+                                ExAttr17:%d,
+                                ExAttr18:%d,
+                                ExAttr19:%d,
+                                ExAttr20:%d,
+                                HPEx:%d,
+                                Face:%d,
+                                RoleType:%d
                                 '''\
                                 %(
                                 self.Head.OutputString(),
@@ -1638,7 +1692,16 @@
                                 self.ExAttr14,
                                 self.OperateInfo,
                                 self.Operate,
-                                self.ServerID
+                                self.ServerID,
+                                self.ExAttr15,
+                                self.ExAttr16,
+                                self.ExAttr17,
+                                self.ExAttr18,
+                                self.ExAttr19,
+                                self.ExAttr20,
+                                self.HPEx,
+                                self.Face,
+                                self.RoleType
                                 )
         return DumpString
 
@@ -2549,6 +2612,70 @@
 
 m_NAtagCheckSecurityCardResult=tagCheckSecurityCardResult()
 ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCheckSecurityCardResult.Cmd,m_NAtagCheckSecurityCardResult.SubCmd))] = m_NAtagCheckSecurityCardResult
+
+
+#------------------------------------------------------
+#01 32 创角成功 #tagCreateRoleSucess
+
+class  tagCreateRoleSucess(Structure):
+    Head = tagHead()
+    PlayerID = 0    #(DWORD PlayerID)
+    PlayerName = ""    #(char PlayerName[33])
+    data = None
+
+    def __init__(self):
+        self.Clear()
+        self.Head.Cmd = 0x01
+        self.Head.SubCmd = 0x32
+        return
+
+    def ReadData(self, _lpData, _pos=0, _Len=0):
+        self.Clear()
+        _pos = self.Head.ReadData(_lpData, _pos)
+        self.PlayerID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+        self.PlayerName,_pos = CommFunc.ReadString(_lpData, _pos,33)
+        return _pos
+
+    def Clear(self):
+        self.Head = tagHead()
+        self.Head.Clear()
+        self.Head.Cmd = 0x01
+        self.Head.SubCmd = 0x32
+        self.PlayerID = 0
+        self.PlayerName = ""
+        return
+
+    def GetLength(self):
+        length = 0
+        length += self.Head.GetLength()
+        length += 4
+        length += 33
+
+        return length
+
+    def GetBuffer(self):
+        data = ''
+        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
+        data = CommFunc.WriteDWORD(data, self.PlayerID)
+        data = CommFunc.WriteString(data, 33, self.PlayerName)
+        return data
+
+    def OutputString(self):
+        DumpString = '''
+                                Head:%s,
+                                PlayerID:%d,
+                                PlayerName:%s
+                                '''\
+                                %(
+                                self.Head.OutputString(),
+                                self.PlayerID,
+                                self.PlayerName
+                                )
+        return DumpString
+
+
+m_NAtagCreateRoleSucess=tagCreateRoleSucess()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCreateRoleSucess.Head.Cmd,m_NAtagCreateRoleSucess.Head.SubCmd))] = m_NAtagCreateRoleSucess
 
 
 #------------------------------------------------------
@@ -5783,7 +5910,7 @@
     _fields_ = [
                   ("Cmd", c_ubyte),
                   ("SubCmd", c_ubyte),
-                  ("StartYear", c_ushort),    #年,    如果填写0, 就隐藏此窗口
+                  ("StartYear", c_ushort),    #年,	如果填写0, 就隐藏此窗口
                   ("StartMonth", c_ushort),    #月
                   ("StartDate", c_ubyte),    #日
                   ("EndYear", c_ushort),    
@@ -5915,7 +6042,7 @@
     PlayerID = 0    #(DWORD PlayerID)
     FamilyNameLen = 0    #(BYTE FamilyNameLen)
     FamilyName = ""    #(String FamilyName)//size = FamilyNameLen
-    FamilyMemberLV = 0    #(BYTE FamilyMemberLV)//玩家在家族中的职位    
+    FamilyMemberLV = 0    #(BYTE FamilyMemberLV)//玩家在家族中的职位	
     data = None
 
     def __init__(self):
@@ -6543,6 +6670,7 @@
     GradID = 0    #(DWORD GradID)//头衔ID
     State = 0    #(BYTE State)//装备和使用状态 按位判定,第一位0未装备1已装备 第二位0未使用 1使用
     CreateTime = ""    #(char CreateTime[30])//获得时间
+    ExpireTime = 0    #(DWORD ExpireTime)// 持续时间,0为配表固定时间
     data = None
 
     def __init__(self):
@@ -6554,12 +6682,14 @@
         self.GradID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
         self.State,_pos = CommFunc.ReadBYTE(_lpData, _pos)
         self.CreateTime,_pos = CommFunc.ReadString(_lpData, _pos,30)
+        self.ExpireTime,_pos = CommFunc.ReadDWORD(_lpData, _pos)
         return _pos
 
     def Clear(self):
         self.GradID = 0
         self.State = 0
         self.CreateTime = ""
+        self.ExpireTime = 0
         return
 
     def GetLength(self):
@@ -6567,6 +6697,7 @@
         length += 4
         length += 1
         length += 30
+        length += 4
 
         return length
 
@@ -6575,18 +6706,21 @@
         data = CommFunc.WriteDWORD(data, self.GradID)
         data = CommFunc.WriteBYTE(data, self.State)
         data = CommFunc.WriteString(data, 30, self.CreateTime)
+        data = CommFunc.WriteDWORD(data, self.ExpireTime)
         return data
 
     def OutputString(self):
         DumpString = '''
                                 GradID:%d,
                                 State:%d,
-                                CreateTime:%s
+                                CreateTime:%s,
+                                ExpireTime:%d
                                 '''\
                                 %(
                                 self.GradID,
                                 self.State,
-                                self.CreateTime
+                                self.CreateTime,
+                                self.ExpireTime
                                 )
         return DumpString
 
@@ -6664,6 +6798,7 @@
     Head = tagHead()
     GradID = 0    #(DWORD GradID)//头衔ID
     CreateTime = ""    #(char CreateTime[30])//获得时间
+    ExpireTime = 0    #(DWORD ExpireTime)// 持续时间,0为配表固定时间
     data = None
 
     def __init__(self):
@@ -6677,6 +6812,7 @@
         _pos = self.Head.ReadData(_lpData, _pos)
         self.GradID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
         self.CreateTime,_pos = CommFunc.ReadString(_lpData, _pos,30)
+        self.ExpireTime,_pos = CommFunc.ReadDWORD(_lpData, _pos)
         return _pos
 
     def Clear(self):
@@ -6686,6 +6822,7 @@
         self.Head.SubCmd = 0x36
         self.GradID = 0
         self.CreateTime = ""
+        self.ExpireTime = 0
         return
 
     def GetLength(self):
@@ -6693,6 +6830,7 @@
         length += self.Head.GetLength()
         length += 4
         length += 30
+        length += 4
 
         return length
 
@@ -6701,18 +6839,21 @@
         data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
         data = CommFunc.WriteDWORD(data, self.GradID)
         data = CommFunc.WriteString(data, 30, self.CreateTime)
+        data = CommFunc.WriteDWORD(data, self.ExpireTime)
         return data
 
     def OutputString(self):
         DumpString = '''
                                 Head:%s,
                                 GradID:%d,
-                                CreateTime:%s
+                                CreateTime:%s,
+                                ExpireTime:%d
                                 '''\
                                 %(
                                 self.Head.OutputString(),
                                 self.GradID,
-                                self.CreateTime
+                                self.CreateTime,
+                                self.ExpireTime
                                 )
         return DumpString
 
@@ -6941,67 +7082,36 @@
 #03 09 主角登录时候的简短信息#tagPlayerLoginInfo
 
 class  tagLoginInfoEquip(Structure):
-    ItemPlace = 0    #(BYTE ItemPlace)
-    ItemID = 0    #(DWORD ItemID)
-    IsSuite = 0    #(BYTE IsSuite)//是否已经套装化
-    UserDataLen = 0    #(DWORD UserDataLen)
-    UserData = ""    #(String UserData)//size = UserDataLen
-    data = None
+    _pack_ = 1
+    _fields_ = [
+                  ("ItemID", c_int),    
+                  ]
 
     def __init__(self):
         self.Clear()
         return
 
-    def ReadData(self, _lpData, _pos=0, _Len=0):
+    def ReadData(self, stringData, _pos=0, _len=0):
         self.Clear()
-        self.ItemPlace,_pos = CommFunc.ReadBYTE(_lpData, _pos)
-        self.ItemID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
-        self.IsSuite,_pos = CommFunc.ReadBYTE(_lpData, _pos)
-        self.UserDataLen,_pos = CommFunc.ReadDWORD(_lpData, _pos)
-        self.UserData,_pos = CommFunc.ReadString(_lpData, _pos,self.UserDataLen)
-        return _pos
+        memmove(addressof(self), stringData[_pos:], self.GetLength())
+        return _pos + self.GetLength()
 
     def Clear(self):
-        self.ItemPlace = 0
         self.ItemID = 0
-        self.IsSuite = 0
-        self.UserDataLen = 0
-        self.UserData = ""
         return
 
     def GetLength(self):
-        length = 0
-        length += 1
-        length += 4
-        length += 1
-        length += 4
-        length += len(self.UserData)
-
-        return length
+        return sizeof(tagLoginInfoEquip)
 
     def GetBuffer(self):
-        data = ''
-        data = CommFunc.WriteBYTE(data, self.ItemPlace)
-        data = CommFunc.WriteDWORD(data, self.ItemID)
-        data = CommFunc.WriteBYTE(data, self.IsSuite)
-        data = CommFunc.WriteDWORD(data, self.UserDataLen)
-        data = CommFunc.WriteString(data, self.UserDataLen, self.UserData)
-        return data
+        return string_at(addressof(self), self.GetLength())
 
     def OutputString(self):
-        DumpString = '''
-                                ItemPlace:%d,
-                                ItemID:%d,
-                                IsSuite:%d,
-                                UserDataLen:%d,
-                                UserData:%s
+        DumpString = '''//03 09 主角登录时候的简短信息//tagPlayerLoginInfo:
+                                ItemID:%d
                                 '''\
                                 %(
-                                self.ItemPlace,
-                                self.ItemID,
-                                self.IsSuite,
-                                self.UserDataLen,
-                                self.UserData
+                                self.ItemID
                                 )
         return DumpString
 
@@ -7017,6 +7127,16 @@
     EquipCount = 0    #(BYTE EquipCount)
     EquipInfo = list()    #(vector<tagLoginInfoEquip> EquipInfo)//size = EquipCount
     EquipShowSwitch = 0    #(DWORD EquipShowSwitch)//玩家装备显示开关
+    ExAttr15 = 0    #(DWORD ExAttr15)//预留的扩展属性字段,用来存放项目特定的属性
+    ExAttr16 = 0    #(DWORD ExAttr16)//预留的扩展属性字段,用来存放项目特定的属性
+    ExAttr17 = 0    #(DWORD ExAttr17)//预留的扩展属性字段,用来存放项目特定的属性
+    ExAttr18 = 0    #(DWORD ExAttr18)//预留的扩展属性字段,用来存放项目特定的属性
+    ExAttr19 = 0    #(DWORD ExAttr19)//预留的扩展属性字段,用来存放项目特定的属性
+    ExAttr20 = 0    #(DWORD ExAttr20)//预留的扩展属性字段,用来存放项目特定的属性
+    IPLen = 0    #(BYTE IPLen)
+    IP = ""    #(String IP)// 跨服IP
+    Port = 0    #(WORD Port)// 跨服端口
+    CrossState = 0    #(BYTE CrossState)// 跨服状态0-非跨服状态,1-跨服状态,2-跨服状态异常
     data = None
 
     def __init__(self):
@@ -7040,6 +7160,16 @@
             _pos = temEquipInfo.ReadData(_lpData, _pos)
             self.EquipInfo.append(temEquipInfo)
         self.EquipShowSwitch,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+        self.ExAttr15,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+        self.ExAttr16,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+        self.ExAttr17,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+        self.ExAttr18,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+        self.ExAttr19,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+        self.ExAttr20,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+        self.IPLen,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+        self.IP,_pos = CommFunc.ReadString(_lpData, _pos,self.IPLen)
+        self.Port,_pos = CommFunc.ReadWORD(_lpData, _pos)
+        self.CrossState,_pos = CommFunc.ReadBYTE(_lpData, _pos)
         return _pos
 
     def Clear(self):
@@ -7056,6 +7186,16 @@
         self.EquipCount = 0
         self.EquipInfo = list()
         self.EquipShowSwitch = 0
+        self.ExAttr15 = 0
+        self.ExAttr16 = 0
+        self.ExAttr17 = 0
+        self.ExAttr18 = 0
+        self.ExAttr19 = 0
+        self.ExAttr20 = 0
+        self.IPLen = 0
+        self.IP = ""
+        self.Port = 0
+        self.CrossState = 0
         return
 
     def GetLength(self):
@@ -7071,6 +7211,16 @@
         for i in range(self.EquipCount):
             length += self.EquipInfo[i].GetLength()
         length += 4
+        length += 4
+        length += 4
+        length += 4
+        length += 4
+        length += 4
+        length += 4
+        length += 1
+        length += len(self.IP)
+        length += 2
+        length += 1
 
         return length
 
@@ -7087,6 +7237,16 @@
         for i in range(self.EquipCount):
             data = CommFunc.WriteString(data, self.EquipInfo[i].GetLength(), self.EquipInfo[i].GetBuffer())
         data = CommFunc.WriteDWORD(data, self.EquipShowSwitch)
+        data = CommFunc.WriteDWORD(data, self.ExAttr15)
+        data = CommFunc.WriteDWORD(data, self.ExAttr16)
+        data = CommFunc.WriteDWORD(data, self.ExAttr17)
+        data = CommFunc.WriteDWORD(data, self.ExAttr18)
+        data = CommFunc.WriteDWORD(data, self.ExAttr19)
+        data = CommFunc.WriteDWORD(data, self.ExAttr20)
+        data = CommFunc.WriteBYTE(data, self.IPLen)
+        data = CommFunc.WriteString(data, self.IPLen, self.IP)
+        data = CommFunc.WriteWORD(data, self.Port)
+        data = CommFunc.WriteBYTE(data, self.CrossState)
         return data
 
     def OutputString(self):
@@ -7100,7 +7260,17 @@
                                 HavePswLV2:%d,
                                 EquipCount:%d,
                                 EquipInfo:%s,
-                                EquipShowSwitch:%d
+                                EquipShowSwitch:%d,
+                                ExAttr15:%d,
+                                ExAttr16:%d,
+                                ExAttr17:%d,
+                                ExAttr18:%d,
+                                ExAttr19:%d,
+                                ExAttr20:%d,
+                                IPLen:%d,
+                                IP:%s,
+                                Port:%d,
+                                CrossState:%d
                                 '''\
                                 %(
                                 self.Head.OutputString(),
@@ -7112,7 +7282,17 @@
                                 self.HavePswLV2,
                                 self.EquipCount,
                                 "...",
-                                self.EquipShowSwitch
+                                self.EquipShowSwitch,
+                                self.ExAttr15,
+                                self.ExAttr16,
+                                self.ExAttr17,
+                                self.ExAttr18,
+                                self.ExAttr19,
+                                self.ExAttr20,
+                                self.IPLen,
+                                self.IP,
+                                self.Port,
+                                self.CrossState
                                 )
         return DumpString
 
@@ -7864,7 +8044,7 @@
 class  tagFBEventList(Structure):
     Head = tagHead()
     EventCount = 0    #(BYTE EventCount)//副本活动数
-    EventList = list()    #(vector<tagFBEventDetail> EventList)//副本活动列表    
+    EventList = list()    #(vector<tagFBEventDetail> EventList)//副本活动列表	
     data = None
 
     def __init__(self):
@@ -8403,67 +8583,36 @@
 #04 34 周围玩家出现合并封包#tagAreaPlayerAppearEx
 
 class  tagEquipInfo(Structure):
-    Place = 0    #(BYTE Place)//装备位置
-    ItemID = 0    #(DWORD ItemID)//物品ID
-    IsSuite = 0    #(BYTE IsSuite)//是否已经套装化
-    UserDataLen = 0    #(DWORD UserDataLen)
-    UserData = ""    #(String UserData)// 附加数据
-    data = None
+    _pack_ = 1
+    _fields_ = [
+                  ("ItemID", c_int),    #物品ID
+                  ]
 
     def __init__(self):
         self.Clear()
         return
 
-    def ReadData(self, _lpData, _pos=0, _Len=0):
+    def ReadData(self, stringData, _pos=0, _len=0):
         self.Clear()
-        self.Place,_pos = CommFunc.ReadBYTE(_lpData, _pos)
-        self.ItemID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
-        self.IsSuite,_pos = CommFunc.ReadBYTE(_lpData, _pos)
-        self.UserDataLen,_pos = CommFunc.ReadDWORD(_lpData, _pos)
-        self.UserData,_pos = CommFunc.ReadString(_lpData, _pos,self.UserDataLen)
-        return _pos
+        memmove(addressof(self), stringData[_pos:], self.GetLength())
+        return _pos + self.GetLength()
 
     def Clear(self):
-        self.Place = 0
         self.ItemID = 0
-        self.IsSuite = 0
-        self.UserDataLen = 0
-        self.UserData = ""
         return
 
     def GetLength(self):
-        length = 0
-        length += 1
-        length += 4
-        length += 1
-        length += 4
-        length += len(self.UserData)
-
-        return length
+        return sizeof(tagEquipInfo)
 
     def GetBuffer(self):
-        data = ''
-        data = CommFunc.WriteBYTE(data, self.Place)
-        data = CommFunc.WriteDWORD(data, self.ItemID)
-        data = CommFunc.WriteBYTE(data, self.IsSuite)
-        data = CommFunc.WriteDWORD(data, self.UserDataLen)
-        data = CommFunc.WriteString(data, self.UserDataLen, self.UserData)
-        return data
+        return string_at(addressof(self), self.GetLength())
 
     def OutputString(self):
-        DumpString = '''
-                                Place:%d,
-                                ItemID:%d,
-                                IsSuite:%d,
-                                UserDataLen:%d,
-                                UserData:%s
+        DumpString = '''//04 34 周围玩家出现合并封包//tagAreaPlayerAppearEx:
+                                ItemID:%d
                                 '''\
                                 %(
-                                self.Place,
-                                self.ItemID,
-                                self.IsSuite,
-                                self.UserDataLen,
-                                self.UserData
+                                self.ItemID
                                 )
         return DumpString
 
@@ -8530,11 +8679,14 @@
     ReincarnationLv = 0    #(WORD ReincarnationLv)
     LV = 0    #(WORD LV)//等级
     Job = 0    #(BYTE Job)
+    Face = 0    #(DWORD Face)
     TeamLV = 0    #(BYTE TeamLV)//组队等级
     TeamID = 0    #(DWORD TeamID)//组队ID
     HP = 0    #(DWORD HP)
+    HPEx = 0    #(DWORD HPEx)
     MaxHP = 0    #(DWORD MaxHP)
-    PlayerState = 0    #(BYTE PlayerState)//TClientPlayerState    玩家状态 打坐/马上/人镖合一
+    MaxHPEx = 0    #(DWORD MaxHPEx)
+    PlayerState = 0    #(BYTE PlayerState)//TClientPlayerState	玩家状态 打坐/马上/人镖合一
     IsHideMask = 0    #(BYTE IsHideMask)
     Country = 0    #(BYTE Country)//玩家国家
     FamilyID = 0    #(DWORD FamilyID)//家族ID
@@ -8561,6 +8713,12 @@
     ExAttr5 = 0    #(DWORD ExAttr5)//预留的扩展属性字段,用来存放项目特定的属性
     ServerID = 0    #(DWORD ServerID)//所属区服ID
     State = 0    #(BYTE State)// 0.正常在线1.脱机挂在线 2脱机挂死亡
+    ExAttr15 = 0    #(DWORD ExAttr15)//预留的扩展属性字段,用来存放项目特定的属性
+    ExAttr16 = 0    #(DWORD ExAttr16)//预留的扩展属性字段,用来存放项目特定的属性
+    ExAttr17 = 0    #(DWORD ExAttr17)//预留的扩展属性字段,用来存放项目特定的属性
+    ExAttr18 = 0    #(DWORD ExAttr18)//预留的扩展属性字段,用来存放项目特定的属性
+    ExAttr19 = 0    #(DWORD ExAttr19)//预留的扩展属性字段,用来存放项目特定的属性
+    ExAttr20 = 0    #(DWORD ExAttr20)//预留的扩展属性字段,用来存放项目特定的属性
     data = None
 
     def __init__(self):
@@ -8581,10 +8739,13 @@
         self.ReincarnationLv,_pos = CommFunc.ReadWORD(_lpData, _pos)
         self.LV,_pos = CommFunc.ReadWORD(_lpData, _pos)
         self.Job,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+        self.Face,_pos = CommFunc.ReadDWORD(_lpData, _pos)
         self.TeamLV,_pos = CommFunc.ReadBYTE(_lpData, _pos)
         self.TeamID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
         self.HP,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+        self.HPEx,_pos = CommFunc.ReadDWORD(_lpData, _pos)
         self.MaxHP,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+        self.MaxHPEx,_pos = CommFunc.ReadDWORD(_lpData, _pos)
         self.PlayerState,_pos = CommFunc.ReadBYTE(_lpData, _pos)
         self.IsHideMask,_pos = CommFunc.ReadBYTE(_lpData, _pos)
         self.Country,_pos = CommFunc.ReadBYTE(_lpData, _pos)
@@ -8618,6 +8779,12 @@
         self.ExAttr5,_pos = CommFunc.ReadDWORD(_lpData, _pos)
         self.ServerID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
         self.State,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+        self.ExAttr15,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+        self.ExAttr16,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+        self.ExAttr17,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+        self.ExAttr18,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+        self.ExAttr19,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+        self.ExAttr20,_pos = CommFunc.ReadDWORD(_lpData, _pos)
         return _pos
 
     def Clear(self):
@@ -8634,10 +8801,13 @@
         self.ReincarnationLv = 0
         self.LV = 0
         self.Job = 0
+        self.Face = 0
         self.TeamLV = 0
         self.TeamID = 0
         self.HP = 0
+        self.HPEx = 0
         self.MaxHP = 0
+        self.MaxHPEx = 0
         self.PlayerState = 0
         self.IsHideMask = 0
         self.Country = 0
@@ -8665,6 +8835,12 @@
         self.ExAttr5 = 0
         self.ServerID = 0
         self.State = 0
+        self.ExAttr15 = 0
+        self.ExAttr16 = 0
+        self.ExAttr17 = 0
+        self.ExAttr18 = 0
+        self.ExAttr19 = 0
+        self.ExAttr20 = 0
         return
 
     def GetLength(self):
@@ -8679,7 +8855,10 @@
         length += 2
         length += 2
         length += 1
+        length += 4
         length += 1
+        length += 4
+        length += 4
         length += 4
         length += 4
         length += 4
@@ -8712,6 +8891,12 @@
         length += 4
         length += 4
         length += 1
+        length += 4
+        length += 4
+        length += 4
+        length += 4
+        length += 4
+        length += 4
 
         return length
 
@@ -8727,10 +8912,13 @@
         data = CommFunc.WriteWORD(data, self.ReincarnationLv)
         data = CommFunc.WriteWORD(data, self.LV)
         data = CommFunc.WriteBYTE(data, self.Job)
+        data = CommFunc.WriteDWORD(data, self.Face)
         data = CommFunc.WriteBYTE(data, self.TeamLV)
         data = CommFunc.WriteDWORD(data, self.TeamID)
         data = CommFunc.WriteDWORD(data, self.HP)
+        data = CommFunc.WriteDWORD(data, self.HPEx)
         data = CommFunc.WriteDWORD(data, self.MaxHP)
+        data = CommFunc.WriteDWORD(data, self.MaxHPEx)
         data = CommFunc.WriteBYTE(data, self.PlayerState)
         data = CommFunc.WriteBYTE(data, self.IsHideMask)
         data = CommFunc.WriteBYTE(data, self.Country)
@@ -8760,6 +8948,12 @@
         data = CommFunc.WriteDWORD(data, self.ExAttr5)
         data = CommFunc.WriteDWORD(data, self.ServerID)
         data = CommFunc.WriteBYTE(data, self.State)
+        data = CommFunc.WriteDWORD(data, self.ExAttr15)
+        data = CommFunc.WriteDWORD(data, self.ExAttr16)
+        data = CommFunc.WriteDWORD(data, self.ExAttr17)
+        data = CommFunc.WriteDWORD(data, self.ExAttr18)
+        data = CommFunc.WriteDWORD(data, self.ExAttr19)
+        data = CommFunc.WriteDWORD(data, self.ExAttr20)
         return data
 
     def OutputString(self):
@@ -8774,10 +8968,13 @@
                                 ReincarnationLv:%d,
                                 LV:%d,
                                 Job:%d,
+                                Face:%d,
                                 TeamLV:%d,
                                 TeamID:%d,
                                 HP:%d,
+                                HPEx:%d,
                                 MaxHP:%d,
+                                MaxHPEx:%d,
                                 PlayerState:%d,
                                 IsHideMask:%d,
                                 Country:%d,
@@ -8804,7 +9001,13 @@
                                 ExAttr4:%d,
                                 ExAttr5:%d,
                                 ServerID:%d,
-                                State:%d
+                                State:%d,
+                                ExAttr15:%d,
+                                ExAttr16:%d,
+                                ExAttr17:%d,
+                                ExAttr18:%d,
+                                ExAttr19:%d,
+                                ExAttr20:%d
                                 '''\
                                 %(
                                 self.Head.OutputString(),
@@ -8817,10 +9020,13 @@
                                 self.ReincarnationLv,
                                 self.LV,
                                 self.Job,
+                                self.Face,
                                 self.TeamLV,
                                 self.TeamID,
                                 self.HP,
+                                self.HPEx,
                                 self.MaxHP,
+                                self.MaxHPEx,
                                 self.PlayerState,
                                 self.IsHideMask,
                                 self.Country,
@@ -8847,7 +9053,13 @@
                                 self.ExAttr4,
                                 self.ExAttr5,
                                 self.ServerID,
-                                self.State
+                                self.State,
+                                self.ExAttr15,
+                                self.ExAttr16,
+                                self.ExAttr17,
+                                self.ExAttr18,
+                                self.ExAttr19,
+                                self.ExAttr20
                                 )
         return DumpString
 
@@ -9554,6 +9766,7 @@
                   ("PlayerID", c_int),    # 主人ID
                   ("PosX", c_int),    # X坐标
                   ("PosY", c_int),    # Y坐标
+                  ("Rank", c_ubyte),    #阶段
                   ]
 
     def __init__(self):
@@ -9575,6 +9788,7 @@
         self.PlayerID = 0
         self.PosX = 0
         self.PosY = 0
+        self.Rank = 0
         return
 
     def GetLength(self):
@@ -9591,7 +9805,8 @@
                                 NPCID:%d,
                                 PlayerID:%d,
                                 PosX:%d,
-                                PosY:%d
+                                PosY:%d,
+                                Rank:%d
                                 '''\
                                 %(
                                 self.Cmd,
@@ -9600,7 +9815,8 @@
                                 self.NPCID,
                                 self.PlayerID,
                                 self.PosX,
-                                self.PosY
+                                self.PosY,
+                                self.Rank
                                 )
         return DumpString
 
@@ -9619,8 +9835,9 @@
                   ("SubCmd", c_ubyte),
                   ("ObjID", c_int),    
                   ("ObjType", c_ubyte),    
-                  ("RefreshType", c_ubyte),    
+                  ("RefreshType", c_ushort),    
                   ("Value", c_int),    
+                  ("ValueEx", c_int),    
                   ]
 
     def __init__(self):
@@ -9641,6 +9858,7 @@
         self.ObjType = 0
         self.RefreshType = 0
         self.Value = 0
+        self.ValueEx = 0
         return
 
     def GetLength(self):
@@ -9656,7 +9874,8 @@
                                 ObjID:%d,
                                 ObjType:%d,
                                 RefreshType:%d,
-                                Value:%d
+                                Value:%d,
+                                ValueEx:%d
                                 '''\
                                 %(
                                 self.Cmd,
@@ -9664,7 +9883,8 @@
                                 self.ObjID,
                                 self.ObjType,
                                 self.RefreshType,
-                                self.Value
+                                self.Value,
+                                self.ValueEx
                                 )
         return DumpString
 
@@ -9900,7 +10120,7 @@
                   ("Cmd", c_ubyte),
                   ("SubCmd", c_ubyte),
                   ("PlayerID", c_int),    
-                  ("FamilyMemberLV", c_ubyte),    #玩家在家族中的职位    
+                  ("FamilyMemberLV", c_ubyte),    #玩家在家族中的职位	
                   ]
 
     def __init__(self):
@@ -9948,7 +10168,7 @@
 
 
 #------------------------------------------------------
-#04 36    周围玩家家族名刷新#tagPlayerFamilyNameRefresh
+#04 36	周围玩家家族名刷新#tagPlayerFamilyNameRefresh
 
 class  tagPlayerFamilyNameRefresh(Structure):
     Head = tagHead()
@@ -10026,7 +10246,7 @@
     PlayerID = 0    #(DWORD PlayerID)
     FamilyNameLen = 0    #(BYTE FamilyNameLen)
     FamilyName = ""    #(String FamilyName)//size = FamilyNameLen
-    FamilyMemberLV = 0    #(BYTE FamilyMemberLV)//玩家在家族中的职位    
+    FamilyMemberLV = 0    #(BYTE FamilyMemberLV)//玩家在家族中的职位	
     data = None
 
     def __init__(self):
@@ -10456,6 +10676,7 @@
                   ("ObjType", c_ubyte),    #对象类型
                   ("SkillID", c_int),    #技能ID
                   ("DiffValue", c_int),    #值
+                  ("DiffValueEx", c_int),    #超亿值
                   ("AttackType", c_ubyte),    #攻击类型
                   ("SrcObjID", c_int),    #飘血来源
                   ("SrcObjType", c_ubyte),    
@@ -10481,6 +10702,7 @@
         self.ObjType = 0
         self.SkillID = 0
         self.DiffValue = 0
+        self.DiffValueEx = 0
         self.AttackType = 0
         self.SrcObjID = 0
         self.SrcObjType = 0
@@ -10502,6 +10724,7 @@
                                 ObjType:%d,
                                 SkillID:%d,
                                 DiffValue:%d,
+                                DiffValueEx:%d,
                                 AttackType:%d,
                                 SrcObjID:%d,
                                 SrcObjType:%d,
@@ -10515,6 +10738,7 @@
                                 self.ObjType,
                                 self.SkillID,
                                 self.DiffValue,
+                                self.DiffValueEx,
                                 self.AttackType,
                                 self.SrcObjID,
                                 self.SrcObjType,
@@ -10656,7 +10880,7 @@
     MaxHP = 0    #(DWORD MaxHP)
     MaxHPEx = 0    #(DWORD MaxHPEx)
     Speed = 0    #(WORD Speed)
-    LV = 0    #(BYTE LV)
+    LV = 0    #(WORD LV)
     OwnerNameLen = 0    #(BYTE OwnerNameLen)
     OwnerName = ""    #(String OwnerName)//size = OwnerNameLen
     data = None
@@ -10681,7 +10905,7 @@
         self.MaxHP,_pos = CommFunc.ReadDWORD(_lpData, _pos)
         self.MaxHPEx,_pos = CommFunc.ReadDWORD(_lpData, _pos)
         self.Speed,_pos = CommFunc.ReadWORD(_lpData, _pos)
-        self.LV,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+        self.LV,_pos = CommFunc.ReadWORD(_lpData, _pos)
         self.OwnerNameLen,_pos = CommFunc.ReadBYTE(_lpData, _pos)
         self.OwnerName,_pos = CommFunc.ReadString(_lpData, _pos,self.OwnerNameLen)
         return _pos
@@ -10721,7 +10945,7 @@
         length += 4
         length += 4
         length += 2
-        length += 1
+        length += 2
         length += 1
         length += len(self.OwnerName)
 
@@ -10741,7 +10965,7 @@
         data = CommFunc.WriteDWORD(data, self.MaxHP)
         data = CommFunc.WriteDWORD(data, self.MaxHPEx)
         data = CommFunc.WriteWORD(data, self.Speed)
-        data = CommFunc.WriteBYTE(data, self.LV)
+        data = CommFunc.WriteWORD(data, self.LV)
         data = CommFunc.WriteBYTE(data, self.OwnerNameLen)
         data = CommFunc.WriteString(data, self.OwnerNameLen, self.OwnerName)
         return data
@@ -10786,74 +11010,6 @@
 
 m_NAtagPlayerSummonNPCAppear=tagPlayerSummonNPCAppear()
 ChNetPackDict[eval("0x%02x%02x"%(m_NAtagPlayerSummonNPCAppear.Head.Cmd,m_NAtagPlayerSummonNPCAppear.Head.SubCmd))] = m_NAtagPlayerSummonNPCAppear
-
-
-#------------------------------------------------------
-#04 40 周围对象刷新(支持大数值) #tagObjInfoRefreshEx
-
-class  tagObjInfoRefreshEx(Structure):
-    _pack_ = 1
-    _fields_ = [
-                  ("Cmd", c_ubyte),
-                  ("SubCmd", c_ubyte),
-                  ("ObjID", c_int),    
-                  ("ObjType", c_ubyte),    
-                  ("RefreshType", c_ubyte),    
-                  ("Value", c_int),    
-                  ("ValueEx", c_int),    
-                  ]
-
-    def __init__(self):
-        self.Clear()
-        self.Cmd = 0x04
-        self.SubCmd = 0x40
-        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 = 0x04
-        self.SubCmd = 0x40
-        self.ObjID = 0
-        self.ObjType = 0
-        self.RefreshType = 0
-        self.Value = 0
-        self.ValueEx = 0
-        return
-
-    def GetLength(self):
-        return sizeof(tagObjInfoRefreshEx)
-
-    def GetBuffer(self):
-        return string_at(addressof(self), self.GetLength())
-
-    def OutputString(self):
-        DumpString = '''//04 40 周围对象刷新(支持大数值) //tagObjInfoRefreshEx:
-                                Cmd:%s,
-                                SubCmd:%s,
-                                ObjID:%d,
-                                ObjType:%d,
-                                RefreshType:%d,
-                                Value:%d,
-                                ValueEx:%d
-                                '''\
-                                %(
-                                self.Cmd,
-                                self.SubCmd,
-                                self.ObjID,
-                                self.ObjType,
-                                self.RefreshType,
-                                self.Value,
-                                self.ValueEx
-                                )
-        return DumpString
-
-
-m_NAtagObjInfoRefreshEx=tagObjInfoRefreshEx()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagObjInfoRefreshEx.Cmd,m_NAtagObjInfoRefreshEx.SubCmd))] = m_NAtagObjInfoRefreshEx
 
 
 #------------------------------------------------------
@@ -10993,6 +11149,7 @@
     NPCID = 0    #(DWORD NPCID)
     NPCFaceDir = 0    #(WORD NPCFaceDir)//NPC的面向
     NPCHP = 0    #(DWORD NPCHP)
+    NPCHPEx = 0    #(DWORD NPCHPEx)
     NPCEventType = 0    #(WORD NPCEventType)//0 攻击 1 事件
     IsActive = 0    #(BYTE IsActive)//这个NPC是否活着
     PosX = 0    #(WORD PosX)
@@ -11017,6 +11174,7 @@
         self.NPCID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
         self.NPCFaceDir,_pos = CommFunc.ReadWORD(_lpData, _pos)
         self.NPCHP,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+        self.NPCHPEx,_pos = CommFunc.ReadDWORD(_lpData, _pos)
         self.NPCEventType,_pos = CommFunc.ReadWORD(_lpData, _pos)
         self.IsActive,_pos = CommFunc.ReadBYTE(_lpData, _pos)
         self.PosX,_pos = CommFunc.ReadWORD(_lpData, _pos)
@@ -11037,6 +11195,7 @@
         self.NPCID = 0
         self.NPCFaceDir = 0
         self.NPCHP = 0
+        self.NPCHPEx = 0
         self.NPCEventType = 0
         self.IsActive = 0
         self.PosX = 0
@@ -11054,6 +11213,7 @@
         length += 4
         length += 4
         length += 2
+        length += 4
         length += 4
         length += 2
         length += 1
@@ -11074,6 +11234,7 @@
         data = CommFunc.WriteDWORD(data, self.NPCID)
         data = CommFunc.WriteWORD(data, self.NPCFaceDir)
         data = CommFunc.WriteDWORD(data, self.NPCHP)
+        data = CommFunc.WriteDWORD(data, self.NPCHPEx)
         data = CommFunc.WriteWORD(data, self.NPCEventType)
         data = CommFunc.WriteBYTE(data, self.IsActive)
         data = CommFunc.WriteWORD(data, self.PosX)
@@ -11092,6 +11253,7 @@
                                 NPCID:%d,
                                 NPCFaceDir:%d,
                                 NPCHP:%d,
+                                NPCHPEx:%d,
                                 NPCEventType:%d,
                                 IsActive:%d,
                                 PosX:%d,
@@ -11108,6 +11270,7 @@
                                 self.NPCID,
                                 self.NPCFaceDir,
                                 self.NPCHP,
+                                self.NPCHPEx,
                                 self.NPCEventType,
                                 self.IsActive,
                                 self.PosX,
@@ -12350,6 +12513,7 @@
                   ("ObjType", c_ubyte),    #对象类型
                   ("AttackType", c_ubyte),    #普攻, 闪躲, 致命 类型
                   ("Value", c_int),    
+                  ("ValueEx", c_int),    
                   ("RemainHP", c_int),    #对方剩余的血
                   ("RemainHPEx", c_int),    #对方剩余的血, 超亿支持
                   ]
@@ -12375,6 +12539,7 @@
         self.ObjType = 0
         self.AttackType = 0
         self.Value = 0
+        self.ValueEx = 0
         self.RemainHP = 0
         self.RemainHPEx = 0
         return
@@ -12396,6 +12561,7 @@
                                 ObjType:%d,
                                 AttackType:%d,
                                 Value:%d,
+                                ValueEx:%d,
                                 RemainHP:%d,
                                 RemainHPEx:%d
                                 '''\
@@ -12409,6 +12575,7 @@
                                 self.ObjType,
                                 self.AttackType,
                                 self.Value,
+                                self.ValueEx,
                                 self.RemainHP,
                                 self.RemainHPEx
                                 )
@@ -12428,6 +12595,8 @@
                   ("Cmd", c_ubyte),
                   ("SubCmd", c_ubyte),
                   ("PlayerID", c_int),    
+                  ("KillerID", c_int),    
+                  ("KillerType", c_ubyte),    
                   ]
 
     def __init__(self):
@@ -12445,6 +12614,8 @@
         self.Cmd = 0x06
         self.SubCmd = 0x09
         self.PlayerID = 0
+        self.KillerID = 0
+        self.KillerType = 0
         return
 
     def GetLength(self):
@@ -12457,12 +12628,16 @@
         DumpString = '''//06 09 玩家死亡//tagPlayerDie:
                                 Cmd:%s,
                                 SubCmd:%s,
-                                PlayerID:%d
+                                PlayerID:%d,
+                                KillerID:%d,
+                                KillerType:%d
                                 '''\
                                 %(
                                 self.Cmd,
                                 self.SubCmd,
-                                self.PlayerID
+                                self.PlayerID,
+                                self.KillerID,
+                                self.KillerType
                                 )
         return DumpString
 
@@ -12545,6 +12720,7 @@
                   ("ObjID", c_int),    
                   ("AttackType", c_ubyte),    #爆击, miss
                   ("HurtHP", c_int),    
+                  ("HurtHPEx", c_int),    
                   ("CurHP", c_int),    
                   ("CurHPEx", c_int),    
                   ]
@@ -12563,6 +12739,7 @@
         self.ObjID = 0
         self.AttackType = 0
         self.HurtHP = 0
+        self.HurtHPEx = 0
         self.CurHP = 0
         self.CurHPEx = 0
         return
@@ -12579,6 +12756,7 @@
                                 ObjID:%d,
                                 AttackType:%d,
                                 HurtHP:%d,
+                                HurtHPEx:%d,
                                 CurHP:%d,
                                 CurHPEx:%d
                                 '''\
@@ -12587,6 +12765,7 @@
                                 self.ObjID,
                                 self.AttackType,
                                 self.HurtHP,
+                                self.HurtHPEx,
                                 self.CurHP,
                                 self.CurHPEx
                                 )
@@ -12711,6 +12890,7 @@
                   ("ObjID", c_int),    
                   ("AttackType", c_ubyte),    #爆击, miss
                   ("HurtHP", c_int),    
+                  ("HurtHPEx", c_int),    
                   ("CurHP", c_int),    
                   ("CurHPEx", c_int),    
                   ]
@@ -12729,6 +12909,7 @@
         self.ObjID = 0
         self.AttackType = 0
         self.HurtHP = 0
+        self.HurtHPEx = 0
         self.CurHP = 0
         self.CurHPEx = 0
         return
@@ -12745,6 +12926,7 @@
                                 ObjID:%d,
                                 AttackType:%d,
                                 HurtHP:%d,
+                                HurtHPEx:%d,
                                 CurHP:%d,
                                 CurHPEx:%d
                                 '''\
@@ -12753,6 +12935,7 @@
                                 self.ObjID,
                                 self.AttackType,
                                 self.HurtHP,
+                                self.HurtHPEx,
                                 self.CurHP,
                                 self.CurHPEx
                                 )
@@ -12769,6 +12952,7 @@
     PosY = 0    #(WORD PosY)
     HurtCount = 0    #(WORD HurtCount)//伤害数目
     HurtList = list()    #(vector<tagSkillPosHurtObj> HurtList)//size = HurtCount
+    SkillElementID = 0    #(WORD SkillElementID)//专精技能ID	
     data = None
 
     def __init__(self):
@@ -12791,6 +12975,7 @@
             temHurtList = tagSkillPosHurtObj()
             _pos = temHurtList.ReadData(_lpData, _pos)
             self.HurtList.append(temHurtList)
+        self.SkillElementID,_pos = CommFunc.ReadWORD(_lpData, _pos)
         return _pos
 
     def Clear(self):
@@ -12806,6 +12991,7 @@
         self.PosY = 0
         self.HurtCount = 0
         self.HurtList = list()
+        self.SkillElementID = 0
         return
 
     def GetLength(self):
@@ -12820,6 +13006,7 @@
         length += 2
         for i in range(self.HurtCount):
             length += self.HurtList[i].GetLength()
+        length += 2
 
         return length
 
@@ -12835,6 +13022,7 @@
         data = CommFunc.WriteWORD(data, self.HurtCount)
         for i in range(self.HurtCount):
             data = CommFunc.WriteString(data, self.HurtList[i].GetLength(), self.HurtList[i].GetBuffer())
+        data = CommFunc.WriteWORD(data, self.SkillElementID)
         return data
 
     def OutputString(self):
@@ -12847,7 +13035,8 @@
                                 PosX:%d,
                                 PosY:%d,
                                 HurtCount:%d,
-                                HurtList:%s
+                                HurtList:%s,
+                                SkillElementID:%d
                                 '''\
                                 %(
                                 self.Head.OutputString(),
@@ -12858,7 +13047,8 @@
                                 self.PosX,
                                 self.PosY,
                                 self.HurtCount,
-                                "..."
+                                "...",
+                                self.SkillElementID
                                 )
         return DumpString
 
@@ -13362,7 +13552,7 @@
     ByObjID = 0    #(DWORD ByObjID)//物品原本在哪个对象身上
     DropTick = 0    #(DWORD DropTick)//物品掉落Tick
     UserDataLen = 0    #(WORD UserDataLen)//附加属性长度
-    UserData = ""    #(String UserData)//附加属性  size = UserDataLen    
+    UserData = ""    #(String UserData)//附加属性  size = UserDataLen	
     data = None
 
     def __init__(self):
@@ -13780,7 +13970,7 @@
     _fields_ = [
                   ("Cmd", c_ubyte),
                   ("SubCmd", c_ubyte),
-                  ("MakeType", c_ubyte),    #类型        TMakeItemType
+                  ("MakeType", c_ubyte),    #类型		TMakeItemType
                   ("Result", c_ubyte),    #是否成功
                   ]
 
@@ -14868,7 +15058,7 @@
                   ("Cmd", c_ubyte),
                   ("SubCmd", c_ubyte),
                   ("PlayerID", c_int),    
-                  ("PrepareState", c_ubyte),    #准备类型,    TPreparingState
+                  ("PrepareState", c_ubyte),    #准备类型,	TPreparingState
                   ("MaxTime", c_int),    #最大时间
                   ("PrepareID", c_int),    #准备ID, 如果是技能, 则是技能ID
                   ]
@@ -18409,7 +18599,9 @@
     LVEx = 0    #(WORD LVEx)//玩家等级副本,用于转生
     LV2 = 0    #(WORD LV2)//大师等级
     HP = 0    #(DWORD HP)
+    HPEx = 0    #(DWORD HPEx)
     MaxHP = 0    #(DWORD MaxHP)
+    MaxHPEx = 0    #(DWORD MaxHPEx)
     MP = 0    #(DWORD MP)
     MaxMP = 0    #(DWORD MaxMP)
     PlayerType = 0    #(BYTE PlayerType)//五行
@@ -18442,7 +18634,9 @@
         self.LVEx,_pos = CommFunc.ReadWORD(_lpData, _pos)
         self.LV2,_pos = CommFunc.ReadWORD(_lpData, _pos)
         self.HP,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+        self.HPEx,_pos = CommFunc.ReadDWORD(_lpData, _pos)
         self.MaxHP,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+        self.MaxHPEx,_pos = CommFunc.ReadDWORD(_lpData, _pos)
         self.MP,_pos = CommFunc.ReadDWORD(_lpData, _pos)
         self.MaxMP,_pos = CommFunc.ReadDWORD(_lpData, _pos)
         self.PlayerType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
@@ -18471,7 +18665,9 @@
         self.LVEx = 0
         self.LV2 = 0
         self.HP = 0
+        self.HPEx = 0
         self.MaxHP = 0
+        self.MaxHPEx = 0
         self.MP = 0
         self.MaxMP = 0
         self.PlayerType = 0
@@ -18501,6 +18697,8 @@
         length += 4
         length += 4
         length += 4
+        length += 4
+        length += 4
         length += 1
         length += 1
         length += 1
@@ -18526,7 +18724,9 @@
         data = CommFunc.WriteWORD(data, self.LVEx)
         data = CommFunc.WriteWORD(data, self.LV2)
         data = CommFunc.WriteDWORD(data, self.HP)
+        data = CommFunc.WriteDWORD(data, self.HPEx)
         data = CommFunc.WriteDWORD(data, self.MaxHP)
+        data = CommFunc.WriteDWORD(data, self.MaxHPEx)
         data = CommFunc.WriteDWORD(data, self.MP)
         data = CommFunc.WriteDWORD(data, self.MaxMP)
         data = CommFunc.WriteBYTE(data, self.PlayerType)
@@ -18553,7 +18753,9 @@
                                 LVEx:%d,
                                 LV2:%d,
                                 HP:%d,
+                                HPEx:%d,
                                 MaxHP:%d,
+                                MaxHPEx:%d,
                                 MP:%d,
                                 MaxMP:%d,
                                 PlayerType:%d,
@@ -18578,7 +18780,9 @@
                                 self.LVEx,
                                 self.LV2,
                                 self.HP,
+                                self.HPEx,
                                 self.MaxHP,
+                                self.MaxHPEx,
                                 self.MP,
                                 self.MaxMP,
                                 self.PlayerType,
@@ -18605,7 +18809,9 @@
                   ("PlayerID", c_int),    
                   ("LV", c_ushort),    
                   ("HP", c_int),    
+                  ("HPEx", c_int),    
                   ("MaxHP", c_int),    
+                  ("MaxHPEx", c_int),    
                   ("MP", c_int),    
                   ("MaxMP", c_int),    
                   ]
@@ -18627,7 +18833,9 @@
         self.PlayerID = 0
         self.LV = 0
         self.HP = 0
+        self.HPEx = 0
         self.MaxHP = 0
+        self.MaxHPEx = 0
         self.MP = 0
         self.MaxMP = 0
         return
@@ -18645,7 +18853,9 @@
                                 PlayerID:%d,
                                 LV:%d,
                                 HP:%d,
+                                HPEx:%d,
                                 MaxHP:%d,
+                                MaxHPEx:%d,
                                 MP:%d,
                                 MaxMP:%d
                                 '''\
@@ -18655,7 +18865,9 @@
                                 self.PlayerID,
                                 self.LV,
                                 self.HP,
+                                self.HPEx,
                                 self.MaxHP,
+                                self.MaxHPEx,
                                 self.MP,
                                 self.MaxMP
                                 )
@@ -20387,7 +20599,7 @@
     FamilyName = ""    #(String FamilyName)//size = FamilyNameLen
     Job = 0    #(BYTE Job)//职业
     FamilyActiveValue = 0    #(DWORD FamilyActiveValue)//本周家族活跃度
-    LastWeekFamilyActiveValue = 0    #(DWORD LastWeekFamilyActiveValue)//上周家族活跃度    
+    LastWeekFamilyActiveValue = 0    #(DWORD LastWeekFamilyActiveValue)//上周家族活跃度	
     OfficialRank = 0    #(BYTE OfficialRank)//境界
     Exattr1 = 0    #(DWORD Exattr1)//扩展属性
     Exattr2 = 0    #(DWORD Exattr2)//扩展属性
@@ -20551,7 +20763,7 @@
     Point = 0    #(DWORD Point)//家族战积分
     Broadcast = ""    #(String Broadcast)//size = BroadcastLen
     FamilyActiveValue = 0    #(DWORD FamilyActiveValue)//本周家族活跃度
-    LastWeekFamilyActiveValue = 0    #(DWORD LastWeekFamilyActiveValue)//上周家族活跃度    
+    LastWeekFamilyActiveValue = 0    #(DWORD LastWeekFamilyActiveValue)//上周家族活跃度	
     Member = list()    #(vector<tagRoleFamilyMember> Member)//size = MemberCount
     Extra1 = 0    #(DWORD Extra1)//附加字段1
     Extra2 = 0    #(DWORD Extra2)//附加字段2
@@ -21728,7 +21940,7 @@
 class  tagFamilyTechInfo(Structure):
     Head = tagHead()
     TechCount = 0    #(WORD TechCount)//帮会科技数量 
-    TechInfoList = list()    #(vector<tagTechInfo> TechInfoList)//科技信息列表     
+    TechInfoList = list()    #(vector<tagTechInfo> TechInfoList)//科技信息列表 	
     data = None
 
     def __init__(self):
@@ -22059,7 +22271,7 @@
 #10 01 排行榜信息#tagBillboard 对性能影响比较大, 需要限制tick
 
 class  tagBillboardList(Structure):
-    ID = 0    #(DWORD ID)// 不一定都能用上,目前用于保存宠物NPCID    
+    ID = 0    #(DWORD ID)// 不一定都能用上,目前用于保存宠物NPCID	
     Name1 = ""    #(char Name1[33])//名字1,用来显示排序对象名字 
     Name2 = ""    #(char Name2[33])//名字2
     Type2 = 0    #(BYTE Type2)//附加类型,用来表示排序对象的类型,比如,玩家所属职业门派,宠物类型等
@@ -23525,7 +23737,7 @@
     MakerNameLen = 0    #(BYTE MakerNameLen)//制造者名字
     MakerName = ""    #(String MakerName)//size = MakerNameLen
     UserDataLen = 0    #(DWORD UserDataLen)
-    UserData = ""    #(String UserData)//自定义数据    
+    UserData = ""    #(String UserData)//自定义数据	
     data = None
 
     def __init__(self):
@@ -24125,7 +24337,7 @@
                   ("SubCmd", c_ubyte),
                   ("Type", c_ubyte),    #答题类型
                   ("QuestionNO", c_ushort),    # 答题号
-                  ("FunctionNO", c_ubyte),    # 功能号    
+                  ("FunctionNO", c_ubyte),    # 功能号	
                   ("FunctionOpt1", c_ubyte),    #功能选项1
                   ("FunctionOpt2", c_ubyte),    #功能选项2
                   ("FunctionOpt3", c_ubyte),    #功能选项3
@@ -25822,7 +26034,9 @@
     CON = 0    #(DWORD CON)//体魄
     LeftPoints = 0    #(WORD LeftPoints)//潜力,即剩余点数
     HP = 0    #(DWORD HP)// 当前气血
+    HPEx = 0    #(DWORD HPEx)// 当前气血 超亿
     MaxHP = 0    #(DWORD MaxHP)// 最大气血
+    MaxHPEx = 0    #(DWORD MaxHPEx)// 最大气血 超亿
     PhysicAtk = 0    #(DWORD PhysicAtk)// 外功
     PhysicDef = 0    #(DWORD PhysicDef)// 外防
     MagicAtk = 0    #(DWORD MagicAtk)// 内攻
@@ -25892,7 +26106,9 @@
         self.CON,_pos = CommFunc.ReadDWORD(_lpData, _pos)
         self.LeftPoints,_pos = CommFunc.ReadWORD(_lpData, _pos)
         self.HP,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+        self.HPEx,_pos = CommFunc.ReadDWORD(_lpData, _pos)
         self.MaxHP,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+        self.MaxHPEx,_pos = CommFunc.ReadDWORD(_lpData, _pos)
         self.PhysicAtk,_pos = CommFunc.ReadDWORD(_lpData, _pos)
         self.PhysicDef,_pos = CommFunc.ReadDWORD(_lpData, _pos)
         self.MagicAtk,_pos = CommFunc.ReadDWORD(_lpData, _pos)
@@ -25960,7 +26176,9 @@
         self.CON = 0
         self.LeftPoints = 0
         self.HP = 0
+        self.HPEx = 0
         self.MaxHP = 0
+        self.MaxHPEx = 0
         self.PhysicAtk = 0
         self.PhysicDef = 0
         self.MagicAtk = 0
@@ -26031,6 +26249,8 @@
         length += 4
         length += 4
         length += 4
+        length += 4
+        length += 4
         length += 1
         for i in range(self.SkillListCnt):
             length += self.SkillList[i].GetLength()
@@ -26094,7 +26314,9 @@
         data = CommFunc.WriteDWORD(data, self.CON)
         data = CommFunc.WriteWORD(data, self.LeftPoints)
         data = CommFunc.WriteDWORD(data, self.HP)
+        data = CommFunc.WriteDWORD(data, self.HPEx)
         data = CommFunc.WriteDWORD(data, self.MaxHP)
+        data = CommFunc.WriteDWORD(data, self.MaxHPEx)
         data = CommFunc.WriteDWORD(data, self.PhysicAtk)
         data = CommFunc.WriteDWORD(data, self.PhysicDef)
         data = CommFunc.WriteDWORD(data, self.MagicAtk)
@@ -26161,7 +26383,9 @@
                                 CON:%d,
                                 LeftPoints:%d,
                                 HP:%d,
+                                HPEx:%d,
                                 MaxHP:%d,
+                                MaxHPEx:%d,
                                 PhysicAtk:%d,
                                 PhysicDef:%d,
                                 MagicAtk:%d,
@@ -26225,7 +26449,9 @@
                                 self.CON,
                                 self.LeftPoints,
                                 self.HP,
+                                self.HPEx,
                                 self.MaxHP,
+                                self.MaxHPEx,
                                 self.PhysicAtk,
                                 self.PhysicDef,
                                 self.MagicAtk,
@@ -26814,8 +27040,8 @@
                   ("PlayerID", c_int),    #挂单玩家的id
                   ("FormID", c_int),    # 挂单ID
                   ("UnitPrice", c_int),    #该单购买元宝的银两单价(每组)
-                  ("LefGold", c_int),    #该单的剩余购买元宝组数    
-                  ("LeftTime", c_ushort),    #该单的剩余在架时间    
+                  ("LefGold", c_int),    #该单的剩余购买元宝组数	
+                  ("LeftTime", c_ushort),    #该单的剩余在架时间	
                   ]
 
     def __init__(self):
@@ -26949,7 +27175,7 @@
                   ("SubCmd", c_ubyte),
                   ("FormID", c_int),    # 挂单ID
                   ("UnitPrice", c_int),    #该单购买元宝的银两单价(每组)
-                  ("LefGold", c_int),    #该单的剩余购买元宝组数    
+                  ("LefGold", c_int),    #该单的剩余购买元宝组数	
                   ("LeftTime", c_ushort),    #该单的剩余在架时间
                   ]
 
@@ -27238,7 +27464,7 @@
     _fields_ = [
                   ("Cmd", c_ubyte),
                   ("SubCmd", c_ubyte),
-                  ("LabelID", c_int),    # 删除标签    
+                  ("LabelID", c_int),    # 删除标签	
                   ]
 
     def __init__(self):
@@ -28479,7 +28705,7 @@
 class  tagHightLadderTopPlayerList(Structure):
     Head = tagHead()
     Size = 0    #(BYTE Size)
-    PlayerList = list()    #(vector<tagHightLadderPlayerInfo> PlayerList)//玩家信息列表    
+    PlayerList = list()    #(vector<tagHightLadderPlayerInfo> PlayerList)//玩家信息列表	
     data = None
 
     def __init__(self):
@@ -28741,7 +28967,7 @@
 class  tagVsTeam(Structure):
     TeamIndex = 0    #(BYTE TeamIndex)// 竞技队Index
     MemberCount = 0    #(WORD MemberCount)// 成员人数
-    Members = list()    #(vector<tagVsMemberInfo> Members)// 成员列表    
+    Members = list()    #(vector<tagVsMemberInfo> Members)// 成员列表	
     data = None
 
     def __init__(self):
@@ -28868,7 +29094,7 @@
     Head = tagHead()
     MyOrder = 0    #(WORD MyOrder)//自身排名
     Size = 0    #(BYTE Size)
-    PlayerList = list()    #(vector<tagHightLadderPlayerInfo> PlayerList)//玩家信息列表    
+    PlayerList = list()    #(vector<tagHightLadderPlayerInfo> PlayerList)//玩家信息列表	
     data = None
 
     def __init__(self):
@@ -29041,7 +29267,7 @@
 
 class  tagBourseItem(Structure):
     ItemGUID = ""    #(char ItemGUID[40])
-    PlayerID = 0    #(DWORD PlayerID)//挂单玩家ID    
+    PlayerID = 0    #(DWORD PlayerID)//挂单玩家ID	
     ItemTypeID = 0    #(DWORD ItemTypeID)//物品ID
     PriceType = 0    #(BYTE PriceType)//出售价格类型
     PriceCount = 0    #(DWORD PriceCount)//出售价格

--
Gitblit v1.8.0