From 3efbd281d472248b62832b316ba45d823dabf913 Mon Sep 17 00:00:00 2001 From: hxp <ale99527@vip.qq.com> Date: 星期二, 10 十二月 2019 14:53:56 +0800 Subject: [PATCH] 8346 【恺英】【后端】协助系统(修改感谢礼盒相关封包) --- ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py | 293 +++++++++++++++++++++++++--------------------------------- 1 files changed, 126 insertions(+), 167 deletions(-) diff --git a/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py b/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py index 58a9645..068d1c7 100644 --- a/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py +++ b/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py @@ -6005,187 +6005,55 @@ #------------------------------------------------------ -# B0 05 可领取的协助感谢礼盒 #tagGCAssistThanksGiftList +# B0 06 可接收协助感谢礼物个数 #tagGCCanGetAssistThanksGiftCount -class tagGCAssistThanksGift(Structure): - GiftGUID = "" #(char GiftGUID[40])//礼盒GUID - ItemID = 0 #(DWORD ItemID)//礼盒ID - PlayerID = 0 #(DWORD PlayerID)//发起玩家ID - PlayerName = "" #(char PlayerName[33]) - Job = 0 #(BYTE Job) - LV = 0 #(WORD LV) - RealmLV = 0 #(BYTE RealmLV)//境界 - MapID = 0 #(DWORD MapID) - LineID = 0 #(DWORD LineID) - NPCID = 0 #(DWORD NPCID) - ExDataLen = 0 #(WORD ExDataLen) - ExData = "" #(String ExData)//其他自定义数据 - data = None +class tagGCCanGetAssistThanksGiftCount(Structure): + _pack_ = 1 + _fields_ = [ + ("Cmd", c_ubyte), + ("SubCmd", c_ubyte), + ("CanGetCount", c_ubyte), + ] def __init__(self): self.Clear() + self.Cmd = 0xB0 + self.SubCmd = 0x06 return - def ReadData(self, _lpData, _pos=0, _Len=0): + def ReadData(self, stringData, _pos=0, _len=0): self.Clear() - self.GiftGUID,_pos = CommFunc.ReadString(_lpData, _pos,40) - self.ItemID,_pos = CommFunc.ReadDWORD(_lpData, _pos) - self.PlayerID,_pos = CommFunc.ReadDWORD(_lpData, _pos) - self.PlayerName,_pos = CommFunc.ReadString(_lpData, _pos,33) - self.Job,_pos = CommFunc.ReadBYTE(_lpData, _pos) - self.LV,_pos = CommFunc.ReadWORD(_lpData, _pos) - self.RealmLV,_pos = CommFunc.ReadBYTE(_lpData, _pos) - self.MapID,_pos = CommFunc.ReadDWORD(_lpData, _pos) - self.LineID,_pos = CommFunc.ReadDWORD(_lpData, _pos) - self.NPCID,_pos = CommFunc.ReadDWORD(_lpData, _pos) - self.ExDataLen,_pos = CommFunc.ReadWORD(_lpData, _pos) - self.ExData,_pos = CommFunc.ReadString(_lpData, _pos,self.ExDataLen) - return _pos + memmove(addressof(self), stringData[_pos:], self.GetLength()) + return _pos + self.GetLength() def Clear(self): - self.GiftGUID = "" - self.ItemID = 0 - self.PlayerID = 0 - self.PlayerName = "" - self.Job = 0 - self.LV = 0 - self.RealmLV = 0 - self.MapID = 0 - self.LineID = 0 - self.NPCID = 0 - self.ExDataLen = 0 - self.ExData = "" + self.Cmd = 0xB0 + self.SubCmd = 0x06 + self.CanGetCount = 0 return def GetLength(self): - length = 0 - length += 40 - length += 4 - length += 4 - length += 33 - length += 1 - length += 2 - length += 1 - length += 4 - length += 4 - length += 4 - length += 2 - length += len(self.ExData) - - return length + return sizeof(tagGCCanGetAssistThanksGiftCount) def GetBuffer(self): - data = '' - data = CommFunc.WriteString(data, 40, self.GiftGUID) - data = CommFunc.WriteDWORD(data, self.ItemID) - data = CommFunc.WriteDWORD(data, self.PlayerID) - data = CommFunc.WriteString(data, 33, self.PlayerName) - data = CommFunc.WriteBYTE(data, self.Job) - data = CommFunc.WriteWORD(data, self.LV) - data = CommFunc.WriteBYTE(data, self.RealmLV) - data = CommFunc.WriteDWORD(data, self.MapID) - data = CommFunc.WriteDWORD(data, self.LineID) - data = CommFunc.WriteDWORD(data, self.NPCID) - data = CommFunc.WriteWORD(data, self.ExDataLen) - data = CommFunc.WriteString(data, self.ExDataLen, self.ExData) - return data + return string_at(addressof(self), self.GetLength()) def OutputString(self): - DumpString = ''' - GiftGUID:%s, - ItemID:%d, - PlayerID:%d, - PlayerName:%s, - Job:%d, - LV:%d, - RealmLV:%d, - MapID:%d, - LineID:%d, - NPCID:%d, - ExDataLen:%d, - ExData:%s + DumpString = '''// B0 06 可接收协助感谢礼物个数 //tagGCCanGetAssistThanksGiftCount: + Cmd:%s, + SubCmd:%s, + CanGetCount:%d '''\ %( - self.GiftGUID, - self.ItemID, - self.PlayerID, - self.PlayerName, - self.Job, - self.LV, - self.RealmLV, - self.MapID, - self.LineID, - self.NPCID, - self.ExDataLen, - self.ExData + self.Cmd, + self.SubCmd, + self.CanGetCount ) return DumpString -class tagGCAssistThanksGiftList(Structure): - Head = tagHead() - GiftCount = 0 #(BYTE GiftCount) - ThanksGiftList = list() #(vector<tagGCAssistThanksGift> ThanksGiftList) - data = None - - def __init__(self): - self.Clear() - self.Head.Cmd = 0xB0 - self.Head.SubCmd = 0x05 - return - - def ReadData(self, _lpData, _pos=0, _Len=0): - self.Clear() - _pos = self.Head.ReadData(_lpData, _pos) - self.GiftCount,_pos = CommFunc.ReadBYTE(_lpData, _pos) - for i in range(self.GiftCount): - temThanksGiftList = tagGCAssistThanksGift() - _pos = temThanksGiftList.ReadData(_lpData, _pos) - self.ThanksGiftList.append(temThanksGiftList) - return _pos - - def Clear(self): - self.Head = tagHead() - self.Head.Clear() - self.Head.Cmd = 0xB0 - self.Head.SubCmd = 0x05 - self.GiftCount = 0 - self.ThanksGiftList = list() - return - - def GetLength(self): - length = 0 - length += self.Head.GetLength() - length += 1 - for i in range(self.GiftCount): - length += self.ThanksGiftList[i].GetLength() - - return length - - def GetBuffer(self): - data = '' - data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer()) - data = CommFunc.WriteBYTE(data, self.GiftCount) - for i in range(self.GiftCount): - data = CommFunc.WriteString(data, self.ThanksGiftList[i].GetLength(), self.ThanksGiftList[i].GetBuffer()) - return data - - def OutputString(self): - DumpString = ''' - Head:%s, - GiftCount:%d, - ThanksGiftList:%s - '''\ - %( - self.Head.OutputString(), - self.GiftCount, - "..." - ) - return DumpString - - -m_NAtagGCAssistThanksGiftList=tagGCAssistThanksGiftList() -ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCAssistThanksGiftList.Head.Cmd,m_NAtagGCAssistThanksGiftList.Head.SubCmd))] = m_NAtagGCAssistThanksGiftList +m_NAtagGCCanGetAssistThanksGiftCount=tagGCCanGetAssistThanksGiftCount() +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCCanGetAssistThanksGiftCount.Cmd,m_NAtagGCCanGetAssistThanksGiftCount.SubCmd))] = m_NAtagGCCanGetAssistThanksGiftCount #------------------------------------------------------ @@ -6374,37 +6242,89 @@ #------------------------------------------------------ -# B0 06 领取协助感谢礼盒成功 #tagGCGetAssistThanksGiftOK +# B0 05 接收协助感谢礼物预览 #tagGCGetAssistThanksGiftPreview -class tagGCGetAssistThanksGiftOK(Structure): +class tagGCGetAssistThanksGiftPreview(Structure): Head = tagHead() GiftGUID = "" #(char GiftGUID[40])//礼盒GUID + ItemID = 0 #(DWORD ItemID)//礼盒ID + PlayerID = 0 #(DWORD PlayerID)//发起玩家ID + PlayerName = "" #(char PlayerName[33]) + Job = 0 #(BYTE Job) + LV = 0 #(WORD LV) + RealmLV = 0 #(BYTE RealmLV)//境界 + MapID = 0 #(DWORD MapID) + LineID = 0 #(DWORD LineID) + NPCID = 0 #(DWORD NPCID) + ExDataLen = 0 #(WORD ExDataLen) + ExData = "" #(String ExData)//其他自定义数据 + TimeStr = "" #(char TimeStr[19])//协助时间yyyy-MM-dd hh:mm:ss + ExtraAward = 0 #(BYTE ExtraAward)//是否有额外奖励 data = None def __init__(self): self.Clear() self.Head.Cmd = 0xB0 - self.Head.SubCmd = 0x06 + self.Head.SubCmd = 0x05 return def ReadData(self, _lpData, _pos=0, _Len=0): self.Clear() _pos = self.Head.ReadData(_lpData, _pos) self.GiftGUID,_pos = CommFunc.ReadString(_lpData, _pos,40) + self.ItemID,_pos = CommFunc.ReadDWORD(_lpData, _pos) + self.PlayerID,_pos = CommFunc.ReadDWORD(_lpData, _pos) + self.PlayerName,_pos = CommFunc.ReadString(_lpData, _pos,33) + self.Job,_pos = CommFunc.ReadBYTE(_lpData, _pos) + self.LV,_pos = CommFunc.ReadWORD(_lpData, _pos) + self.RealmLV,_pos = CommFunc.ReadBYTE(_lpData, _pos) + self.MapID,_pos = CommFunc.ReadDWORD(_lpData, _pos) + self.LineID,_pos = CommFunc.ReadDWORD(_lpData, _pos) + self.NPCID,_pos = CommFunc.ReadDWORD(_lpData, _pos) + self.ExDataLen,_pos = CommFunc.ReadWORD(_lpData, _pos) + self.ExData,_pos = CommFunc.ReadString(_lpData, _pos,self.ExDataLen) + self.TimeStr,_pos = CommFunc.ReadString(_lpData, _pos,19) + self.ExtraAward,_pos = CommFunc.ReadBYTE(_lpData, _pos) return _pos def Clear(self): self.Head = tagHead() self.Head.Clear() self.Head.Cmd = 0xB0 - self.Head.SubCmd = 0x06 + self.Head.SubCmd = 0x05 self.GiftGUID = "" + self.ItemID = 0 + self.PlayerID = 0 + self.PlayerName = "" + self.Job = 0 + self.LV = 0 + self.RealmLV = 0 + self.MapID = 0 + self.LineID = 0 + self.NPCID = 0 + self.ExDataLen = 0 + self.ExData = "" + self.TimeStr = "" + self.ExtraAward = 0 return def GetLength(self): length = 0 length += self.Head.GetLength() length += 40 + length += 4 + length += 4 + length += 33 + length += 1 + length += 2 + length += 1 + length += 4 + length += 4 + length += 4 + length += 2 + length += len(self.ExData) + length += 19 + length += 1 return length @@ -6412,22 +6332,61 @@ data = '' data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer()) data = CommFunc.WriteString(data, 40, self.GiftGUID) + data = CommFunc.WriteDWORD(data, self.ItemID) + data = CommFunc.WriteDWORD(data, self.PlayerID) + data = CommFunc.WriteString(data, 33, self.PlayerName) + data = CommFunc.WriteBYTE(data, self.Job) + data = CommFunc.WriteWORD(data, self.LV) + data = CommFunc.WriteBYTE(data, self.RealmLV) + data = CommFunc.WriteDWORD(data, self.MapID) + data = CommFunc.WriteDWORD(data, self.LineID) + data = CommFunc.WriteDWORD(data, self.NPCID) + data = CommFunc.WriteWORD(data, self.ExDataLen) + data = CommFunc.WriteString(data, self.ExDataLen, self.ExData) + data = CommFunc.WriteString(data, 19, self.TimeStr) + data = CommFunc.WriteBYTE(data, self.ExtraAward) return data def OutputString(self): DumpString = ''' Head:%s, - GiftGUID:%s + GiftGUID:%s, + ItemID:%d, + PlayerID:%d, + PlayerName:%s, + Job:%d, + LV:%d, + RealmLV:%d, + MapID:%d, + LineID:%d, + NPCID:%d, + ExDataLen:%d, + ExData:%s, + TimeStr:%s, + ExtraAward:%d '''\ %( self.Head.OutputString(), - self.GiftGUID + self.GiftGUID, + self.ItemID, + self.PlayerID, + self.PlayerName, + self.Job, + self.LV, + self.RealmLV, + self.MapID, + self.LineID, + self.NPCID, + self.ExDataLen, + self.ExData, + self.TimeStr, + self.ExtraAward ) return DumpString -m_NAtagGCGetAssistThanksGiftOK=tagGCGetAssistThanksGiftOK() -ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCGetAssistThanksGiftOK.Head.Cmd,m_NAtagGCGetAssistThanksGiftOK.Head.SubCmd))] = m_NAtagGCGetAssistThanksGiftOK +m_NAtagGCGetAssistThanksGiftPreview=tagGCGetAssistThanksGiftPreview() +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCGetAssistThanksGiftPreview.Head.Cmd,m_NAtagGCGetAssistThanksGiftPreview.Head.SubCmd))] = m_NAtagGCGetAssistThanksGiftPreview #------------------------------------------------------ -- Gitblit v1.8.0