From 3d04d70ff41fe87919a5f2e8b0b9f76b890ec620 Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期四, 12 九月 2024 12:07:35 +0800
Subject: [PATCH] 10261 【越南】【砍树】仙盟徽章,头像框,头像(动态),聊天气泡,聊天表情(增加头像、头像框)

---
 ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py |  305 ++++++++++++++++++++++++++++++++++++++++++++++++--
 1 files changed, 293 insertions(+), 12 deletions(-)

diff --git a/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py b/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py
index 86a210a..369ee95 100644
--- a/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py
+++ b/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py
@@ -1180,6 +1180,7 @@
     Job = 0    #(BYTE Job)// 玩家职业
     RealmLV = 0    #(WORD RealmLV)// 玩家境界等级
     Face = 0    #(DWORD Face)//基本脸型
+    FacePic = 0    #(DWORD FacePic)//头像框
     data = None
 
     def __init__(self):
@@ -1198,6 +1199,7 @@
         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):
@@ -1212,6 +1214,7 @@
         self.Job = 0
         self.RealmLV = 0
         self.Face = 0
+        self.FacePic = 0
         return
 
     def GetLength(self):
@@ -1223,6 +1226,7 @@
         length += 2
         length += 1
         length += 2
+        length += 4
         length += 4
 
         return length
@@ -1237,6 +1241,7 @@
         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):
@@ -1248,7 +1253,8 @@
                                 LV:%d,
                                 Job:%d,
                                 RealmLV:%d,
-                                Face:%d
+                                Face:%d,
+                                FacePic:%d
                                 '''\
                                 %(
                                 self.Head.OutputString(),
@@ -1258,7 +1264,8 @@
                                 self.LV,
                                 self.Job,
                                 self.RealmLV,
-                                self.Face
+                                self.Face,
+                                self.FacePic
                                 )
         return DumpString
 
@@ -5276,6 +5283,7 @@
     Job = 0    #(BYTE Job)
     RealmLV = 0    #(WORD RealmLV)//境界	
     Face = 0    #(DWORD Face)//基本脸型
+    FacePic = 0    #(DWORD FacePic)//头像框
     data = None
 
     def __init__(self):
@@ -5290,6 +5298,7 @@
         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):
@@ -5299,6 +5308,7 @@
         self.Job = 0
         self.RealmLV = 0
         self.Face = 0
+        self.FacePic = 0
         return
 
     def GetLength(self):
@@ -5308,6 +5318,7 @@
         length += 4
         length += 1
         length += 2
+        length += 4
         length += 4
 
         return length
@@ -5320,6 +5331,7 @@
         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):
@@ -5329,7 +5341,8 @@
                                 LV:%d,
                                 Job:%d,
                                 RealmLV:%d,
-                                Face:%d
+                                Face:%d,
+                                FacePic:%d
                                 '''\
                                 %(
                                 self.ID,
@@ -5337,7 +5350,8 @@
                                 self.LV,
                                 self.Job,
                                 self.RealmLV,
-                                self.Face
+                                self.Face,
+                                self.FacePic
                                 )
         return DumpString
 
@@ -5418,6 +5432,7 @@
     LV = 0    #(WORD LV)//等级
     RealmLV = 0    #(WORD RealmLV)//境界
     Face = 0    #(DWORD Face)//基本脸型
+    FacePic = 0    #(DWORD FacePic)//头像框
     data = None
 
     def __init__(self):
@@ -5432,6 +5447,7 @@
         self.LV,_pos = CommFunc.ReadWORD(_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):
@@ -5441,6 +5457,7 @@
         self.LV = 0
         self.RealmLV = 0
         self.Face = 0
+        self.FacePic = 0
         return
 
     def GetLength(self):
@@ -5450,6 +5467,7 @@
         length += 1
         length += 2
         length += 2
+        length += 4
         length += 4
 
         return length
@@ -5462,6 +5480,7 @@
         data = CommFunc.WriteWORD(data, self.LV)
         data = CommFunc.WriteWORD(data, self.RealmLV)
         data = CommFunc.WriteDWORD(data, self.Face)
+        data = CommFunc.WriteDWORD(data, self.FacePic)
         return data
 
     def OutputString(self):
@@ -5471,7 +5490,8 @@
                                 Job:%d,
                                 LV:%d,
                                 RealmLV:%d,
