| | |
| | | LV = 0 #(WORD LV)//等级
|
| | | LVEx = 0 #(WORD LVEx)//玩家等级副本,用于转生
|
| | | LV2 = 0 #(WORD LV2)//大师等级
|
| | | ExpPoint = 0 #(WORD ExpPoint)//扩充经验点数
|
| | | ExpPoint = 0 #(DWORD ExpPoint)//扩充经验点数
|
| | | TotalExp = 0 #(DWORD TotalExp)//总经验
|
| | | Family = 0 #(DWORD Family)//家族
|
| | | FamilyName = "" #(char FamilyName[33])//家族名称
|
| | |
| | | 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)//上周在线时间
|
| | |
| | | OperateInfo = 0 #(DWORD OperateInfo)//玩家附加运营商信息
|
| | | Operate = "" #(char Operate[15])//所属运营商平台名
|
| | | ServerID = 0 #(DWORD ServerID)//所属区服ID
|
| | | ExAttr15 = 0 #(DWORD ExAttr15)//预留的扩展属性字段,用来存放项目特定的属性
|
| | | ExAttr16 = 0 #(DWORD ExAttr16)//预留的扩展属性字段,用来存放项目特定的属性
|
| | | ExAttr17 = 0 #(DWORD ExAttr17)//预留的扩展属性字段,用来存放项目特定的属性
|
| | | ExAttr18 = 0 #(DWORD ExAttr18)//预留的扩展属性字段,用来存放项目特定的属性
|
| | | ExAttr19 = 0 #(DWORD ExAttr19)//预留的扩展属性字段,用来存放项目特定的属性
|
| | | ExAttr20 = 0 #(DWORD ExAttr20)//预留的扩展属性字段,用来存放项目特定的属性
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | |
| | | self.LV,_pos = CommFunc.ReadWORD(_lpData, _pos)
|
| | | self.LVEx,_pos = CommFunc.ReadWORD(_lpData, _pos)
|
| | | self.LV2,_pos = CommFunc.ReadWORD(_lpData, _pos)
|
| | | self.ExpPoint,_pos = CommFunc.ReadWORD(_lpData, _pos)
|
| | | self.ExpPoint,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.TotalExp,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.Family,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.FamilyName,_pos = CommFunc.ReadString(_lpData, _pos,33)
|
| | |
| | | self.OperateInfo,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.Operate,_pos = CommFunc.ReadString(_lpData, _pos,15)
|
| | | self.ServerID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.ExAttr15,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.ExAttr16,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.ExAttr17,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.ExAttr18,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.ExAttr19,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.ExAttr20,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | |
| | | self.OperateInfo = 0
|
| | | self.Operate = ""
|
| | | self.ServerID = 0
|
| | | self.ExAttr15 = 0
|
| | | self.ExAttr16 = 0
|
| | | self.ExAttr17 = 0
|
| | | self.ExAttr18 = 0
|
| | | self.ExAttr19 = 0
|
| | | self.ExAttr20 = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | |
| | | length += 2
|
| | | length += 2
|
| | | length += 2
|
| | | length += 2
|
| | | length += 4
|
| | | length += 4
|
| | | length += 4
|
| | | length += 33
|
| | |
| | | length += 4
|
| | | length += 15
|
| | | length += 4
|
| | | length += 4
|
| | | length += 4
|
| | | length += 4
|
| | | length += 4
|
| | | length += 4
|
| | | length += 4
|
| | |
|
| | | return length
|
| | |
|
| | |
| | | data = CommFunc.WriteWORD(data, self.LV)
|
| | | data = CommFunc.WriteWORD(data, self.LVEx)
|
| | | data = CommFunc.WriteWORD(data, self.LV2)
|
| | | data = CommFunc.WriteWORD(data, self.ExpPoint)
|
| | | data = CommFunc.WriteDWORD(data, self.ExpPoint)
|
| | | data = CommFunc.WriteDWORD(data, self.TotalExp)
|
| | | data = CommFunc.WriteDWORD(data, self.Family)
|
| | | data = CommFunc.WriteString(data, 33, self.FamilyName)
|
| | |
| | | data = CommFunc.WriteDWORD(data, self.OperateInfo)
|
| | | data = CommFunc.WriteString(data, 15, self.Operate)
|
| | | data = CommFunc.WriteDWORD(data, self.ServerID)
|
| | | data = CommFunc.WriteDWORD(data, self.ExAttr15)
|
| | | data = CommFunc.WriteDWORD(data, self.ExAttr16)
|
| | | data = CommFunc.WriteDWORD(data, self.ExAttr17)
|
| | | data = CommFunc.WriteDWORD(data, self.ExAttr18)
|
| | | data = CommFunc.WriteDWORD(data, self.ExAttr19)
|
| | | data = CommFunc.WriteDWORD(data, self.ExAttr20)
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | |
| | | ExAttr14:%d,
|
| | | OperateInfo:%d,
|
| | | Operate:%s,
|
| | | ServerID:%d
|
| | | ServerID:%d,
|
| | | ExAttr15:%d,
|
| | | ExAttr16:%d,
|
| | | ExAttr17:%d,
|
| | | ExAttr18:%d,
|
| | | ExAttr19:%d,
|
| | | ExAttr20:%d
|
| | | '''\
|
| | | %(
|
| | | self.Head.OutputString(),
|
| | |
| | | self.ExAttr14,
|
| | | self.OperateInfo,
|
| | | self.Operate,
|
| | | self.ServerID
|
| | | self.ServerID,
|
| | | self.ExAttr15,
|
| | | self.ExAttr16,
|
| | | self.ExAttr17,
|
| | | self.ExAttr18,
|
| | | self.ExAttr19,
|
| | | self.ExAttr20
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
| | |
|
| | | m_NAtagCheckSecurityCardResult=tagCheckSecurityCardResult()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCheckSecurityCardResult.Cmd,m_NAtagCheckSecurityCardResult.SubCmd))] = m_NAtagCheckSecurityCardResult
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | #01 32 创角成功 #tagCreateRoleSucess
|
| | |
|
| | | class tagCreateRoleSucess(Structure):
|
| | | Head = tagHead()
|
| | | PlayerID = 0 #(DWORD PlayerID)
|
| | | PlayerName = "" #(char PlayerName[33])
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Head.Cmd = 0x01
|
| | | self.Head.SubCmd = 0x32
|
| | | return
|
| | |
|
| | | def ReadData(self, _lpData, _pos=0, _Len=0):
|
| | | self.Clear()
|
| | | _pos = self.Head.ReadData(_lpData, _pos)
|
| | | self.PlayerID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.PlayerName,_pos = CommFunc.ReadString(_lpData, _pos,33)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.Head = tagHead()
|
| | | self.Head.Clear()
|
| | | self.Head.Cmd = 0x01
|
| | | self.Head.SubCmd = 0x32
|
| | | self.PlayerID = 0
|
| | | self.PlayerName = ""
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += self.Head.GetLength()
|
| | | length += 4
|
| | | length += 33
|
| | |
|
| | | return length
|
| | |
|
| | | def GetBuffer(self):
|
| | | data = ''
|
| | | data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
|
| | | data = CommFunc.WriteDWORD(data, self.PlayerID)
|
| | | data = CommFunc.WriteString(data, 33, self.PlayerName)
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | Head:%s,
|
| | | PlayerID:%d,
|
| | | PlayerName:%s
|
| | | '''\
|
| | | %(
|
| | | self.Head.OutputString(),
|
| | | self.PlayerID,
|
| | | self.PlayerName
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagCreateRoleSucess=tagCreateRoleSucess()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCreateRoleSucess.Head.Cmd,m_NAtagCreateRoleSucess.Head.SubCmd))] = m_NAtagCreateRoleSucess
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | |
| | | _fields_ = [
|
| | | ("Cmd", c_ubyte),
|
| | | ("SubCmd", c_ubyte),
|
| | | ("StartYear", c_ushort), #年, 如果填写0, 就隐藏此窗口
|
| | | ("StartYear", c_ushort), #年, 如果填写0, 就隐藏此窗口
|
| | | ("StartMonth", c_ushort), #月
|
| | | ("StartDate", c_ubyte), #日
|
| | | ("EndYear", c_ushort),
|
| | |
| | | PlayerID = 0 #(DWORD PlayerID)
|
| | | FamilyNameLen = 0 #(BYTE FamilyNameLen)
|
| | | FamilyName = "" #(String FamilyName)//size = FamilyNameLen
|
| | | FamilyMemberLV = 0 #(BYTE FamilyMemberLV)//玩家在家族中的职位 |
| | | FamilyMemberLV = 0 #(BYTE FamilyMemberLV)//玩家在家族中的职位 |
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | |
| | | GradID = 0 #(DWORD GradID)//头衔ID
|
| | | State = 0 #(BYTE State)//装备和使用状态 按位判定,第一位0未装备1已装备 第二位0未使用 1使用
|
| | | CreateTime = "" #(char CreateTime[30])//获得时间
|
| | | ExpireTime = 0 #(DWORD ExpireTime)// 持续时间,0为配表固定时间
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | |
| | | self.GradID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.State,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.CreateTime,_pos = CommFunc.ReadString(_lpData, _pos,30)
|
| | | self.ExpireTime,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.GradID = 0
|
| | | self.State = 0
|
| | | self.CreateTime = ""
|
| | | self.ExpireTime = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | |
| | | length += 4
|
| | | length += 1
|
| | | length += 30
|
| | | length += 4
|
| | |
|
| | | return length
|
| | |
|
| | |
| | | data = CommFunc.WriteDWORD(data, self.GradID)
|
| | | data = CommFunc.WriteBYTE(data, self.State)
|
| | | data = CommFunc.WriteString(data, 30, self.CreateTime)
|
| | | data = CommFunc.WriteDWORD(data, self.ExpireTime)
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | GradID:%d,
|
| | | State:%d,
|
| | | CreateTime:%s
|
| | | CreateTime:%s,
|
| | | ExpireTime:%d
|
| | | '''\
|
| | | %(
|
| | | self.GradID,
|
| | | self.State,
|
| | | self.CreateTime
|
| | | self.CreateTime,
|
| | | self.ExpireTime
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
| | | Head = tagHead()
|
| | | GradID = 0 #(DWORD GradID)//头衔ID
|
| | | CreateTime = "" #(char CreateTime[30])//获得时间
|
| | | ExpireTime = 0 #(DWORD ExpireTime)// 持续时间,0为配表固定时间
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | |
| | | _pos = self.Head.ReadData(_lpData, _pos)
|
| | | self.GradID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.CreateTime,_pos = CommFunc.ReadString(_lpData, _pos,30)
|
| | | self.ExpireTime,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | |
| | | self.Head.SubCmd = 0x36
|
| | | self.GradID = 0
|
| | | self.CreateTime = ""
|
| | | self.ExpireTime = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | |
| | | length += self.Head.GetLength()
|
| | | length += 4
|
| | | length += 30
|
| | | length += 4
|
| | |
|
| | | return length
|
| | |
|
| | |
| | | data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
|
| | | data = CommFunc.WriteDWORD(data, self.GradID)
|
| | | data = CommFunc.WriteString(data, 30, self.CreateTime)
|
| | | data = CommFunc.WriteDWORD(data, self.ExpireTime)
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | Head:%s,
|
| | | GradID:%d,
|
| | | CreateTime:%s
|
| | | CreateTime:%s,
|
| | | ExpireTime:%d
|
| | | '''\
|
| | | %(
|
| | | self.Head.OutputString(),
|
| | | self.GradID,
|
| | | self.CreateTime
|
| | | self.CreateTime,
|
| | | self.ExpireTime
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
| | | #03 09 主角登录时候的简短信息#tagPlayerLoginInfo
|
| | |
|
| | | class tagLoginInfoEquip(Structure):
|
| | | ItemPlace = 0 #(BYTE ItemPlace)
|
| | | ItemID = 0 #(DWORD ItemID)
|
| | | IsSuite = 0 #(BYTE IsSuite)//是否已经套装化
|
| | | UserDataLen = 0 #(DWORD UserDataLen)
|
| | | UserData = "" #(String UserData)//size = UserDataLen
|
| | | data = None
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("ItemID", c_int), |
| | | ]
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | return
|
| | |
|
| | | def ReadData(self, _lpData, _pos=0, _Len=0):
|
| | | def ReadData(self, stringData, _pos=0, _len=0):
|
| | | self.Clear()
|
| | | self.ItemPlace,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.ItemID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.IsSuite,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.UserDataLen,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.UserData,_pos = CommFunc.ReadString(_lpData, _pos,self.UserDataLen)
|
| | | return _pos
|
| | | memmove(addressof(self), stringData[_pos:], self.GetLength())
|
| | | return _pos + self.GetLength()
|
| | |
|
| | | def Clear(self):
|
| | | self.ItemPlace = 0
|
| | | self.ItemID = 0
|
| | | self.IsSuite = 0
|
| | | self.UserDataLen = 0
|
| | | self.UserData = ""
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += 1
|
| | | length += 4
|
| | | length += 1
|
| | | length += 4
|
| | | length += len(self.UserData)
|
| | |
|
| | | return length
|
| | | return sizeof(tagLoginInfoEquip)
|
| | |
|
| | | def GetBuffer(self):
|
| | | data = ''
|
| | | data = CommFunc.WriteBYTE(data, self.ItemPlace)
|
| | | data = CommFunc.WriteDWORD(data, self.ItemID)
|
| | | data = CommFunc.WriteBYTE(data, self.IsSuite)
|
| | | data = CommFunc.WriteDWORD(data, self.UserDataLen)
|
| | | data = CommFunc.WriteString(data, self.UserDataLen, self.UserData)
|
| | | return data
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | ItemPlace:%d,
|
| | | ItemID:%d,
|
| | | IsSuite:%d,
|
| | | UserDataLen:%d,
|
| | | UserData:%s
|
| | | DumpString = '''//03 09 主角登录时候的简短信息//tagPlayerLoginInfo:
|
| | | ItemID:%d
|
| | | '''\
|
| | | %(
|
| | | self.ItemPlace,
|
| | | self.ItemID,
|
| | | self.IsSuite,
|
| | | self.UserDataLen,
|
| | | self.UserData
|
| | | self.ItemID
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
| | | EquipCount = 0 #(BYTE EquipCount)
|
| | | EquipInfo = list() #(vector<tagLoginInfoEquip> EquipInfo)//size = EquipCount
|
| | | EquipShowSwitch = 0 #(DWORD EquipShowSwitch)//玩家装备显示开关
|
| | | ExAttr15 = 0 #(DWORD ExAttr15)//预留的扩展属性字段,用来存放项目特定的属性
|
| | | ExAttr16 = 0 #(DWORD ExAttr16)//预留的扩展属性字段,用来存放项目特定的属性
|
| | | ExAttr17 = 0 #(DWORD ExAttr17)//预留的扩展属性字段,用来存放项目特定的属性
|
| | | ExAttr18 = 0 #(DWORD ExAttr18)//预留的扩展属性字段,用来存放项目特定的属性
|
| | | ExAttr19 = 0 #(DWORD ExAttr19)//预留的扩展属性字段,用来存放项目特定的属性
|
| | | ExAttr20 = 0 #(DWORD ExAttr20)//预留的扩展属性字段,用来存放项目特定的属性
|
| | | IPLen = 0 #(BYTE IPLen)
|
| | | IP = "" #(String IP)// 跨服IP
|
| | | Port = 0 #(WORD Port)// 跨服端口
|
| | | CrossState = 0 #(BYTE CrossState)// 跨服状态0-非跨服状态,1-跨服状态,2-跨服状态异常
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | |
| | | _pos = temEquipInfo.ReadData(_lpData, _pos)
|
| | | self.EquipInfo.append(temEquipInfo)
|
| | | self.EquipShowSwitch,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.ExAttr15,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.ExAttr16,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.ExAttr17,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.ExAttr18,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.ExAttr19,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.ExAttr20,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.IPLen,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.IP,_pos = CommFunc.ReadString(_lpData, _pos,self.IPLen)
|
| | | self.Port,_pos = CommFunc.ReadWORD(_lpData, _pos)
|
| | | self.CrossState,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | |
| | | self.EquipCount = 0
|
| | | self.EquipInfo = list()
|
| | | self.EquipShowSwitch = 0
|
| | | self.ExAttr15 = 0
|
| | | self.ExAttr16 = 0
|
| | | self.ExAttr17 = 0
|
| | | self.ExAttr18 = 0
|
| | | self.ExAttr19 = 0
|
| | | self.ExAttr20 = 0
|
| | | self.IPLen = 0
|
| | | self.IP = ""
|
| | | self.Port = 0
|
| | | self.CrossState = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | |
| | | for i in range(self.EquipCount):
|
| | | length += self.EquipInfo[i].GetLength()
|
| | | length += 4
|
| | | length += 4
|
| | | length += 4
|
| | | length += 4
|
| | | length += 4
|
| | | length += 4
|
| | | length += 4
|
| | | length += 1
|
| | | length += len(self.IP)
|
| | | length += 2
|
| | | length += 1
|
| | |
|
| | | return length
|
| | |
|
| | |
| | | for i in range(self.EquipCount):
|
| | | data = CommFunc.WriteString(data, self.EquipInfo[i].GetLength(), self.EquipInfo[i].GetBuffer())
|
| | | data = CommFunc.WriteDWORD(data, self.EquipShowSwitch)
|
| | | data = CommFunc.WriteDWORD(data, self.ExAttr15)
|
| | | data = CommFunc.WriteDWORD(data, self.ExAttr16)
|
| | | data = CommFunc.WriteDWORD(data, self.ExAttr17)
|
| | | data = CommFunc.WriteDWORD(data, self.ExAttr18)
|
| | | data = CommFunc.WriteDWORD(data, self.ExAttr19)
|
| | | data = CommFunc.WriteDWORD(data, self.ExAttr20)
|
| | | data = CommFunc.WriteBYTE(data, self.IPLen)
|
| | | data = CommFunc.WriteString(data, self.IPLen, self.IP)
|
| | | data = CommFunc.WriteWORD(data, self.Port)
|
| | | data = CommFunc.WriteBYTE(data, self.CrossState)
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | |
| | | HavePswLV2:%d,
|
| | | EquipCount:%d,
|
| | | EquipInfo:%s,
|
| | | EquipShowSwitch:%d
|
| | | EquipShowSwitch:%d,
|
| | | ExAttr15:%d,
|
| | | ExAttr16:%d,
|
| | | ExAttr17:%d,
|
| | | ExAttr18:%d,
|
| | | ExAttr19:%d,
|
| | | ExAttr20:%d,
|
| | | IPLen:%d,
|
| | | IP:%s,
|
| | | Port:%d,
|
| | | CrossState:%d
|
| | | '''\
|
| | | %(
|
| | | self.Head.OutputString(),
|
| | |
| | | self.HavePswLV2,
|
| | | self.EquipCount,
|
| | | "...",
|
| | | self.EquipShowSwitch
|
| | | self.EquipShowSwitch,
|
| | | self.ExAttr15,
|
| | | self.ExAttr16,
|
| | | self.ExAttr17,
|
| | | self.ExAttr18,
|
| | | self.ExAttr19,
|
| | | self.ExAttr20,
|
| | | self.IPLen,
|
| | | self.IP,
|
| | | self.Port,
|
| | | self.CrossState
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
| | | class tagFBEventList(Structure):
|
| | | Head = tagHead()
|
| | | EventCount = 0 #(BYTE EventCount)//副本活动数
|
| | | EventList = list() #(vector<tagFBEventDetail> EventList)//副本活动列表 |
| | | EventList = list() #(vector<tagFBEventDetail> EventList)//副本活动列表 |
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | |
| | | #04 34 周围玩家出现合并封包#tagAreaPlayerAppearEx
|
| | |
|
| | | class tagEquipInfo(Structure):
|
| | | Place = 0 #(BYTE Place)//装备位置
|
| | | ItemID = 0 #(DWORD ItemID)//物品ID
|
| | | IsSuite = 0 #(BYTE IsSuite)//是否已经套装化
|
| | | UserDataLen = 0 #(DWORD UserDataLen)
|
| | | UserData = "" #(String UserData)// 附加数据
|
| | | data = None
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("ItemID", c_int), #物品ID
|
| | | ]
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | return
|
| | |
|
| | | def ReadData(self, _lpData, _pos=0, _Len=0):
|
| | | def ReadData(self, stringData, _pos=0, _len=0):
|
| | | self.Clear()
|
| | | self.Place,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.ItemID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.IsSuite,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.UserDataLen,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.UserData,_pos = CommFunc.ReadString(_lpData, _pos,self.UserDataLen)
|
| | | return _pos
|
| | | memmove(addressof(self), stringData[_pos:], self.GetLength())
|
| | | return _pos + self.GetLength()
|
| | |
|
| | | def Clear(self):
|
| | | self.Place = 0
|
| | | self.ItemID = 0
|
| | | self.IsSuite = 0
|
| | | self.UserDataLen = 0
|
| | | self.UserData = ""
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += 1
|
| | | length += 4
|
| | | length += 1
|
| | | length += 4
|
| | | length += len(self.UserData)
|
| | |
|
| | | return length
|
| | | return sizeof(tagEquipInfo)
|
| | |
|
| | | def GetBuffer(self):
|
| | | data = ''
|
| | | data = CommFunc.WriteBYTE(data, self.Place)
|
| | | data = CommFunc.WriteDWORD(data, self.ItemID)
|
| | | data = CommFunc.WriteBYTE(data, self.IsSuite)
|
| | | data = CommFunc.WriteDWORD(data, self.UserDataLen)
|
| | | data = CommFunc.WriteString(data, self.UserDataLen, self.UserData)
|
| | | return data
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | Place:%d,
|
| | | ItemID:%d,
|
| | | IsSuite:%d,
|
| | | UserDataLen:%d,
|
| | | UserData:%s
|
| | | DumpString = '''//04 34 周围玩家出现合并封包//tagAreaPlayerAppearEx:
|
| | | ItemID:%d
|
| | | '''\
|
| | | %(
|
| | | self.Place,
|
| | | self.ItemID,
|
| | | self.IsSuite,
|
| | | self.UserDataLen,
|
| | | self.UserData
|
| | | self.ItemID
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
| | | TeamID = 0 #(DWORD TeamID)//组队ID
|
| | | HP = 0 #(DWORD HP)
|
| | | MaxHP = 0 #(DWORD MaxHP)
|
| | | PlayerState = 0 #(BYTE PlayerState)//TClientPlayerState 玩家状态 打坐/马上/人镖合一
|
| | | PlayerState = 0 #(BYTE PlayerState)//TClientPlayerState 玩家状态 打坐/马上/人镖合一
|
| | | IsHideMask = 0 #(BYTE IsHideMask)
|
| | | Country = 0 #(BYTE Country)//玩家国家
|
| | | FamilyID = 0 #(DWORD FamilyID)//家族ID
|
| | |
| | | ExAttr5 = 0 #(DWORD ExAttr5)//预留的扩展属性字段,用来存放项目特定的属性
|
| | | ServerID = 0 #(DWORD ServerID)//所属区服ID
|
| | | State = 0 #(BYTE State)// 0.正常在线1.脱机挂在线 2脱机挂死亡
|
| | | ExAttr15 = 0 #(DWORD ExAttr15)//预留的扩展属性字段,用来存放项目特定的属性
|
| | | ExAttr16 = 0 #(DWORD ExAttr16)//预留的扩展属性字段,用来存放项目特定的属性
|
| | | ExAttr17 = 0 #(DWORD ExAttr17)//预留的扩展属性字段,用来存放项目特定的属性
|
| | | ExAttr18 = 0 #(DWORD ExAttr18)//预留的扩展属性字段,用来存放项目特定的属性
|
| | | ExAttr19 = 0 #(DWORD ExAttr19)//预留的扩展属性字段,用来存放项目特定的属性
|
| | | ExAttr20 = 0 #(DWORD ExAttr20)//预留的扩展属性字段,用来存放项目特定的属性
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | |
| | | self.ExAttr5,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.ServerID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.State,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.ExAttr15,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.ExAttr16,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.ExAttr17,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.ExAttr18,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.ExAttr19,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.ExAttr20,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | |
| | | self.ExAttr5 = 0
|
| | | self.ServerID = 0
|
| | | self.State = 0
|
| | | self.ExAttr15 = 0
|
| | | self.ExAttr16 = 0
|
| | | self.ExAttr17 = 0
|
| | | self.ExAttr18 = 0
|
| | | self.ExAttr19 = 0
|
| | | self.ExAttr20 = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | |
| | | length += 4
|
| | | length += 4
|
| | | length += 1
|
| | | length += 4
|
| | | length += 4
|
| | | length += 4
|
| | | length += 4
|
| | | length += 4
|
| | | length += 4
|
| | |
|
| | | return length
|
| | |
|
| | |
| | | data = CommFunc.WriteDWORD(data, self.ExAttr5)
|
| | | data = CommFunc.WriteDWORD(data, self.ServerID)
|
| | | data = CommFunc.WriteBYTE(data, self.State)
|
| | | data = CommFunc.WriteDWORD(data, self.ExAttr15)
|
| | | data = CommFunc.WriteDWORD(data, self.ExAttr16)
|
| | | data = CommFunc.WriteDWORD(data, self.ExAttr17)
|
| | | data = CommFunc.WriteDWORD(data, self.ExAttr18)
|
| | | data = CommFunc.WriteDWORD(data, self.ExAttr19)
|
| | | data = CommFunc.WriteDWORD(data, self.ExAttr20)
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | |
| | | ExAttr4:%d,
|
| | | ExAttr5:%d,
|
| | | ServerID:%d,
|
| | | State:%d
|
| | | State:%d,
|
| | | ExAttr15:%d,
|
| | | ExAttr16:%d,
|
| | | ExAttr17:%d,
|
| | | ExAttr18:%d,
|
| | | ExAttr19:%d,
|
| | | ExAttr20:%d
|
| | | '''\
|
| | | %(
|
| | | self.Head.OutputString(),
|
| | |
| | | self.ExAttr4,
|
| | | self.ExAttr5,
|
| | | self.ServerID,
|
| | | self.State
|
| | | self.State,
|
| | | self.ExAttr15,
|
| | | self.ExAttr16,
|
| | | self.ExAttr17,
|
| | | self.ExAttr18,
|
| | | self.ExAttr19,
|
| | | self.ExAttr20
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
| | | ("Cmd", c_ubyte),
|
| | | ("SubCmd", c_ubyte),
|
| | | ("PlayerID", c_int),
|
| | | ("FamilyMemberLV", c_ubyte), #玩家在家族中的职位 |
| | | ("FamilyMemberLV", c_ubyte), #玩家在家族中的职位 |
| | | ]
|
| | |
|
| | | def __init__(self):
|
| | |
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | #04 36 周围玩家家族名刷新#tagPlayerFamilyNameRefresh
|
| | | #04 36 周围玩家家族名刷新#tagPlayerFamilyNameRefresh
|
| | |
|
| | | class tagPlayerFamilyNameRefresh(Structure):
|
| | | Head = tagHead()
|
| | |
| | | PlayerID = 0 #(DWORD PlayerID)
|
| | | FamilyNameLen = 0 #(BYTE FamilyNameLen)
|
| | | FamilyName = "" #(String FamilyName)//size = FamilyNameLen
|
| | | FamilyMemberLV = 0 #(BYTE FamilyMemberLV)//玩家在家族中的职位 |
| | | FamilyMemberLV = 0 #(BYTE FamilyMemberLV)//玩家在家族中的职位 |
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | |
| | | ("Cmd", c_ubyte),
|
| | | ("SubCmd", c_ubyte),
|
| | | ("PlayerID", c_int),
|
| | | ("KillerID", c_int), |
| | | ("KillerType", c_ubyte), |
| | | ]
|
| | |
|
| | | def __init__(self):
|
| | |
| | | self.Cmd = 0x06
|
| | | self.SubCmd = 0x09
|
| | | self.PlayerID = 0
|
| | | self.KillerID = 0
|
| | | self.KillerType = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | |
| | | DumpString = '''//06 09 玩家死亡//tagPlayerDie:
|
| | | Cmd:%s,
|
| | | SubCmd:%s,
|
| | | PlayerID:%d
|
| | | PlayerID:%d,
|
| | | KillerID:%d,
|
| | | KillerType:%d
|
| | | '''\
|
| | | %(
|
| | | self.Cmd,
|
| | | self.SubCmd,
|
| | | self.PlayerID
|
| | | self.PlayerID,
|
| | | self.KillerID,
|
| | | self.KillerType
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
| | | ByObjID = 0 #(DWORD ByObjID)//物品原本在哪个对象身上
|
| | | DropTick = 0 #(DWORD DropTick)//物品掉落Tick
|
| | | UserDataLen = 0 #(WORD UserDataLen)//附加属性长度
|
| | | UserData = "" #(String UserData)//附加属性 size = UserDataLen |
| | | UserData = "" #(String UserData)//附加属性 size = UserDataLen |
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | |
| | | _fields_ = [
|
| | | ("Cmd", c_ubyte),
|
| | | ("SubCmd", c_ubyte),
|
| | | ("MakeType", c_ubyte), #类型 TMakeItemType
|
| | | ("MakeType", c_ubyte), #类型 TMakeItemType
|
| | | ("Result", c_ubyte), #是否成功
|
| | | ]
|
| | |
|
| | |
| | | ("Cmd", c_ubyte),
|
| | | ("SubCmd", c_ubyte),
|
| | | ("PlayerID", c_int),
|
| | | ("PrepareState", c_ubyte), #准备类型, TPreparingState
|
| | | ("PrepareState", c_ubyte), #准备类型, TPreparingState
|
| | | ("MaxTime", c_int), #最大时间
|
| | | ("PrepareID", c_int), #准备ID, 如果是技能, 则是技能ID
|
| | | ]
|
| | |
| | | FamilyName = "" #(String FamilyName)//size = FamilyNameLen
|
| | | Job = 0 #(BYTE Job)//ְҵ
|
| | | FamilyActiveValue = 0 #(DWORD FamilyActiveValue)//本周家族活跃度
|
| | | LastWeekFamilyActiveValue = 0 #(DWORD LastWeekFamilyActiveValue)//上周家族活跃度 |
| | | LastWeekFamilyActiveValue = 0 #(DWORD LastWeekFamilyActiveValue)//上周家族活跃度 |
| | | OfficialRank = 0 #(BYTE OfficialRank)//境界
|
| | | Exattr1 = 0 #(DWORD Exattr1)//扩展属性
|
| | | Exattr2 = 0 #(DWORD Exattr2)//扩展属性
|
| | |
| | | Point = 0 #(DWORD Point)//家族战积分
|
| | | Broadcast = "" #(String Broadcast)//size = BroadcastLen
|
| | | FamilyActiveValue = 0 #(DWORD FamilyActiveValue)//本周家族活跃度
|
| | | LastWeekFamilyActiveValue = 0 #(DWORD LastWeekFamilyActiveValue)//上周家族活跃度 |
| | | LastWeekFamilyActiveValue = 0 #(DWORD LastWeekFamilyActiveValue)//上周家族活跃度 |
| | | Member = list() #(vector<tagRoleFamilyMember> Member)//size = MemberCount
|
| | | Extra1 = 0 #(DWORD Extra1)//附加字段1
|
| | | Extra2 = 0 #(DWORD Extra2)//附加字段2
|
| | |
| | | class tagFamilyTechInfo(Structure):
|
| | | Head = tagHead()
|
| | | TechCount = 0 #(WORD TechCount)//帮会科技数量
|
| | | TechInfoList = list() #(vector<tagTechInfo> TechInfoList)//科技信息列表 |
| | | TechInfoList = list() #(vector<tagTechInfo> TechInfoList)//科技信息列表 |
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | |
| | | #10 01 排行榜信息#tagBillboard 对性能影响比较大, 需要限制tick
|
| | |
|
| | | class tagBillboardList(Structure):
|
| | | ID = 0 #(DWORD ID)// 不一定都能用上,目前用于保存宠物NPCID |
| | | ID = 0 #(DWORD ID)// 不一定都能用上,目前用于保存宠物NPCID |
| | | Name1 = "" #(char Name1[33])//名字1,用来显示排序对象名字
|
| | | Name2 = "" #(char Name2[33])//名字2
|
| | | Type2 = 0 #(BYTE Type2)//附加类型,用来表示排序对象的类型,比如,玩家所属职业门派,宠物类型等
|
| | |
| | | MakerNameLen = 0 #(BYTE MakerNameLen)//制造者名字
|
| | | MakerName = "" #(String MakerName)//size = MakerNameLen
|
| | | UserDataLen = 0 #(DWORD UserDataLen)
|
| | | UserData = "" #(String UserData)//自定义数据 |
| | | UserData = "" #(String UserData)//自定义数据 |
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | |
| | | ("SubCmd", c_ubyte),
|
| | | ("Type", c_ubyte), #答题类型
|
| | | ("QuestionNO", c_ushort), # 答题号
|
| | | ("FunctionNO", c_ubyte), # 功能号 |
| | | ("FunctionNO", c_ubyte), # 功能号 |
| | | ("FunctionOpt1", c_ubyte), #功能选项1
|
| | | ("FunctionOpt2", c_ubyte), #功能选项2
|
| | | ("FunctionOpt3", c_ubyte), #功能选项3
|
| | |
| | | ("PlayerID", c_int), #挂单玩家的id
|
| | | ("FormID", c_int), # 挂单ID
|
| | | ("UnitPrice", c_int), #该单购买元宝的银两单价(每组)
|
| | | ("LefGold", c_int), #该单的剩余购买元宝组数 |
| | | ("LeftTime", c_ushort), #该单的剩余在架时间 |
| | | ("LefGold", c_int), #该单的剩余购买元宝组数 |
| | | ("LeftTime", c_ushort), #该单的剩余在架时间 |
| | | ]
|
| | |
|
| | | def __init__(self):
|
| | |
| | | ("SubCmd", c_ubyte),
|
| | | ("FormID", c_int), # 挂单ID
|
| | | ("UnitPrice", c_int), #该单购买元宝的银两单价(每组)
|
| | | ("LefGold", c_int), #该单的剩余购买元宝组数 |
| | | ("LefGold", c_int), #该单的剩余购买元宝组数 |
| | | ("LeftTime", c_ushort), #该单的剩余在架时间
|
| | | ]
|
| | |
|
| | |
| | | _fields_ = [
|
| | | ("Cmd", c_ubyte),
|
| | | ("SubCmd", c_ubyte),
|
| | | ("LabelID", c_int), # 删除标签 |
| | | ("LabelID", c_int), # 删除标签 |
| | | ]
|
| | |
|
| | | def __init__(self):
|
| | |
| | | class tagHightLadderTopPlayerList(Structure):
|
| | | Head = tagHead()
|
| | | Size = 0 #(BYTE Size)
|
| | | PlayerList = list() #(vector<tagHightLadderPlayerInfo> PlayerList)//玩家信息列表 |
| | | PlayerList = list() #(vector<tagHightLadderPlayerInfo> PlayerList)//玩家信息列表 |
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | |
| | | class tagVsTeam(Structure):
|
| | | TeamIndex = 0 #(BYTE TeamIndex)// 竞技队Index
|
| | | MemberCount = 0 #(WORD MemberCount)// 成员人数
|
| | | Members = list() #(vector<tagVsMemberInfo> Members)// 成员列表 |
| | | Members = list() #(vector<tagVsMemberInfo> Members)// 成员列表 |
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | |
| | | Head = tagHead()
|
| | | MyOrder = 0 #(WORD MyOrder)//自身排名
|
| | | Size = 0 #(BYTE Size)
|
| | | PlayerList = list() #(vector<tagHightLadderPlayerInfo> PlayerList)//玩家信息列表 |
| | | PlayerList = list() #(vector<tagHightLadderPlayerInfo> PlayerList)//玩家信息列表 |
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | |
| | |
|
| | | class tagBourseItem(Structure):
|
| | | ItemGUID = "" #(char ItemGUID[40])
|
| | | PlayerID = 0 #(DWORD PlayerID)//挂单玩家ID |
| | | PlayerID = 0 #(DWORD PlayerID)//挂单玩家ID |
| | | ItemTypeID = 0 #(DWORD ItemTypeID)//物品ID
|
| | | PriceType = 0 #(BYTE PriceType)//出售价格类型
|
| | | PriceCount = 0 #(DWORD PriceCount)//出售价格
|
| | |
| | |
|
| | |
|
| | | m_NAtagGMCmdAnswer=tagGMCmdAnswer()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGMCmdAnswer.Head.Cmd,m_NAtagGMCmdAnswer.Head.SubCmd))] = m_NAtagGMCmdAnswer |
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGMCmdAnswer.Head.Cmd,m_NAtagGMCmdAnswer.Head.SubCmd))] = m_NAtagGMCmdAnswer
|