From e36d3d08ba14c81bfc159a2797d7c36b5f159ebc Mon Sep 17 00:00:00 2001 From: hxp <ale99527@vip.qq.com> Date: 星期五, 18 十月 2019 13:29:08 +0800 Subject: [PATCH] 4597 【主干】拍品装备无法兑换活跃令(拍品改为可兑换) --- ServerPython/CoreServerGroup/GameServer/Script/ChPyNetPack.py | 391 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 387 insertions(+), 4 deletions(-) diff --git a/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetPack.py b/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetPack.py index 84eae5a..81617d5 100644 --- a/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetPack.py +++ b/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetPack.py @@ -1248,6 +1248,62 @@ #------------------------------------------------------ +# A9 01 获取Boss首杀奖励 #tagCGGetBossFirstKillAward + +class tagCGGetBossFirstKillAward(Structure): + _pack_ = 1 + _fields_ = [ + ("Cmd", c_ubyte), + ("SubCmd", c_ubyte), + ("NPCID", c_int), + ("AwardType", c_ubyte), # 0-首杀红包奖励;1-个人首杀奖励 + ] + + def __init__(self): + self.Clear() + self.Cmd = 0xA9 + self.SubCmd = 0x01 + 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 = 0xA9 + self.SubCmd = 0x01 + self.NPCID = 0 + self.AwardType = 0 + return + + def GetLength(self): + return sizeof(tagCGGetBossFirstKillAward) + + def GetBuffer(self): + return string_at(addressof(self), self.GetLength()) + + def OutputString(self): + DumpString = '''// A9 01 获取Boss首杀奖励 //tagCGGetBossFirstKillAward: + Cmd:%s, + SubCmd:%s, + NPCID:%d, + AwardType:%d + '''\ + %( + self.Cmd, + self.SubCmd, + self.NPCID, + self.AwardType + ) + return DumpString + + +m_NAtagCGGetBossFirstKillAward=tagCGGetBossFirstKillAward() +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCGGetBossFirstKillAward.Cmd,m_NAtagCGGetBossFirstKillAward.SubCmd))] = m_NAtagCGGetBossFirstKillAward + + +#------------------------------------------------------ # A9 04 查询boss信息 #tagCGQueryBossInfo class tagCGQueryBossInfo(Structure): @@ -6211,6 +6267,104 @@ #------------------------------------------------------ +# A3 30 装备神装进阶 #tagCMEquipEvolve + +class tagCMEquipEvolve(Structure): + Head = tagHead() + EquipIndex = 0 #(BYTE EquipIndex)// 要进阶的装备在装备背包中索引 + NeedEquipIDIndex = 0 #(BYTE NeedEquipIDIndex)// 所需固定装备B在背包中索引 + NeedItemIDIndexCnt = 0 #(BYTE NeedItemIDIndexCnt)// 附加材料在背包中索引个数 + NeedItemIDIndex = list() #(vector<BYTE> NeedItemIDIndex)// 附加材料在背包的索引列表 + NeedSuitIndexCnt = 0 #(BYTE NeedSuitIndexCnt)// 所需套装材料在背包中索引个数 + NeedSuitIndex = list() #(vector<BYTE> NeedSuitIndex)// 所需套装材料在背包的索引列表 + data = None + + def __init__(self): + self.Clear() + self.Head.Cmd = 0xA3 + self.Head.SubCmd = 0x30 + return + + def ReadData(self, _lpData, _pos=0, _Len=0): + self.Clear() + _pos = self.Head.ReadData(_lpData, _pos) + self.EquipIndex,_pos = CommFunc.ReadBYTE(_lpData, _pos) + self.NeedEquipIDIndex,_pos = CommFunc.ReadBYTE(_lpData, _pos) + self.NeedItemIDIndexCnt,_pos = CommFunc.ReadBYTE(_lpData, _pos) + for i in range(self.NeedItemIDIndexCnt): + value,_pos=CommFunc.ReadBYTE(_lpData,_pos) + self.NeedItemIDIndex.append(value) + self.NeedSuitIndexCnt,_pos = CommFunc.ReadBYTE(_lpData, _pos) + for i in range(self.NeedSuitIndexCnt): + value,_pos=CommFunc.ReadBYTE(_lpData,_pos) + self.NeedSuitIndex.append(value) + return _pos + + def Clear(self): + self.Head = tagHead() + self.Head.Clear() + self.Head.Cmd = 0xA3 + self.Head.SubCmd = 0x30 + self.EquipIndex = 0 + self.NeedEquipIDIndex = 0 + self.NeedItemIDIndexCnt = 0 + self.NeedItemIDIndex = list() + self.NeedSuitIndexCnt = 0 + self.NeedSuitIndex = list() + return + + def GetLength(self): + length = 0 + length += self.Head.GetLength() + length += 1 + length += 1 + length += 1 + length += 1 * self.NeedItemIDIndexCnt + length += 1 + length += 1 * self.NeedSuitIndexCnt + + return length + + def GetBuffer(self): + data = '' + data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer()) + data = CommFunc.WriteBYTE(data, self.EquipIndex) + data = CommFunc.WriteBYTE(data, self.NeedEquipIDIndex) + data = CommFunc.WriteBYTE(data, self.NeedItemIDIndexCnt) + for i in range(self.NeedItemIDIndexCnt): + data = CommFunc.WriteBYTE(data, self.NeedItemIDIndex[i]) + data = CommFunc.WriteBYTE(data, self.NeedSuitIndexCnt) + for i in range(self.NeedSuitIndexCnt): + data = CommFunc.WriteBYTE(data, self.NeedSuitIndex[i]) + return data + + def OutputString(self): + DumpString = ''' + Head:%s, + EquipIndex:%d, + NeedEquipIDIndex:%d, + NeedItemIDIndexCnt:%d, + NeedItemIDIndex:%s, + NeedSuitIndexCnt:%d, + NeedSuitIndex:%s + '''\ + %( + self.Head.OutputString(), + self.EquipIndex, + self.NeedEquipIDIndex, + self.NeedItemIDIndexCnt, + "...", + self.NeedSuitIndexCnt, + "..." + ) + return DumpString + + +m_NAtagCMEquipEvolve=tagCMEquipEvolve() +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMEquipEvolve.Head.Cmd,m_NAtagCMEquipEvolve.Head.SubCmd))] = m_NAtagCMEquipEvolve + + +#------------------------------------------------------ #A3 01 装备强化 #tagEquipPlus class tagEquipPlus(Structure): @@ -6771,6 +6925,58 @@ m_NAtagCMItemTimeout=tagCMItemTimeout() ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMItemTimeout.Cmd,m_NAtagCMItemTimeout.SubCmd))] = m_NAtagCMItemTimeout + + +#------------------------------------------------------ +# A3 18 灵器突破 #tagCMLingQiEquipBreak + +class tagCMLingQiEquipBreak(Structure): + _pack_ = 1 + _fields_ = [ + ("Cmd", c_ubyte), + ("SubCmd", c_ubyte), + ("ItemID", c_int), #突破的物品ID + ] + + def __init__(self): + self.Clear() + self.Cmd = 0xA3 + self.SubCmd = 0x18 + 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 = 0xA3 + self.SubCmd = 0x18 + self.ItemID = 0 + return + + def GetLength(self): + return sizeof(tagCMLingQiEquipBreak) + + def GetBuffer(self): + return string_at(addressof(self), self.GetLength()) + + def OutputString(self): + DumpString = '''// A3 18 灵器突破 //tagCMLingQiEquipBreak: + Cmd:%s, + SubCmd:%s, + ItemID:%d + '''\ + %( + self.Cmd, + self.SubCmd, + self.ItemID + ) + return DumpString + + +m_NAtagCMLingQiEquipBreak=tagCMLingQiEquipBreak() +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMLingQiEquipBreak.Cmd,m_NAtagCMLingQiEquipBreak.SubCmd))] = m_NAtagCMLingQiEquipBreak #------------------------------------------------------ @@ -9759,6 +9965,126 @@ m_NAtagCMGoldInvest=tagCMGoldInvest() ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMGoldInvest.Cmd,m_NAtagCMGoldInvest.SubCmd))] = m_NAtagCMGoldInvest + + +#------------------------------------------------------ +# A5 29 骑宠觉醒 #tagCMHorsePetAwake + +class tagCMHorsePetAwake(Structure): + _pack_ = 1 + _fields_ = [ + ("Cmd", c_ubyte), + ("SubCmd", c_ubyte), + ("Type", c_ushort), # 1-坐骑 2-灵宠 + ("ID", c_int), # 对应坐骑表灵宠表ID + ("EatItemID", c_int), # 吞噬的物品ID + ] + + def __init__(self): + self.Clear() + self.Cmd = 0xA5 + self.SubCmd = 0x29 + 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 = 0xA5 + self.SubCmd = 0x29 + self.Type = 0 + self.ID = 0 + self.EatItemID = 0 + return + + def GetLength(self): + return sizeof(tagCMHorsePetAwake) + + def GetBuffer(self): + return string_at(addressof(self), self.GetLength()) + + def OutputString(self): + DumpString = '''// A5 29 骑宠觉醒 //tagCMHorsePetAwake: + Cmd:%s, + SubCmd:%s, + Type:%d, + ID:%d, + EatItemID:%d + '''\ + %( + self.Cmd, + self.SubCmd, + self.Type, + self.ID, + self.EatItemID + ) + return DumpString + + +m_NAtagCMHorsePetAwake=tagCMHorsePetAwake() +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMHorsePetAwake.Cmd,m_NAtagCMHorsePetAwake.SubCmd))] = m_NAtagCMHorsePetAwake + + +#------------------------------------------------------ +# A5 30 骑宠外观选择 #tagCMHorsePetSkinSelect + +class tagCMHorsePetSkinSelect(Structure): + _pack_ = 1 + _fields_ = [ + ("Cmd", c_ubyte), + ("SubCmd", c_ubyte), + ("Type", c_ushort), # 1-坐骑 2-灵宠 + ("ID", c_int), # 对应坐骑表灵宠表ID + ("SkinIndex", c_ubyte), # 外观索引 + ] + + def __init__(self): + self.Clear() + self.Cmd = 0xA5 + self.SubCmd = 0x30 + 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 = 0xA5 + self.SubCmd = 0x30 + self.Type = 0 + self.ID = 0 + self.SkinIndex = 0 + return + + def GetLength(self): + return sizeof(tagCMHorsePetSkinSelect) + + def GetBuffer(self): + return string_at(addressof(self), self.GetLength()) + + def OutputString(self): + DumpString = '''// A5 30 骑宠外观选择 //tagCMHorsePetSkinSelect: + Cmd:%s, + SubCmd:%s, + Type:%d, + ID:%d, + SkinIndex:%d + '''\ + %( + self.Cmd, + self.SubCmd, + self.Type, + self.ID, + self.SkinIndex + ) + return DumpString + + +m_NAtagCMHorsePetSkinSelect=tagCMHorsePetSkinSelect() +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMHorsePetSkinSelect.Cmd,m_NAtagCMHorsePetSkinSelect.SubCmd))] = m_NAtagCMHorsePetSkinSelect #------------------------------------------------------ @@ -14001,7 +14327,7 @@ Head = tagHead() PointAttrIDCount = 0 #(BYTE PointAttrIDCount)// 加点属性ID个数 PointAttrIDList = list() #(vector<BYTE> PointAttrIDList)// 加点属性ID列表 - PointValueList = list() #(vector<WORD> PointValueList)// 加点属性ID对应的点数列表 + PointValueList = list() #(vector<DWORD> PointValueList)// 加点属性ID对应的点数列表 data = None def __init__(self): @@ -14018,7 +14344,7 @@ value,_pos=CommFunc.ReadBYTE(_lpData,_pos) self.PointAttrIDList.append(value) for i in range(self.PointAttrIDCount): - value,_pos=CommFunc.ReadWORD(_lpData,_pos) + value,_pos=CommFunc.ReadDWORD(_lpData,_pos) self.PointValueList.append(value) return _pos @@ -14037,7 +14363,7 @@ length += self.Head.GetLength() length += 1 length += 1 * self.PointAttrIDCount - length += 2 * self.PointAttrIDCount + length += 4 * self.PointAttrIDCount return length @@ -14048,7 +14374,7 @@ for i in range(self.PointAttrIDCount): data = CommFunc.WriteBYTE(data, self.PointAttrIDList[i]) for i in range(self.PointAttrIDCount): - data = CommFunc.WriteWORD(data, self.PointValueList[i]) + data = CommFunc.WriteDWORD(data, self.PointValueList[i]) return data def OutputString(self): @@ -15736,6 +16062,63 @@ #------------------------------------------------------ +# B5 15 拍卖行下架拍品 #tagCMUnsellAuctionItem + +class tagCMUnsellAuctionItem(Structure): + Head = tagHead() + ItemGUID = "" #(char ItemGUID[40]) + data = None + + def __init__(self): + self.Clear() + self.Head.Cmd = 0xB5 + self.Head.SubCmd = 0x15 + 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) + return _pos + + def Clear(self): + self.Head = tagHead() + self.Head.Clear() + self.Head.Cmd = 0xB5 + self.Head.SubCmd = 0x15 + self.ItemGUID = "" + return + + def GetLength(self): + length = 0 + length += self.Head.GetLength() + length += 40 + + return length + + def GetBuffer(self): + data = '' + data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer()) + data = CommFunc.WriteString(data, 40, self.ItemGUID) + return data + + def OutputString(self): + DumpString = ''' + Head:%s, + ItemGUID:%s + '''\ + %( + self.Head.OutputString(), + self.ItemGUID + ) + return DumpString + + +m_NAtagCMUnsellAuctionItem=tagCMUnsellAuctionItem() +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMUnsellAuctionItem.Head.Cmd,m_NAtagCMUnsellAuctionItem.Head.SubCmd))] = m_NAtagCMUnsellAuctionItem + + +#------------------------------------------------------ # B9 04 修改队伍相关审核状态 #tagCMChangeTeamCheckState class tagCMChangeTeamCheckState(Structure): -- Gitblit v1.8.0