-                                Face:%d
+                                Face:%d,
+                                FacePic:%d
                                 '''\
                                 %(
                                 self.PlayerID,
@@ -5479,7 +5499,8 @@
                                 self.Job,
                                 self.LV,
                                 self.RealmLV,
-                                self.Face
+                                self.Face,
+                                self.FacePic
                                 )
         return DumpString
 
@@ -9314,6 +9335,7 @@
     LV = 0    #(WORD LV)
     RealmLV = 0    #(WORD RealmLV)//境界等级
     Face = 0    #(DWORD Face)//基本脸型
+    FacePic = 0    #(DWORD FacePic)//头像框
     data = None
 
     def __init__(self):
@@ -9330,6 +9352,7 @@
         self.LV,_pos = CommFunc.ReadWORD(_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):
@@ -9342,6 +9365,7 @@
         self.LV = 0
         self.RealmLV = 0
         self.Face = 0
+        self.FacePic = 0
         return
 
     def GetLength(self):
@@ -9351,6 +9375,7 @@
         length += 33
         length += 2
         length += 2
+        length += 4
         length += 4
 
         return length
@@ -9363,6 +9388,7 @@
         data = CommFunc.WriteWORD(data, self.LV)
         data = CommFunc.WriteWORD(data, self.RealmLV)
         data = CommFunc.WriteDWORD(data, self.Face)
+        data = CommFunc.WriteDWORD(data, self.FacePic)
         return data
 
     def OutputString(self):
@@ -9372,7 +9398,8 @@
                                 Name:%s,
                                 LV:%d,
                                 RealmLV:%d,
-                                Face:%d
+                                Face:%d,
+                                FacePic:%d
                                 '''\
                                 %(
                                 self.Head.OutputString(),
@@ -9380,7 +9407,8 @@
                                 self.Name,
                                 self.LV,
                                 self.RealmLV,
-                                self.Face
+                                self.Face,
+                                self.FacePic
                                 )
         return DumpString
 
@@ -10511,6 +10539,7 @@
     IsInTeam = 0    #(BYTE IsInTeam)//是否有队伍
     ServerGroupID = 0    #(DWORD ServerGroupID)//服务器组ID
     Face = 0    #(DWORD Face)//基本脸型
+    FacePic = 0    #(DWORD FacePic)//头像框
     data = None
 
     def __init__(self):
@@ -10531,6 +10560,7 @@
         self.IsInTeam,_pos = CommFunc.ReadBYTE(_lpData, _pos)
         self.ServerGroupID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
         self.Face,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+        self.FacePic,_pos = CommFunc.ReadDWORD(_lpData, _pos)
         return _pos
 
     def Clear(self):
@@ -10547,6 +10577,7 @@
         self.IsInTeam = 0
         self.ServerGroupID = 0
         self.Face = 0
+        self.FacePic = 0
         return
 
     def GetLength(self):
@@ -10559,6 +10590,7 @@
         length += 2
         length += 1
         length += 1
+        length += 4
         length += 4
         length += 4
 
@@ -10576,6 +10608,7 @@
         data = CommFunc.WriteBYTE(data, self.IsInTeam)
         data = CommFunc.WriteDWORD(data, self.ServerGroupID)
         data = CommFunc.WriteDWORD(data, self.Face)
+        data = CommFunc.WriteDWORD(data, self.FacePic)
         return data
 
     def OutputString(self):
@@ -10589,7 +10622,8 @@
                                 OnlineType:%d,
                                 IsInTeam:%d,
                                 ServerGroupID:%d,
-                                Face:%d
+                                Face:%d,
+                                FacePic:%d
                                 '''\
                                 %(
                                 self.Head.OutputString(),
@@ -10601,7 +10635,8 @@
                                 self.OnlineType,
                                 self.IsInTeam,
                                 self.ServerGroupID,
-                                self.Face
+                                self.Face,
+                                self.FacePic
                                 )
         return DumpString
 
@@ -10677,6 +10712,7 @@
     RealmLV = 0    #(WORD RealmLV)//境界
     OnlineType = 0    #(BYTE OnlineType)//0不在线 1在线 2脱机在线
     Face = 0    #(DWORD Face)//基本脸型
+    FacePic = 0    #(DWORD FacePic)//头像框
     data = None
 
     def __init__(self):
@@ -10692,6 +10728,7 @@
         self.RealmLV,_pos = CommFunc.ReadWORD(_lpData, _pos)
         self.OnlineType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
         self.Face,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+        self.FacePic,_pos = CommFunc.ReadDWORD(_lpData, _pos)
         return _pos
 
     def Clear(self):
@@ -10702,6 +10739,7 @@
         self.RealmLV = 0
         self.OnlineType = 0
         self.Face = 0
+        self.FacePic = 0
         return
 
     def GetLength(self):
@@ -10712,6 +10750,7 @@
         length += 2
         length += 2
         length += 1
+        length += 4
         length += 4
 
         return length
@@ -10725,6 +10764,7 @@
         data = CommFunc.WriteWORD(data, self.RealmLV)
         data = CommFunc.WriteBYTE(data, self.OnlineType)
         data = CommFunc.WriteDWORD(data, self.Face)
+        data = CommFunc.WriteDWORD(data, self.FacePic)
         return data
 
     def OutputString(self):
@@ -10735,7 +10775,8 @@
                                 LV:%d,
                                 RealmLV:%d,
                                 OnlineType:%d,
-                                Face:%d
+                                Face:%d,
+                                FacePic:%d
                                 '''\
                                 %(
                                 self.PlayerID,
@@ -10744,7 +10785,8 @@
                                 self.LV,
                                 self.RealmLV,
                                 self.OnlineType,
-                                self.Face
+                                self.Face,
+                                self.FacePic
                                 )
         return DumpString
 
