| | |
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # A4 14 查看目标仙盟 #tagCGViewTagFamily
|
| | |
|
| | | class tagCGViewTagFamily(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("Cmd", c_ubyte),
|
| | | ("SubCmd", c_ubyte),
|
| | | ("TagFamilyID", c_int), # 目标仙盟ID,支持查看跨服仙盟
|
| | | ]
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Cmd = 0xA4
|
| | | self.SubCmd = 0x14
|
| | | 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 = 0xA4
|
| | | self.SubCmd = 0x14
|
| | | self.TagFamilyID = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagCGViewTagFamily)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// A4 14 查看目标仙盟 //tagCGViewTagFamily:
|
| | | Cmd:%s,
|
| | | SubCmd:%s,
|
| | | TagFamilyID:%d
|
| | | '''\
|
| | | %(
|
| | | self.Cmd,
|
| | | self.SubCmd,
|
| | | self.TagFamilyID
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagCGViewTagFamily=tagCGViewTagFamily()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCGViewTagFamily.Cmd,m_NAtagCGViewTagFamily.SubCmd))] = m_NAtagCGViewTagFamily
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # A9 03 关注BOSS刷新 #tagCGAttentionBoss
|
| | |
|
| | | class tagCGAttentionBoss(Structure):
|
| | |
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # C0 26 仙盟攻城战查询 #tagCGFamilyGCZQuery
|
| | |
|
| | | class tagCGFamilyGCZQuery(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("Cmd", c_ubyte),
|
| | | ("SubCmd", c_ubyte),
|
| | | ("QueryType", c_ubyte), #查询类型:1-成员捐献值;2-进入城池场景;3-退出城池场景;4-进入城池;5-退出城池;6-战报;7-分组仙盟成员伤害;
|
| | | ("BatType", c_ubyte), #指定战场类型,需要发送的查询类型: 2、4
|
| | | ("GroupNum", c_ubyte), #指定分组编号,需要发送的查询类型: 2、4
|
| | | ("FamilyID", c_int), #指定仙盟ID或城池ID,查自己盟的可不发,需要发的类型:2、4、6、7
|
| | | ]
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Cmd = 0xC0
|
| | | self.SubCmd = 0x26
|
| | | 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 = 0xC0
|
| | | self.SubCmd = 0x26
|
| | | self.QueryType = 0
|
| | | self.BatType = 0
|
| | | self.GroupNum = 0
|
| | | self.FamilyID = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagCGFamilyGCZQuery)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// C0 26 仙盟攻城战查询 //tagCGFamilyGCZQuery:
|
| | | Cmd:%s,
|
| | | SubCmd:%s,
|
| | | QueryType:%d,
|
| | | BatType:%d,
|
| | | GroupNum:%d,
|
| | | FamilyID:%d
|
| | | '''\
|
| | | %(
|
| | | self.Cmd,
|
| | | self.SubCmd,
|
| | | self.QueryType,
|
| | | self.BatType,
|
| | | self.GroupNum,
|
| | | self.FamilyID
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagCGFamilyGCZQuery=tagCGFamilyGCZQuery()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCGFamilyGCZQuery.Cmd,m_NAtagCGFamilyGCZQuery.SubCmd))] = m_NAtagCGFamilyGCZQuery
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # C0 03 强制退出跨服状态 #tagCGForceQuitCrossState
|
| | |
|
| | | class tagCGForceQuitCrossState(Structure):
|
| | |
| | | ("Cmd", c_ubyte),
|
| | | ("SubCmd", c_ubyte),
|
| | | ("Type", c_ubyte), #榜单类型
|
| | | ("GroupValue1", c_ubyte), # 分组值1
|
| | | ("GroupValue2", c_ubyte), # 分组值2,与分组值1组合归为同组榜单数据
|
| | | ("GroupValue1", c_int), # 分组值1
|
| | | ("GroupValue2", c_int), # 分组值2,与分组值1组合归为同组榜单数据
|
| | | ("StartIndex", c_int), #查看的起始名次索引, 默认0
|
| | | ("WatchCnt", c_ubyte), #查看条数,默认20,最大不超过100
|
| | | ("WatchID", c_int), #查看指定ID名次前后,如玩家ID、家族ID等
|
| | |
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # C1 25 仙盟攻城战攻击 #tagCMFamilyGCZAtk
|
| | |
|
| | | class tagCMFamilyGCZAtk(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("Cmd", c_ubyte),
|
| | | ("SubCmd", c_ubyte),
|
| | | ("AtkType", c_ubyte), #攻击类型: 1-普通单攻;2-技能单攻;3-技能群攻;
|
| | | ("TagCityID", c_int), #目标城池ID,一般是仙盟ID或者特殊城池ID如修罗城城池,普攻单攻需指定目标,群攻技能发0
|
| | | ("TagGuardID", c_int), #目标守卫ID,一般是玩家ID或者特殊守卫ID如修罗城守卫,普攻单攻需指定目标,技能攻击发0
|
| | | ]
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Cmd = 0xC1
|
| | | self.SubCmd = 0x25
|
| | | 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 = 0xC1
|
| | | self.SubCmd = 0x25
|
| | | self.AtkType = 0
|
| | | self.TagCityID = 0
|
| | | self.TagGuardID = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagCMFamilyGCZAtk)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// C1 25 仙盟攻城战攻击 //tagCMFamilyGCZAtk:
|
| | | Cmd:%s,
|
| | | SubCmd:%s,
|
| | | AtkType:%d,
|
| | | TagCityID:%d,
|
| | | TagGuardID:%d
|
| | | '''\
|
| | | %(
|
| | | self.Cmd,
|
| | | self.SubCmd,
|
| | | self.AtkType,
|
| | | self.TagCityID,
|
| | | self.TagGuardID
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagCMFamilyGCZAtk=tagCMFamilyGCZAtk()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMFamilyGCZAtk.Cmd,m_NAtagCMFamilyGCZAtk.SubCmd))] = m_NAtagCMFamilyGCZAtk
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # C1 24 仙盟攻城战捐献 #tagCMFamilyGCZContribution
|
| | |
|
| | | class tagCMFamilyGCZContribution(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("Cmd", c_ubyte),
|
| | | ("SubCmd", c_ubyte),
|
| | | ("ContributionType", c_ubyte), #捐献类型: 0-低级;1-高级
|
| | | ("UseCount", c_int), #物品捐献时使用个数
|
| | | ]
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Cmd = 0xC1
|
| | | self.SubCmd = 0x24
|
| | | 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 = 0xC1
|
| | | self.SubCmd = 0x24
|
| | | self.ContributionType = 0
|
| | | self.UseCount = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagCMFamilyGCZContribution)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// C1 24 仙盟攻城战捐献 //tagCMFamilyGCZContribution:
|
| | | Cmd:%s,
|
| | | SubCmd:%s,
|
| | | ContributionType:%d,
|
| | | UseCount:%d
|
| | | '''\
|
| | | %(
|
| | | self.Cmd,
|
| | | self.SubCmd,
|
| | | self.ContributionType,
|
| | | self.UseCount
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagCMFamilyGCZContribution=tagCMFamilyGCZContribution()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMFamilyGCZContribution.Cmd,m_NAtagCMFamilyGCZContribution.SubCmd))] = m_NAtagCMFamilyGCZContribution
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # C1 26 仙盟攻城战竞猜 #tagCMFamilyGCZGuess
|
| | |
|
| | | class tagCMFamilyGCZGuess(Structure):
|
| | | Head = tagHead()
|
| | | SelectCnt = 0 #(BYTE SelectCnt)
|
| | | SelectFamilyIDList = list() #(vector<DWORD> SelectFamilyIDList)// 竞猜选择的仙盟ID排名顺序
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Head.Cmd = 0xC1
|
| | | self.Head.SubCmd = 0x26
|
| | | return
|
| | |
|
| | | def ReadData(self, _lpData, _pos=0, _Len=0):
|
| | | self.Clear()
|
| | | _pos = self.Head.ReadData(_lpData, _pos)
|
| | | self.SelectCnt,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | for i in range(self.SelectCnt):
|
| | | value,_pos=CommFunc.ReadDWORD(_lpData,_pos)
|
| | | self.SelectFamilyIDList.append(value)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.Head = tagHead()
|
| | | self.Head.Clear()
|
| | | self.Head.Cmd = 0xC1
|
| | | self.Head.SubCmd = 0x26
|
| | | self.SelectCnt = 0
|
| | | self.SelectFamilyIDList = list()
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += self.Head.GetLength()
|
| | | length += 1
|
| | | length += 4 * self.SelectCnt
|
| | |
|
| | | return length
|
| | |
|
| | | def GetBuffer(self):
|
| | | data = ''
|
| | | data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
|
| | | data = CommFunc.WriteBYTE(data, self.SelectCnt)
|
| | | for i in range(self.SelectCnt):
|
| | | data = CommFunc.WriteDWORD(data, self.SelectFamilyIDList[i])
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | Head:%s,
|
| | | SelectCnt:%d,
|
| | | SelectFamilyIDList:%s
|
| | | '''\
|
| | | %(
|
| | | self.Head.OutputString(),
|
| | | self.SelectCnt,
|
| | | "..."
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagCMFamilyGCZGuess=tagCMFamilyGCZGuess()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMFamilyGCZGuess.Head.Cmd,m_NAtagCMFamilyGCZGuess.Head.SubCmd))] = m_NAtagCMFamilyGCZGuess
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # C1 27 仙盟攻城战圣泉抽奖 #tagCMFamilyGCZSQ
|
| | |
|
| | | class tagCMFamilyGCZSQ(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("Cmd", c_ubyte),
|
| | | ("SubCmd", c_ubyte),
|
| | | ("GridNum", c_ubyte), # 选中格子编号,1~n
|
| | | ]
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Cmd = 0xC1
|
| | | self.SubCmd = 0x27
|
| | | 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 = 0xC1
|
| | | self.SubCmd = 0x27
|
| | | self.GridNum = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagCMFamilyGCZSQ)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// C1 27 仙盟攻城战圣泉抽奖 //tagCMFamilyGCZSQ:
|
| | | Cmd:%s,
|
| | | SubCmd:%s,
|
| | | GridNum:%d
|
| | | '''\
|
| | | %(
|
| | | self.Cmd,
|
| | | self.SubCmd,
|
| | | self.GridNum
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagCMFamilyGCZSQ=tagCMFamilyGCZSQ()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMFamilyGCZSQ.Cmd,m_NAtagCMFamilyGCZSQ.SubCmd))] = m_NAtagCMFamilyGCZSQ
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # C1 10 幸运云购购买 #tagCMLuckyCloudBuy
|
| | |
|
| | | class tagCMLuckyCloudBuy(Structure):
|