From f214b121b8e9e64a97ae35ac9f9867c28935ca02 Mon Sep 17 00:00:00 2001 From: xdh <xiefantasy@qq.com> Date: 星期二, 22 一月 2019 15:41:52 +0800 Subject: [PATCH] 5919 【后端】【1.5.100】诛仙塔功能开发(上线通知) --- ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py | 2082 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 files changed, 2,032 insertions(+), 50 deletions(-) diff --git a/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py b/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py index 49baa51..8d88de9 100644 --- a/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py +++ b/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py @@ -196,40 +196,60 @@ # A0 07 副本地图功能线路人数 #tagGCFBLinePlayerCnt class tagGCFBLineInfo(Structure): - _pack_ = 1 - _fields_ = [ - ("FBLineID", c_ubyte), # 功能线路ID - ("PlayerCnt", c_ushort), # 线路当前玩家数 - ] + FBLineID = 0 #(BYTE FBLineID)// 功能线路ID + PlayerCnt = 0 #(WORD PlayerCnt)// 线路当前玩家数 + ExtraStrLen = 0 #(WORD ExtraStrLen)// 长度 + ExtraStr = "" #(String ExtraStr)// 额外信息 + data = None def __init__(self): self.Clear() return - def ReadData(self, stringData, _pos=0, _len=0): + def ReadData(self, _lpData, _pos=0, _Len=0): self.Clear() - memmove(addressof(self), stringData[_pos:], self.GetLength()) - return _pos + self.GetLength() + self.FBLineID,_pos = CommFunc.ReadBYTE(_lpData, _pos) + self.PlayerCnt,_pos = CommFunc.ReadWORD(_lpData, _pos) + self.ExtraStrLen,_pos = CommFunc.ReadWORD(_lpData, _pos) + self.ExtraStr,_pos = CommFunc.ReadString(_lpData, _pos,self.ExtraStrLen) + return _pos def Clear(self): self.FBLineID = 0 self.PlayerCnt = 0 + self.ExtraStrLen = 0 + self.ExtraStr = "" return def GetLength(self): - return sizeof(tagGCFBLineInfo) + length = 0 + length += 1 + length += 2 + length += 2 + length += len(self.ExtraStr) + + return length def GetBuffer(self): - return string_at(addressof(self), self.GetLength()) + data = '' + data = CommFunc.WriteBYTE(data, self.FBLineID) + data = CommFunc.WriteWORD(data, self.PlayerCnt) + data = CommFunc.WriteWORD(data, self.ExtraStrLen) + data = CommFunc.WriteString(data, self.ExtraStrLen, self.ExtraStr) + return data def OutputString(self): - DumpString = '''// A0 07 副本地图功能线路人数 //tagGCFBLinePlayerCnt: + DumpString = ''' FBLineID:%d, - PlayerCnt:%d + PlayerCnt:%d, + ExtraStrLen:%d, + ExtraStr:%s '''\ %( self.FBLineID, - self.PlayerCnt + self.PlayerCnt, + self.ExtraStrLen, + self.ExtraStr ) return DumpString @@ -5881,6 +5901,7 @@ RealmLV = 0 #(WORD RealmLV)//境界 OnlineType = 0 #(BYTE OnlineType)//在线状态, 0 不在线 1在线 IsInTeam = 0 #(BYTE IsInTeam)//是否有队伍 + ServerGroupID = 0 #(DWORD ServerGroupID)//服务器组ID data = None def __init__(self): @@ -5899,6 +5920,7 @@ self.RealmLV,_pos = CommFunc.ReadWORD(_lpData, _pos) self.OnlineType,_pos = CommFunc.ReadBYTE(_lpData, _pos) self.IsInTeam,_pos = CommFunc.ReadBYTE(_lpData, _pos) + self.ServerGroupID,_pos = CommFunc.ReadDWORD(_lpData, _pos) return _pos def Clear(self): @@ -5913,6 +5935,7 @@ self.RealmLV = 0 self.OnlineType = 0 self.IsInTeam = 0 + self.ServerGroupID = 0 return def GetLength(self): @@ -5925,6 +5948,7 @@ length += 2 length += 1 length += 1 + length += 4 return length @@ -5938,6 +5962,7 @@ data = CommFunc.WriteWORD(data, self.RealmLV) data = CommFunc.WriteBYTE(data, self.OnlineType) data = CommFunc.WriteBYTE(data, self.IsInTeam) + data = CommFunc.WriteDWORD(data, self.ServerGroupID) return data def OutputString(self): @@ -5949,7 +5974,8 @@ LV:%d, RealmLV:%d, OnlineType:%d, - IsInTeam:%d + IsInTeam:%d, + ServerGroupID:%d '''\ %( self.Head.OutputString(), @@ -5959,7 +5985,8 @@ self.LV, self.RealmLV, self.OnlineType, - self.IsInTeam + self.IsInTeam, + self.ServerGroupID ) return DumpString @@ -8226,6 +8253,7 @@ Job = 0 #(BYTE Job) LV = 0 #(WORD LV) MaxHP = 0 #(DWORD MaxHP)// 默认满血 + MaxProDef = 0 #(DWORD MaxProDef)// 最大护盾 data = None def __init__(self): @@ -8240,6 +8268,7 @@ self.Job,_pos = CommFunc.ReadBYTE(_lpData, _pos) self.LV,_pos = CommFunc.ReadWORD(_lpData, _pos) self.MaxHP,_pos = CommFunc.ReadDWORD(_lpData, _pos) + self.MaxProDef,_pos = CommFunc.ReadDWORD(_lpData, _pos) return _pos def Clear(self): @@ -8249,6 +8278,7 @@ self.Job = 0 self.LV = 0 self.MaxHP = 0 + self.MaxProDef = 0 return def GetLength(self): @@ -8258,6 +8288,7 @@ length += len(self.PlayerName) length += 1 length += 2 + length += 4 length += 4 return length @@ -8270,6 +8301,7 @@ data = CommFunc.WriteBYTE(data, self.Job) data = CommFunc.WriteWORD(data, self.LV) data = CommFunc.WriteDWORD(data, self.MaxHP) + data = CommFunc.WriteDWORD(data, self.MaxProDef) return data def OutputString(self): @@ -8279,7 +8311,8 @@ PlayerName:%s, Job:%d, LV:%d, - MaxHP:%d + MaxHP:%d, + MaxProDef:%d '''\ %( self.PlayerID, @@ -8287,7 +8320,8 @@ self.PlayerName, self.Job, self.LV, - self.MaxHP + self.MaxHP, + self.MaxProDef ) return DumpString @@ -8297,6 +8331,7 @@ RoomID = 0 #(WORD RoomID)// 房间ID NameLen = 0 #(BYTE NameLen) PlayerName = "" #(String PlayerName)// 跨服名字 + Number = 0 #(BYTE Number)// 位置编号;1-左,2-右 MatchPlayerCount = 0 #(BYTE MatchPlayerCount) MatchPlayer = list() #(vector<tagGCCrossRealmPKMatchPlayer> MatchPlayer)// 匹配到的玩家 data = None @@ -8313,6 +8348,7 @@ self.RoomID,_pos = CommFunc.ReadWORD(_lpData, _pos) self.NameLen,_pos = CommFunc.ReadBYTE(_lpData, _pos) self.PlayerName,_pos = CommFunc.ReadString(_lpData, _pos,self.NameLen) + self.Number,_pos = CommFunc.ReadBYTE(_lpData, _pos) self.MatchPlayerCount,_pos = CommFunc.ReadBYTE(_lpData, _pos) for i in range(self.MatchPlayerCount): temMatchPlayer = tagGCCrossRealmPKMatchPlayer() @@ -8328,6 +8364,7 @@ self.RoomID = 0 self.NameLen = 0 self.PlayerName = "" + self.Number = 0 self.MatchPlayerCount = 0 self.MatchPlayer = list() return @@ -8338,6 +8375,7 @@ length += 2 length += 1 length += len(self.PlayerName) + length += 1 length += 1 for i in range(self.MatchPlayerCount): length += self.MatchPlayer[i].GetLength() @@ -8350,6 +8388,7 @@ data = CommFunc.WriteWORD(data, self.RoomID) data = CommFunc.WriteBYTE(data, self.NameLen) data = CommFunc.WriteString(data, self.NameLen, self.PlayerName) + data = CommFunc.WriteBYTE(data, self.Number) data = CommFunc.WriteBYTE(data, self.MatchPlayerCount) for i in range(self.MatchPlayerCount): data = CommFunc.WriteString(data, self.MatchPlayer[i].GetLength(), self.MatchPlayer[i].GetBuffer()) @@ -8361,6 +8400,7 @@ RoomID:%d, NameLen:%d, PlayerName:%s, + Number:%d, MatchPlayerCount:%d, MatchPlayer:%s '''\ @@ -8369,6 +8409,7 @@ self.RoomID, self.NameLen, self.PlayerName, + self.Number, self.MatchPlayerCount, "..." ) @@ -8390,7 +8431,7 @@ RoundCount = 0 #(BYTE RoundCount)// PK回合数 RoundWinnerID = list() #(vector<DWORD> RoundWinnerID)// 回合获胜ID列表 AddScore = 0 #(WORD AddScore)// 本场加分 - Score = 0 #(WORD Score)// 当前积分 + Score = 0 #(DWORD Score)// 当前积分 DanLV = 0 #(BYTE DanLV)// 当前段位 CWinCnt = 0 #(WORD CWinCnt)// 当前连胜数 TagNameLen = 0 #(BYTE TagNameLen) @@ -8414,7 +8455,7 @@ value,_pos=CommFunc.ReadDWORD(_lpData,_pos) self.RoundWinnerID.append(value) self.AddScore,_pos = CommFunc.ReadWORD(_lpData, _pos) - self.Score,_pos = CommFunc.ReadWORD(_lpData, _pos) + self.Score,_pos = CommFunc.ReadDWORD(_lpData, _pos) self.DanLV,_pos = CommFunc.ReadBYTE(_lpData, _pos) self.CWinCnt,_pos = CommFunc.ReadWORD(_lpData, _pos) self.TagNameLen,_pos = CommFunc.ReadBYTE(_lpData, _pos) @@ -8448,7 +8489,7 @@ length += 1 length += 4 * self.RoundCount length += 2 - length += 2 + length += 4 length += 1 length += 2 length += 1 @@ -8466,7 +8507,7 @@ for i in range(self.RoundCount): data = CommFunc.WriteDWORD(data, self.RoundWinnerID[i]) data = CommFunc.WriteWORD(data, self.AddScore) - data = CommFunc.WriteWORD(data, self.Score) + data = CommFunc.WriteDWORD(data, self.Score) data = CommFunc.WriteBYTE(data, self.DanLV) data = CommFunc.WriteWORD(data, self.CWinCnt) data = CommFunc.WriteBYTE(data, self.TagNameLen) @@ -9049,6 +9090,714 @@ m_NAtagMCCoinToGoldReport=tagMCCoinToGoldReport() ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCCoinToGoldReport.Head.Cmd,m_NAtagMCCoinToGoldReport.Head.SubCmd))] = m_NAtagMCCoinToGoldReport + + +#------------------------------------------------------ +# A1 12 玩家初始化 #tagMCDBPlayer + +class tagMCDBPlayer(Structure): + Head = tagHead() + AccID = "" #(char AccID[65])//帐号名, 该角色所在的帐号的用户名 + PlayerID = 0 #(DWORD PlayerID) + PlayerName = "" #(char PlayerName[33])//size = 14 + AccState = 0 #(BYTE AccState)//0: 未创建, 1: 创建OK,正常登录 2:封号 3:已删除 + GMLevel = 0 #(BYTE GMLevel)//GM等级, 0:不是GM >=1 : GM的等级 + Sex = 0 #(BYTE Sex)//性别 + Job = 0 #(BYTE Job)//职业, 0.新手 1.游侠 2.战士 3.弓箭手 4.术士 5.道士 + ReincarnationLv = 0 #(WORD ReincarnationLv)// 转生等级 + LV = 0 #(WORD LV)//等级 + LVEx = 0 #(WORD LVEx)//玩家等级副本,用于转生 + LV2 = 0 #(WORD LV2)//大师等级 + ExpPoint = 0 #(DWORD ExpPoint)//扩充经验点数 + TotalExp = 0 #(DWORD TotalExp)//总经验 + Family = 0 #(DWORD Family)//家族 + FamilyName = "" #(char FamilyName[33])//家族名称 + TeamHornor = 0 #(int TeamHornor)//组队荣誉 + FamilyHornor = 0 #(int FamilyHornor)//家族荣耀 + FamilyActiveValue = 0 #(int FamilyActiveValue)//家族活跃度 + LastWeekFamilyActiveValue = 0 #(int LastWeekFamilyActiveValue)//上周家族活跃度 + CountryHornor = 0 #(int CountryHornor)//本周国家功勋值 + CountryLastWeekHornor = 0 #(int CountryLastWeekHornor)//上周国家功勋值 + Mate = 0 #(DWORD Mate) + Gold = 0 #(DWORD Gold)//金子 + GoldPaper = 0 #(DWORD GoldPaper)//金票 + Silver = 0 #(DWORD Silver)//银子 + SilverPaper = 0 #(DWORD SilverPaper)//银票 + FightPoint = 0 #(DWORD FightPoint)//战斗值 + HappyPoint = 0 #(DWORD HappyPoint)//脱机挂时长(秒) + LineID = 0 #(BYTE LineID)//角色所在线路 + MapID = 0 #(WORD MapID)//角色所在地图 + PosX = 0 #(WORD PosX)//角色坐标 + PosY = 0 #(WORD PosY) + RebornMapID = 0 #(WORD RebornMapID)//重生点地图ID + RebornPosX = 0 #(WORD RebornPosX) + RebornPosY = 0 #(WORD RebornPosY) + State = 0 #(BYTE State)//角色状态 0.正常在线1.脱机挂在线 2脱机挂死亡 + HP = 0 #(DWORD HP)//当前HP + XP = 0 #(DWORD XP)//当前XP + HPRestoreSetting = 0 #(WORD HPRestoreSetting)//少于这个值%自动喝血 + MPRestoreSetting = 0 #(WORD MPRestoreSetting)//少于这个值%自动喝魔 + FreePoint = 0 #(DWORD FreePoint)//未分配点数 + FreeSkillPoint = 0 #(DWORD FreeSkillPoint)//未分配的技能点 + BaseSTR = 0 #(int BaseSTR)//裸体力量 + BasePNE = 0 #(int BasePNE)//裸体真元 + BasePHY = 0 #(int BasePHY)//裸体筋骨 + BaseCON = 0 #(int BaseCON)//裸体体魄 + STR = 0 #(int STR)//力量 + PNE = 0 #(int PNE)//真元 + PHY = 0 #(int PHY)//筋骨 + CON = 0 #(int CON)//体魄 + PKValue = 0 #(WORD PKValue)//衡量PK能力的一项属性,由攻防计算而得 + BackpackLV = 0 #(BYTE BackpackLV)//背包等级 + WarehouseLV = 0 #(BYTE WarehouseLV)//仓库等级 + TeamID = 0 #(DWORD TeamID)//队伍ID + UseGoldType = 0 #(BYTE UseGoldType)//默认用金子/金票 类型为MoneyType + UseSilverType = 0 #(BYTE UseSilverType)//默认用的银子/银票 + AttackMode = 0 #(BYTE AttackMode)//攻击模式 + LastWeekOnlineTime = 0 #(DWORD LastWeekOnlineTime)//上周在线时间 + FBID = 0 #(BYTE FBID)//fb id + FamilyLV = 0 #(BYTE FamilyLV)//家族等级 + FriendFavor = 0 #(DWORD FriendFavor)//好友人气值 + Energy = 0 #(DWORD Energy)//精力值 + EquipShowSwitch = 0 #(DWORD EquipShowSwitch)//装备显示开关 + LuckValue = 0 #(DWORD LuckValue)//幸运值 + ExAttr1 = 0 #(DWORD ExAttr1)//扩展属性1,各项目专用 + ExAttr2 = 0 #(DWORD ExAttr2)//扩展属性2,各项目专用 + ExAttr3 = 0 #(DWORD ExAttr3)//扩展属性3,各项目专用 + ExAttr4 = 0 #(DWORD ExAttr4)//扩展属性4,各项目专用 + ExAttr5 = 0 #(DWORD ExAttr5)//扩展属性5,各项目专用 + Faction = 0 #(BYTE Faction)//阵营 + InfamyValue = 0 #(DWORD InfamyValue)//恶名值 + OfficialRank = 0 #(BYTE OfficialRank)//官阶,官职等级 + ChangeCoinPointTotal = 0 #(DWORD ChangeCoinPointTotal)//兑换的点数总计 + VIPLv = 0 #(BYTE VIPLv)//VIP等级 + VIPLvForPhone = 0 #(BYTE VIPLvForPhone)//移动VIP等级 + ExAttr6 = 0 #(DWORD ExAttr6)//扩展属性6,各项目专用 + ExAttr7 = 0 #(DWORD ExAttr7)//扩展属性7,各项目专用 + ExAttr8 = 0 #(DWORD ExAttr8)//扩展属性8,各项目专用 + ExAttr9 = 0 #(DWORD ExAttr9)//扩展属性9,各项目专用 + ExAttr10 = 0 #(DWORD ExAttr10)//扩展属性10,各项目专用 + ModelMark = 0 #(DWORD ModelMark)// 变形模型mark + ExAttr11 = 0 #(DWORD ExAttr11)//预留的扩展属性字段,用来存放项目特定的属性 + ExAttr12 = 0 #(DWORD ExAttr12)//预留的扩展属性字段,用来存放项目特定的属性 + ExAttr13 = 0 #(DWORD ExAttr13)//预留的扩展属性字段,用来存放项目特定的属性 + ExAttr14 = 0 #(DWORD ExAttr14)//预留的扩展属性字段,用来存放项目特定的属性 + 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.Clear() + self.Head.Cmd = 0xA1 + self.Head.SubCmd = 0x12 + return + + def ReadData(self, _lpData, _pos=0, _Len=0): + self.Clear() + _pos = self.Head.ReadData(_lpData, _pos) + self.AccID,_pos = CommFunc.ReadString(_lpData, _pos,65) + self.PlayerID,_pos = CommFunc.ReadDWORD(_lpData, _pos) + self.PlayerName,_pos = CommFunc.ReadString(_lpData, _pos,33) + self.AccState,_pos = CommFunc.ReadBYTE(_lpData, _pos) + self.GMLevel,_pos = CommFunc.ReadBYTE(_lpData, _pos) + self.Sex,_pos = CommFunc.ReadBYTE(_lpData, _pos) + self.Job,_pos = CommFunc.ReadBYTE(_lpData, _pos) + self.ReincarnationLv,_pos = CommFunc.ReadWORD(_lpData, _pos) + 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.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.TeamHornor,_pos = CommFunc.ReadDWORD(_lpData, _pos) + self.FamilyHornor,_pos = CommFunc.ReadDWORD(_lpData, _pos) + self.FamilyActiveValue,_pos = CommFunc.ReadDWORD(_lpData, _pos) + self.LastWeekFamilyActiveValue,_pos = CommFunc.ReadDWORD(_lpData, _pos) + self.CountryHornor,_pos = CommFunc.ReadDWORD(_lpData, _pos) + self.CountryLastWeekHornor,_pos = CommFunc.ReadDWORD(_lpData, _pos) + self.Mate,_pos = CommFunc.ReadDWORD(_lpData, _pos) + self.Gold,_pos = CommFunc.ReadDWORD(_lpData, _pos) + self.GoldPaper,_pos = CommFunc.ReadDWORD(_lpData, _pos) + self.Silver,_pos = CommFunc.ReadDWORD(_lpData, _pos) + self.SilverPaper,_pos = CommFunc.ReadDWORD(_lpData, _pos) + self.FightPoint,_pos = CommFunc.ReadDWORD(_lpData, _pos) + self.HappyPoint,_pos = CommFunc.ReadDWORD(_lpData, _pos) + self.LineID,_pos = CommFunc.ReadBYTE(_lpData, _pos) + self.MapID,_pos = CommFunc.ReadWORD(_lpData, _pos) + self.PosX,_pos = CommFunc.ReadWORD(_lpData, _pos) + self.PosY,_pos = CommFunc.ReadWORD(_lpData, _pos) + self.RebornMapID,_pos = CommFunc.ReadWORD(_lpData, _pos) + self.RebornPosX,_pos = CommFunc.ReadWORD(_lpData, _pos) + self.RebornPosY,_pos = CommFunc.ReadWORD(_lpData, _pos) + self.State,_pos = CommFunc.ReadBYTE(_lpData, _pos) + self.HP,_pos = CommFunc.ReadDWORD(_lpData, _pos) + self.XP,_pos = CommFunc.ReadDWORD(_lpData, _pos) + self.HPRestoreSetting,_pos = CommFunc.ReadWORD(_lpData, _pos) + self.MPRestoreSetting,_pos = CommFunc.ReadWORD(_lpData, _pos) + self.FreePoint,_pos = CommFunc.ReadDWORD(_lpData, _pos) + self.FreeSkillPoint,_pos = CommFunc.ReadDWORD(_lpData, _pos) + self.BaseSTR,_pos = CommFunc.ReadDWORD(_lpData, _pos) + self.BasePNE,_pos = CommFunc.ReadDWORD(_lpData, _pos) + self.BasePHY,_pos = CommFunc.ReadDWORD(_lpData, _pos) + self.BaseCON,_pos = CommFunc.ReadDWORD(_lpData, _pos) + self.STR,_pos = CommFunc.ReadDWORD(_lpData, _pos) + self.PNE,_pos = CommFunc.ReadDWORD(_lpData, _pos) + self.PHY,_pos = CommFunc.ReadDWORD(_lpData, _pos) + self.CON,_pos = CommFunc.ReadDWORD(_lpData, _pos) + self.PKValue,_pos = CommFunc.ReadWORD(_lpData, _pos) + self.BackpackLV,_pos = CommFunc.ReadBYTE(_lpData, _pos) + self.WarehouseLV,_pos = CommFunc.ReadBYTE(_lpData, _pos) + self.TeamID,_pos = CommFunc.ReadDWORD(_lpData, _pos) + self.UseGoldType,_pos = CommFunc.ReadBYTE(_lpData, _pos) + self.UseSilverType,_pos = CommFunc.ReadBYTE(_lpData, _pos) + self.AttackMode,_pos = CommFunc.ReadBYTE(_lpData, _pos) + self.LastWeekOnlineTime,_pos = CommFunc.ReadDWORD(_lpData, _pos) + self.FBID,_pos = CommFunc.ReadBYTE(_lpData, _pos) + self.FamilyLV,_pos = CommFunc.ReadBYTE(_lpData, _pos) + self.FriendFavor,_pos = CommFunc.ReadDWORD(_lpData, _pos) + self.Energy,_pos = CommFunc.ReadDWORD(_lpData, _pos) + self.EquipShowSwitch,_pos = CommFunc.ReadDWORD(_lpData, _pos) + self.LuckValue,_pos = CommFunc.ReadDWORD(_lpData, _pos) + self.ExAttr1,_pos = CommFunc.ReadDWORD(_lpData, _pos) + self.ExAttr2,_pos = CommFunc.ReadDWORD(_lpData, _pos) + self.ExAttr3,_pos = CommFunc.ReadDWORD(_lpData, _pos) + self.ExAttr4,_pos = CommFunc.ReadDWORD(_lpData, _pos) + self.ExAttr5,_pos = CommFunc.ReadDWORD(_lpData, _pos) + self.Faction,_pos = CommFunc.ReadBYTE(_lpData, _pos) + self.InfamyValue,_pos = CommFunc.ReadDWORD(_lpData, _pos) + self.OfficialRank,_pos = CommFunc.ReadBYTE(_lpData, _pos) + self.ChangeCoinPointTotal,_pos = CommFunc.ReadDWORD(_lpData, _pos) + self.VIPLv,_pos = CommFunc.ReadBYTE(_lpData, _pos) + self.VIPLvForPhone,_pos = CommFunc.ReadBYTE(_lpData, _pos) + self.ExAttr6,_pos = CommFunc.ReadDWORD(_lpData, _pos) + self.ExAttr7,_pos = CommFunc.ReadDWORD(_lpData, _pos) + self.ExAttr8,_pos = CommFunc.ReadDWORD(_lpData, _pos) + self.ExAttr9,_pos = CommFunc.ReadDWORD(_lpData, _pos) + self.ExAttr10,_pos = CommFunc.ReadDWORD(_lpData, _pos) + self.ModelMark,_pos = CommFunc.ReadDWORD(_lpData, _pos) + self.ExAttr11,_pos = CommFunc.ReadDWORD(_lpData, _pos) + self.ExAttr12,_pos = CommFunc.ReadDWORD(_lpData, _pos) + self.ExAttr13,_pos = CommFunc.ReadDWORD(_lpData, _pos) + self.ExAttr14,_pos = CommFunc.ReadDWORD(_lpData, _pos) + 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.Head = tagHead() + self.Head.Clear() + self.Head.Cmd = 0xA1 + self.Head.SubCmd = 0x12 + self.AccID = "" + self.PlayerID = 0 + self.PlayerName = "" + self.AccState = 0 + self.GMLevel = 0 + self.Sex = 0 + self.Job = 0 + self.ReincarnationLv = 0 + self.LV = 0 + self.LVEx = 0 + self.LV2 = 0 + self.ExpPoint = 0 + self.TotalExp = 0 + self.Family = 0 + self.FamilyName = "" + self.TeamHornor = 0 + self.FamilyHornor = 0 + self.FamilyActiveValue = 0 + self.LastWeekFamilyActiveValue = 0 + self.CountryHornor = 0 + self.CountryLastWeekHornor = 0 + self.Mate = 0 + self.Gold = 0 + self.GoldPaper = 0 + self.Silver = 0 + self.SilverPaper = 0 + self.FightPoint = 0 + self.HappyPoint = 0 + self.LineID = 0 + self.MapID = 0 + self.PosX = 0 + self.PosY = 0 + self.RebornMapID = 0 + self.RebornPosX = 0 + self.RebornPosY = 0 + self.State = 0 + self.HP = 0 + self.XP = 0 + self.HPRestoreSetting = 0 + self.MPRestoreSetting = 0 + self.FreePoint = 0 + self.FreeSkillPoint = 0 + self.BaseSTR = 0 + self.BasePNE = 0 + self.BasePHY = 0 + self.BaseCON = 0 + self.STR = 0 + self.PNE = 0 + self.PHY = 0 + self.CON = 0 + self.PKValue = 0 + self.BackpackLV = 0 + self.WarehouseLV = 0 + self.TeamID = 0 + self.UseGoldType = 0 + self.UseSilverType = 0 + self.AttackMode = 0 + self.LastWeekOnlineTime = 0 + self.FBID = 0 + self.FamilyLV = 0 + self.FriendFavor = 0 + self.Energy = 0 + self.EquipShowSwitch = 0 + self.LuckValue = 0 + self.ExAttr1 = 0 + self.ExAttr2 = 0 + self.ExAttr3 = 0 + self.ExAttr4 = 0 + self.ExAttr5 = 0 + self.Faction = 0 + self.InfamyValue = 0 + self.OfficialRank = 0 + self.ChangeCoinPointTotal = 0 + self.VIPLv = 0 + self.VIPLvForPhone = 0 + self.ExAttr6 = 0 + self.ExAttr7 = 0 + self.ExAttr8 = 0 + self.ExAttr9 = 0 + self.ExAttr10 = 0 + self.ModelMark = 0 + self.ExAttr11 = 0 + self.ExAttr12 = 0 + self.ExAttr13 = 0 + self.ExAttr14 = 0 + 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 = 0 + length += self.Head.GetLength() + length += 65 + length += 4 + length += 33 + length += 1 + length += 1 + length += 1 + length += 1 + length += 2 + length += 2 + length += 2 + length += 2 + length += 4 + length += 4 + length += 4 + length += 33 + length += 4 + length += 4 + length += 4 + length += 4 + length += 4 + length += 4 + length += 4 + length += 4 + length += 4 + length += 4 + length += 4 + length += 4 + length += 4 + length += 1 + length += 2 + length += 2 + length += 2 + length += 2 + length += 2 + length += 2 + length += 1 + length += 4 + length += 4 + length += 2 + length += 2 + length += 4 + length += 4 + length += 4 + length += 4 + length += 4 + length += 4 + length += 4 + length += 4 + length += 4 + length += 4 + length += 2 + length += 1 + length += 1 + length += 4 + length += 1 + length += 1 + length += 1 + length += 4 + length += 1 + length += 1 + length += 4 + length += 4 + length += 4 + length += 4 + length += 4 + length += 4 + length += 4 + length += 4 + length += 4 + length += 1 + length += 4 + length += 1 + length += 4 + length += 1 + length += 1 + length += 4 + length += 4 + length += 4 + length += 4 + length += 4 + length += 4 + length += 4 + length += 4 + length += 4 + length += 4 + length += 4 + length += 15 + length += 4 + length += 4 + length += 4 + length += 4 + length += 4 + length += 4 + length += 4 + + return length + + def GetBuffer(self): + data = '' + data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer()) + data = CommFunc.WriteString(data, 65, self.AccID) + data = CommFunc.WriteDWORD(data, self.PlayerID) + data = CommFunc.WriteString(data, 33, self.PlayerName) + data = CommFunc.WriteBYTE(data, self.AccState) + data = CommFunc.WriteBYTE(data, self.GMLevel) + data = CommFunc.WriteBYTE(data, self.Sex) + data = CommFunc.WriteBYTE(data, self.Job) + data = CommFunc.WriteWORD(data, self.ReincarnationLv) + data = CommFunc.WriteWORD(data, self.LV) + data = CommFunc.WriteWORD(data, self.LVEx) + data = CommFunc.WriteWORD(data, self.LV2) + 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.TeamHornor) + data = CommFunc.WriteDWORD(data, self.FamilyHornor) + data = CommFunc.WriteDWORD(data, self.FamilyActiveValue) + data = CommFunc.WriteDWORD(data, self.LastWeekFamilyActiveValue) + data = CommFunc.WriteDWORD(data, self.CountryHornor) + data = CommFunc.WriteDWORD(data, self.CountryLastWeekHornor) + data = CommFunc.WriteDWORD(data, self.Mate) + data = CommFunc.WriteDWORD(data, self.Gold) + data = CommFunc.WriteDWORD(data, self.GoldPaper) + data = CommFunc.WriteDWORD(data, self.Silver) + data = CommFunc.WriteDWORD(data, self.SilverPaper) + data = CommFunc.WriteDWORD(data, self.FightPoint) + data = CommFunc.WriteDWORD(data, self.HappyPoint) + data = CommFunc.WriteBYTE(data, self.LineID) + data = CommFunc.WriteWORD(data, self.MapID) + data = CommFunc.WriteWORD(data, self.PosX) + data = CommFunc.WriteWORD(data, self.PosY) + data = CommFunc.WriteWORD(data, self.RebornMapID) + data = CommFunc.WriteWORD(data, self.RebornPosX) + data = CommFunc.WriteWORD(data, self.RebornPosY) + data = CommFunc.WriteBYTE(data, self.State) + data = CommFunc.WriteDWORD(data, self.HP) + data = CommFunc.WriteDWORD(data, self.XP) + data = CommFunc.WriteWORD(data, self.HPRestoreSetting) + data = CommFunc.WriteWORD(data, self.MPRestoreSetting) + data = CommFunc.WriteDWORD(data, self.FreePoint) + data = CommFunc.WriteDWORD(data, self.FreeSkillPoint) + data = CommFunc.WriteDWORD(data, self.BaseSTR) + data = CommFunc.WriteDWORD(data, self.BasePNE) + data = CommFunc.WriteDWORD(data, self.BasePHY) + data = CommFunc.WriteDWORD(data, self.BaseCON) + data = CommFunc.WriteDWORD(data, self.STR) + data = CommFunc.WriteDWORD(data, self.PNE) + data = CommFunc.WriteDWORD(data, self.PHY) + data = CommFunc.WriteDWORD(data, self.CON) + data = CommFunc.WriteWORD(data, self.PKValue) + data = CommFunc.WriteBYTE(data, self.BackpackLV) + data = CommFunc.WriteBYTE(data, self.WarehouseLV) + data = CommFunc.WriteDWORD(data, self.TeamID) + data = CommFunc.WriteBYTE(data, self.UseGoldType) + data = CommFunc.WriteBYTE(data, self.UseSilverType) + data = CommFunc.WriteBYTE(data, self.AttackMode) + data = CommFunc.WriteDWORD(data, self.LastWeekOnlineTime) + data = CommFunc.WriteBYTE(data, self.FBID) + data = CommFunc.WriteBYTE(data, self.FamilyLV) + data = CommFunc.WriteDWORD(data, self.FriendFavor) + data = CommFunc.WriteDWORD(data, self.Energy) + data = CommFunc.WriteDWORD(data, self.EquipShowSwitch) + data = CommFunc.WriteDWORD(data, self.LuckValue) + data = CommFunc.WriteDWORD(data, self.ExAttr1) + data = CommFunc.WriteDWORD(data, self.ExAttr2) + data = CommFunc.WriteDWORD(data, self.ExAttr3) + data = CommFunc.WriteDWORD(data, self.ExAttr4) + data = CommFunc.WriteDWORD(data, self.ExAttr5) + data = CommFunc.WriteBYTE(data, self.Faction) + data = CommFunc.WriteDWORD(data, self.InfamyValue) + data = CommFunc.WriteBYTE(data, self.OfficialRank) + data = CommFunc.WriteDWORD(data, self.ChangeCoinPointTotal) + data = CommFunc.WriteBYTE(data, self.VIPLv) + data = CommFunc.WriteBYTE(data, self.VIPLvForPhone) + data = CommFunc.WriteDWORD(data, self.ExAttr6) + data = CommFunc.WriteDWORD(data, self.ExAttr7) + data = CommFunc.WriteDWORD(data, self.ExAttr8) + data = CommFunc.WriteDWORD(data, self.ExAttr9) + data = CommFunc.WriteDWORD(data, self.ExAttr10) + data = CommFunc.WriteDWORD(data, self.ModelMark) + data = CommFunc.WriteDWORD(data, self.ExAttr11) + data = CommFunc.WriteDWORD(data, self.ExAttr12) + data = CommFunc.WriteDWORD(data, self.ExAttr13) + data = CommFunc.WriteDWORD(data, self.ExAttr14) + 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): + DumpString = ''' + Head:%s, + AccID:%s, + PlayerID:%d, + PlayerName:%s, + AccState:%d, + GMLevel:%d, + Sex:%d, + Job:%d, + ReincarnationLv:%d, + LV:%d, + LVEx:%d, + LV2:%d, + ExpPoint:%d, + TotalExp:%d, + Family:%d, + FamilyName:%s, + TeamHornor:%d, + FamilyHornor:%d, + FamilyActiveValue:%d, + LastWeekFamilyActiveValue:%d, + CountryHornor:%d, + CountryLastWeekHornor:%d, + Mate:%d, + Gold:%d, + GoldPaper:%d, + Silver:%d, + SilverPaper:%d, + FightPoint:%d, + HappyPoint:%d, + LineID:%d, + MapID:%d, + PosX:%d, + PosY:%d, + RebornMapID:%d, + RebornPosX:%d, + RebornPosY:%d, + State:%d, + HP:%d, + XP:%d, + HPRestoreSetting:%d, + MPRestoreSetting:%d, + FreePoint:%d, + FreeSkillPoint:%d, + BaseSTR:%d, + BasePNE:%d, + BasePHY:%d, + BaseCON:%d, + STR:%d, + PNE:%d, + PHY:%d, + CON:%d, + PKValue:%d, + BackpackLV:%d, + WarehouseLV:%d, + TeamID:%d, + UseGoldType:%d, + UseSilverType:%d, + AttackMode:%d, + LastWeekOnlineTime:%d, + FBID:%d, + FamilyLV:%d, + FriendFavor:%d, + Energy:%d, + EquipShowSwitch:%d, + LuckValue:%d, + ExAttr1:%d, + ExAttr2:%d, + ExAttr3:%d, + ExAttr4:%d, + ExAttr5:%d, + Faction:%d, + InfamyValue:%d, + OfficialRank:%d, + ChangeCoinPointTotal:%d, + VIPLv:%d, + VIPLvForPhone:%d, + ExAttr6:%d, + ExAttr7:%d, + ExAttr8:%d, + ExAttr9:%d, + ExAttr10:%d, + ModelMark:%d, + ExAttr11:%d, + ExAttr12:%d, + ExAttr13:%d, + ExAttr14:%d, + OperateInfo:%d, + Operate:%s, + ServerID:%d, + ExAttr15:%d, + ExAttr16:%d, + ExAttr17:%d, + ExAttr18:%d, + ExAttr19:%d, + ExAttr20:%d + '''\ + %( + self.Head.OutputString(), + self.AccID, + self.PlayerID, + self.PlayerName, + self.AccState, + self.GMLevel, + self.Sex, + self.Job, + self.ReincarnationLv, + self.LV, + self.LVEx, + self.LV2, + self.ExpPoint, + self.TotalExp, + self.Family, + self.FamilyName, + self.TeamHornor, + self.FamilyHornor, + self.FamilyActiveValue, + self.LastWeekFamilyActiveValue, + self.CountryHornor, + self.CountryLastWeekHornor, + self.Mate, + self.Gold, + self.GoldPaper, + self.Silver, + self.SilverPaper, + self.FightPoint, + self.HappyPoint, + self.LineID, + self.MapID, + self.PosX, + self.PosY, + self.RebornMapID, + self.RebornPosX, + self.RebornPosY, + self.State, + self.HP, + self.XP, + self.HPRestoreSetting, + self.MPRestoreSetting, + self.FreePoint, + self.FreeSkillPoint, + self.BaseSTR, + self.BasePNE, + self.BasePHY, + self.BaseCON, + self.STR, + self.PNE, + self.PHY, + self.CON, + self.PKValue, + self.BackpackLV, + self.WarehouseLV, + self.TeamID, + self.UseGoldType, + self.UseSilverType, + self.AttackMode, + self.LastWeekOnlineTime, + self.FBID, + self.FamilyLV, + self.FriendFavor, + self.Energy, + self.EquipShowSwitch, + self.LuckValue, + self.ExAttr1, + self.ExAttr2, + self.ExAttr3, + self.ExAttr4, + self.ExAttr5, + self.Faction, + self.InfamyValue, + self.OfficialRank, + self.ChangeCoinPointTotal, + self.VIPLv, + self.VIPLvForPhone, + self.ExAttr6, + self.ExAttr7, + self.ExAttr8, + self.ExAttr9, + self.ExAttr10, + self.ModelMark, + self.ExAttr11, + self.ExAttr12, + self.ExAttr13, + self.ExAttr14, + self.OperateInfo, + self.Operate, + self.ServerID, + self.ExAttr15, + self.ExAttr16, + self.ExAttr17, + self.ExAttr18, + self.ExAttr19, + self.ExAttr20 + ) + return DumpString + + +m_NAtagMCDBPlayer=tagMCDBPlayer() +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCDBPlayer.Head.Cmd,m_NAtagMCDBPlayer.Head.SubCmd))] = m_NAtagMCDBPlayer #------------------------------------------------------ @@ -19358,6 +20107,474 @@ #------------------------------------------------------ +# AA 0C 登录奖励活动信息 #tagMCActLoginAwardInfo + +class tagMCActLoginAwardItem(Structure): + _pack_ = 1 + _fields_ = [ + ("ItemID", c_int), # 物品ID + ("ItemCnt", 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.ItemCnt = 0 + self.IsBind = 0 + return + + def GetLength(self): + return sizeof(tagMCActLoginAwardItem) + + def GetBuffer(self): + return string_at(addressof(self), self.GetLength()) + + def OutputString(self): + DumpString = '''// AA 0C 登录奖励活动信息 //tagMCActLoginAwardInfo: + ItemID:%d, + ItemCnt:%d, + IsBind:%d + '''\ + %( + self.ItemID, + self.ItemCnt, + self.IsBind + ) + return DumpString + + +class tagMCActLoginAwardAction(Structure): + TemplateID = 0 #(DWORD TemplateID)// 模板ID + ActionType = 0 #(WORD ActionType)// 活动类别 + TotalTimes = 0 #(DWORD TotalTimes)// 可完成的总次数,0表示不限次数 + SingleTimes = 0 #(DWORD SingleTimes)// 单次领奖需要的次数 + Count = 0 #(BYTE Count)// 物品数 + ItemInfo = list() #(vector<tagMCActLoginAwardItem> ItemInfo)// 物品信息 + data = None + + def __init__(self): + self.Clear() + return + + def ReadData(self, _lpData, _pos=0, _Len=0): + self.Clear() + self.TemplateID,_pos = CommFunc.ReadDWORD(_lpData, _pos) + self.ActionType,_pos = CommFunc.ReadWORD(_lpData, _pos) + self.TotalTimes,_pos = CommFunc.ReadDWORD(_lpData, _pos) + self.SingleTimes,_pos = CommFunc.ReadDWORD(_lpData, _pos) + self.Count,_pos = CommFunc.ReadBYTE(_lpData, _pos) + for i in range(self.Count): + temItemInfo = tagMCActLoginAwardItem() + _pos = temItemInfo.ReadData(_lpData, _pos) + self.ItemInfo.append(temItemInfo) + return _pos + + def Clear(self): + self.TemplateID = 0 + self.ActionType = 0 + self.TotalTimes = 0 + self.SingleTimes = 0 + self.Count = 0 + self.ItemInfo = list() + return + + def GetLength(self): + length = 0 + length += 4 + length += 2 + length += 4 + length += 4 + length += 1 + for i in range(self.Count): + length += self.ItemInfo[i].GetLength() + + return length + + def GetBuffer(self): + data = '' + data = CommFunc.WriteDWORD(data, self.TemplateID) + data = CommFunc.WriteWORD(data, self.ActionType) + data = CommFunc.WriteDWORD(data, self.TotalTimes) + data = CommFunc.WriteDWORD(data, self.SingleTimes) + data = CommFunc.WriteBYTE(data, self.Count) + for i in range(self.Count): + data = CommFunc.WriteString(data, self.ItemInfo[i].GetLength(), self.ItemInfo[i].GetBuffer()) + return data + + def OutputString(self): + DumpString = ''' + TemplateID:%d, + ActionType:%d, + TotalTimes:%d, + SingleTimes:%d, + Count:%d, + ItemInfo:%s + '''\ + %( + self.TemplateID, + self.ActionType, + self.TotalTimes, + self.SingleTimes, + self.Count, + "..." + ) + return DumpString + + +class tagMCActLoginAwardDayInfo(Structure): + ActCnt = 0 #(BYTE ActCnt)// 数量 + TemplateList = list() #(vector<WORD> TemplateList)// 模板列表 + data = None + + def __init__(self): + self.Clear() + return + + def ReadData(self, _lpData, _pos=0, _Len=0): + self.Clear() + self.ActCnt,_pos = CommFunc.ReadBYTE(_lpData, _pos) + for i in range(self.ActCnt): + value,_pos=CommFunc.ReadWORD(_lpData,_pos) + self.TemplateList.append(value) + return _pos + + def Clear(self): + self.ActCnt = 0 + self.TemplateList = list() + return + + def GetLength(self): + length = 0 + length += 1 + length += 2 * self.ActCnt + + return length + + def GetBuffer(self): + data = '' + data = CommFunc.WriteBYTE(data, self.ActCnt) + for i in range(self.ActCnt): + data = CommFunc.WriteWORD(data, self.TemplateList[i]) + return data + + def OutputString(self): + DumpString = ''' + ActCnt:%d, + TemplateList:%s + '''\ + %( + self.ActCnt, + "..." + ) + return DumpString + + +class tagMCActLoginAwardInfo(Structure): + Head = tagHead() + StartDate = "" #(char StartDate[10])// 开始日期 y-m-d + EndtDate = "" #(char EndtDate[10])// 结束日期 y-m-d + AdvanceMinutes = 0 #(WORD AdvanceMinutes)// 提前显示分钟 + IsDayReset = 0 #(BYTE IsDayReset)//是否每天重置 + ResetType = 0 #(BYTE ResetType)// 重置类型,0-0点重置;1-5点重置 + LimitLV = 0 #(WORD LimitLV)// 限制等级 + DayCnt = 0 #(BYTE DayCnt)// 天数 + DayInfoList = list() #(vector<tagMCActLoginAwardDayInfo> DayInfoList)// 每天模板 + TCount = 0 #(BYTE TCount)// 模板数 + ActionInfo = list() #(vector<tagMCActLoginAwardAction> ActionInfo)// 活动模板信息 + data = None + + def __init__(self): + self.Clear() + self.Head.Cmd = 0xAA + self.Head.SubCmd = 0x0C + return + + def ReadData(self, _lpData, _pos=0, _Len=0): + self.Clear() + _pos = self.Head.ReadData(_lpData, _pos) + self.StartDate,_pos = CommFunc.ReadString(_lpData, _pos,10) + self.EndtDate,_pos = CommFunc.ReadString(_lpData, _pos,10) + self.AdvanceMinutes,_pos = CommFunc.ReadWORD(_lpData, _pos) + self.IsDayReset,_pos = CommFunc.ReadBYTE(_lpData, _pos) + self.ResetType,_pos = CommFunc.ReadBYTE(_lpData, _pos) + self.LimitLV,_pos = CommFunc.ReadWORD(_lpData, _pos) + self.DayCnt,_pos = CommFunc.ReadBYTE(_lpData, _pos) + for i in range(self.DayCnt): + temDayInfoList = tagMCActLoginAwardDayInfo() + _pos = temDayInfoList.ReadData(_lpData, _pos) + self.DayInfoList.append(temDayInfoList) + self.TCount,_pos = CommFunc.ReadBYTE(_lpData, _pos) + for i in range(self.TCount): + temActionInfo = tagMCActLoginAwardAction() + _pos = temActionInfo.ReadData(_lpData, _pos) + self.ActionInfo.append(temActionInfo) + return _pos + + def Clear(self): + self.Head = tagHead() + self.Head.Clear() + self.Head.Cmd = 0xAA + self.Head.SubCmd = 0x0C + self.StartDate = "" + self.EndtDate = "" + self.AdvanceMinutes = 0 + self.IsDayReset = 0 + self.ResetType = 0 + self.LimitLV = 0 + self.DayCnt = 0 + self.DayInfoList = list() + self.TCount = 0 + self.ActionInfo = list() + return + + def GetLength(self): + length = 0 + length += self.Head.GetLength() + length += 10 + length += 10 + length += 2 + length += 1 + length += 1 + length += 2 + length += 1 + for i in range(self.DayCnt): + length += self.DayInfoList[i].GetLength() + length += 1 + for i in range(self.TCount): + length += self.ActionInfo[i].GetLength() + + return length + + def GetBuffer(self): + data = '' + data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer()) + data = CommFunc.WriteString(data, 10, self.StartDate) + data = CommFunc.WriteString(data, 10, self.EndtDate) + data = CommFunc.WriteWORD(data, self.AdvanceMinutes) + data = CommFunc.WriteBYTE(data, self.IsDayReset) + data = CommFunc.WriteBYTE(data, self.ResetType) + data = CommFunc.WriteWORD(data, self.LimitLV) + data = CommFunc.WriteBYTE(data, self.DayCnt) + for i in range(self.DayCnt): + data = CommFunc.WriteString(data, self.DayInfoList[i].GetLength(), self.DayInfoList[i].GetBuffer()) + data = CommFunc.WriteBYTE(data, self.TCount) + for i in range(self.TCount): + data = CommFunc.WriteString(data, self.ActionInfo[i].GetLength(), self.ActionInfo[i].GetBuffer()) + return data + + def OutputString(self): + DumpString = ''' + Head:%s, + StartDate:%s, + EndtDate:%s, + AdvanceMinutes:%d, + IsDayReset:%d, + ResetType:%d, + LimitLV:%d, + DayCnt:%d, + DayInfoList:%s, + TCount:%d, + ActionInfo:%s + '''\ + %( + self.Head.OutputString(), + self.StartDate, + self.EndtDate, + self.AdvanceMinutes, + self.IsDayReset, + self.ResetType, + self.LimitLV, + self.DayCnt, + "...", + self.TCount, + "..." + ) + return DumpString + + +m_NAtagMCActLoginAwardInfo=tagMCActLoginAwardInfo() +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCActLoginAwardInfo.Head.Cmd,m_NAtagMCActLoginAwardInfo.Head.SubCmd))] = m_NAtagMCActLoginAwardInfo + + +#------------------------------------------------------ +# AA 0D 登录奖励玩家活动信息 #tagMCActLoginAwardPlayerInfo + +class tagMCActLoginAwardTaskInfo(Structure): + _pack_ = 1 + _fields_ = [ + ("TemplateID", c_ushort), # 模板ID + ("CurTimes", c_ushort), #已完成次数 + ("GotTimes", c_ushort), #已领取次数 + ] + + 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.TemplateID = 0 + self.CurTimes = 0 + self.GotTimes = 0 + return + + def GetLength(self): + return sizeof(tagMCActLoginAwardTaskInfo) + + def GetBuffer(self): + return string_at(addressof(self), self.GetLength()) + + def OutputString(self): + DumpString = '''// AA 0D 登录奖励玩家活动信息 //tagMCActLoginAwardPlayerInfo: + TemplateID:%d, + CurTimes:%d, + GotTimes:%d + '''\ + %( + self.TemplateID, + self.CurTimes, + self.GotTimes + ) + return DumpString + + +class tagMCActLoginAwardDayPlayerInfo(Structure): + DayIndex = 0 #(DWORD DayIndex)//第X天 + ACount = 0 #(DWORD ACount)//任务条目数 + TaskList = list() #(vector<tagMCActLoginAwardTaskInfo> TaskList)//活动完成次数信息 + data = None + + def __init__(self): + self.Clear() + return + + def ReadData(self, _lpData, _pos=0, _Len=0): + self.Clear() + self.DayIndex,_pos = CommFunc.ReadDWORD(_lpData, _pos) + self.ACount,_pos = CommFunc.ReadDWORD(_lpData, _pos) + for i in range(self.ACount): + temTaskList = tagMCActLoginAwardTaskInfo() + _pos = temTaskList.ReadData(_lpData, _pos) + self.TaskList.append(temTaskList) + return _pos + + def Clear(self): + self.DayIndex = 0 + self.ACount = 0 + self.TaskList = list() + return + + def GetLength(self): + length = 0 + length += 4 + length += 4 + for i in range(self.ACount): + length += self.TaskList[i].GetLength() + + return length + + def GetBuffer(self): + data = '' + data = CommFunc.WriteDWORD(data, self.DayIndex) + data = CommFunc.WriteDWORD(data, self.ACount) + for i in range(self.ACount): + data = CommFunc.WriteString(data, self.TaskList[i].GetLength(), self.TaskList[i].GetBuffer()) + return data + + def OutputString(self): + DumpString = ''' + DayIndex:%d, + ACount:%d, + TaskList:%s + '''\ + %( + self.DayIndex, + self.ACount, + "..." + ) + return DumpString + + +class tagMCActLoginAwardPlayerInfo(Structure): + Head = tagHead() + Count = 0 #(BYTE Count) + DayInfoList = list() #(vector<tagMCActLoginAwardDayPlayerInfo> DayInfoList)//活动完成次数信息 + data = None + + def __init__(self): + self.Clear() + self.Head.Cmd = 0xAA + self.Head.SubCmd = 0x0D + return + + def ReadData(self, _lpData, _pos=0, _Len=0): + self.Clear() + _pos = self.Head.ReadData(_lpData, _pos) + self.Count,_pos = CommFunc.ReadBYTE(_lpData, _pos) + for i in range(self.Count): + temDayInfoList = tagMCActLoginAwardDayPlayerInfo() + _pos = temDayInfoList.ReadData(_lpData, _pos) + self.DayInfoList.append(temDayInfoList) + return _pos + + def Clear(self): + self.Head = tagHead() + self.Head.Clear() + self.Head.Cmd = 0xAA + self.Head.SubCmd = 0x0D + self.Count = 0 + self.DayInfoList = list() + return + + def GetLength(self): + length = 0 + length += self.Head.GetLength() + length += 1 + for i in range(self.Count): + length += self.DayInfoList[i].GetLength() + + return length + + def GetBuffer(self): + data = '' + data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer()) + data = CommFunc.WriteBYTE(data, self.Count) + for i in range(self.Count): + data = CommFunc.WriteString(data, self.DayInfoList[i].GetLength(), self.DayInfoList[i].GetBuffer()) + return data + + def OutputString(self): + DumpString = ''' + Head:%s, + Count:%d, + DayInfoList:%s + '''\ + %( + self.Head.OutputString(), + self.Count, + "..." + ) + return DumpString + + +m_NAtagMCActLoginAwardPlayerInfo=tagMCActLoginAwardPlayerInfo() +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCActLoginAwardPlayerInfo.Head.Cmd,m_NAtagMCActLoginAwardPlayerInfo.Head.SubCmd))] = m_NAtagMCActLoginAwardPlayerInfo + + +#------------------------------------------------------ # AA 1D 累计充值活动信息 #tagMCActTotalRechargeInfo class tagMCTotalRechargeAwardItem(Structure): @@ -22418,6 +23635,518 @@ #------------------------------------------------------ +# AA 0A 周狂欢活动信息 #tagMCWeekPartyInfo + +class tagMCWeekPartyItem(Structure): + _pack_ = 1 + _fields_ = [ + ("NeedPoint", c_ushort), # 领奖需要积分 + ("ItemID", c_int), # 物品ID + ("ItemCnt", 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.NeedPoint = 0 + self.ItemID = 0 + self.ItemCnt = 0 + self.IsBind = 0 + return + + def GetLength(self): + return sizeof(tagMCWeekPartyItem) + + def GetBuffer(self): + return string_at(addressof(self), self.GetLength()) + + def OutputString(self): + DumpString = '''// AA 0A 周狂欢活动信息 //tagMCWeekPartyInfo: + NeedPoint:%d, + ItemID:%d, + ItemCnt:%d, + IsBind:%d + '''\ + %( + self.NeedPoint, + self.ItemID, + self.ItemCnt, + self.IsBind + ) + return DumpString + + +class tagMCWeekPartyAction(Structure): + TemplateID = 0 #(DWORD TemplateID)// 模板ID + ActionType = 0 #(WORD ActionType)// 活动类别 + TotalTimes = 0 #(DWORD TotalTimes)// 可完成的总次数,0表示不限次数 + SingleTimes = 0 #(DWORD SingleTimes)// 单次领奖需要的次数 + Point = 0 #(DWORD Point)// 单次领奖积分 + Count = 0 #(BYTE Count)// 物品数 + ItemInfo = list() #(vector<tagMCWeekPartyItem> ItemInfo)// 物品信息 + data = None + + def __init__(self): + self.Clear() + return + + def ReadData(self, _lpData, _pos=0, _Len=0): + self.Clear() + self.TemplateID,_pos = CommFunc.ReadDWORD(_lpData, _pos) + self.ActionType,_pos = CommFunc.ReadWORD(_lpData, _pos) + self.TotalTimes,_pos = CommFunc.ReadDWORD(_lpData, _pos) + self.SingleTimes,_pos = CommFunc.ReadDWORD(_lpData, _pos) + self.Point,_pos = CommFunc.ReadDWORD(_lpData, _pos) + self.Count,_pos = CommFunc.ReadBYTE(_lpData, _pos) + for i in range(self.Count): + temItemInfo = tagMCWeekPartyItem() + _pos = temItemInfo.ReadData(_lpData, _pos) + self.ItemInfo.append(temItemInfo) + return _pos + + def Clear(self): + self.TemplateID = 0 + self.ActionType = 0 + self.TotalTimes = 0 + self.SingleTimes = 0 + self.Point = 0 + self.Count = 0 + self.ItemInfo = list() + return + + def GetLength(self): + length = 0 + length += 4 + length += 2 + length += 4 + length += 4 + length += 4 + length += 1 + for i in range(self.Count): + length += self.ItemInfo[i].GetLength() + + return length + + def GetBuffer(self): + data = '' + data = CommFunc.WriteDWORD(data, self.TemplateID) + data = CommFunc.WriteWORD(data, self.ActionType) + data = CommFunc.WriteDWORD(data, self.TotalTimes) + data = CommFunc.WriteDWORD(data, self.SingleTimes) + data = CommFunc.WriteDWORD(data, self.Point) + data = CommFunc.WriteBYTE(data, self.Count) + for i in range(self.Count): + data = CommFunc.WriteString(data, self.ItemInfo[i].GetLength(), self.ItemInfo[i].GetBuffer()) + return data + + def OutputString(self): + DumpString = ''' + TemplateID:%d, + ActionType:%d, + TotalTimes:%d, + SingleTimes:%d, + Point:%d, + Count:%d, + ItemInfo:%s + '''\ + %( + self.TemplateID, + self.ActionType, + self.TotalTimes, + self.SingleTimes, + self.Point, + self.Count, + "..." + ) + return DumpString + + +class tagMCWeekPartyDayInfo(Structure): + ActCnt = 0 #(BYTE ActCnt)// 数量 + TemplateList = list() #(vector<WORD> TemplateList)// 模板列表 + PCount = 0 #(BYTE PCount)// 物品数 + PItemInfo = list() #(vector<tagMCWeekPartyItem> PItemInfo)// 物品信息 + data = None + + def __init__(self): + self.Clear() + return + + def ReadData(self, _lpData, _pos=0, _Len=0): + self.Clear() + self.ActCnt,_pos = CommFunc.ReadBYTE(_lpData, _pos) + for i in range(self.ActCnt): + value,_pos=CommFunc.ReadWORD(_lpData,_pos) + self.TemplateList.append(value) + self.PCount,_pos = CommFunc.ReadBYTE(_lpData, _pos) + for i in range(self.PCount): + temPItemInfo = tagMCWeekPartyItem() + _pos = temPItemInfo.ReadData(_lpData, _pos) + self.PItemInfo.append(temPItemInfo) + return _pos + + def Clear(self): + self.ActCnt = 0 + self.TemplateList = list() + self.PCount = 0 + self.PItemInfo = list() + return + + def GetLength(self): + length = 0 + length += 1 + length += 2 * self.ActCnt + length += 1 + for i in range(self.PCount): + length += self.PItemInfo[i].GetLength() + + return length + + def GetBuffer(self): + data = '' + data = CommFunc.WriteBYTE(data, self.ActCnt) + for i in range(self.ActCnt): + data = CommFunc.WriteWORD(data, self.TemplateList[i]) + data = CommFunc.WriteBYTE(data, self.PCount) + for i in range(self.PCount): + data = CommFunc.WriteString(data, self.PItemInfo[i].GetLength(), self.PItemInfo[i].GetBuffer()) + return data + + def OutputString(self): + DumpString = ''' + ActCnt:%d, + TemplateList:%s, + PCount:%d, + PItemInfo:%s + '''\ + %( + self.ActCnt, + "...", + self.PCount, + "..." + ) + return DumpString + + +class tagMCWeekPartyInfo(Structure): + Head = tagHead() + StartDate = "" #(char StartDate[10])// 开始日期 y-m-d + EndtDate = "" #(char EndtDate[10])// 结束日期 y-m-d + AdvanceMinutes = 0 #(WORD AdvanceMinutes)// 提前显示分钟 + IsDayReset = 0 #(BYTE IsDayReset)//是否每天重置 + ResetType = 0 #(BYTE ResetType)// 重置类型,0-0点重置;1-5点重置 + LimitLV = 0 #(WORD LimitLV)// 限制等级 + DayCnt = 0 #(BYTE DayCnt)// 天数 + DayInfoList = list() #(vector<tagMCWeekPartyDayInfo> DayInfoList)// 每天模板 + TCount = 0 #(BYTE TCount)// 模板数 + ActionInfo = list() #(vector<tagMCWeekPartyAction> ActionInfo)// 活动模板信息 + data = None + + def __init__(self): + self.Clear() + self.Head.Cmd = 0xAA + self.Head.SubCmd = 0x0A + return + + def ReadData(self, _lpData, _pos=0, _Len=0): + self.Clear() + _pos = self.Head.ReadData(_lpData, _pos) + self.StartDate,_pos = CommFunc.ReadString(_lpData, _pos,10) + self.EndtDate,_pos = CommFunc.ReadString(_lpData, _pos,10) + self.AdvanceMinutes,_pos = CommFunc.ReadWORD(_lpData, _pos) + self.IsDayReset,_pos = CommFunc.ReadBYTE(_lpData, _pos) + self.ResetType,_pos = CommFunc.ReadBYTE(_lpData, _pos) + self.LimitLV,_pos = CommFunc.ReadWORD(_lpData, _pos) + self.DayCnt,_pos = CommFunc.ReadBYTE(_lpData, _pos) + for i in range(self.DayCnt): + temDayInfoList = tagMCWeekPartyDayInfo() + _pos = temDayInfoList.ReadData(_lpData, _pos) + self.DayInfoList.append(temDayInfoList) + self.TCount,_pos = CommFunc.ReadBYTE(_lpData, _pos) + for i in range(self.TCount): + temActionInfo = tagMCWeekPartyAction() + _pos = temActionInfo.ReadData(_lpData, _pos) + self.ActionInfo.append(temActionInfo) + return _pos + + def Clear(self): + self.Head = tagHead() + self.Head.Clear() + self.Head.Cmd = 0xAA + self.Head.SubCmd = 0x0A + self.StartDate = "" + self.EndtDate = "" + self.AdvanceMinutes = 0 + self.IsDayReset = 0 + self.ResetType = 0 + self.LimitLV = 0 + self.DayCnt = 0 + self.DayInfoList = list() + self.TCount = 0 + self.ActionInfo = list() + return + + def GetLength(self): + length = 0 + length += self.Head.GetLength() + length += 10 + length += 10 + length += 2 + length += 1 + length += 1 + length += 2 + length += 1 + for i in range(self.DayCnt): + length += self.DayInfoList[i].GetLength() + length += 1 + for i in range(self.TCount): + length += self.ActionInfo[i].GetLength() + + return length + + def GetBuffer(self): + data = '' + data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer()) + data = CommFunc.WriteString(data, 10, self.StartDate) + data = CommFunc.WriteString(data, 10, self.EndtDate) + data = CommFunc.WriteWORD(data, self.AdvanceMinutes) + data = CommFunc.WriteBYTE(data, self.IsDayReset) + data = CommFunc.WriteBYTE(data, self.ResetType) + data = CommFunc.WriteWORD(data, self.LimitLV) + data = CommFunc.WriteBYTE(data, self.DayCnt) + for i in range(self.DayCnt): + data = CommFunc.WriteString(data, self.DayInfoList[i].GetLength(), self.DayInfoList[i].GetBuffer()) + data = CommFunc.WriteBYTE(data, self.TCount) + for i in range(self.TCount): + data = CommFunc.WriteString(data, self.ActionInfo[i].GetLength(), self.ActionInfo[i].GetBuffer()) + return data + + def OutputString(self): + DumpString = ''' + Head:%s, + StartDate:%s, + EndtDate:%s, + AdvanceMinutes:%d, + IsDayReset:%d, + ResetType:%d, + LimitLV:%d, + DayCnt:%d, + DayInfoList:%s, + TCount:%d, + ActionInfo:%s + '''\ + %( + self.Head.OutputString(), + self.StartDate, + self.EndtDate, + self.AdvanceMinutes, + self.IsDayReset, + self.ResetType, + self.LimitLV, + self.DayCnt, + "...", + self.TCount, + "..." + ) + return DumpString + + +m_NAtagMCWeekPartyInfo=tagMCWeekPartyInfo() +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCWeekPartyInfo.Head.Cmd,m_NAtagMCWeekPartyInfo.Head.SubCmd))] = m_NAtagMCWeekPartyInfo + + +#------------------------------------------------------ +# AA 0B 周狂欢玩家活动信息 #tagMCWeekPartyPlayerInfo + +class tagMCWeekPartyTaskInfo(Structure): + _pack_ = 1 + _fields_ = [ + ("TemplateID", c_ushort), # 模板ID + ("CurTimes", c_ushort), #已完成次数 + ("GotTimes", c_ushort), #已领取次数 + ] + + 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.TemplateID = 0 + self.CurTimes = 0 + self.GotTimes = 0 + return + + def GetLength(self): + return sizeof(tagMCWeekPartyTaskInfo) + + def GetBuffer(self): + return string_at(addressof(self), self.GetLength()) + + def OutputString(self): + DumpString = '''// AA 0B 周狂欢玩家活动信息 //tagMCWeekPartyPlayerInfo: + TemplateID:%d, + CurTimes:%d, + GotTimes:%d + '''\ + %( + self.TemplateID, + self.CurTimes, + self.GotTimes + ) + return DumpString + + +class tagMCWeekPartyDayPlayerInfo(Structure): + DayIndex = 0 #(DWORD DayIndex)//第X天 + Point = 0 #(DWORD Point)//积分 + AwardRecord = 0 #(DWORD AwardRecord)//积分领奖记录 + ACount = 0 #(DWORD ACount)//任务条目数 + TaskList = list() #(vector<tagMCWeekPartyTaskInfo> TaskList)//活动完成次数信息 + data = None + + def __init__(self): + self.Clear() + return + + def ReadData(self, _lpData, _pos=0, _Len=0): + self.Clear() + self.DayIndex,_pos = CommFunc.ReadDWORD(_lpData, _pos) + self.Point,_pos = CommFunc.ReadDWORD(_lpData, _pos) + self.AwardRecord,_pos = CommFunc.ReadDWORD(_lpData, _pos) + self.ACount,_pos = CommFunc.ReadDWORD(_lpData, _pos) + for i in range(self.ACount): + temTaskList = tagMCWeekPartyTaskInfo() + _pos = temTaskList.ReadData(_lpData, _pos) + self.TaskList.append(temTaskList) + return _pos + + def Clear(self): + self.DayIndex = 0 + self.Point = 0 + self.AwardRecord = 0 + self.ACount = 0 + self.TaskList = list() + return + + def GetLength(self): + length = 0 + length += 4 + length += 4 + length += 4 + length += 4 + for i in range(self.ACount): + length += self.TaskList[i].GetLength() + + return length + + def GetBuffer(self): + data = '' + data = CommFunc.WriteDWORD(data, self.DayIndex) + data = CommFunc.WriteDWORD(data, self.Point) + data = CommFunc.WriteDWORD(data, self.AwardRecord) + data = CommFunc.WriteDWORD(data, self.ACount) + for i in range(self.ACount): + data = CommFunc.WriteString(data, self.TaskList[i].GetLength(), self.TaskList[i].GetBuffer()) + return data + + def OutputString(self): + DumpString = ''' + DayIndex:%d, + Point:%d, + AwardRecord:%d, + ACount:%d, + TaskList:%s + '''\ + %( + self.DayIndex, + self.Point, + self.AwardRecord, + self.ACount, + "..." + ) + return DumpString + + +class tagMCWeekPartyPlayerInfo(Structure): + Head = tagHead() + Count = 0 #(BYTE Count) + DayInfoList = list() #(vector<tagMCWeekPartyDayPlayerInfo> DayInfoList)//活动完成次数信息 + data = None + + def __init__(self): + self.Clear() + self.Head.Cmd = 0xAA + self.Head.SubCmd = 0x0B + return + + def ReadData(self, _lpData, _pos=0, _Len=0): + self.Clear() + _pos = self.Head.ReadData(_lpData, _pos) + self.Count,_pos = CommFunc.ReadBYTE(_lpData, _pos) + for i in range(self.Count): + temDayInfoList = tagMCWeekPartyDayPlayerInfo() + _pos = temDayInfoList.ReadData(_lpData, _pos) + self.DayInfoList.append(temDayInfoList) + return _pos + + def Clear(self): + self.Head = tagHead() + self.Head.Clear() + self.Head.Cmd = 0xAA + self.Head.SubCmd = 0x0B + self.Count = 0 + self.DayInfoList = list() + return + + def GetLength(self): + length = 0 + length += self.Head.GetLength() + length += 1 + for i in range(self.Count): + length += self.DayInfoList[i].GetLength() + + return length + + def GetBuffer(self): + data = '' + data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer()) + data = CommFunc.WriteBYTE(data, self.Count) + for i in range(self.Count): + data = CommFunc.WriteString(data, self.DayInfoList[i].GetLength(), self.DayInfoList[i].GetBuffer()) + return data + + def OutputString(self): + DumpString = ''' + Head:%s, + Count:%d, + DayInfoList:%s + '''\ + %( + self.Head.OutputString(), + self.Count, + "..." + ) + return DumpString + + +m_NAtagMCWeekPartyPlayerInfo=tagMCWeekPartyPlayerInfo() +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCWeekPartyPlayerInfo.Head.Cmd,m_NAtagMCWeekPartyPlayerInfo.Head.SubCmd))] = m_NAtagMCWeekPartyPlayerInfo + + +#------------------------------------------------------ # AA 14 仙界盛典充值大礼 #tagMCXJSDRecharge class tagMCXJSDRecharge(Structure): @@ -23970,17 +25699,12 @@ class tagMCClothesCoatLVInfo(Structure): _pack_ = 1 _fields_ = [ - ("Cmd", c_ubyte), - ("SubCmd", c_ubyte), ("CoatIndex", c_int), #时装索引 ("CoatLV", c_ubyte), #时装等级 - ("CoatExp", c_int), #时装祝福值经验 ] def __init__(self): self.Clear() - self.Cmd = 0xB1 - self.SubCmd = 0x02 return def ReadData(self, stringData, _pos=0, _len=0): @@ -23989,11 +25713,8 @@ return _pos + self.GetLength() def Clear(self): - self.Cmd = 0xB1 - self.SubCmd = 0x02 self.CoatIndex = 0 self.CoatLV = 0 - self.CoatExp = 0 return def GetLength(self): @@ -24004,26 +25725,21 @@ def OutputString(self): DumpString = '''// B1 02 玩家时装皮肤激活状态 //tagMCClothesCoatSkinState: - Cmd:%s, - SubCmd:%s, CoatIndex:%d, - CoatLV:%d, - CoatExp:%d + CoatLV:%d '''\ %( - self.Cmd, - self.SubCmd, self.CoatIndex, - self.CoatLV, - self.CoatExp + self.CoatLV ) return DumpString class tagMCClothesCoatSkinState(Structure): Head = tagHead() - SkinOpenState = 0 #(DWORD SkinOpenState)//时装激活状态, 按索引表示激活状态 - CoatNum = 0 #(BYTE CoatNum)//时装个数 + CoatChestLV = 0 #(DWORD CoatChestLV)//时装柜等级 + CoatChestExp = 0 #(DWORD CoatChestExp)//时装柜经验 + CoatNum = 0 #(WORD CoatNum)//时装个数 CoatInfoList = list() #(vector<tagMCClothesCoatLVInfo> CoatInfoList)// 时装数据列表 data = None @@ -24036,8 +25752,9 @@ def ReadData(self, _lpData, _pos=0, _Len=0): self.Clear() _pos = self.Head.ReadData(_lpData, _pos) - self.SkinOpenState,_pos = CommFunc.ReadDWORD(_lpData, _pos) - self.CoatNum,_pos = CommFunc.ReadBYTE(_lpData, _pos) + self.CoatChestLV,_pos = CommFunc.ReadDWORD(_lpData, _pos) + self.CoatChestExp,_pos = CommFunc.ReadDWORD(_lpData, _pos) + self.CoatNum,_pos = CommFunc.ReadWORD(_lpData, _pos) for i in range(self.CoatNum): temCoatInfoList = tagMCClothesCoatLVInfo() _pos = temCoatInfoList.ReadData(_lpData, _pos) @@ -24049,7 +25766,8 @@ self.Head.Clear() self.Head.Cmd = 0xB1 self.Head.SubCmd = 0x02 - self.SkinOpenState = 0 + self.CoatChestLV = 0 + self.CoatChestExp = 0 self.CoatNum = 0 self.CoatInfoList = list() return @@ -24058,7 +25776,8 @@ length = 0 length += self.Head.GetLength() length += 4 - length += 1 + length += 4 + length += 2 for i in range(self.CoatNum): length += self.CoatInfoList[i].GetLength() @@ -24067,8 +25786,9 @@ def GetBuffer(self): data = '' data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer()) - data = CommFunc.WriteDWORD(data, self.SkinOpenState) - data = CommFunc.WriteBYTE(data, self.CoatNum) + data = CommFunc.WriteDWORD(data, self.CoatChestLV) + data = CommFunc.WriteDWORD(data, self.CoatChestExp) + data = CommFunc.WriteWORD(data, self.CoatNum) for i in range(self.CoatNum): data = CommFunc.WriteString(data, self.CoatInfoList[i].GetLength(), self.CoatInfoList[i].GetBuffer()) return data @@ -24076,13 +25796,15 @@ def OutputString(self): DumpString = ''' Head:%s, - SkinOpenState:%d, + CoatChestLV:%d, + CoatChestExp:%d, CoatNum:%d, CoatInfoList:%s '''\ %( self.Head.OutputString(), - self.SkinOpenState, + self.CoatChestLV, + self.CoatChestExp, self.CoatNum, "..." ) @@ -25639,6 +27361,110 @@ #------------------------------------------------------ +# B2 12 诛仙BOSS协助次数 #tagMCZhuXianBossCnt + +class tagMCZhuXianBossCnt(Structure): + _pack_ = 1 + _fields_ = [ + ("Cmd", c_ubyte), + ("SubCmd", c_ubyte), + ("Cnt", c_ubyte), # 剩余可协助次数 + ] + + def __init__(self): + self.Clear() + self.Cmd = 0xB2 + self.SubCmd = 0x12 + 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 = 0x12 + self.Cnt = 0 + return + + def GetLength(self): + return sizeof(tagMCZhuXianBossCnt) + + def GetBuffer(self): + return string_at(addressof(self), self.GetLength()) + + def OutputString(self): + DumpString = '''// B2 12 诛仙BOSS协助次数 //tagMCZhuXianBossCnt: + Cmd:%s, + SubCmd:%s, + Cnt:%d + '''\ + %( + self.Cmd, + self.SubCmd, + self.Cnt + ) + return DumpString + + +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), # 已通关层 + ] + + 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(tagMCZhuXianTowerInfo) + + def GetBuffer(self): + return string_at(addressof(self), self.GetLength()) + + def OutputString(self): + DumpString = '''// B2 13 诛仙塔通关层数 //tagMCZhuXianTowerInfo: + Cmd:%s, + SubCmd:%s, + Floor:%d + '''\ + %( + self.Cmd, + self.SubCmd, + self.Floor + ) + return DumpString + + +m_NAtagMCZhuXianTowerInfo=tagMCZhuXianTowerInfo() +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCZhuXianTowerInfo.Cmd,m_NAtagMCZhuXianTowerInfo.SubCmd))] = m_NAtagMCZhuXianTowerInfo + + +#------------------------------------------------------ # B4 11 新增恶意攻击玩家 #tagMCAddMaliciousAtkPlayer class tagMCAddMaliciousAtkPlayer(Structure): @@ -26834,6 +28660,7 @@ ("SeasonID", c_ushort), # 赛季ID ("Order", c_ushort), # 名次 ("DanLV", c_ubyte), # 段位 + ("Score", c_int), # 积分 ("AwardLV", c_ubyte), # 赛季结算奖励等级,比如王者法宝的属性取该等级对应属性 ] @@ -26850,6 +28677,7 @@ self.SeasonID = 0 self.Order = 0 self.DanLV = 0 + self.Score = 0 self.AwardLV = 0 return @@ -26864,12 +28692,14 @@ SeasonID:%d, Order:%d, DanLV:%d, + Score:%d, AwardLV:%d '''\ %( self.SeasonID, self.Order, self.DanLV, + self.Score, self.AwardLV ) return DumpString @@ -26957,6 +28787,7 @@ ("DayPKCount", c_ubyte), # 当日已PK次数 ("DayWinCount", c_ubyte), # 当日已胜利次数 ("DayBuyCount", c_ubyte), # 当日已购买次数 + ("DayItemAddCount", c_ubyte), # 当日物品增加次数 ] def __init__(self): @@ -26981,6 +28812,7 @@ self.DayPKCount = 0 self.DayWinCount = 0 self.DayBuyCount = 0 + self.DayItemAddCount = 0 return def GetLength(self): @@ -27000,7 +28832,8 @@ CWinCount:%d, DayPKCount:%d, DayWinCount:%d, - DayBuyCount:%d + DayBuyCount:%d, + DayItemAddCount:%d '''\ %( self.Cmd, @@ -27012,10 +28845,159 @@ self.CWinCount, self.DayPKCount, self.DayWinCount, - self.DayBuyCount + self.DayBuyCount, + self.DayItemAddCount ) return DumpString m_NAtagMCCrossRealmPKPlayerInfo=tagMCCrossRealmPKPlayerInfo() -ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCCrossRealmPKPlayerInfo.Cmd,m_NAtagMCCrossRealmPKPlayerInfo.SubCmd))] = m_NAtagMCCrossRealmPKPlayerInfo \ No newline at end of file +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCCrossRealmPKPlayerInfo.Cmd,m_NAtagMCCrossRealmPKPlayerInfo.SubCmd))] = m_NAtagMCCrossRealmPKPlayerInfo + + +#------------------------------------------------------ +# C1 06 进入跨服服务器错误 #tagMCEnterCrossServerError + +class tagMCEnterCrossServerError(Structure): + _pack_ = 1 + _fields_ = [ + ("Cmd", c_ubyte), + ("SubCmd", c_ubyte), + ] + + def __init__(self): + self.Clear() + self.Cmd = 0xC1 + self.SubCmd = 0x06 + 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 = 0x06 + return + + def GetLength(self): + return sizeof(tagMCEnterCrossServerError) + + def GetBuffer(self): + return string_at(addressof(self), self.GetLength()) + + def OutputString(self): + DumpString = '''// C1 06 进入跨服服务器错误 //tagMCEnterCrossServerError: + Cmd:%s, + SubCmd:%s + '''\ + %( + self.Cmd, + self.SubCmd + ) + return DumpString + + +m_NAtagMCEnterCrossServerError=tagMCEnterCrossServerError() +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCEnterCrossServerError.Cmd,m_NAtagMCEnterCrossServerError.SubCmd))] = m_NAtagMCEnterCrossServerError + + +#------------------------------------------------------ +# C1 04 准备进入跨服服务器 #tagMCPrepareEnterCrossServer + +class tagMCPrepareEnterCrossServer(Structure): + _pack_ = 1 + _fields_ = [ + ("Cmd", c_ubyte), + ("SubCmd", c_ubyte), + ("DataMapID", c_int), + ] + + def __init__(self): + self.Clear() + self.Cmd = 0xC1 + 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 = 0xC1 + self.SubCmd = 0x04 + self.DataMapID = 0 + return + + def GetLength(self): + return sizeof(tagMCPrepareEnterCrossServer) + + def GetBuffer(self): + return string_at(addressof(self), self.GetLength()) + + def OutputString(self): + DumpString = '''// C1 04 准备进入跨服服务器 //tagMCPrepareEnterCrossServer: + Cmd:%s, + SubCmd:%s, + DataMapID:%d + '''\ + %( + self.Cmd, + self.SubCmd, + self.DataMapID + ) + return DumpString + + +m_NAtagMCPrepareEnterCrossServer=tagMCPrepareEnterCrossServer() +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCPrepareEnterCrossServer.Cmd,m_NAtagMCPrepareEnterCrossServer.SubCmd))] = m_NAtagMCPrepareEnterCrossServer + + +#------------------------------------------------------ +# C1 05 开始进入跨服服务器 #tagMCStartEnterCrossServer + +class tagMCStartEnterCrossServer(Structure): + _pack_ = 1 + _fields_ = [ + ("Cmd", c_ubyte), + ("SubCmd", c_ubyte), + ] + + def __init__(self): + self.Clear() + self.Cmd = 0xC1 + self.SubCmd = 0x05 + 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 = 0x05 + return + + def GetLength(self): + return sizeof(tagMCStartEnterCrossServer) + + def GetBuffer(self): + return string_at(addressof(self), self.GetLength()) + + def OutputString(self): + DumpString = '''// C1 05 开始进入跨服服务器 //tagMCStartEnterCrossServer: + Cmd:%s, + SubCmd:%s + '''\ + %( + self.Cmd, + self.SubCmd + ) + return DumpString + + +m_NAtagMCStartEnterCrossServer=tagMCStartEnterCrossServer() +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCStartEnterCrossServer.Cmd,m_NAtagMCStartEnterCrossServer.SubCmd))] = m_NAtagMCStartEnterCrossServer \ No newline at end of file -- Gitblit v1.8.0