@@ -19110,6 +19152,7 @@
     ExAttr20 = 0    #(DWORD ExAttr20)//预留的扩展属性字段,用来存放项目特定的属性
     HPEx = 0    #(DWORD HPEx)//当前血量 超过E的记录
     Face = 0    #(DWORD Face)//基本脸型
+    FacePic = 0    #(DWORD FacePic)//头像框
     RoleType = 0    #(DWORD RoleType)//角色类型(各项目可自定义含义,如种族,与职业区分)
     data = None
 
@@ -19218,6 +19261,7 @@
         self.ExAttr20,_pos = CommFunc.ReadDWORD(_lpData, _pos)
         self.HPEx,_pos = CommFunc.ReadDWORD(_lpData, _pos)
         self.Face,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+        self.FacePic,_pos = CommFunc.ReadDWORD(_lpData, _pos)
         self.RoleType,_pos = CommFunc.ReadDWORD(_lpData, _pos)
         return _pos
 
@@ -19322,6 +19366,7 @@
         self.ExAttr20 = 0
         self.HPEx = 0
         self.Face = 0
+        self.FacePic = 0
         self.RoleType = 0
         return
 
@@ -19415,6 +19460,7 @@
         length += 4
         length += 4
         length += 15
+        length += 4
         length += 4
         length += 4
         length += 4
@@ -19527,6 +19573,7 @@
         data = CommFunc.WriteDWORD(data, self.ExAttr20)
         data = CommFunc.WriteDWORD(data, self.HPEx)
         data = CommFunc.WriteDWORD(data, self.Face)
+        data = CommFunc.WriteDWORD(data, self.FacePic)
         data = CommFunc.WriteDWORD(data, self.RoleType)
         return data
 
@@ -19629,6 +19676,7 @@
                                 ExAttr20:%d,
                                 HPEx:%d,
                                 Face:%d,
