From fbbacd8aee0a85823476267de499c350ce85d0f0 Mon Sep 17 00:00:00 2001 From: hxp <ale99527@vip.qq.com> Date: 星期六, 11 五月 2019 10:21:48 +0800 Subject: [PATCH] 6647 【2.0】【开发】查看聊天信息、广播信息和掉落记录里的装备需求(增加查询广播装备详细信息支持) --- ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py | 184 ++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 184 insertions(+), 0 deletions(-) diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py index 3afc13f..4431972 100644 --- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py +++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py @@ -3371,6 +3371,190 @@ #------------------------------------------------------ +# A9 05 通知广播装备详细信息 #tagGCNotifyEquipDetailInfo + +class tagGCNotifyEquipClassEquip(Structure): + _pack_ = 1 + _fields_ = [ + ("ItemID", c_int), + ("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.ItemID = 0 + self.Star = 0 + return + + def GetLength(self): + return sizeof(tagGCNotifyEquipClassEquip) + + def GetBuffer(self): + return string_at(addressof(self), self.GetLength()) + + def OutputString(self): + DumpString = '''// A9 05 通知广播装备详细信息 //tagGCNotifyEquipDetailInfo: + ItemID:%d, + Star:%d + '''\ + %( + self.ItemID, + self.Star + ) + return DumpString + + +class tagGCNotifyEquipDetailInfo(Structure): + Head = tagHead() + ItemGUID = "" #(char ItemGUID[40]) + ItemID = 0 #(DWORD ItemID) + Star = 0 #(BYTE Star)//星级 + PlusLV = 0 #(WORD PlusLV)//强化等级 + EvolveLV = 0 #(BYTE EvolveLV)//进化等级 + WashLV = 0 #(BYTE WashLV)//洗练等级 + WashValueCount = 0 #(BYTE WashValueCount) + WashValueList = list() #(vector<WORD> WashValueList)//洗练值 + StoneIDCount = 0 #(BYTE StoneIDCount) + StoneIDList = list() #(vector<DWORD> StoneIDList)//宝石 + ClassEquipCount = 0 #(BYTE ClassEquipCount) + ClassEquipList = list() #(vector<tagGCNotifyEquipClassEquip> ClassEquipList)//本境界穿戴的装备 + data = None + + def __init__(self): + self.Clear() + self.Head.Cmd = 0xA9 + self.Head.SubCmd = 0x05 + return + + def ReadData(self, _lpData, _pos=0, _Len=0): + self.Clear() + _pos = self.Head.ReadData(_lpData, _pos) + self.ItemGUID,_pos = CommFunc.ReadString(_lpData, _pos,40) + self.ItemID,_pos = CommFunc.ReadDWORD(_lpData, _pos) + self.Star,_pos = CommFunc.ReadBYTE(_lpData, _pos) + self.PlusLV,_pos = CommFunc.ReadWORD(_lpData, _pos) + self.EvolveLV,_pos = CommFunc.ReadBYTE(_lpData, _pos) + self.WashLV,_pos = CommFunc.ReadBYTE(_lpData, _pos) + self.WashValueCount,_pos = CommFunc.ReadBYTE(_lpData, _pos) + for i in range(self.WashValueCount): + value,_pos=CommFunc.ReadWORD(_lpData,_pos) + self.WashValueList.append(value) + self.StoneIDCount,_pos = CommFunc.ReadBYTE(_lpData, _pos) + for i in range(self.StoneIDCount): + value,_pos=CommFunc.ReadDWORD(_lpData,_pos) + self.StoneIDList.append(value) + self.ClassEquipCount,_pos = CommFunc.ReadBYTE(_lpData, _pos) + for i in range(self.ClassEquipCount): + temClassEquipList = tagGCNotifyEquipClassEquip() + _pos = temClassEquipList.ReadData(_lpData, _pos) + self.ClassEquipList.append(temClassEquipList) + return _pos + + def Clear(self): + self.Head = tagHead() + self.Head.Clear() + self.Head.Cmd = 0xA9 + self.Head.SubCmd = 0x05 + self.ItemGUID = "" + self.ItemID = 0 + self.Star = 0 + self.PlusLV = 0 + self.EvolveLV = 0 + self.WashLV = 0 + self.WashValueCount = 0 + self.WashValueList = list() + self.StoneIDCount = 0 + self.StoneIDList = list() + self.ClassEquipCount = 0 + self.ClassEquipList = list() + return + + def GetLength(self): + length = 0 + length += self.Head.GetLength() + length += 40 + length += 4 + length += 1 + length += 2 + length += 1 + length += 1 + length += 1 + length += 2 * self.WashValueCount + length += 1 + length += 4 * self.StoneIDCount + length += 1 + for i in range(self.ClassEquipCount): + length += self.ClassEquipList[i].GetLength() + + return length + + def GetBuffer(self): + data = '' + data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer()) + data = CommFunc.WriteString(data, 40, self.ItemGUID) + data = CommFunc.WriteDWORD(data, self.ItemID) + data = CommFunc.WriteBYTE(data, self.Star) + data = CommFunc.WriteWORD(data, self.PlusLV) + data = CommFunc.WriteBYTE(data, self.EvolveLV) + data = CommFunc.WriteBYTE(data, self.WashLV) + data = CommFunc.WriteBYTE(data, self.WashValueCount) + for i in range(self.WashValueCount): + data = CommFunc.WriteWORD(data, self.WashValueList[i]) + data = CommFunc.WriteBYTE(data, self.StoneIDCount) + for i in range(self.StoneIDCount): + data = CommFunc.WriteDWORD(data, self.StoneIDList[i]) + data = CommFunc.WriteBYTE(data, self.ClassEquipCount) + for i in range(self.ClassEquipCount): + data = CommFunc.WriteString(data, self.ClassEquipList[i].GetLength(), self.ClassEquipList[i].GetBuffer()) + return data + + def OutputString(self): + DumpString = ''' + Head:%s, + ItemGUID:%s, + ItemID:%d, + Star:%d, + PlusLV:%d, + EvolveLV:%d, + WashLV:%d, + WashValueCount:%d, + WashValueList:%s, + StoneIDCount:%d, + StoneIDList:%s, + ClassEquipCount:%d, + ClassEquipList:%s + '''\ + %( + self.Head.OutputString(), + self.ItemGUID, + self.ItemID, + self.Star, + self.PlusLV, + self.EvolveLV, + self.WashLV, + self.WashValueCount, + "...", + self.StoneIDCount, + "...", + self.ClassEquipCount, + "..." + ) + return DumpString + + +m_NAtagGCNotifyEquipDetailInfo=tagGCNotifyEquipDetailInfo() +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCNotifyEquipDetailInfo.Head.Cmd,m_NAtagGCNotifyEquipDetailInfo.Head.SubCmd))] = m_NAtagGCNotifyEquipDetailInfo + + +#------------------------------------------------------ #A9 03 开服活动奖励数量刷新#tagGCOpenServerCampaignAwardCount class tagGCOpenServerCampaignAwardCount(Structure): -- Gitblit v1.8.0