| | |
| | | ("NowMinute", c_ubyte),
|
| | | ("NowSecond", c_ubyte),
|
| | | ("NowMicSecond", c_int),
|
| | | ("WeekOfYear", c_ubyte), #一年中的第几周
|
| | | ]
|
| | |
|
| | | def __init__(self):
|
| | |
| | | self.NowMinute = 0
|
| | | self.NowSecond = 0
|
| | | self.NowMicSecond = 0
|
| | | self.WeekOfYear = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | |
| | | NowHour:%d,
|
| | | NowMinute:%d,
|
| | | NowSecond:%d,
|
| | | NowMicSecond:%d
|
| | | NowMicSecond:%d,
|
| | | WeekOfYear:%d
|
| | | '''\
|
| | | %(
|
| | | self.Cmd,
|
| | |
| | | self.NowHour,
|
| | | self.NowMinute,
|
| | | self.NowSecond,
|
| | | self.NowMicSecond
|
| | | self.NowMicSecond,
|
| | | self.WeekOfYear
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
| | | 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):
|
| | |
| | | # A4 05 家族红包抢的信息 #tagGCFamilyRedPacketGrabInfo
|
| | |
|
| | | class tagFGrabRedPacketInfo(Structure):
|
| | | Name = "" #(char Name[33])//名字
|
| | | NameLen = 0 #(BYTE NameLen)
|
| | | Name = "" #(String Name)//名字
|
| | | PlayeJob = 0 #(BYTE PlayeJob)//玩家职业
|
| | | MoneyNum = 0 #(DWORD MoneyNum)//金钱数量
|
| | | data = None
|
| | |
| | |
|
| | | def ReadData(self, _lpData, _pos=0, _Len=0):
|
| | | self.Clear()
|
| | | self.Name,_pos = CommFunc.ReadString(_lpData, _pos,33)
|
| | | self.NameLen,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.Name,_pos = CommFunc.ReadString(_lpData, _pos,self.NameLen)
|
| | | self.PlayeJob,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.MoneyNum,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.NameLen = 0
|
| | | self.Name = ""
|
| | | self.PlayeJob = 0
|
| | | self.MoneyNum = 0
|
| | |
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += 33
|
| | | length += 1
|
| | | length += len(self.Name)
|
| | | length += 1
|
| | | length += 4
|
| | |
|
| | |
| | |
|
| | | def GetBuffer(self):
|
| | | data = ''
|
| | | data = CommFunc.WriteString(data, 33, self.Name)
|
| | | data = CommFunc.WriteBYTE(data, self.NameLen)
|
| | | data = CommFunc.WriteString(data, self.NameLen, self.Name)
|
| | | data = CommFunc.WriteBYTE(data, self.PlayeJob)
|
| | | data = CommFunc.WriteDWORD(data, self.MoneyNum)
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | NameLen:%d,
|
| | | Name:%s,
|
| | | PlayeJob:%d,
|
| | | MoneyNum:%d
|
| | | '''\
|
| | | %(
|
| | | self.NameLen,
|
| | | self.Name,
|
| | | self.PlayeJob,
|
| | | self.MoneyNum
|
| | |
| | | class tagFRedPacketInfo(Structure):
|
| | | RedPacketID = 0 #(DWORD RedPacketID)//红包唯一ID
|
| | | PlayerID = 0 #(DWORD PlayerID)//玩家ID
|
| | | Name = "" #(char Name[33])//玩家名字
|
| | | NameLen = 0 #(BYTE NameLen)
|
| | | Name = "" #(String Name)//玩家名字
|
| | | Time = 0 #(DWORD Time)//时间
|
| | | PlayeJob = 0 #(BYTE PlayeJob)//玩家职业
|
| | | MoneyType = 0 #(BYTE MoneyType)//金钱类型
|
| | |
| | | GetWay = 0 #(BYTE GetWay)//获得途径
|
| | | PacketCnt = 0 #(BYTE PacketCnt)//可抢个数
|
| | | State = 0 #(BYTE State)//0未发,1未领取,2已领取,3全部领完
|
| | | Wish = "" #(char Wish[33])//祝福语
|
| | | WishLen = 0 #(BYTE WishLen)
|
| | | Wish = "" #(String Wish)//祝福语
|
| | | IsAnonymous = 0 #(BYTE IsAnonymous)//是否匿名
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | |
| | | self.Clear()
|
| | | self.RedPacketID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.PlayerID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.Name,_pos = CommFunc.ReadString(_lpData, _pos,33)
|
| | | self.NameLen,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.Name,_pos = CommFunc.ReadString(_lpData, _pos,self.NameLen)
|
| | | self.Time,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.PlayeJob,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.MoneyType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | |
| | | self.GetWay,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.PacketCnt,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.State,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.Wish,_pos = CommFunc.ReadString(_lpData, _pos,33)
|
| | | self.WishLen,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.Wish,_pos = CommFunc.ReadString(_lpData, _pos,self.WishLen)
|
| | | self.IsAnonymous,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.RedPacketID = 0
|
| | | self.PlayerID = 0
|
| | | self.NameLen = 0
|
| | | self.Name = ""
|
| | | self.Time = 0
|
| | | self.PlayeJob = 0
|
| | |
| | | self.GetWay = 0
|
| | | self.PacketCnt = 0
|
| | | self.State = 0
|
| | | self.WishLen = 0
|
| | | self.Wish = ""
|
| | | self.IsAnonymous = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += 4
|
| | | length += 4
|
| | | length += 33
|
| | | length += 1
|
| | | length += len(self.Name)
|
| | | length += 4
|
| | | length += 1
|
| | | length += 1
|
| | |
| | | length += 1
|
| | | length += 1
|
| | | length += 1
|
| | | length += 33
|
| | | length += 1
|
| | | length += len(self.Wish)
|
| | | length += 1
|
| | |
|
| | | return length
|
| | |
|
| | |
| | | data = ''
|
| | | data = CommFunc.WriteDWORD(data, self.RedPacketID)
|
| | | data = CommFunc.WriteDWORD(data, self.PlayerID)
|
| | | data = CommFunc.WriteString(data, 33, self.Name)
|
| | | data = CommFunc.WriteBYTE(data, self.NameLen)
|
| | | data = CommFunc.WriteString(data, self.NameLen, self.Name)
|
| | | data = CommFunc.WriteDWORD(data, self.Time)
|
| | | data = CommFunc.WriteBYTE(data, self.PlayeJob)
|
| | | data = CommFunc.WriteBYTE(data, self.MoneyType)
|
| | |
| | | data = CommFunc.WriteBYTE(data, self.GetWay)
|
| | | data = CommFunc.WriteBYTE(data, self.PacketCnt)
|
| | | data = CommFunc.WriteBYTE(data, self.State)
|
| | | data = CommFunc.WriteString(data, 33, self.Wish)
|
| | | data = CommFunc.WriteBYTE(data, self.WishLen)
|
| | | data = CommFunc.WriteString(data, self.WishLen, self.Wish)
|
| | | data = CommFunc.WriteBYTE(data, self.IsAnonymous)
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | RedPacketID:%d,
|
| | | PlayerID:%d,
|
| | | NameLen:%d,
|
| | | Name:%s,
|
| | | Time:%d,
|
| | | PlayeJob:%d,
|
| | |
| | | GetWay:%d,
|
| | | PacketCnt:%d,
|
| | | State:%d,
|
| | | Wish:%s
|
| | | WishLen:%d,
|
| | | Wish:%s,
|
| | | IsAnonymous:%d
|
| | | '''\
|
| | | %(
|
| | | self.RedPacketID,
|
| | | self.PlayerID,
|
| | | self.NameLen,
|
| | | self.Name,
|
| | | self.Time,
|
| | | self.PlayeJob,
|
| | |
| | | self.GetWay,
|
| | | self.PacketCnt,
|
| | | self.State,
|
| | | self.Wish
|
| | | self.WishLen,
|
| | | self.Wish,
|
| | | self.IsAnonymous
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
| | | Name = "" #(String Name)//size=NameLen
|
| | | PlayerLV = 0 #(WORD PlayerLV)//玩家等级
|
| | | PlayeJob = 0 #(BYTE PlayeJob)//玩家职业
|
| | | PlayeFightPower = 0 #(DWORD PlayeFightPower)//玩家战斗力
|
| | | PlayeFightPower = 0 #(DWORD PlayeFightPower)//玩家战斗力,求余亿部分
|
| | | PlayeFightPowerEx = 0 #(DWORD PlayeFightPowerEx)//玩家战斗力,整除亿部分,1代表1亿
|
| | | RequestTime = 0 #(DWORD RequestTime)//申请时间
|
| | | IsOnLine = 0 #(BYTE IsOnLine)//是否在线
|
| | | data = None
|
| | |
| | | self.PlayerLV,_pos = CommFunc.ReadWORD(_lpData, _pos)
|
| | | self.PlayeJob,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.PlayeFightPower,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.PlayeFightPowerEx,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.RequestTime,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.IsOnLine,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | return _pos
|
| | |
| | | self.PlayerLV = 0
|
| | | self.PlayeJob = 0
|
| | | self.PlayeFightPower = 0
|
| | | self.PlayeFightPowerEx = 0
|
| | | self.RequestTime = 0
|
| | | self.IsOnLine = 0
|
| | | return
|
| | |
| | | length += len(self.Name)
|
| | | length += 2
|
| | | length += 1
|
| | | length += 4
|
| | | length += 4
|
| | | length += 4
|
| | | length += 1
|
| | |
| | | data = CommFunc.WriteWORD(data, self.PlayerLV)
|
| | | data = CommFunc.WriteBYTE(data, self.PlayeJob)
|
| | | data = CommFunc.WriteDWORD(data, self.PlayeFightPower)
|
| | | data = CommFunc.WriteDWORD(data, self.PlayeFightPowerEx)
|
| | | data = CommFunc.WriteDWORD(data, self.RequestTime)
|
| | | data = CommFunc.WriteBYTE(data, self.IsOnLine)
|
| | | return data
|
| | |
| | | PlayerLV:%d,
|
| | | PlayeJob:%d,
|
| | | PlayeFightPower:%d,
|
| | | PlayeFightPowerEx:%d,
|
| | | RequestTime:%d,
|
| | | IsOnLine:%d
|
| | | '''\
|
| | |
| | | self.PlayerLV,
|
| | | self.PlayeJob,
|
| | | self.PlayeFightPower,
|
| | | self.PlayeFightPowerEx,
|
| | | self.RequestTime,
|
| | | self.IsOnLine
|
| | | )
|
| | |
| | | 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):
|
| | |
| | | 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
|
| | |
| | | PlayerName = "" #(String PlayerName)// 跨服名字
|
| | | Job = 0 #(BYTE Job)
|
| | | LV = 0 #(WORD LV)
|
| | | MaxHP = 0 #(DWORD MaxHP)// 默认满血
|
| | | MaxHP = 0 #(DWORD MaxHP)// 默认满血,求余亿部分
|
| | | MaxHPEx = 0 #(DWORD MaxHPEx)// 默认满血,整除亿部分
|
| | | MaxProDef = 0 #(DWORD MaxProDef)// 最大护盾
|
| | | data = None
|
| | |
|
| | |
| | | self.Job,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.LV,_pos = CommFunc.ReadWORD(_lpData, _pos)
|
| | | self.MaxHP,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.MaxHPEx,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.MaxProDef,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | return _pos
|
| | |
|
| | |
| | | self.Job = 0
|
| | | self.LV = 0
|
| | | self.MaxHP = 0
|
| | | self.MaxHPEx = 0
|
| | | self.MaxProDef = 0
|
| | | return
|
| | |
|
| | |
| | | length += len(self.PlayerName)
|
| | | length += 1
|
| | | length += 2
|
| | | length += 4
|
| | | length += 4
|
| | | length += 4
|
| | |
|
| | |
| | | data = CommFunc.WriteBYTE(data, self.Job)
|
| | | data = CommFunc.WriteWORD(data, self.LV)
|
| | | data = CommFunc.WriteDWORD(data, self.MaxHP)
|
| | | data = CommFunc.WriteDWORD(data, self.MaxHPEx)
|
| | | data = CommFunc.WriteDWORD(data, self.MaxProDef)
|
| | | return data
|
| | |
|
| | |
| | | Job:%d,
|
| | | LV:%d,
|
| | | MaxHP:%d,
|
| | | MaxHPEx:%d,
|
| | | MaxProDef:%d
|
| | | '''\
|
| | | %(
|
| | |
| | | self.Job,
|
| | | self.LV,
|
| | | self.MaxHP,
|
| | | self.MaxHPEx,
|
| | | self.MaxProDef
|
| | | )
|
| | | return DumpString
|
| | |
| | | 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)//上周在线时间
|
| | |
| | | ExAttr18 = 0 #(DWORD ExAttr18)//预留的扩展属性字段,用来存放项目特定的属性
|
| | | ExAttr19 = 0 #(DWORD ExAttr19)//预留的扩展属性字段,用来存放项目特定的属性
|
| | | ExAttr20 = 0 #(DWORD ExAttr20)//预留的扩展属性字段,用来存放项目特定的属性
|
| | | HPEx = 0 #(DWORD HPEx)//当前血量 超过E的记录
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | |
| | | self.ExAttr18,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.ExAttr19,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.ExAttr20,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.HPEx,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | |
| | | self.ExAttr18 = 0
|
| | | self.ExAttr19 = 0
|
| | | self.ExAttr20 = 0
|
| | | self.HPEx = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | |
| | | length += 4
|
| | | length += 4
|
| | | length += 15
|
| | | length += 4
|
| | | length += 4
|
| | | length += 4
|
| | | length += 4
|
| | |
| | | data = CommFunc.WriteDWORD(data, self.ExAttr18)
|
| | | data = CommFunc.WriteDWORD(data, self.ExAttr19)
|
| | | data = CommFunc.WriteDWORD(data, self.ExAttr20)
|
| | | data = CommFunc.WriteDWORD(data, self.HPEx)
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | |
| | | ExAttr17:%d,
|
| | | ExAttr18:%d,
|
| | | ExAttr19:%d,
|
| | | ExAttr20:%d
|
| | | ExAttr20:%d,
|
| | | HPEx:%d
|
| | | '''\
|
| | | %(
|
| | | self.Head.OutputString(),
|
| | |
| | | self.ExAttr17,
|
| | | self.ExAttr18,
|
| | | self.ExAttr19,
|
| | | self.ExAttr20
|
| | | self.ExAttr20,
|
| | | self.HPEx
|
| | | )
|
| | | 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,依次递增
|
| | |
| | |
|
| | | class tagMCModuleFightPowerInfo(Structure):
|
| | | Head = tagHead()
|
| | | TotalFightPower = 0 #(DWORD TotalFightPower)//总战斗力
|
| | | TotalFightPower = 0 #(DWORD TotalFightPower)//总战斗力,求余亿部分
|
| | | TotalFightPoweEx = 0 #(DWORD TotalFightPoweEx)//总战斗力,整除亿部分,1代表1亿
|
| | | MFPCnt = 0 #(BYTE MFPCnt)//模块战斗力总数
|
| | | MFPList = list() #(vector<tagMCModuleFightPower> MFPList)
|
| | | data = None
|
| | |
| | | self.Clear()
|
| | | _pos = self.Head.ReadData(_lpData, _pos)
|
| | | self.TotalFightPower,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.TotalFightPoweEx,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.MFPCnt,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | for i in range(self.MFPCnt):
|
| | | temMFPList = tagMCModuleFightPower()
|
| | |
| | | self.Head.Cmd = 0xA3
|
| | | self.Head.SubCmd = 0xA1
|
| | | self.TotalFightPower = 0
|
| | | self.TotalFightPoweEx = 0
|
| | | self.MFPCnt = 0
|
| | | self.MFPList = list()
|
| | | return
|
| | |
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += self.Head.GetLength()
|
| | | length += 4
|
| | | length += 4
|
| | | length += 1
|
| | | for i in range(self.MFPCnt):
|
| | |
| | | data = ''
|
| | | data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
|
| | | data = CommFunc.WriteDWORD(data, self.TotalFightPower)
|
| | | data = CommFunc.WriteDWORD(data, self.TotalFightPoweEx)
|
| | | data = CommFunc.WriteBYTE(data, self.MFPCnt)
|
| | | for i in range(self.MFPCnt):
|
| | | data = CommFunc.WriteString(data, self.MFPList[i].GetLength(), self.MFPList[i].GetBuffer())
|
| | |
| | | DumpString = '''
|
| | | Head:%s,
|
| | | TotalFightPower:%d,
|
| | | TotalFightPoweEx:%d,
|
| | | MFPCnt:%d,
|
| | | MFPList:%s
|
| | | '''\
|
| | | %(
|
| | | self.Head.OutputString(),
|
| | | self.TotalFightPower,
|
| | | self.TotalFightPoweEx,
|
| | | self.MFPCnt,
|
| | | "..."
|
| | | )
|
| | |
| | | _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),
|
| | | ("HasSendGold", c_int), # 已用额度
|
| | | ("ServerGrabCnt", c_int), # 全服红包已抢次数
|
| | | ]
|
| | |
|
| | | def __init__(self):
|
| | |
| | | self.Cmd = 0xA5
|
| | | self.SubCmd = 0x05
|
| | | self.HasSendGold = 0
|
| | | self.ServerGrabCnt = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | |
| | | DumpString = '''// A5 05 通知家族钻石红包已用额度 //tagMCFamilyRedPacketGoldLimit:
|
| | | Cmd:%s,
|
| | | SubCmd:%s,
|
| | | HasSendGold:%d
|
| | | HasSendGold:%d,
|
| | | ServerGrabCnt:%d
|
| | | '''\
|
| | | %(
|
| | | self.Cmd,
|
| | | self.SubCmd,
|
| | | self.HasSendGold
|
| | | self.HasSendGold,
|
| | | self.ServerGrabCnt
|
| | | )
|
| | | 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_ = [
|
| | | ("RefreshType", c_ubyte),
|
| | | ("Value", c_int),
|
| | | ("ValueEx", c_int), |
| | | ]
|
| | |
|
| | | def __init__(self):
|
| | |
| | | def Clear(self):
|
| | | self.RefreshType = 0
|
| | | self.Value = 0
|
| | | self.ValueEx = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | |
| | | def OutputString(self):
|
| | | DumpString = '''//A7 09 周围对象刷新合并包 //tagObjInfoListRefresh:
|
| | | RefreshType:%d,
|
| | | Value:%d
|
| | | Value:%d,
|
| | | ValueEx:%d
|
| | | '''\
|
| | | %(
|
| | | self.RefreshType,
|
| | | self.Value
|
| | | self.Value,
|
| | | self.ValueEx
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
| | | _fields_ = [
|
| | | ("Cmd", c_ubyte),
|
| | | ("SubCmd", c_ubyte),
|
| | | ("MakeType", c_ubyte), #类型 TMakeItemType
|
| | | ("MakeType", c_ubyte), #类型 TMakeItemType
|
| | | ("Result", c_ubyte), #是否成功
|
| | | ("MakeItemID", c_int), #合成的物品ID
|
| | | ]
|
| | |
| | | ActNum = 0 #(BYTE ActNum)//活动编号
|
| | | Days = 0 #(BYTE Days)
|
| | | DayRechargeValues = list() #(vector<DWORD> DayRechargeValues)//活动每天充值列表
|
| | | AwardRecord = 0 #(DWORD AwardRecord)//奖励领奖记录,按奖励索引二进制位存储是否已领取
|
| | | RecordCount = 0 #(BYTE RecordCount)
|
| | | AwardRecord = list() #(vector<DWORD> AwardRecord)//奖励领奖记录,按奖励索引二进制位存储是否已领取
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | |
| | | for i in range(self.Days):
|
| | | value,_pos=CommFunc.ReadDWORD(_lpData,_pos)
|
| | | self.DayRechargeValues.append(value)
|
| | | self.AwardRecord,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.RecordCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | for i in range(self.RecordCount):
|
| | | value,_pos=CommFunc.ReadDWORD(_lpData,_pos)
|
| | | self.AwardRecord.append(value)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | |
| | | self.ActNum = 0
|
| | | self.Days = 0
|
| | | self.DayRechargeValues = list()
|
| | | self.AwardRecord = 0
|
| | | self.RecordCount = 0
|
| | | self.AwardRecord = list()
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | |
| | | length += 1
|
| | | length += 1
|
| | | length += 4 * self.Days
|
| | | length += 4
|
| | | length += 1
|
| | | length += 4 * self.RecordCount
|
| | |
|
| | | return length
|
| | |
|
| | |
| | | data = CommFunc.WriteBYTE(data, self.Days)
|
| | | for i in range(self.Days):
|
| | | data = CommFunc.WriteDWORD(data, self.DayRechargeValues[i])
|
| | | data = CommFunc.WriteDWORD(data, self.AwardRecord)
|
| | | data = CommFunc.WriteBYTE(data, self.RecordCount)
|
| | | for i in range(self.RecordCount):
|
| | | data = CommFunc.WriteDWORD(data, self.AwardRecord[i])
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | |
| | | ActNum:%d,
|
| | | Days:%d,
|
| | | DayRechargeValues:%s,
|
| | | AwardRecord:%d
|
| | | RecordCount:%d,
|
| | | AwardRecord:%s
|
| | | '''\
|
| | | %(
|
| | | self.Head.OutputString(),
|
| | | self.ActNum,
|
| | | self.Days,
|
| | | "...",
|
| | | self.AwardRecord
|
| | | self.RecordCount,
|
| | | "..."
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
| | |
|
| | | m_NAtagMCActRechargeRebateGoldInfo=tagMCActRechargeRebateGoldInfo()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCActRechargeRebateGoldInfo.Head.Cmd,m_NAtagMCActRechargeRebateGoldInfo.Head.SubCmd))] = m_NAtagMCActRechargeRebateGoldInfo
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # AA 50 单笔累充活动信息 #tagMCActSingleRechargeInfo
|
| | |
|
| | | class tagMCActSingleRechargeAwardItem(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("ItemID", c_int), |
| | | ("ItemCount", c_ushort), |
| | | ("IsBind", 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.ItemCount = 0
|
| | | self.IsBind = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagMCActSingleRechargeAwardItem)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// AA 50 单笔累充活动信息 //tagMCActSingleRechargeInfo:
|
| | | ItemID:%d,
|
| | | ItemCount:%d,
|
| | | IsBind:%d
|
| | | '''\
|
| | | %(
|
| | | self.ItemID,
|
| | | self.ItemCount,
|
| | | self.IsBind
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | class tagMCActSingleRechargeAward(Structure):
|
| | | AwardIndex = 0 #(BYTE AwardIndex)// 奖励索引 0~31
|
| | | SingleRechargeValue = 0 #(DWORD SingleRechargeValue)// 单笔所需充值额度
|
| | | AwardItemCount = 0 #(BYTE AwardItemCount)// 奖励物品数
|
| | | AwardItem = list() #(vector<tagMCActSingleRechargeAwardItem> AwardItem)// 奖励物品信息
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | return
|
| | |
|
| | | def ReadData(self, _lpData, _pos=0, _Len=0):
|
| | | self.Clear()
|
| | | self.AwardIndex,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.SingleRechargeValue,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.AwardItemCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | for i in range(self.AwardItemCount):
|
| | | temAwardItem = tagMCActSingleRechargeAwardItem()
|
| | | _pos = temAwardItem.ReadData(_lpData, _pos)
|
| | | self.AwardItem.append(temAwardItem)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.AwardIndex = 0
|
| | | self.SingleRechargeValue = 0
|
| | | self.AwardItemCount = 0
|
| | | self.AwardItem = list()
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += 1
|
| | | length += 4
|
| | | length += 1
|
| | | for i in range(self.AwardItemCount):
|
| | | length += self.AwardItem[i].GetLength()
|
| | |
|
| | | return length
|
| | |
|
| | | def GetBuffer(self):
|
| | | data = ''
|
| | | data = CommFunc.WriteBYTE(data, self.AwardIndex)
|
| | | data = CommFunc.WriteDWORD(data, self.SingleRechargeValue)
|
| | | data = CommFunc.WriteBYTE(data, self.AwardItemCount)
|
| | | for i in range(self.AwardItemCount):
|
| | | data = CommFunc.WriteString(data, self.AwardItem[i].GetLength(), self.AwardItem[i].GetBuffer())
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | AwardIndex:%d,
|
| | | SingleRechargeValue:%d,
|
| | | AwardItemCount:%d,
|
| | | AwardItem:%s
|
| | | '''\
|
| | | %(
|
| | | self.AwardIndex,
|
| | | self.SingleRechargeValue,
|
| | | self.AwardItemCount,
|
| | | "..."
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | class tagMCActSingleRechargeInfo(Structure):
|
| | | Head = tagHead()
|
| | | ActNum = 0 #(BYTE ActNum)// 活动编号
|
| | | StartDate = "" #(char StartDate[10])// 开始日期 y-m-d
|
| | | EndtDate = "" #(char EndtDate[10])// 结束日期 y-m-d
|
| | | IsDayReset = 0 #(BYTE IsDayReset)// 是否每天重置
|
| | | LimitLV = 0 #(WORD LimitLV)// 限制等级
|
| | | AwardRuleType = 0 #(BYTE AwardRuleType)// 领奖规则类型 0-向下兼容;1-匹配最高档;2-精确匹配对应档次
|
| | | AwardCount = 0 #(BYTE AwardCount)// 奖励档数
|
| | | AwardInfo = list() #(vector<tagMCActSingleRechargeAward> AwardInfo)// 奖励档信息
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Head.Cmd = 0xAA
|
| | | self.Head.SubCmd = 0x50
|
| | | return
|
| | |
|
| | | def ReadData(self, _lpData, _pos=0, _Len=0):
|
| | | self.Clear()
|
| | | _pos = self.Head.ReadData(_lpData, _pos)
|
| | | self.ActNum,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.StartDate,_pos = CommFunc.ReadString(_lpData, _pos,10)
|
| | | self.EndtDate,_pos = CommFunc.ReadString(_lpData, _pos,10)
|
| | | self.IsDayReset,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.LimitLV,_pos = CommFunc.ReadWORD(_lpData, _pos)
|
| | | self.AwardRuleType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.AwardCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | for i in range(self.AwardCount):
|
| | | temAwardInfo = tagMCActSingleRechargeAward()
|
| | | _pos = temAwardInfo.ReadData(_lpData, _pos)
|
| | | self.AwardInfo.append(temAwardInfo)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.Head = tagHead()
|
| | | self.Head.Clear()
|
| | | self.Head.Cmd = 0xAA
|
| | | self.Head.SubCmd = 0x50
|
| | | self.ActNum = 0
|
| | | self.StartDate = ""
|
| | | self.EndtDate = ""
|
| | | self.IsDayReset = 0
|
| | | self.LimitLV = 0
|
| | | self.AwardRuleType = 0
|
| | | self.AwardCount = 0
|
| | | self.AwardInfo = list()
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += self.Head.GetLength()
|
| | | length += 1
|
| | | length += 10
|
| | | length += 10
|
| | | length += 1
|
| | | length += 2
|
| | | length += 1
|
| | | length += 1
|
| | | for i in range(self.AwardCount):
|
| | | length += self.AwardInfo[i].GetLength()
|
| | |
|
| | | return length
|
| | |
|
| | | def GetBuffer(self):
|
| | | data = ''
|
| | | data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
|
| | | data = CommFunc.WriteBYTE(data, self.ActNum)
|
| | | data = CommFunc.WriteString(data, 10, self.StartDate)
|
| | | data = CommFunc.WriteString(data, 10, self.EndtDate)
|
| | | data = CommFunc.WriteBYTE(data, self.IsDayReset)
|
| | | data = CommFunc.WriteWORD(data, self.LimitLV)
|
| | | data = CommFunc.WriteBYTE(data, self.AwardRuleType)
|
| | | data = CommFunc.WriteBYTE(data, self.AwardCount)
|
| | | for i in range(self.AwardCount):
|
| | | data = CommFunc.WriteString(data, self.AwardInfo[i].GetLength(), self.AwardInfo[i].GetBuffer())
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | Head:%s,
|
| | | ActNum:%d,
|
| | | StartDate:%s,
|
| | | EndtDate:%s,
|
| | | IsDayReset:%d,
|
| | | LimitLV:%d,
|
| | | AwardRuleType:%d,
|
| | | AwardCount:%d,
|
| | | AwardInfo:%s
|
| | | '''\
|
| | | %(
|
| | | self.Head.OutputString(),
|
| | | self.ActNum,
|
| | | self.StartDate,
|
| | | self.EndtDate,
|
| | | self.IsDayReset,
|
| | | self.LimitLV,
|
| | | self.AwardRuleType,
|
| | | self.AwardCount,
|
| | | "..."
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagMCActSingleRechargeInfo=tagMCActSingleRechargeInfo()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCActSingleRechargeInfo.Head.Cmd,m_NAtagMCActSingleRechargeInfo.Head.SubCmd))] = m_NAtagMCActSingleRechargeInfo
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # AA 51 单笔累充活动玩家信息 #tagMCActSingleRechargePlayerInfo
|
| | |
|
| | | class tagMCActSingleRechargePlayerInfo(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("Cmd", c_ubyte),
|
| | | ("SubCmd", c_ubyte),
|
| | | ("ActNum", c_ubyte), #活动编号从1开始,目前支持两个累充活动同时存在且相互独立 1或2
|
| | | ("CanAwardValue", c_int), #可否领奖记录,按奖励索引二进制位存储是否可领取
|
| | | ("AwardRecord", c_int), #奖励领奖记录,按奖励索引二进制位存储是否已领取
|
| | | ]
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Cmd = 0xAA
|
| | | self.SubCmd = 0x51
|
| | | 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 = 0xAA
|
| | | self.SubCmd = 0x51
|
| | | self.ActNum = 0
|
| | | self.CanAwardValue = 0
|
| | | self.AwardRecord = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagMCActSingleRechargePlayerInfo)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// AA 51 单笔累充活动玩家信息 //tagMCActSingleRechargePlayerInfo:
|
| | | Cmd:%s,
|
| | | SubCmd:%s,
|
| | | ActNum:%d,
|
| | | CanAwardValue:%d,
|
| | | AwardRecord:%d
|
| | | '''\
|
| | | %(
|
| | | self.Cmd,
|
| | | self.SubCmd,
|
| | | self.ActNum,
|
| | | self.CanAwardValue,
|
| | | self.AwardRecord
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagMCActSingleRechargePlayerInfo=tagMCActSingleRechargePlayerInfo()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCActSingleRechargePlayerInfo.Cmd,m_NAtagMCActSingleRechargePlayerInfo.SubCmd))] = m_NAtagMCActSingleRechargePlayerInfo
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | |
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # AA 04 创角在线充值特惠信息 #tagMCOnlineRechargeTH
|
| | |
|
| | | class tagMCOnlineRechargeTH(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("Cmd", c_ubyte),
|
| | | ("SubCmd", c_ubyte),
|
| | | ("AwardState", c_ubyte), #是否已领取奖励
|
| | | ]
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Cmd = 0xAA
|
| | | self.SubCmd = 0x04
|
| | | 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 = 0xAA
|
| | | self.SubCmd = 0x04
|
| | | self.AwardState = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagMCOnlineRechargeTH)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// AA 04 创角在线充值特惠信息 //tagMCOnlineRechargeTH:
|
| | | Cmd:%s,
|
| | | SubCmd:%s,
|
| | | AwardState:%d
|
| | | '''\
|
| | | %(
|
| | | self.Cmd,
|
| | | self.SubCmd,
|
| | | self.AwardState
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagMCOnlineRechargeTH=tagMCOnlineRechargeTH()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCOnlineRechargeTH.Cmd,m_NAtagMCOnlineRechargeTH.SubCmd))] = m_NAtagMCOnlineRechargeTH
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # AA 28 充值返利玩家活动信息 #tagMCRechargePrizePlayerInfo
|
| | |
|
| | | class tagMCRechargePrizeInfo(Structure):
|
| | |
| | |
|
| | | m_NAtagMCClothesCoatSkinState=tagMCClothesCoatSkinState()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCClothesCoatSkinState.Head.Cmd,m_NAtagMCClothesCoatSkinState.Head.SubCmd))] = m_NAtagMCClothesCoatSkinState
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # B1 11 功能系统特权信息 #tagMCFuncSysPrivilegeInfoList
|
| | |
|
| | | class tagMCFuncSysPrivilegeInfo(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("FuncSysID", c_ubyte), # 功能系统ID
|
| | | ("ActivateTime", c_int), # 激活时间戳
|
| | | ("AwardState", c_int), # 领奖状态,按天对应二进制位计算是否领奖
|
| | | ]
|
| | |
|
| | | 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.FuncSysID = 0
|
| | | self.ActivateTime = 0
|
| | | self.AwardState = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagMCFuncSysPrivilegeInfo)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// B1 11 功能系统特权信息 //tagMCFuncSysPrivilegeInfoList:
|
| | | FuncSysID:%d,
|
| | | ActivateTime:%d,
|
| | | AwardState:%d
|
| | | '''\
|
| | | %(
|
| | | self.FuncSysID,
|
| | | self.ActivateTime,
|
| | | self.AwardState
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | class tagMCFuncSysPrivilegeInfoList(Structure):
|
| | | Head = tagHead()
|
| | | PrivilegeCount = 0 #(BYTE PrivilegeCount)// 特权个数
|
| | | PrivilegeInfoList = list() #(vector<tagMCFuncSysPrivilegeInfo> PrivilegeInfoList)// 特权信息列表
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Head.Cmd = 0xB1
|
| | | self.Head.SubCmd = 0x11
|
| | | return
|
| | |
|
| | | def ReadData(self, _lpData, _pos=0, _Len=0):
|
| | | self.Clear()
|
| | | _pos = self.Head.ReadData(_lpData, _pos)
|
| | | self.PrivilegeCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | for i in range(self.PrivilegeCount):
|
| | | temPrivilegeInfoList = tagMCFuncSysPrivilegeInfo()
|
| | | _pos = temPrivilegeInfoList.ReadData(_lpData, _pos)
|
| | | self.PrivilegeInfoList.append(temPrivilegeInfoList)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.Head = tagHead()
|
| | | self.Head.Clear()
|
| | | self.Head.Cmd = 0xB1
|
| | | self.Head.SubCmd = 0x11
|
| | | self.PrivilegeCount = 0
|
| | | self.PrivilegeInfoList = list()
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += self.Head.GetLength()
|
| | | length += 1
|
| | | for i in range(self.PrivilegeCount):
|
| | | length += self.PrivilegeInfoList[i].GetLength()
|
| | |
|
| | | return length
|
| | |
|
| | | def GetBuffer(self):
|
| | | data = ''
|
| | | data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
|
| | | data = CommFunc.WriteBYTE(data, self.PrivilegeCount)
|
| | | for i in range(self.PrivilegeCount):
|
| | | data = CommFunc.WriteString(data, self.PrivilegeInfoList[i].GetLength(), self.PrivilegeInfoList[i].GetBuffer())
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | Head:%s,
|
| | | PrivilegeCount:%d,
|
| | | PrivilegeInfoList:%s
|
| | | '''\
|
| | | %(
|
| | | self.Head.OutputString(),
|
| | | self.PrivilegeCount,
|
| | | "..."
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagMCFuncSysPrivilegeInfoList=tagMCFuncSysPrivilegeInfoList()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCFuncSysPrivilegeInfoList.Head.Cmd,m_NAtagMCFuncSysPrivilegeInfoList.Head.SubCmd))] = m_NAtagMCFuncSysPrivilegeInfoList
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | |
| | | ("ObjID", c_int),
|
| | | ("AttackType", c_ubyte), #爆击, miss
|
| | | ("HurtHP", c_int),
|
| | | ("HurtHPEx", c_int), |
| | | ("CurHP", c_int),
|
| | | ("CurHPEx", c_int),
|
| | | ]
|
| | |
| | | self.ObjID = 0
|
| | | self.AttackType = 0
|
| | | self.HurtHP = 0
|
| | | self.HurtHPEx = 0
|
| | | self.CurHP = 0
|
| | | self.CurHPEx = 0
|
| | | return
|
| | |
| | | ObjID:%d,
|
| | | AttackType:%d,
|
| | | HurtHP:%d,
|
| | | HurtHPEx:%d,
|
| | | CurHP:%d,
|
| | | CurHPEx:%d
|
| | | '''\
|
| | |
| | | self.ObjID,
|
| | | self.AttackType,
|
| | | self.HurtHP,
|
| | | self.HurtHPEx,
|
| | | self.CurHP,
|
| | | self.CurHPEx
|
| | | )
|