| | |
| | | Head = tagHead()
|
| | | Type = 0 #(BYTE Type)//类型
|
| | | Count = 0 #(WORD Count)//数量
|
| | | UniversalGameRec = list() #(vector<tagUniversalGameRec> UniversalGameRec)///size = Count |
| | | UniversalGameRec = list() #(vector<tagUniversalGameRec> UniversalGameRec)///size = Count |
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | |
| | | FamilyID = 0 #(DWORD FamilyID)//家族ID
|
| | | ActionType = 0 #(BYTE ActionType)//类型
|
| | | Count = 0 #(WORD Count)//数量
|
| | | FamilyActionList = list() #(vector<tagGCFamilyAction> FamilyActionList)//size = Count |
| | | FamilyActionList = list() #(vector<tagGCFamilyAction> FamilyActionList)//size = Count |
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | |
| | | IsAlive = 0 #(BYTE IsAlive)// 是否存活
|
| | | RecordLen = 0 #(WORD RecordLen)// 长度
|
| | | KillRecord = "" #(String KillRecord)// 最近击杀记录时间玩家名size = RecordLen
|
| | | RefreshSecond = 0 #(DWORD RefreshSecond)// 刷新倒计时, 秒 |
| | | RefreshCD = 0 #(DWORD RefreshCD)// 刷新总CD时, 秒 |
| | | RefreshSecond = 0 #(DWORD RefreshSecond)// 刷新倒计时, 秒 |
| | | RefreshCD = 0 #(DWORD RefreshCD)// 刷新总CD时, 秒 |
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | |
| | |
|
| | | m_NAtagGCGrabRedPacketResult=tagGCGrabRedPacketResult()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCGrabRedPacketResult.Head.Cmd,m_NAtagGCGrabRedPacketResult.Head.SubCmd))] = m_NAtagGCGrabRedPacketResult
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # 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
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | |
| | | Count = 0 #(DWORD Count)//数量
|
| | | IsBind = 0 #(BYTE IsBind)//是否绑定
|
| | | UserDataLen = 0 #(DWORD UserDataLen)
|
| | | UserData = "" #(String UserData)//自定义数据 |
| | | UserData = "" #(String UserData)//自定义数据 |
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | |
| | | Name = "" #(char Name[33])
|
| | | LV = 0 #(DWORD LV)//等级
|
| | | Job = 0 #(BYTE Job)
|
| | | RealmLV = 0 #(WORD RealmLV)//境界 |
| | | RealmLV = 0 #(WORD RealmLV)//境界 |
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | |
| | | class tagFamilyArrestOverStateInfo(Structure):
|
| | | Head = tagHead()
|
| | | Count = 0 #(WORD Count)
|
| | | ArrestOverStateInfo = list() #(vector<tagFamilyArrestOverState> ArrestOverStateInfo)///size = Count |
| | | ArrestOverStateInfo = list() #(vector<tagFamilyArrestOverState> ArrestOverStateInfo)///size = Count |
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | |
| | | ("Cmd", c_ubyte),
|
| | | ("SubCmd", c_ubyte),
|
| | | ("PlayerID", c_int),
|
| | | ("RefreshType", c_ubyte), #参考CDBPlayerRefresh__ |
| | | ("RefreshType", c_ubyte), #参考CDBPlayerRefresh__ |
| | | ("Value", c_int),
|
| | | ]
|
| | |
|
| | |
| | |
|
| | | class tagGCVoiceChat(Structure):
|
| | | Head = tagHead()
|
| | | ChannelType = 0 #(BYTE ChannelType)// 1 世界 2 仙盟 3 私聊(好友) 4 队伍 5 区域 |
| | | ChannelType = 0 #(BYTE ChannelType)// 1 世界 2 仙盟 3 私聊(好友) 4 队伍 5 区域 |
| | | SrcNameLen = 0 #(BYTE SrcNameLen)
|
| | | SrcName = "" #(String SrcName)//size = SrcNameLen
|
| | | PlayerID = 0 #(DWORD PlayerID)
|
| | |
| | | ItemGUID = "" #(char ItemGUID[40])
|
| | | AuctionType = 0 #(BYTE AuctionType)//拍品类型,0-全服拍品,1-仙盟拍品
|
| | | AddTime = "" #(char AddTime[19])//上架时间
|
| | | BidderID = 0 #(DWORD BidderID)//最高竞拍玩家ID,也就是当前最高竞价玩家ID |
| | | BidderID = 0 #(DWORD BidderID)//最高竞拍玩家ID,也就是当前最高竞价玩家ID |
| | | BidderPrice = 0 #(DWORD BidderPrice)//最高竞拍价格
|
| | | BiddingTime = "" #(char BiddingTime[19])//竞价时间 yyyy-MM-dd hh:mm:ss
|
| | | data = None
|
| | |
| | |
|
| | | class tagGCCrossRealmPKBillboardInfo(Structure):
|
| | | Head = tagHead()
|
| | | ZoneID = 0 #(BYTE ZoneID)// 赛区ID |
| | | SeasonID = 0 #(BYTE SeasonID)// 赛季ID |
| | | ZoneID = 0 #(BYTE ZoneID)// 赛区ID |
| | | SeasonID = 0 #(BYTE SeasonID)// 赛季ID |
| | | Count = 0 #(WORD Count)
|
| | | PKBillboardList = list() #(vector<tagGCCrossRealmPKBillboardData> PKBillboardList)
|
| | | data = None
|
| | |
| | | BackpackLV = 0 #(BYTE BackpackLV)//背包等级
|
| | | WarehouseLV = 0 #(BYTE WarehouseLV)//仓库等级
|
| | | TeamID = 0 #(DWORD TeamID)//队伍ID
|
| | | UseGoldType = 0 #(BYTE UseGoldType)//默认用金子/金票 类型为MoneyType
|
| | | UseGoldType = 0 #(BYTE UseGoldType)//默认用金子/金票 类型为MoneyType
|
| | | UseSilverType = 0 #(BYTE UseSilverType)//默认用的银子/银票
|
| | | AttackMode = 0 #(BYTE AttackMode)//攻击模式
|
| | | LastWeekOnlineTime = 0 #(DWORD LastWeekOnlineTime)//上周在线时间
|
| | |
| | | _fields_ = [
|
| | | ("ItemID", c_int), #果实物品ID
|
| | | ("EatCnt", c_ushort), #已使用个数
|
| | | ("AddItemCnt", c_int), #增幅丹使用个数
|
| | | ("ItemAddCnt", c_int), #增幅丹增加上限
|
| | | ("ItemBreakCnt", c_int), #增幅丹突破次数
|
| | | ]
|
| | |
|
| | | def __init__(self):
|
| | |
| | | def Clear(self):
|
| | | self.ItemID = 0
|
| | | self.EatCnt = 0
|
| | | self.AddItemCnt = 0
|
| | | self.ItemAddCnt = 0
|
| | | self.ItemBreakCnt = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | |
| | | DumpString = '''// A3 39 玩家属性果实已使用个数信息//tagMCAttrFruitEatCntList:
|
| | | ItemID:%d,
|
| | | EatCnt:%d,
|
| | | AddItemCnt:%d
|
| | | ItemAddCnt:%d,
|
| | | ItemBreakCnt:%d
|
| | | '''\
|
| | | %(
|
| | | self.ItemID,
|
| | | self.EatCnt,
|
| | | self.AddItemCnt
|
| | | self.ItemAddCnt,
|
| | | self.ItemBreakCnt
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
| | |
|
| | |
|
| | | class tagMCEquipPartXLAttr(Structure):
|
| | | EquipPlace = 0 #(BYTE EquipPlace)// 装备位 |
| | | EquipPlace = 0 #(BYTE EquipPlace)// 装备位 |
| | | XLAttrLV = 0 #(BYTE XLAttrLV)// 洗练等级
|
| | | XLAttrCnt = 0 #(BYTE XLAttrCnt)// 属性条数
|
| | | XLAttrList = list() #(vector<tagMCEquipPartXLAttrValue> XLAttrList)// 属性列表,索引0的代表属性1,依次递增
|
| | |
| | | _fields_ = [
|
| | | ("Cmd", c_ubyte),
|
| | | ("SubCmd", c_ubyte),
|
| | | ("Record", c_ubyte), #0-未领取 1-已领取 |
| | | ("Record", c_ubyte), #0-未领取 1-已领取 |
| | | ]
|
| | |
|
| | | def __init__(self):
|
| | |
| | | ("Cmd", c_ubyte),
|
| | | ("SubCmd", c_ubyte),
|
| | | ("BeginTime", c_int), #开始计时时间
|
| | | ("BuffTime", c_int), #buff剩余时间
|
| | | ("BuffAddRate", c_int), #buff加成万分率
|
| | | ("CurExp", c_int), #当前总经验
|
| | | ("CurExpPoint", c_int), #当前总经验点
|
| | | ]
|
| | |
| | | self.Cmd = 0xA3
|
| | | self.SubCmd = 0x27
|
| | | self.BeginTime = 0
|
| | | self.BuffTime = 0
|
| | | self.BuffAddRate = 0
|
| | | self.CurExp = 0
|
| | | self.CurExpPoint = 0
|
| | | return
|
| | |
| | | Cmd:%s,
|
| | | SubCmd:%s,
|
| | | BeginTime:%d,
|
| | | BuffTime:%d,
|
| | | BuffAddRate:%d,
|
| | | CurExp:%d,
|
| | | CurExpPoint:%d
|
| | | '''\
|
| | |
| | | self.Cmd,
|
| | | self.SubCmd,
|
| | | self.BeginTime,
|
| | | self.BuffTime,
|
| | | self.BuffAddRate,
|
| | | self.CurExp,
|
| | | self.CurExpPoint
|
| | | )
|
| | |
| | | #------------------------------------------------------
|
| | | # A3 09 技能五行专精信息 #tagMCSkillElementInfo
|
| | |
|
| | | class tagMCSkillElementData(Structure):
|
| | | class tagMCSkillElementActiveData(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("MainSkillID", c_int), # 主技能ID
|
| | | ("ElementSkillID", c_int), # 专精技能ID
|
| | | ("SkillID", c_int), # 技能ID
|
| | | ("ActiveLV", c_ubyte), # 激活等级
|
| | | ]
|
| | |
|
| | | def __init__(self):
|
| | |
| | | return _pos + self.GetLength()
|
| | |
|
| | | def Clear(self):
|
| | | self.MainSkillID = 0
|
| | | self.ElementSkillID = 0
|
| | | self.SkillID = 0
|
| | | self.ActiveLV = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagMCSkillElementData)
|
| | | return sizeof(tagMCSkillElementActiveData)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// A3 09 技能五行专精信息 //tagMCSkillElementInfo:
|
| | | SkillID:%d,
|
| | | ActiveLV:%d
|
| | | '''\
|
| | | %(
|
| | | self.SkillID,
|
| | | self.ActiveLV
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | class tagMCSkillElementData(Structure):
|
| | | MainSkillID = 0 #(DWORD MainSkillID)// 主技能ID
|
| | | ElementSkillID = 0 #(DWORD ElementSkillID)// 选择的专精技能ID
|
| | | SkillCnt = 0 #(BYTE SkillCnt)// 数量
|
| | | ActiveSkill = list() #(vector<tagMCSkillElementActiveData> ActiveSkill)// 激活的技能ID
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | return
|
| | |
|
| | | def ReadData(self, _lpData, _pos=0, _Len=0):
|
| | | self.Clear()
|
| | | self.MainSkillID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.ElementSkillID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.SkillCnt,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | for i in range(self.SkillCnt):
|
| | | temActiveSkill = tagMCSkillElementActiveData()
|
| | | _pos = temActiveSkill.ReadData(_lpData, _pos)
|
| | | self.ActiveSkill.append(temActiveSkill)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.MainSkillID = 0
|
| | | self.ElementSkillID = 0
|
| | | self.SkillCnt = 0
|
| | | self.ActiveSkill = list()
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += 4
|
| | | length += 4
|
| | | length += 1
|
| | | for i in range(self.SkillCnt):
|
| | | length += self.ActiveSkill[i].GetLength()
|
| | |
|
| | | return length
|
| | |
|
| | | def GetBuffer(self):
|
| | | data = ''
|
| | | data = CommFunc.WriteDWORD(data, self.MainSkillID)
|
| | | data = CommFunc.WriteDWORD(data, self.ElementSkillID)
|
| | | data = CommFunc.WriteBYTE(data, self.SkillCnt)
|
| | | for i in range(self.SkillCnt):
|
| | | data = CommFunc.WriteString(data, self.ActiveSkill[i].GetLength(), self.ActiveSkill[i].GetBuffer())
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | MainSkillID:%d,
|
| | | ElementSkillID:%d
|
| | | ElementSkillID:%d,
|
| | | SkillCnt:%d,
|
| | | ActiveSkill:%s
|
| | | '''\
|
| | | %(
|
| | | self.MainSkillID,
|
| | | self.ElementSkillID
|
| | | self.ElementSkillID,
|
| | | self.SkillCnt,
|
| | | "..."
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
| | | PlayerID = 0 #(DWORD PlayerID)//玩家ID
|
| | | EquipClassLV = 0 #(BYTE EquipClassLV)
|
| | | ItemDataSize = 0 #(WORD ItemDataSize)
|
| | | ItemData = "" #(String ItemData)//物品记录 |
| | | ItemData = "" #(String ItemData)//物品记录 |
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | |
| | | ItemDataSize = 0 #(DWORD ItemDataSize)
|
| | | ItemData = "" #(String ItemData)//物品记录
|
| | | PlusDataSize = 0 #(DWORD PlusDataSize)
|
| | | PlusData = "" #(String PlusData)//扩展记录 |
| | | PlusData = "" #(String PlusData)//扩展记录 |
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | |
| | | _fields_ = [
|
| | | ("Cmd", c_ubyte),
|
| | | ("SubCmd", c_ubyte),
|
| | | ("MakeType", c_ubyte), #类型 TMakeItemType
|
| | | ("MakeType", c_ubyte), #类型 TMakeItemType
|
| | | ("Result", c_ubyte), #是否成功
|
| | | ("MakeItemID", c_int), #合成的物品ID
|
| | | ]
|
| | |
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # B2 14 自定义副本奖励信息 #tagMCCuntomFBPrizeInfo
|
| | |
|
| | | class tagMCCuntomFBPrizeInfo(Structure):
|
| | | Head = tagHead()
|
| | | MapID = 0 #(DWORD MapID)
|
| | | FuncLineID = 0 #(WORD FuncLineID)
|
| | | PrizeItemCount = 0 #(BYTE PrizeItemCount)
|
| | | PrizeItemIDList = list() #(vector<DWORD> PrizeItemIDList)
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Head.Cmd = 0xB2
|
| | | self.Head.SubCmd = 0x14
|
| | | return
|
| | |
|
| | | def ReadData(self, _lpData, _pos=0, _Len=0):
|
| | | self.Clear()
|
| | | _pos = self.Head.ReadData(_lpData, _pos)
|
| | | self.MapID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.FuncLineID,_pos = CommFunc.ReadWORD(_lpData, _pos)
|
| | | self.PrizeItemCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | for i in range(self.PrizeItemCount):
|
| | | value,_pos=CommFunc.ReadDWORD(_lpData,_pos)
|
| | | self.PrizeItemIDList.append(value)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.Head = tagHead()
|
| | | self.Head.Clear()
|
| | | self.Head.Cmd = 0xB2
|
| | | self.Head.SubCmd = 0x14
|
| | | self.MapID = 0
|
| | | self.FuncLineID = 0
|
| | | self.PrizeItemCount = 0
|
| | | self.PrizeItemIDList = list()
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += self.Head.GetLength()
|
| | | length += 4
|
| | | length += 2
|
| | | length += 1
|
| | | length += 4 * self.PrizeItemCount
|
| | |
|
| | | return length
|
| | |
|
| | | def GetBuffer(self):
|
| | | data = ''
|
| | | data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
|
| | | data = CommFunc.WriteDWORD(data, self.MapID)
|
| | | data = CommFunc.WriteWORD(data, self.FuncLineID)
|
| | | data = CommFunc.WriteBYTE(data, self.PrizeItemCount)
|
| | | for i in range(self.PrizeItemCount):
|
| | | data = CommFunc.WriteDWORD(data, self.PrizeItemIDList[i])
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | Head:%s,
|
| | | MapID:%d,
|
| | | FuncLineID:%d,
|
| | | PrizeItemCount:%d,
|
| | | PrizeItemIDList:%s
|
| | | '''\
|
| | | %(
|
| | | self.Head.OutputString(),
|
| | | self.MapID,
|
| | | self.FuncLineID,
|
| | | self.PrizeItemCount,
|
| | | "..."
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagMCCuntomFBPrizeInfo=tagMCCuntomFBPrizeInfo()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCCuntomFBPrizeInfo.Head.Cmd,m_NAtagMCCuntomFBPrizeInfo.Head.SubCmd))] = m_NAtagMCCuntomFBPrizeInfo
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # B2 10 仙盟联赛玩家排名信息 #tagMCFamilyWarBillboard
|
| | |
|
| | | class tagMCFamilyWarPlayer(Structure):
|
| | |
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # B2 13 天星塔通关层数 #tagMCSkyTowerInfo
|
| | |
|
| | | class tagMCSkyTowerInfo(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("Cmd", c_ubyte),
|
| | | ("SubCmd", c_ubyte),
|
| | | ("Floor", c_int), # 已通关层
|
| | | ]
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Cmd = 0xB2
|
| | | self.SubCmd = 0x13
|
| | | 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 = 0xB2
|
| | | self.SubCmd = 0x13
|
| | | self.Floor = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagMCSkyTowerInfo)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// B2 13 天星塔通关层数 //tagMCSkyTowerInfo:
|
| | | Cmd:%s,
|
| | | SubCmd:%s,
|
| | | Floor:%d
|
| | | '''\
|
| | | %(
|
| | | self.Cmd,
|
| | | self.SubCmd,
|
| | | self.Floor
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagMCSkyTowerInfo=tagMCSkyTowerInfo()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCSkyTowerInfo.Cmd,m_NAtagMCSkyTowerInfo.SubCmd))] = m_NAtagMCSkyTowerInfo
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # B2 16 开始自定义场景结果 #tagMCStartCustomSceneResult
|
| | |
|
| | | class tagMCStartCustomSceneResult(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("Cmd", c_ubyte),
|
| | | ("SubCmd", c_ubyte),
|
| | | ("MapID", c_int), |
| | | ("FuncLineID", c_ushort), |
| | | ("Result", c_ubyte), #是否允许
|
| | | ]
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Cmd = 0xB2
|
| | | self.SubCmd = 0x16
|
| | | 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 = 0xB2
|
| | | self.SubCmd = 0x16
|
| | | self.MapID = 0
|
| | | self.FuncLineID = 0
|
| | | self.Result = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagMCStartCustomSceneResult)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// B2 16 开始自定义场景结果 //tagMCStartCustomSceneResult:
|
| | | Cmd:%s,
|
| | | SubCmd:%s,
|
| | | MapID:%d,
|
| | | FuncLineID:%d,
|
| | | Result:%d
|
| | | '''\
|
| | | %(
|
| | | self.Cmd,
|
| | | self.SubCmd,
|
| | | self.MapID,
|
| | | self.FuncLineID,
|
| | | self.Result
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagMCStartCustomSceneResult=tagMCStartCustomSceneResult()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCStartCustomSceneResult.Cmd,m_NAtagMCStartCustomSceneResult.SubCmd))] = m_NAtagMCStartCustomSceneResult
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | #B2 02 推送提醒设置通知 #tagMCPushNotificationsSetting
|
| | |
|
| | | class tagMCPushNotificationsSetting(Structure):
|
| | |
| | |
|
| | | m_NAtagMCZhuXianBossCnt=tagMCZhuXianBossCnt()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCZhuXianBossCnt.Cmd,m_NAtagMCZhuXianBossCnt.SubCmd))] = m_NAtagMCZhuXianBossCnt
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # B2 13 诛仙塔通关层数 #tagMCZhuXianTowerInfo
|
| | |
|
| | | class tagMCZhuXianTowerInfo(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("Cmd", c_ubyte),
|
| | | ("SubCmd", c_ubyte),
|
| | | ("Floor", c_int), # 已通关层
|
| | | ("LastFloor", c_int), # 上次挑战层
|
| | | ]
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Cmd = 0xB2
|
| | | self.SubCmd = 0x13
|
| | | 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 = 0xB2
|
| | | self.SubCmd = 0x13
|
| | | self.Floor = 0
|
| | | self.LastFloor = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagMCZhuXianTowerInfo)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// B2 13 诛仙塔通关层数 //tagMCZhuXianTowerInfo:
|
| | | Cmd:%s,
|
| | | SubCmd:%s,
|
| | | Floor:%d,
|
| | | LastFloor:%d
|
| | | '''\
|
| | | %(
|
| | | self.Cmd,
|
| | | self.SubCmd,
|
| | | self.Floor,
|
| | | self.LastFloor
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagMCZhuXianTowerInfo=tagMCZhuXianTowerInfo()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCZhuXianTowerInfo.Cmd,m_NAtagMCZhuXianTowerInfo.SubCmd))] = m_NAtagMCZhuXianTowerInfo
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|