From bc0c9d89c0811bb32f98ba45dfaff6b10661c45a Mon Sep 17 00:00:00 2001 From: hxp <ale99527@vip.qq.com> Date: 星期四, 12 九月 2024 17:01:46 +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 c180a8a..52fd278 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 @@ -5255,6 +5262,7 @@ Job = 0 #(BYTE Job) RealmLV = 0 #(WORD RealmLV)//境界 Face = 0 #(DWORD Face)//基本脸型 + FacePic = 0 #(DWORD FacePic)//头像框 data = None def __init__(self): @@ -5269,6 +5277,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): @@ -5278,6 +5287,7 @@ self.Job = 0 self.RealmLV = 0 self.Face = 0 + self.FacePic = 0 return def GetLength(self): @@ -5287,6 +5297,7 @@ length += 4 length += 1 length += 2 + length += 4 length += 4 return length @@ -5299,6 +5310,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): @@ -5308,7 +5320,8 @@ LV:%d, Job:%d, RealmLV:%d, - Face:%d + Face:%d, + FacePic:%d '''\ %( self.ID, @@ -5316,7 +5329,8 @@ self.LV, self.Job, self.RealmLV, - self.Face + self.Face, + self.FacePic ) return DumpString @@ -5397,6 +5411,7 @@ LV = 0 #(WORD LV)//等级 RealmLV = 0 #(WORD RealmLV)//境界 Face = 0 #(DWORD Face)//基本脸型 + FacePic = 0 #(DWORD FacePic)//头像框 data = None def __init__(self): @@ -5411,6 +5426,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): @@ -5420,6 +5436,7 @@ self.LV = 0 self.RealmLV = 0 self.Face = 0 + self.FacePic = 0 return def GetLength(self): @@ -5429,6 +5446,7 @@ length += 1 length += 2 length += 2 + length += 4 length += 4 return length @@ -5441,6 +5459,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): @@ -5450,7 +5469,8 @@ Job:%d, LV:%d, RealmLV:%d, - Face:%d + Face:%d, + FacePic:%d '''\ %( self.PlayerID, @@ -5458,7 +5478,8 @@ self.Job, self.LV, self.RealmLV, - self.Face + self.Face, + self.FacePic ) return DumpString @@ -9293,6 +9314,7 @@ LV = 0 #(WORD LV) RealmLV = 0 #(WORD RealmLV)//境界等级 Face = 0 #(DWORD Face)//基本脸型 + FacePic = 0 #(DWORD FacePic)//头像框 data = None def __init__(self): @@ -9309,6 +9331,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): @@ -9321,6 +9344,7 @@ self.LV = 0 self.RealmLV = 0 self.Face = 0 + self.FacePic = 0 return def GetLength(self): @@ -9330,6 +9354,7 @@ length += 33 length += 2 length += 2 + length += 4 length += 4 return length @@ -9342,6 +9367,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): @@ -9351,7 +9377,8 @@ Name:%s, LV:%d, RealmLV:%d, - Face:%d + Face:%d, + FacePic:%d '''\ %( self.Head.OutputString(), @@ -9359,7 +9386,8 @@ self.Name, self.LV, self.RealmLV, - self.Face + self.Face, + self.FacePic ) return DumpString @@ -10490,6 +10518,7 @@ IsInTeam = 0 #(BYTE IsInTeam)//是否有队伍 ServerGroupID = 0 #(DWORD ServerGroupID)//服务器组ID Face = 0 #(DWORD Face)//基本脸型 + FacePic = 0 #(DWORD FacePic)//头像框 data = None def __init__(self): @@ -10510,6 +10539,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): @@ -10526,6 +10556,7 @@ self.IsInTeam = 0 self.ServerGroupID = 0 self.Face = 0 + self.FacePic = 0 return def GetLength(self): @@ -10538,6 +10569,7 @@ length += 2 length += 1 length += 1 + length += 4 length += 4 length += 4 @@ -10555,6 +10587,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): @@ -10568,7 +10601,8 @@ OnlineType:%d, IsInTeam:%d, ServerGroupID:%d, - Face:%d + Face:%d, + FacePic:%d '''\ %( self.Head.OutputString(), @@ -10580,7 +10614,8 @@ self.OnlineType, self.IsInTeam, self.ServerGroupID, - self.Face + self.Face, + self.FacePic ) return DumpString @@ -10656,6 +10691,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): @@ -10671,6 +10707,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): @@ -10681,6 +10718,7 @@ self.RealmLV = 0 self.OnlineType = 0 self.Face = 0 + self.FacePic = 0 return def GetLength(self): @@ -10691,6 +10729,7 @@ length += 2 length += 2 length += 1 + length += 4 length += 4 return length @@ -10704,6 +10743,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): @@ -10714,7 +10754,8 @@ LV:%d, RealmLV:%d, OnlineType:%d, - Face:%d + Face:%d, + FacePic:%d '''\ %( self.PlayerID, @@ -10723,7 +10764,8 @@ self.LV, self.RealmLV, self.OnlineType, - self.Face + self.Face, + self.FacePic ) return DumpString @@ -19089,6 +19131,7 @@ ExAttr20 = 0 #(DWORD ExAttr20)//预留的扩展属性字段,用来存放项目特定的属性 HPEx = 0 #(DWORD HPEx)//当前血量 超过E的记录 Face = 0 #(DWORD Face)//基本脸型 + FacePic = 0 #(DWORD FacePic)//头像框 RoleType = 0 #(DWORD RoleType)//角色类型(各项目可自定义含义,如种族,与职业区分) data = None @@ -19197,6 +19240,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 @@ -19301,6 +19345,7 @@ self.ExAttr20 = 0 self.HPEx = 0 self.Face = 0 + self.FacePic = 0 self.RoleType = 0 return @@ -19394,6 +19439,7 @@ length += 4 length += 4 length += 15 + length += 4 length += 4 length += 4 length += 4 @@ -19506,6 +19552,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 @@ -19608,6 +19655,7 @@ ExAttr20:%d, HPEx:%d, Face:%d, + FacePic:%d, RoleType:%d '''\ %( @@ -19708,6 +19756,7 @@ self.ExAttr20, self.HPEx, self.Face, + self.FacePic, self.RoleType ) return DumpString @@ -49753,6 +49802,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