+                                FacePic:%d,
                                 RoleType:%d
                                 '''\
                                 %(
@@ -19729,6 +19777,7 @@
                                 self.ExAttr20,
                                 self.HPEx,
                                 self.Face,
+                                self.FacePic,
                                 self.RoleType
                                 )
         return DumpString
@@ -49893,6 +49942,238 @@
 
 
 #------------------------------------------------------
+# B1 17 头像信息 #tagMCFaceInfo
+
+class  tagMCFace(Structure):
+    _pack_ = 1
+    _fields_ = [
+                  ("FaceID", c_int),    #头像ID
+                  ("LightTime", c_int),    #点亮时间戳
+                  ("ExpireTime", c_int),    #有效时间秒,0为配表固定时间,如果配表时间也为0即代表永久;到期时间=点亮时间+有效时间
+                  ("Star", 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.FaceID = 0
+        self.LightTime = 0
+        self.ExpireTime = 0
+        self.Star = 0
+        return
+
+    def GetLength(self):
+        return sizeof(tagMCFace)
+
+    def GetBuffer(self):
+        return string_at(addressof(self), self.GetLength())
+
+    def OutputString(self):
+        DumpString = '''// B1 17 头像信息 //tagMCFaceInfo:
+                                FaceID:%d,
+                                LightTime:%d,
+                                ExpireTime:%d,
+                                Star:%d
+                                '''\
+                                %(
+                                self.FaceID,
+                                self.LightTime,
+                                self.ExpireTime,
+                                self.Star
+                                )
+        return DumpString
+
+
+class  tagMCFaceInfo(Structure):
+    Head = tagHead()
+    Count = 0    #(BYTE Count)
+    FaceList = list()    #(vector<tagMCFace> FaceList)
+    data = None
+
+    def __init__(self):
+        self.Clear()
+        self.Head.Cmd = 0xB1
+        self.Head.SubCmd = 0x17
+        return
+
+    def ReadData(self, _lpData, _pos=0, _Len=0):
+        self.Clear()
+        _pos = self.Head.ReadData(_lpData, _pos)
+        self.Count,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+        for i in range(self.Count):
+            temFaceList = tagMCFace()
+            _pos = temFaceList.ReadData(_lpData, _pos)
+            self.FaceList.append(temFaceList)
+        return _pos
+
+    def Clear(self):
+        self.Head = tagHead()
+        self.Head.Clear()
+        self.Head.Cmd = 0xB1
+        self.Head.SubCmd = 0x17
+        self.Count = 0
+        self.FaceList = list()
+        return
+
+    def GetLength(self):
+        length = 0
+        length += self.Head.GetLength()
+        length += 1
+        for i in range(self.Count):
+            length += self.FaceList[i].GetLength()
+
+        return length
+
+    def GetBuffer(self):
+        data = ''
+        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
+        data = CommFunc.WriteBYTE(data, self.Count)
+        for i in range(self.Count):
+            data = CommFunc.WriteString(data, self.FaceList[i].GetLength(), self.FaceList[i].GetBuffer())
+        return data
+
+    def OutputString(self):
+        DumpString = '''
+                                Head:%s,
+                                Count:%d,
+                                FaceList:%s
+                                '''\
+                                %(
+                                self.Head.OutputString(),
+                                self.Count,
+                                "..."
+                                )
+        return DumpString
+
+
+m_NAtagMCFaceInfo=tagMCFaceInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCFaceInfo.Head.Cmd,m_NAtagMCFaceInfo.Head.SubCmd))] = m_NAtagMCFaceInfo
+
+
+#------------------------------------------------------
+# B1 18 头像框信息 #tagMCFacePicInfo
+
+class  tagMCFacePic(Structure):
+    _pack_ = 1
+    _fields_ = [
+                  ("FacePicID", c_int),    #头像框ID
+                  ("LightTime", c_int),    #点亮时间戳
+                  ("ExpireTime", c_int),    #有效时间秒,0为配表固定时间,如果配表时间也为0即代表永久;到期时间=点亮时间+有效时间
+                  ("Star", 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.FacePicID = 0
+        self.LightTime = 0
+        self.ExpireTime = 0
+        self.Star = 0
+        return
+
+    def GetLength(self):
+        return sizeof(tagMCFacePic)
+
+    def GetBuffer(self):
+        return string_at(addressof(self), self.GetLength())
+
+    def OutputString(self):
+        DumpString = '''// B1 18 头像框信息 //tagMCFacePicInfo:
+                                FacePicID:%d,
+                                LightTime:%d,
+                                ExpireTime:%d,
+                                Star:%d
+                                '''\
+                                %(
+                                self.FacePicID,
+                                self.LightTime,
+                                self.ExpireTime,
+                                self.Star
+                                )
+        return DumpString
+
+
+class  tagMCFacePicInfo(Structure):
+    Head = tagHead()
+    Count = 0    #(BYTE Count)
+    FacePicList = list()    #(vector<tagMCFacePic> FacePicList)
+    data = None
+
+    def __init__(self):
+        self.Clear()
+        self.Head.Cmd = 0xB1
+        self.Head.SubCmd = 0x18
+        return
+
+    def ReadData(self, _lpData, _pos=0, _Len=0):
+        self.Clear()
+        _pos = self.Head.ReadData(_lpData, _pos)
+        self.Count,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+        for i in range(self.Count):
+            temFacePicList = tagMCFacePic()
+            _pos = temFacePicList.ReadData(_lpData, _pos)
+            self.FacePicList.append(temFacePicList)
+        return _pos
+
+    def Clear(self):
+        self.Head = tagHead()
+        self.Head.Clear()
+        self.Head.Cmd = 0xB1
+        self.Head.SubCmd = 0x18
+        self.Count = 0
+        self.FacePicList = list()
+        return
+
+    def GetLength(self):
+        length = 0
+        length += self.Head.GetLength()
+        length += 1
+        for i in range(self.Count):
+            length += self.FacePicList[i].GetLength()
+
+        return length
+
+    def GetBuffer(self):
+        data = ''
+        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
+        data = CommFunc.WriteBYTE(data, self.Count)
+        for i in range(self.Count):
+            data = CommFunc.WriteString(data, self.FacePicList[i].GetLength(), self.FacePicList[i].GetBuffer())
+        return data
+
+    def OutputString(self):
+        DumpString = '''
+                                Head:%s,
+                                Count:%d,
+                                FacePicList:%s
+                                '''\
+                                %(
+                                self.Head.OutputString(),
+                                self.Count,
+                                "..."
+                                )
+        return DumpString
+
+
+m_NAtagMCFacePicInfo=tagMCFacePicInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCFacePicInfo.Head.Cmd,m_NAtagMCFacePicInfo.Head.SubCmd))] = m_NAtagMCFacePicInfo
+
+
+#------------------------------------------------------
 # B1 11 功能系统特权信息 #tagMCFuncSysPrivilegeInfoList
 
 class  tagMCFuncSysPrivilegeInfo(Structure):

--
Gitblit v1.8.0