From 89cd5c46258340014d31e4b8c6ee7df0e3b00c2d Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期一, 16 三月 2026 19:51:54 +0800
Subject: [PATCH] 16 卡牌服务端(自动开服相关;A103增加同步开服时间;增加是否允许加入跨服标记,默认否;跨服公会仅在允许跨服时才会加入跨服;优化ServersConfig.json配置,支持后台导出,优化战斗服务器配置;)
---
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py | 4940 ++++-------------------------------------------------------
1 files changed, 364 insertions(+), 4,576 deletions(-)
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py
index aad6ec3..13a57ab 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py
@@ -1218,742 +1218,6 @@
#------------------------------------------------------
-# 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)//预留的扩展属性字段,用来存放项目特定的属性
- HPEx = 0 #(DWORD HPEx)//当前血量 超过E的记录
- Face = 0 #(DWORD Face)//基本脸型
- FacePic = 0 #(DWORD FacePic)//头像框
- RoleType = 0 #(DWORD RoleType)//角色类型(各项目可自定义含义,如种族,与职业区分)
- 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)
- self.HPEx,_pos = CommFunc.ReadDWORD(_lpData, _pos)
- self.Face,_pos = CommFunc.ReadDWORD(_lpData, _pos)
- self.FacePic,_pos = CommFunc.ReadDWORD(_lpData, _pos)
- self.RoleType,_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
- self.HPEx = 0
- self.Face = 0
- self.FacePic = 0
- self.RoleType = 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
- 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)
- data = CommFunc.WriteDWORD(data, self.HPEx)
- data = CommFunc.WriteDWORD(data, self.Face)
- data = CommFunc.WriteDWORD(data, self.FacePic)
- data = CommFunc.WriteDWORD(data, self.RoleType)
- 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,
- HPEx:%d,
- Face:%d,
- FacePic:%d,
- RoleType:%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,
- self.HPEx,
- self.Face,
- self.FacePic,
- self.RoleType
- )
- return DumpString
-
-
-m_NAtagMCDBPlayer=tagMCDBPlayer()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCDBPlayer.Head.Cmd,m_NAtagMCDBPlayer.Head.SubCmd))] = m_NAtagMCDBPlayer
-
-
-#------------------------------------------------------
#A1 05 元宝消费记录 #tagMCGoldCostReport
class tagMCGoldCostReport(Structure):
@@ -2141,6 +1405,7 @@
("NowSecond", c_ubyte),
("NowMicSecond", c_int),
("WeekOfYear", c_ubyte), #一年中的第几周
+ ("OpenServerTime", c_int), #开服时间戳
]
def __init__(self):
@@ -2169,6 +1434,7 @@
self.NowSecond = 0
self.NowMicSecond = 0
self.WeekOfYear = 0
+ self.OpenServerTime = 0
return
def GetLength(self):
@@ -2192,7 +1458,8 @@
NowMinute:%d,
NowSecond:%d,
NowMicSecond:%d,
- WeekOfYear:%d
+ WeekOfYear:%d,
+ OpenServerTime:%d
'''\
%(
self.Cmd,
@@ -2208,7 +1475,8 @@
self.NowMinute,
self.NowSecond,
self.NowMicSecond,
- self.WeekOfYear
+ self.WeekOfYear,
+ self.OpenServerTime
)
return DumpString
@@ -4395,114 +3663,6 @@
#------------------------------------------------------
-# A3 C1 神兽助战状态刷新 #tagMCDogzHelpbattleState
-
-class tagMCDogzHelpbattleState(Structure):
- _pack_ = 1
- _fields_ = [
- ("Cmd", c_ubyte),
- ("SubCmd", c_ubyte),
- ("DogzID", c_ubyte), # 神兽ID
- ("BatteState", c_ubyte), #是否已助战, 0否1是
- ]
-
- def __init__(self):
- self.Clear()
- self.Cmd = 0xA3
- self.SubCmd = 0xC1
- 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 = 0xA3
- self.SubCmd = 0xC1
- self.DogzID = 0
- self.BatteState = 0
- return
-
- def GetLength(self):
- return sizeof(tagMCDogzHelpbattleState)
-
- def GetBuffer(self):
- return string_at(addressof(self), self.GetLength())
-
- def OutputString(self):
- DumpString = '''// A3 C1 神兽助战状态刷新 //tagMCDogzHelpbattleState:
- Cmd:%s,
- SubCmd:%s,
- DogzID:%d,
- BatteState:%d
- '''\
- %(
- self.Cmd,
- self.SubCmd,
- self.DogzID,
- self.BatteState
- )
- return DumpString
-
-
-m_NAtagMCDogzHelpbattleState=tagMCDogzHelpbattleState()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCDogzHelpbattleState.Cmd,m_NAtagMCDogzHelpbattleState.SubCmd))] = m_NAtagMCDogzHelpbattleState
-
-
-#------------------------------------------------------
-# A3 C0 神兽信息 #tagMCDogzInfo
-
-class tagMCDogzInfo(Structure):
- _pack_ = 1
- _fields_ = [
- ("Cmd", c_ubyte),
- ("SubCmd", c_ubyte),
- ("BuyHelpbattleCount", c_ubyte), #额外购买的助战数
- ]
-
- def __init__(self):
- self.Clear()
- self.Cmd = 0xA3
- self.SubCmd = 0xC0
- 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 = 0xA3
- self.SubCmd = 0xC0
- self.BuyHelpbattleCount = 0
- return
-
- def GetLength(self):
- return sizeof(tagMCDogzInfo)
-
- def GetBuffer(self):
- return string_at(addressof(self), self.GetLength())
-
- def OutputString(self):
- DumpString = '''// A3 C0 神兽信息 //tagMCDogzInfo:
- Cmd:%s,
- SubCmd:%s,
- BuyHelpbattleCount:%d
- '''\
- %(
- self.Cmd,
- self.SubCmd,
- self.BuyHelpbattleCount
- )
- return DumpString
-
-
-m_NAtagMCDogzInfo=tagMCDogzInfo()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCDogzInfo.Cmd,m_NAtagMCDogzInfo.SubCmd))] = m_NAtagMCDogzInfo
-
-
-#------------------------------------------------------
# A3 1C 通知装备分解信息 #tagMCEquipDecomposeInfo
class tagMCEquipDecomposeInfo(Structure):
@@ -5020,62 +4180,6 @@
m_NAtagMCEquipPartXLAttrInfo=tagMCEquipPartXLAttrInfo()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCEquipPartXLAttrInfo.Head.Cmd,m_NAtagMCEquipPartXLAttrInfo.Head.SubCmd))] = m_NAtagMCEquipPartXLAttrInfo
-
-
-#------------------------------------------------------
-# A3 54 法器信息 #tagMCFaQiInfo
-
-class tagMCFaQiInfo(Structure):
- _pack_ = 1
- _fields_ = [
- ("Cmd", c_ubyte),
- ("SubCmd", c_ubyte),
- ("LV", c_ubyte), #等阶
- ("EatItemCount", c_int), #当前阶已吃丹个数
- ]
-
- def __init__(self):
- self.Clear()
- self.Cmd = 0xA3
- self.SubCmd = 0x54
- 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 = 0xA3
- self.SubCmd = 0x54
- self.LV = 0
- self.EatItemCount = 0
- return
-
- def GetLength(self):
- return sizeof(tagMCFaQiInfo)
-
- def GetBuffer(self):
- return string_at(addressof(self), self.GetLength())
-
- def OutputString(self):
- DumpString = '''// A3 54 法器信息 //tagMCFaQiInfo:
- Cmd:%s,
- SubCmd:%s,
- LV:%d,
- EatItemCount:%d
- '''\
- %(
- self.Cmd,
- self.SubCmd,
- self.LV,
- self.EatItemCount
- )
- return DumpString
-
-
-m_NAtagMCFaQiInfo=tagMCFaQiInfo()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCFaQiInfo.Cmd,m_NAtagMCFaQiInfo.SubCmd))] = m_NAtagMCFaQiInfo
#------------------------------------------------------
@@ -5815,62 +4919,6 @@
m_NAtagSCInvestInfo=tagSCInvestInfo()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagSCInvestInfo.Cmd,m_NAtagSCInvestInfo.SubCmd))] = m_NAtagSCInvestInfo
-
-
-#------------------------------------------------------
-# A3 55 炼体信息 #tagMCLianTiInfo
-
-class tagMCLianTiInfo(Structure):
- _pack_ = 1
- _fields_ = [
- ("Cmd", c_ubyte),
- ("SubCmd", c_ubyte),
- ("LianTiLV", c_ubyte), #炼体等级
- ("EatItemCount", c_int), #当前等级已吃丹个数
- ]
-
- def __init__(self):
- self.Clear()
- self.Cmd = 0xA3
- self.SubCmd = 0x55
- 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 = 0xA3
- self.SubCmd = 0x55
- self.LianTiLV = 0
- self.EatItemCount = 0
- return
-
- def GetLength(self):
- return sizeof(tagMCLianTiInfo)
-
- def GetBuffer(self):
- return string_at(addressof(self), self.GetLength())
-
- def OutputString(self):
- DumpString = '''// A3 55 炼体信息 //tagMCLianTiInfo:
- Cmd:%s,
- SubCmd:%s,
- LianTiLV:%d,
- EatItemCount:%d
- '''\
- %(
- self.Cmd,
- self.SubCmd,
- self.LianTiLV,
- self.EatItemCount
- )
- return DumpString
-
-
-m_NAtagMCLianTiInfo=tagMCLianTiInfo()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCLianTiInfo.Cmd,m_NAtagMCLianTiInfo.SubCmd))] = m_NAtagMCLianTiInfo
#------------------------------------------------------
@@ -8423,6 +7471,7 @@
LuckValue = 0 #(WORD LuckValue)//当前幸运值
TreasureCount = 0 #(DWORD TreasureCount)//已寻宝总次数
TreasureCountToday = 0 #(DWORD TreasureCountToday)//今日已寻宝总次数
+ TreasureCountTodayGold = 0 #(DWORD TreasureCountTodayGold)//今日消耗货币已寻宝总次数
FreeCountToday = 0 #(WORD FreeCountToday)//今日已免费寻宝次数
TreasureCntAward = 0 #(DWORD TreasureCntAward)//累计寻宝次数对应奖励领奖状态,按奖励记录索引二进制记录是否已领取
GridLimitCnt = 0 #(BYTE GridLimitCnt)
@@ -8441,6 +7490,7 @@
self.LuckValue,_pos = CommFunc.ReadWORD(_lpData, _pos)
self.TreasureCount,_pos = CommFunc.ReadDWORD(_lpData, _pos)
self.TreasureCountToday,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.TreasureCountTodayGold,_pos = CommFunc.ReadDWORD(_lpData, _pos)
self.FreeCountToday,_pos = CommFunc.ReadWORD(_lpData, _pos)
self.TreasureCntAward,_pos = CommFunc.ReadDWORD(_lpData, _pos)
self.GridLimitCnt,_pos = CommFunc.ReadBYTE(_lpData, _pos)
@@ -8460,6 +7510,7 @@
self.LuckValue = 0
self.TreasureCount = 0
self.TreasureCountToday = 0
+ self.TreasureCountTodayGold = 0
self.FreeCountToday = 0
self.TreasureCntAward = 0
self.GridLimitCnt = 0
@@ -8472,6 +7523,7 @@
length = 0
length += 1
length += 2
+ length += 4
length += 4
length += 4
length += 2
@@ -8491,6 +7543,7 @@
data = CommFunc.WriteWORD(data, self.LuckValue)
data = CommFunc.WriteDWORD(data, self.TreasureCount)
data = CommFunc.WriteDWORD(data, self.TreasureCountToday)
+ data = CommFunc.WriteDWORD(data, self.TreasureCountTodayGold)
data = CommFunc.WriteWORD(data, self.FreeCountToday)
data = CommFunc.WriteDWORD(data, self.TreasureCntAward)
data = CommFunc.WriteBYTE(data, self.GridLimitCnt)
@@ -8507,6 +7560,7 @@
LuckValue:%d,
TreasureCount:%d,
TreasureCountToday:%d,
+ TreasureCountTodayGold:%d,
FreeCountToday:%d,
TreasureCntAward:%d,
GridLimitCnt:%d,
@@ -8519,6 +7573,7 @@
self.LuckValue,
self.TreasureCount,
self.TreasureCountToday,
+ self.TreasureCountTodayGold,
self.FreeCountToday,
self.TreasureCntAward,
self.GridLimitCnt,
@@ -8603,8 +7658,10 @@
TreasureType = 0 #(BYTE TreasureType)//寻宝类型
TreasureIndex = 0 #(BYTE TreasureIndex)//寻宝索引
CostType = 0 #(BYTE CostType)//消耗类型:0-默认仙玉;1-免费次数;2-寻宝道具
- AddMoneyType = 0 #(BYTE AddMoneyType)// 本次寻宝增加的积分货币类型,可能为0
- AddMoneyValue = 0 #(WORD AddMoneyValue)// 本次寻宝增加的积分货币值,可能为0
+ AddMoneyType = 0 #(BYTE AddMoneyType)// 本次寻宝额外增加的积分货币类型,可能为0
+ AddMoneyValue = 0 #(WORD AddMoneyValue)// 本次寻宝额外增加的积分货币值,可能为0
+ AddItemID = 0 #(DWORD AddItemID)// 本次寻宝额外赠送的物品ID,可能为0
+ AddItemCount = 0 #(DWORD AddItemCount)// 本次寻宝额外赠送的物品ID个数,可能为0
AddTreasureLuck = 0 #(WORD AddTreasureLuck)// 本次寻宝增加的幸运值
TreasureResultLen = 0 #(WORD TreasureResultLen)
TreasureResult = "" #(String TreasureResult)// 获得物品结果[[格子编号, 物品ID,个数,是否绑定], ...]
@@ -8624,6 +7681,8 @@
self.CostType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
self.AddMoneyType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
self.AddMoneyValue,_pos = CommFunc.ReadWORD(_lpData, _pos)
+ self.AddItemID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.AddItemCount,_pos = CommFunc.ReadDWORD(_lpData, _pos)
self.AddTreasureLuck,_pos = CommFunc.ReadWORD(_lpData, _pos)
self.TreasureResultLen,_pos = CommFunc.ReadWORD(_lpData, _pos)
self.TreasureResult,_pos = CommFunc.ReadString(_lpData, _pos,self.TreasureResultLen)
@@ -8639,6 +7698,8 @@
self.CostType = 0
self.AddMoneyType = 0
self.AddMoneyValue = 0
+ self.AddItemID = 0
+ self.AddItemCount = 0
self.AddTreasureLuck = 0
self.TreasureResultLen = 0
self.TreasureResult = ""
@@ -8652,6 +7713,8 @@
length += 1
length += 1
length += 2
+ length += 4
+ length += 4
length += 2
length += 2
length += len(self.TreasureResult)
@@ -8666,6 +7729,8 @@
data = CommFunc.WriteBYTE(data, self.CostType)
data = CommFunc.WriteBYTE(data, self.AddMoneyType)
data = CommFunc.WriteWORD(data, self.AddMoneyValue)
+ data = CommFunc.WriteDWORD(data, self.AddItemID)
+ data = CommFunc.WriteDWORD(data, self.AddItemCount)
data = CommFunc.WriteWORD(data, self.AddTreasureLuck)
data = CommFunc.WriteWORD(data, self.TreasureResultLen)
data = CommFunc.WriteString(data, self.TreasureResultLen, self.TreasureResult)
@@ -8679,6 +7744,8 @@
CostType:%d,
AddMoneyType:%d,
AddMoneyValue:%d,
+ AddItemID:%d,
+ AddItemCount:%d,
AddTreasureLuck:%d,
TreasureResultLen:%d,
TreasureResult:%s
@@ -8690,6 +7757,8 @@
self.CostType,
self.AddMoneyType,
self.AddMoneyValue,
+ self.AddItemID,
+ self.AddItemCount,
self.AddTreasureLuck,
self.TreasureResultLen,
self.TreasureResult
@@ -14003,6 +13072,7 @@
_fields_ = [
("MoneyType", c_ubyte),
("MoneyValue", c_int),
+ ("IsBind", c_ubyte), # 同物品IsBind标记逻辑
]
def __init__(self):
@@ -14017,6 +13087,7 @@
def Clear(self):
self.MoneyType = 0
self.MoneyValue = 0
+ self.IsBind = 0
return
def GetLength(self):
@@ -14028,11 +13099,13 @@
def OutputString(self):
DumpString = '''// A8 01 获得奖励信息 //tagMCGiveAwardInfo:
MoneyType:%d,
- MoneyValue:%d
+ MoneyValue:%d,
+ IsBind:%d
'''\
%(
self.MoneyType,
- self.MoneyValue
+ self.MoneyValue,
+ self.IsBind
)
return DumpString
@@ -15086,1121 +14159,6 @@
#------------------------------------------------------
-# A9 09 通知BOSS关注记录 #tagGCBossAttentionInfo
-
-class tagGCBossAttention(Structure):
- _pack_ = 1
- _fields_ = [
- ("BossID", c_int), # bossID
- ("AddState", 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.BossID = 0
- self.AddState = 0
- return
-
- def GetLength(self):
- return sizeof(tagGCBossAttention)
-
- def GetBuffer(self):
- return string_at(addressof(self), self.GetLength())
-
- def OutputString(self):
- DumpString = '''// A9 09 通知BOSS关注记录 //tagGCBossAttentionInfo:
- BossID:%d,
- AddState:%d
- '''\
- %(
- self.BossID,
- self.AddState
- )
- return DumpString
-
-
-class tagGCBossAttentionInfo(Structure):
- Head = tagHead()
- BossCnt = 0 #(BYTE BossCnt)//boss个数
- BossList = list() #(vector<tagGCBossAttention> BossList)//列表
- data = None
-
- def __init__(self):
- self.Clear()
- self.Head.Cmd = 0xA9
- self.Head.SubCmd = 0x09
- return
-
- def ReadData(self, _lpData, _pos=0, _Len=0):
- self.Clear()
- _pos = self.Head.ReadData(_lpData, _pos)
- self.BossCnt,_pos = CommFunc.ReadBYTE(_lpData, _pos)
- for i in range(self.BossCnt):
- temBossList = tagGCBossAttention()
- _pos = temBossList.ReadData(_lpData, _pos)
- self.BossList.append(temBossList)
- return _pos
-
- def Clear(self):
- self.Head = tagHead()
- self.Head.Clear()
- self.Head.Cmd = 0xA9
- self.Head.SubCmd = 0x09
- self.BossCnt = 0
- self.BossList = list()
- return
-
- def GetLength(self):
- length = 0
- length += self.Head.GetLength()
- length += 1
- for i in range(self.BossCnt):
- length += self.BossList[i].GetLength()
-
- return length
-
- def GetBuffer(self):
- data = ''
- data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
- data = CommFunc.WriteBYTE(data, self.BossCnt)
- for i in range(self.BossCnt):
- data = CommFunc.WriteString(data, self.BossList[i].GetLength(), self.BossList[i].GetBuffer())
- return data
-
- def OutputString(self):
- DumpString = '''
- Head:%s,
- BossCnt:%d,
- BossList:%s
- '''\
- %(
- self.Head.OutputString(),
- self.BossCnt,
- "..."
- )
- return DumpString
-
-
-m_NAtagGCBossAttentionInfo=tagGCBossAttentionInfo()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCBossAttentionInfo.Head.Cmd,m_NAtagGCBossAttentionInfo.Head.SubCmd))] = m_NAtagGCBossAttentionInfo
-
-
-#------------------------------------------------------
-# A9 01 世界boss分流线路boss状态 #tagGCBossShuntLineStateInfo
-
-class tagGCBossShuntLineState(Structure):
- BossID = 0 #(DWORD BossID)// bossID
- LineCount = 0 #(BYTE LineCount)
- LineIDList = list() #(vector<BYTE> LineIDList)// 线路ID列表
- StateList = list() #(vector<BYTE> StateList)// 对应状态列表, 0-被击杀,1-活着
- data = None
-
- def __init__(self):
- self.Clear()
- return
-
- def ReadData(self, _lpData, _pos=0, _Len=0):
- self.Clear()
- self.BossID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
- self.LineCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
- for i in range(self.LineCount):
- value,_pos=CommFunc.ReadBYTE(_lpData,_pos)
- self.LineIDList.append(value)
- for i in range(self.LineCount):
- value,_pos=CommFunc.ReadBYTE(_lpData,_pos)
- self.StateList.append(value)
- return _pos
-
- def Clear(self):
- self.BossID = 0
- self.LineCount = 0
- self.LineIDList = list()
- self.StateList = list()
- return
-
- def GetLength(self):
- length = 0
- length += 4
- length += 1
- length += 1 * self.LineCount
- length += 1 * self.LineCount
-
- return length
-
- def GetBuffer(self):
- data = ''
- data = CommFunc.WriteDWORD(data, self.BossID)
- data = CommFunc.WriteBYTE(data, self.LineCount)
- for i in range(self.LineCount):
- data = CommFunc.WriteBYTE(data, self.LineIDList[i])
- for i in range(self.LineCount):
- data = CommFunc.WriteBYTE(data, self.StateList[i])
- return data
-
- def OutputString(self):
- DumpString = '''
- BossID:%d,
- LineCount:%d,
- LineIDList:%s,
- StateList:%s
- '''\
- %(
- self.BossID,
- self.LineCount,
- "...",
- "..."
- )
- return DumpString
-
-
-class tagGCBossShuntLineStateInfo(Structure):
- Head = tagHead()
- Count = 0 #(BYTE Count)
- BossLineStateInfo = list() #(vector<tagGCBossShuntLineState> BossLineStateInfo)//boss分流线路信息列表
- data = None
-
- def __init__(self):
- self.Clear()
- self.Head.Cmd = 0xA9
- self.Head.SubCmd = 0x01
- 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):
- temBossLineStateInfo = tagGCBossShuntLineState()
- _pos = temBossLineStateInfo.ReadData(_lpData, _pos)
- self.BossLineStateInfo.append(temBossLineStateInfo)
- return _pos
-
- def Clear(self):
- self.Head = tagHead()
- self.Head.Clear()
- self.Head.Cmd = 0xA9
- self.Head.SubCmd = 0x01
- self.Count = 0
- self.BossLineStateInfo = list()
- return
-
- def GetLength(self):
- length = 0
- length += self.Head.GetLength()
- length += 1
- for i in range(self.Count):
- length += self.BossLineStateInfo[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.BossLineStateInfo[i].GetLength(), self.BossLineStateInfo[i].GetBuffer())
- return data
-
- def OutputString(self):
- DumpString = '''
- Head:%s,
- Count:%d,
- BossLineStateInfo:%s
- '''\
- %(
- self.Head.OutputString(),
- self.Count,
- "..."
- )
- return DumpString
-
-
-m_NAtagGCBossShuntLineStateInfo=tagGCBossShuntLineStateInfo()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCBossShuntLineStateInfo.Head.Cmd,m_NAtagGCBossShuntLineStateInfo.Head.SubCmd))] = m_NAtagGCBossShuntLineStateInfo
-
-
-#------------------------------------------------------
-# A9 AC 交易所物品最新成交价通知 #tagGCBourseItemPrice
-
-class tagGCBourseItemPrice(Structure):
- _pack_ = 1
- _fields_ = [
- ("Cmd", c_ubyte),
- ("SubCmd", c_ubyte),
- ("ItemID", c_int), #物品ID
- ("Price", c_int), #最新成交单价
- ]
-
- def __init__(self):
- self.Clear()
- self.Cmd = 0xA9
- self.SubCmd = 0xAC
- 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 = 0xA9
- self.SubCmd = 0xAC
- self.ItemID = 0
- self.Price = 0
- return
-
- def GetLength(self):
- return sizeof(tagGCBourseItemPrice)
-
- def GetBuffer(self):
- return string_at(addressof(self), self.GetLength())
-
- def OutputString(self):
- DumpString = '''// A9 AC 交易所物品最新成交价通知 //tagGCBourseItemPrice:
- Cmd:%s,
- SubCmd:%s,
- ItemID:%d,
- Price:%d
- '''\
- %(
- self.Cmd,
- self.SubCmd,
- self.ItemID,
- self.Price
- )
- return DumpString
-
-
-m_NAtagGCBourseItemPrice=tagGCBourseItemPrice()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCBourseItemPrice.Cmd,m_NAtagGCBourseItemPrice.SubCmd))] = m_NAtagGCBourseItemPrice
-
-
-#------------------------------------------------------
-# A9 AB 交易所交易记录通知 #tagGCBourseRecordInfo
-
-class tagGCBourseRecord(Structure):
- Type = 0 #(BYTE Type)//类型 0-购买 1-卖出
- Timestamp = 0 #(DWORD Timestamp)//时间戳
- TradeTax = 0 #(DWORD TradeTax)//交易税
- TradeMoney = 0 #(DWORD TradeMoney)//收支
- ItemDataLen = 0 #(WORD ItemDataLen)
- ItemData = "" #(String ItemData)//自定义数据
- data = None
-
- def __init__(self):
- self.Clear()
- return
-
- def ReadData(self, _lpData, _pos=0, _Len=0):
- self.Clear()
- self.Type,_pos = CommFunc.ReadBYTE(_lpData, _pos)
- self.Timestamp,_pos = CommFunc.ReadDWORD(_lpData, _pos)
- self.TradeTax,_pos = CommFunc.ReadDWORD(_lpData, _pos)
- self.TradeMoney,_pos = CommFunc.ReadDWORD(_lpData, _pos)
- self.ItemDataLen,_pos = CommFunc.ReadWORD(_lpData, _pos)
- self.ItemData,_pos = CommFunc.ReadString(_lpData, _pos,self.ItemDataLen)
- return _pos
-
- def Clear(self):
- self.Type = 0
- self.Timestamp = 0
- self.TradeTax = 0
- self.TradeMoney = 0
- self.ItemDataLen = 0
- self.ItemData = ""
- return
-
- def GetLength(self):
- length = 0
- length += 1
- length += 4
- length += 4
- length += 4
- length += 2
- length += len(self.ItemData)
-
- return length
-
- def GetBuffer(self):
- data = ''
- data = CommFunc.WriteBYTE(data, self.Type)
- data = CommFunc.WriteDWORD(data, self.Timestamp)
- data = CommFunc.WriteDWORD(data, self.TradeTax)
- data = CommFunc.WriteDWORD(data, self.TradeMoney)
- data = CommFunc.WriteWORD(data, self.ItemDataLen)
- data = CommFunc.WriteString(data, self.ItemDataLen, self.ItemData)
- return data
-
- def OutputString(self):
- DumpString = '''
- Type:%d,
- Timestamp:%d,
- TradeTax:%d,
- TradeMoney:%d,
- ItemDataLen:%d,
- ItemData:%s
- '''\
- %(
- self.Type,
- self.Timestamp,
- self.TradeTax,
- self.TradeMoney,
- self.ItemDataLen,
- self.ItemData
- )
- return DumpString
-
-
-class tagGCBourseRecordInfo(Structure):
- Head = tagHead()
- Count = 0 #(BYTE Count)//数量
- RecordList = list() #(vector<tagGCBourseRecord> RecordList)//size = Count
- data = None
-
- def __init__(self):
- self.Clear()
- self.Head.Cmd = 0xA9
- self.Head.SubCmd = 0xAB
- 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):
- temRecordList = tagGCBourseRecord()
- _pos = temRecordList.ReadData(_lpData, _pos)
- self.RecordList.append(temRecordList)
- return _pos
-
- def Clear(self):
- self.Head = tagHead()
- self.Head.Clear()
- self.Head.Cmd = 0xA9
- self.Head.SubCmd = 0xAB
- self.Count = 0
- self.RecordList = list()
- return
-
- def GetLength(self):
- length = 0
- length += self.Head.GetLength()
- length += 1
- for i in range(self.Count):
- length += self.RecordList[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.RecordList[i].GetLength(), self.RecordList[i].GetBuffer())
- return data
-
- def OutputString(self):
- DumpString = '''
- Head:%s,
- Count:%d,
- RecordList:%s
- '''\
- %(
- self.Head.OutputString(),
- self.Count,
- "..."
- )
- return DumpString
-
-
-m_NAtagGCBourseRecordInfo=tagGCBourseRecordInfo()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCBourseRecordInfo.Head.Cmd,m_NAtagGCBourseRecordInfo.Head.SubCmd))] = m_NAtagGCBourseRecordInfo
-
-
-#------------------------------------------------------
-#A9 AA 删除邮件通知 #tagGCDelCompensationResult
-
-class tagGCDelCompensationResult(Structure):
- Head = tagHead()
- GUID = "" #(char GUID[40])
- Result = 0 #(BYTE Result)// 删除状态 0 不成功 1成功
- data = None
-
- def __init__(self):
- self.Clear()
- self.Head.Cmd = 0xA9
- self.Head.SubCmd = 0xAA
- return
-
- def ReadData(self, _lpData, _pos=0, _Len=0):
- self.Clear()
- _pos = self.Head.ReadData(_lpData, _pos)
- self.GUID,_pos = CommFunc.ReadString(_lpData, _pos,40)
- self.Result,_pos = CommFunc.ReadBYTE(_lpData, _pos)
- return _pos
-
- def Clear(self):
- self.Head = tagHead()
- self.Head.Clear()
- self.Head.Cmd = 0xA9
- self.Head.SubCmd = 0xAA
- self.GUID = ""
- self.Result = 0
- return
-
- def GetLength(self):
- length = 0
- length += self.Head.GetLength()
- length += 40
- length += 1
-
- return length
-
- def GetBuffer(self):
- data = ''
- data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
- data = CommFunc.WriteString(data, 40, self.GUID)
- data = CommFunc.WriteBYTE(data, self.Result)
- return data
-
- def OutputString(self):
- DumpString = '''
- Head:%s,
- GUID:%s,
- Result:%d
- '''\
- %(
- self.Head.OutputString(),
- self.GUID,
- self.Result
- )
- return DumpString
-
-
-m_NAtagGCDelCompensationResult=tagGCDelCompensationResult()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCDelCompensationResult.Head.Cmd,m_NAtagGCDelCompensationResult.Head.SubCmd))] = m_NAtagGCDelCompensationResult
-
-
-#------------------------------------------------------
-# A9 04 通知神兽副本NPC刷新时间 #tagGCDogzNPCRefreshTime
-
-class tagDogzTimeInfoObj(Structure):
- _pack_ = 1
- _fields_ = [
- ("NPCID", c_int), # npcid
- ("RefreshSecond", 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.NPCID = 0
- self.RefreshSecond = 0
- return
-
- def GetLength(self):
- return sizeof(tagDogzTimeInfoObj)
-
- def GetBuffer(self):
- return string_at(addressof(self), self.GetLength())
-
- def OutputString(self):
- DumpString = '''// A9 04 通知神兽副本NPC刷新时间 //tagGCDogzNPCRefreshTime:
- NPCID:%d,
- RefreshSecond:%d
- '''\
- %(
- self.NPCID,
- self.RefreshSecond
- )
- return DumpString
-
-
-class tagGCDogzNPCRefreshTime(Structure):
- Head = tagHead()
- Cnt = 0 #(BYTE Cnt)//信息个数
- InfoList = list() #(vector<tagDogzTimeInfoObj> InfoList)//信息列表
- data = None
-
- def __init__(self):
- self.Clear()
- self.Head.Cmd = 0xA9
- self.Head.SubCmd = 0x04
- return
-
- def ReadData(self, _lpData, _pos=0, _Len=0):
- self.Clear()
- _pos = self.Head.ReadData(_lpData, _pos)
- self.Cnt,_pos = CommFunc.ReadBYTE(_lpData, _pos)
- for i in range(self.Cnt):
- temInfoList = tagDogzTimeInfoObj()
- _pos = temInfoList.ReadData(_lpData, _pos)
- self.InfoList.append(temInfoList)
- return _pos
-
- def Clear(self):
- self.Head = tagHead()
- self.Head.Clear()
- self.Head.Cmd = 0xA9
- self.Head.SubCmd = 0x04
- self.Cnt = 0
- self.InfoList = list()
- return
-
- def GetLength(self):
- length = 0
- length += self.Head.GetLength()
- length += 1
- for i in range(self.Cnt):
- length += self.InfoList[i].GetLength()
-
- return length
-
- def GetBuffer(self):
- data = ''
- data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
- data = CommFunc.WriteBYTE(data, self.Cnt)
- for i in range(self.Cnt):
- data = CommFunc.WriteString(data, self.InfoList[i].GetLength(), self.InfoList[i].GetBuffer())
- return data
-
- def OutputString(self):
- DumpString = '''
- Head:%s,
- Cnt:%d,
- InfoList:%s
- '''\
- %(
- self.Head.OutputString(),
- self.Cnt,
- "..."
- )
- return DumpString
-
-
-m_NAtagGCDogzNPCRefreshTime=tagGCDogzNPCRefreshTime()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCDogzNPCRefreshTime.Head.Cmd,m_NAtagGCDogzNPCRefreshTime.Head.SubCmd))] = m_NAtagGCDogzNPCRefreshTime
-
-
-#------------------------------------------------------
-# A9 A9 通知好友互赠精力信息 #tagGCFriendSendEnergyInfo
-
-class tagGCFriendSendEnergyInfo(Structure):
- Head = tagHead()
- DataSize = 0 #(DWORD DataSize)
- SendData = "" #(String SendData)//赠送记录
- RecvSize = 0 #(DWORD RecvSize)
- RecvData = "" #(String RecvData)//可接收记录
- HasRecvCnt = 0 #(DWORD HasRecvCnt)//已接收个数
- data = None
-
- def __init__(self):
- self.Clear()
- self.Head.Cmd = 0xA9
- self.Head.SubCmd = 0xA9
- return
-
- def ReadData(self, _lpData, _pos=0, _Len=0):
- self.Clear()
- _pos = self.Head.ReadData(_lpData, _pos)
- self.DataSize,_pos = CommFunc.ReadDWORD(_lpData, _pos)
- self.SendData,_pos = CommFunc.ReadString(_lpData, _pos,self.DataSize)
- self.RecvSize,_pos = CommFunc.ReadDWORD(_lpData, _pos)
- self.RecvData,_pos = CommFunc.ReadString(_lpData, _pos,self.RecvSize)
- self.HasRecvCnt,_pos = CommFunc.ReadDWORD(_lpData, _pos)
- return _pos
-
- def Clear(self):
- self.Head = tagHead()
- self.Head.Clear()
- self.Head.Cmd = 0xA9
- self.Head.SubCmd = 0xA9
- self.DataSize = 0
- self.SendData = ""
- self.RecvSize = 0
- self.RecvData = ""
- self.HasRecvCnt = 0
- return
-
- def GetLength(self):
- length = 0
- length += self.Head.GetLength()
- length += 4
- length += len(self.SendData)
- length += 4
- length += len(self.RecvData)
- length += 4
-
- return length
-
- def GetBuffer(self):
- data = ''
- data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
- data = CommFunc.WriteDWORD(data, self.DataSize)
- data = CommFunc.WriteString(data, self.DataSize, self.SendData)
- data = CommFunc.WriteDWORD(data, self.RecvSize)
- data = CommFunc.WriteString(data, self.RecvSize, self.RecvData)
- data = CommFunc.WriteDWORD(data, self.HasRecvCnt)
- return data
-
- def OutputString(self):
- DumpString = '''
- Head:%s,
- DataSize:%d,
- SendData:%s,
- RecvSize:%d,
- RecvData:%s,
- HasRecvCnt:%d
- '''\
- %(
- self.Head.OutputString(),
- self.DataSize,
- self.SendData,
- self.RecvSize,
- self.RecvData,
- self.HasRecvCnt
- )
- return DumpString
-
-
-m_NAtagGCFriendSendEnergyInfo=tagGCFriendSendEnergyInfo()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCFriendSendEnergyInfo.Head.Cmd,m_NAtagGCFriendSendEnergyInfo.Head.SubCmd))] = m_NAtagGCFriendSendEnergyInfo
-
-
-#------------------------------------------------------
-#A9 02 世界boss相关信息 #tagGCGameWorldBossInfo
-
-class tagBossInfoObj(Structure):
- BossID = 0 #(DWORD BossID)// bossID
- IsAlive = 0 #(BYTE IsAlive)// 是否存活
- RecordLen = 0 #(WORD RecordLen)// 长度
- KillRecord = "" #(String KillRecord)// 最近击杀记录时间玩家名size = RecordLen
- RefreshSecond = 0 #(DWORD RefreshSecond)// 刷新倒计时, 秒
- RefreshCD = 0 #(DWORD RefreshCD)// 刷新总CD时, 秒
- data = None
-
- def __init__(self):
- self.Clear()
- return
-
- def ReadData(self, _lpData, _pos=0, _Len=0):
- self.Clear()
- self.BossID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
- self.IsAlive,_pos = CommFunc.ReadBYTE(_lpData, _pos)
- self.RecordLen,_pos = CommFunc.ReadWORD(_lpData, _pos)
- self.KillRecord,_pos = CommFunc.ReadString(_lpData, _pos,self.RecordLen)
- self.RefreshSecond,_pos = CommFunc.ReadDWORD(_lpData, _pos)
- self.RefreshCD,_pos = CommFunc.ReadDWORD(_lpData, _pos)
- return _pos
-
- def Clear(self):
- self.BossID = 0
- self.IsAlive = 0
- self.RecordLen = 0
- self.KillRecord = ""
- self.RefreshSecond = 0
- self.RefreshCD = 0
- return
-
- def GetLength(self):
- length = 0
- length += 4
- length += 1
- length += 2
- length += len(self.KillRecord)
- length += 4
- length += 4
-
- return length
-
- def GetBuffer(self):
- data = ''
- data = CommFunc.WriteDWORD(data, self.BossID)
- data = CommFunc.WriteBYTE(data, self.IsAlive)
- data = CommFunc.WriteWORD(data, self.RecordLen)
- data = CommFunc.WriteString(data, self.RecordLen, self.KillRecord)
- data = CommFunc.WriteDWORD(data, self.RefreshSecond)
- data = CommFunc.WriteDWORD(data, self.RefreshCD)
- return data
-
- def OutputString(self):
- DumpString = '''
- BossID:%d,
- IsAlive:%d,
- RecordLen:%d,
- KillRecord:%s,
- RefreshSecond:%d,
- RefreshCD:%d
- '''\
- %(
- self.BossID,
- self.IsAlive,
- self.RecordLen,
- self.KillRecord,
- self.RefreshSecond,
- self.RefreshCD
- )
- return DumpString
-
-
-class tagGCGameWorldBossInfo(Structure):
- Head = tagHead()
- BossCnt = 0 #(BYTE BossCnt)//boss信息个数
- BossInfoList = list() #(vector<tagBossInfoObj> BossInfoList)//boss信息列表
- data = None
-
- def __init__(self):
- self.Clear()
- self.Head.Cmd = 0xA9
- self.Head.SubCmd = 0x02
- return
-
- def ReadData(self, _lpData, _pos=0, _Len=0):
- self.Clear()
- _pos = self.Head.ReadData(_lpData, _pos)
- self.BossCnt,_pos = CommFunc.ReadBYTE(_lpData, _pos)
- for i in range(self.BossCnt):
- temBossInfoList = tagBossInfoObj()
- _pos = temBossInfoList.ReadData(_lpData, _pos)
- self.BossInfoList.append(temBossInfoList)
- return _pos
-
- def Clear(self):
- self.Head = tagHead()
- self.Head.Clear()
- self.Head.Cmd = 0xA9
- self.Head.SubCmd = 0x02
- self.BossCnt = 0
- self.BossInfoList = list()
- return
-
- def GetLength(self):
- length = 0
- length += self.Head.GetLength()
- length += 1
- for i in range(self.BossCnt):
- length += self.BossInfoList[i].GetLength()
-
- return length
-
- def GetBuffer(self):
- data = ''
- data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
- data = CommFunc.WriteBYTE(data, self.BossCnt)
- for i in range(self.BossCnt):
- data = CommFunc.WriteString(data, self.BossInfoList[i].GetLength(), self.BossInfoList[i].GetBuffer())
- return data
-
- def OutputString(self):
- DumpString = '''
- Head:%s,
- BossCnt:%d,
- BossInfoList:%s
- '''\
- %(
- self.Head.OutputString(),
- self.BossCnt,
- "..."
- )
- return DumpString
-
-
-m_NAtagGCGameWorldBossInfo=tagGCGameWorldBossInfo()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCGameWorldBossInfo.Head.Cmd,m_NAtagGCGameWorldBossInfo.Head.SubCmd))] = m_NAtagGCGameWorldBossInfo
-
-
-#------------------------------------------------------
-# A9 08 渡劫副本护法通知 #tagGCRealmFBHelpInfo
-
-class tagGCRealmFBHelpInfo(Structure):
- Head = tagHead()
- PlayerName = "" #(char PlayerName[33])//玩家名字
- PlayerID = 0 #(DWORD PlayerID)//玩家ID
- RealmLV = 0 #(BYTE RealmLV)//玩家境界
- Job = 0 #(BYTE Job)//玩家职业
- JobRank = 0 #(BYTE JobRank)//玩家职业阶级
- AtkAdd = 0 #(BYTE AtkAdd)//获得加成
- data = None
-
- def __init__(self):
- self.Clear()
- self.Head.Cmd = 0xA9
- self.Head.SubCmd = 0x08
- return
-
- def ReadData(self, _lpData, _pos=0, _Len=0):
- self.Clear()
- _pos = self.Head.ReadData(_lpData, _pos)
- self.PlayerName,_pos = CommFunc.ReadString(_lpData, _pos,33)
- self.PlayerID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
- self.RealmLV,_pos = CommFunc.ReadBYTE(_lpData, _pos)
- self.Job,_pos = CommFunc.ReadBYTE(_lpData, _pos)
- self.JobRank,_pos = CommFunc.ReadBYTE(_lpData, _pos)
- self.AtkAdd,_pos = CommFunc.ReadBYTE(_lpData, _pos)
- return _pos
-
- def Clear(self):
- self.Head = tagHead()
- self.Head.Clear()
- self.Head.Cmd = 0xA9
- self.Head.SubCmd = 0x08
- self.PlayerName = ""
- self.PlayerID = 0
- self.RealmLV = 0
- self.Job = 0
- self.JobRank = 0
- self.AtkAdd = 0
- return
-
- def GetLength(self):
- length = 0
- length += self.Head.GetLength()
- length += 33
- length += 4
- length += 1
- length += 1
- length += 1
- length += 1
-
- return length
-
- def GetBuffer(self):
- data = ''
- data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
- data = CommFunc.WriteString(data, 33, self.PlayerName)
- data = CommFunc.WriteDWORD(data, self.PlayerID)
- data = CommFunc.WriteBYTE(data, self.RealmLV)
- data = CommFunc.WriteBYTE(data, self.Job)
- data = CommFunc.WriteBYTE(data, self.JobRank)
- data = CommFunc.WriteBYTE(data, self.AtkAdd)
- return data
-
- def OutputString(self):
- DumpString = '''
- Head:%s,
- PlayerName:%s,
- PlayerID:%d,
- RealmLV:%d,
- Job:%d,
- JobRank:%d,
- AtkAdd:%d
- '''\
- %(
- self.Head.OutputString(),
- self.PlayerName,
- self.PlayerID,
- self.RealmLV,
- self.Job,
- self.JobRank,
- self.AtkAdd
- )
- return DumpString
-
-
-m_NAtagGCRealmFBHelpInfo=tagGCRealmFBHelpInfo()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCRealmFBHelpInfo.Head.Cmd,m_NAtagGCRealmFBHelpInfo.Head.SubCmd))] = m_NAtagGCRealmFBHelpInfo
-
-
-#------------------------------------------------------
-# A9 05 通知广播装备详细信息 #tagGCNotifyEquipDetailInfo
-
-class tagGCNotifyEquipClassEquip(Structure):
- _pack_ = 1
- _fields_ = [
- ("ItemID", c_int),
- ("Star", c_ubyte),
- ]
-
- def __init__(self):
- self.Clear()
- return
-
- def ReadData(self, stringData, _pos=0, _len=0):
- self.Clear()
- memmove(addressof(self), stringData[_pos:], self.GetLength())
- return _pos + self.GetLength()
-
- def Clear(self):
- self.ItemID = 0
- self.Star = 0
- return
-
- def GetLength(self):
- return sizeof(tagGCNotifyEquipClassEquip)
-
- def GetBuffer(self):
- return string_at(addressof(self), self.GetLength())
-
- def OutputString(self):
- DumpString = '''// A9 05 通知广播装备详细信息 //tagGCNotifyEquipDetailInfo:
- ItemID:%d,
- Star:%d
- '''\
- %(
- self.ItemID,
- self.Star
- )
- return DumpString
-
-
-class tagGCNotifyEquipDetailInfo(Structure):
- Head = tagHead()
- ItemGUID = "" #(char ItemGUID[40])
- ItemID = 0 #(DWORD ItemID)
- Star = 0 #(BYTE Star)//星级
- PlusLV = 0 #(WORD PlusLV)//强化等级
- EvolveLV = 0 #(BYTE EvolveLV)//进化等级
- WashLV = 0 #(BYTE WashLV)//洗练等级
- WashValueCount = 0 #(BYTE WashValueCount)
- WashValueList = list() #(vector<DWORD> WashValueList)//洗练值
- StoneIDCount = 0 #(BYTE StoneIDCount)
- StoneIDList = list() #(vector<DWORD> StoneIDList)//宝石
- ClassEquipCount = 0 #(BYTE ClassEquipCount)
- ClassEquipList = list() #(vector<tagGCNotifyEquipClassEquip> ClassEquipList)//本境界穿戴的装备
- data = None
-
- def __init__(self):
- self.Clear()
- self.Head.Cmd = 0xA9
- self.Head.SubCmd = 0x05
- return
-
- def ReadData(self, _lpData, _pos=0, _Len=0):
- self.Clear()
- _pos = self.Head.ReadData(_lpData, _pos)
- self.ItemGUID,_pos = CommFunc.ReadString(_lpData, _pos,40)
- self.ItemID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
- self.Star,_pos = CommFunc.ReadBYTE(_lpData, _pos)
- self.PlusLV,_pos = CommFunc.ReadWORD(_lpData, _pos)
- self.EvolveLV,_pos = CommFunc.ReadBYTE(_lpData, _pos)
- self.WashLV,_pos = CommFunc.ReadBYTE(_lpData, _pos)
- self.WashValueCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
- for i in range(self.WashValueCount):
- value,_pos=CommFunc.ReadDWORD(_lpData,_pos)
- self.WashValueList.append(value)
- self.StoneIDCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
- for i in range(self.StoneIDCount):
- value,_pos=CommFunc.ReadDWORD(_lpData,_pos)
- self.StoneIDList.append(value)
- self.ClassEquipCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
- for i in range(self.ClassEquipCount):
- temClassEquipList = tagGCNotifyEquipClassEquip()
- _pos = temClassEquipList.ReadData(_lpData, _pos)
- self.ClassEquipList.append(temClassEquipList)
- return _pos
-
- def Clear(self):
- self.Head = tagHead()
- self.Head.Clear()
- self.Head.Cmd = 0xA9
- self.Head.SubCmd = 0x05
- self.ItemGUID = ""
- self.ItemID = 0
- self.Star = 0
- self.PlusLV = 0
- self.EvolveLV = 0
- self.WashLV = 0
- self.WashValueCount = 0
- self.WashValueList = list()
- self.StoneIDCount = 0
- self.StoneIDList = list()
- self.ClassEquipCount = 0
- self.ClassEquipList = list()
- return
-
- def GetLength(self):
- length = 0
- length += self.Head.GetLength()
- length += 40
- length += 4
- length += 1
- length += 2
- length += 1
- length += 1
- length += 1
- length += 4 * self.WashValueCount
- length += 1
- length += 4 * self.StoneIDCount
- length += 1
- for i in range(self.ClassEquipCount):
- length += self.ClassEquipList[i].GetLength()
-
- return length
-
- def GetBuffer(self):
- data = ''
- data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
- data = CommFunc.WriteString(data, 40, self.ItemGUID)
- data = CommFunc.WriteDWORD(data, self.ItemID)
- data = CommFunc.WriteBYTE(data, self.Star)
- data = CommFunc.WriteWORD(data, self.PlusLV)
- data = CommFunc.WriteBYTE(data, self.EvolveLV)
- data = CommFunc.WriteBYTE(data, self.WashLV)
- data = CommFunc.WriteBYTE(data, self.WashValueCount)
- for i in range(self.WashValueCount):
- data = CommFunc.WriteDWORD(data, self.WashValueList[i])
- data = CommFunc.WriteBYTE(data, self.StoneIDCount)
- for i in range(self.StoneIDCount):
- data = CommFunc.WriteDWORD(data, self.StoneIDList[i])
- data = CommFunc.WriteBYTE(data, self.ClassEquipCount)
- for i in range(self.ClassEquipCount):
- data = CommFunc.WriteString(data, self.ClassEquipList[i].GetLength(), self.ClassEquipList[i].GetBuffer())
- return data
-
- def OutputString(self):
- DumpString = '''
- Head:%s,
- ItemGUID:%s,
- ItemID:%d,
- Star:%d,
- PlusLV:%d,
- EvolveLV:%d,
- WashLV:%d,
- WashValueCount:%d,
- WashValueList:%s,
- StoneIDCount:%d,
- StoneIDList:%s,
- ClassEquipCount:%d,
- ClassEquipList:%s
- '''\
- %(
- self.Head.OutputString(),
- self.ItemGUID,
- self.ItemID,
- self.Star,
- self.PlusLV,
- self.EvolveLV,
- self.WashLV,
- self.WashValueCount,
- "...",
- self.StoneIDCount,
- "...",
- self.ClassEquipCount,
- "..."
- )
- return DumpString
-
-
-m_NAtagGCNotifyEquipDetailInfo=tagGCNotifyEquipDetailInfo()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCNotifyEquipDetailInfo.Head.Cmd,m_NAtagGCNotifyEquipDetailInfo.Head.SubCmd))] = m_NAtagGCNotifyEquipDetailInfo
-
-
-#------------------------------------------------------
# A9 A2 排行榜信息#tagPYBillboardData
class tagPYBillboardInfo(Structure):
@@ -16448,377 +14406,22 @@
#------------------------------------------------------
-# A9 A3 喇叭聊天内容 #tagGCPYSpeakerContent
+# A9 24 群英榜匹配玩家列表 #tagSCQunyingMatchList
-class tagGCPYSpeakerContent(Structure):
- Head = tagHead()
- AccIDLen = 0 #(BYTE AccIDLen)
- AccID = "" #(String AccID)//size = AccIDLen
- PlayerID = 0 #(DWORD PlayerID)// 子服的玩家ID,该ID有值时为本服玩家
- NameLen = 0 #(BYTE NameLen)
- Name = "" #(String Name)//size = NameLen
- SpeakerType = 0 #(BYTE SpeakerType)
- TextLen = 0 #(WORD TextLen)
- Text = "" #(String Text)//size = TextLen
- ExtraValue = 0 #(DWORD ExtraValue)//附加值
- Extras = "" #(char Extras[256])//附加值列表
- data = None
-
- def __init__(self):
- self.Clear()
- self.Head.Cmd = 0xA9
- self.Head.SubCmd = 0xA3
- return
-
- def ReadData(self, _lpData, _pos=0, _Len=0):
- self.Clear()
- _pos = self.Head.ReadData(_lpData, _pos)
- self.AccIDLen,_pos = CommFunc.ReadBYTE(_lpData, _pos)
- self.AccID,_pos = CommFunc.ReadString(_lpData, _pos,self.AccIDLen)
- self.PlayerID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
- self.NameLen,_pos = CommFunc.ReadBYTE(_lpData, _pos)
- self.Name,_pos = CommFunc.ReadString(_lpData, _pos,self.NameLen)
- self.SpeakerType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
- self.TextLen,_pos = CommFunc.ReadWORD(_lpData, _pos)
- self.Text,_pos = CommFunc.ReadString(_lpData, _pos,self.TextLen)
- self.ExtraValue,_pos = CommFunc.ReadDWORD(_lpData, _pos)
- self.Extras,_pos = CommFunc.ReadString(_lpData, _pos,256)
- return _pos
-
- def Clear(self):
- self.Head = tagHead()
- self.Head.Clear()
- self.Head.Cmd = 0xA9
- self.Head.SubCmd = 0xA3
- self.AccIDLen = 0
- self.AccID = ""
- self.PlayerID = 0
- self.NameLen = 0
- self.Name = ""
- self.SpeakerType = 0
- self.TextLen = 0
- self.Text = ""
- self.ExtraValue = 0
- self.Extras = ""
- return
-
- def GetLength(self):
- length = 0
- length += self.Head.GetLength()
- length += 1
- length += len(self.AccID)
- length += 4
- length += 1
- length += len(self.Name)
- length += 1
- length += 2
- length += len(self.Text)
- length += 4
- length += 256
-
- return length
-
- def GetBuffer(self):
- data = ''
- data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
- data = CommFunc.WriteBYTE(data, self.AccIDLen)
- data = CommFunc.WriteString(data, self.AccIDLen, self.AccID)
- data = CommFunc.WriteDWORD(data, self.PlayerID)
- data = CommFunc.WriteBYTE(data, self.NameLen)
- data = CommFunc.WriteString(data, self.NameLen, self.Name)
- data = CommFunc.WriteBYTE(data, self.SpeakerType)
- data = CommFunc.WriteWORD(data, self.TextLen)
- data = CommFunc.WriteString(data, self.TextLen, self.Text)
- data = CommFunc.WriteDWORD(data, self.ExtraValue)
- data = CommFunc.WriteString(data, 256, self.Extras)
- return data
-
- def OutputString(self):
- DumpString = '''
- Head:%s,
- AccIDLen:%d,
- AccID:%s,
- PlayerID:%d,
- NameLen:%d,
- Name:%s,
- SpeakerType:%d,
- TextLen:%d,
- Text:%s,
- ExtraValue:%d,
- Extras:%s
- '''\
- %(
- self.Head.OutputString(),
- self.AccIDLen,
- self.AccID,
- self.PlayerID,
- self.NameLen,
- self.Name,
- self.SpeakerType,
- self.TextLen,
- self.Text,
- self.ExtraValue,
- self.Extras
- )
- return DumpString
-
-
-m_NAtagGCPYSpeakerContent=tagGCPYSpeakerContent()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCPYSpeakerContent.Head.Cmd,m_NAtagGCPYSpeakerContent.Head.SubCmd))] = m_NAtagGCPYSpeakerContent
-
-
-#------------------------------------------------------
-#A9 A1 查询玩家补偿结果封包#tagGCQueryCompensationResult
-
-class tagGCCompensationItem(Structure):
- ItemID = 0 #(DWORD ItemID)//物品ID
- Count = 0 #(DWORD Count)//数量
- IsBind = 0 #(BYTE IsBind)//是否绑定
- UserDataLen = 0 #(DWORD UserDataLen)
- UserData = "" #(String UserData)//自定义数据
- data = None
-
- def __init__(self):
- self.Clear()
- return
-
- def ReadData(self, _lpData, _pos=0, _Len=0):
- self.Clear()
- self.ItemID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
- self.Count,_pos = CommFunc.ReadDWORD(_lpData, _pos)
- self.IsBind,_pos = CommFunc.ReadBYTE(_lpData, _pos)
- self.UserDataLen,_pos = CommFunc.ReadDWORD(_lpData, _pos)
- self.UserData,_pos = CommFunc.ReadString(_lpData, _pos,self.UserDataLen)
- return _pos
-
- def Clear(self):
- self.ItemID = 0
- self.Count = 0
- self.IsBind = 0
- self.UserDataLen = 0
- self.UserData = ""
- return
-
- def GetLength(self):
- length = 0
- length += 4
- length += 4
- length += 1
- length += 4
- length += len(self.UserData)
-
- return length
-
- def GetBuffer(self):
- data = ''
- data = CommFunc.WriteDWORD(data, self.ItemID)
- data = CommFunc.WriteDWORD(data, self.Count)
- data = CommFunc.WriteBYTE(data, self.IsBind)
- data = CommFunc.WriteDWORD(data, self.UserDataLen)
- data = CommFunc.WriteString(data, self.UserDataLen, self.UserData)
- return data
-
- def OutputString(self):
- DumpString = '''
- ItemID:%d,
- Count:%d,
- IsBind:%d,
- UserDataLen:%d,
- UserData:%s
- '''\
- %(
- self.ItemID,
- self.Count,
- self.IsBind,
- self.UserDataLen,
- self.UserData
- )
- return DumpString
-
-
-class tagGCCompensationPack(Structure):
- GUID = "" #(char GUID[40])//补偿标识
- CreateTime = "" #(char CreateTime[30])//邮件接收时间
- TextLen = 0 #(DWORD TextLen)//文字内容长度
- Text = "" #(String Text)//文字内容
- Count = 0 #(BYTE Count)//当前补偿物品数
- IsRead = 0 #(BYTE IsRead)//已读状态 0 未读取 1已读取
- Gold = 0 #(DWORD Gold)//仙玉
- GoldPaper = 0 #(DWORD GoldPaper)//绑定仙玉
- Silver = 0 #(DWORD Silver)//铜钱
- Items = list() #(vector<tagGCCompensationItem> Items)//补偿物品信息
- data = None
-
- def __init__(self):
- self.Clear()
- return
-
- def ReadData(self, _lpData, _pos=0, _Len=0):
- self.Clear()
- self.GUID,_pos = CommFunc.ReadString(_lpData, _pos,40)
- self.CreateTime,_pos = CommFunc.ReadString(_lpData, _pos,30)
- self.TextLen,_pos = CommFunc.ReadDWORD(_lpData, _pos)
- self.Text,_pos = CommFunc.ReadString(_lpData, _pos,self.TextLen)
- self.Count,_pos = CommFunc.ReadBYTE(_lpData, _pos)
- self.IsRead,_pos = CommFunc.ReadBYTE(_lpData, _pos)
- self.Gold,_pos = CommFunc.ReadDWORD(_lpData, _pos)
- self.GoldPaper,_pos = CommFunc.ReadDWORD(_lpData, _pos)
- self.Silver,_pos = CommFunc.ReadDWORD(_lpData, _pos)
- for i in range(self.Count):
- temItems = tagGCCompensationItem()
- _pos = temItems.ReadData(_lpData, _pos)
- self.Items.append(temItems)
- return _pos
-
- def Clear(self):
- self.GUID = ""
- self.CreateTime = ""
- self.TextLen = 0
- self.Text = ""
- self.Count = 0
- self.IsRead = 0
- self.Gold = 0
- self.GoldPaper = 0
- self.Silver = 0
- self.Items = list()
- return
-
- def GetLength(self):
- length = 0
- length += 40
- length += 30
- length += 4
- length += len(self.Text)
- length += 1
- length += 1
- length += 4
- length += 4
- length += 4
- for i in range(self.Count):
- length += self.Items[i].GetLength()
-
- return length
-
- def GetBuffer(self):
- data = ''
- data = CommFunc.WriteString(data, 40, self.GUID)
- data = CommFunc.WriteString(data, 30, self.CreateTime)
- data = CommFunc.WriteDWORD(data, self.TextLen)
- data = CommFunc.WriteString(data, self.TextLen, self.Text)
- data = CommFunc.WriteBYTE(data, self.Count)
- data = CommFunc.WriteBYTE(data, self.IsRead)
- data = CommFunc.WriteDWORD(data, self.Gold)
- data = CommFunc.WriteDWORD(data, self.GoldPaper)
- data = CommFunc.WriteDWORD(data, self.Silver)
- for i in range(self.Count):
- data = CommFunc.WriteString(data, self.Items[i].GetLength(), self.Items[i].GetBuffer())
- return data
-
- def OutputString(self):
- DumpString = '''
- GUID:%s,
- CreateTime:%s,
- TextLen:%d,
- Text:%s,
- Count:%d,
- IsRead:%d,
- Gold:%d,
- GoldPaper:%d,
- Silver:%d,
- Items:%s
- '''\
- %(
- self.GUID,
- self.CreateTime,
- self.TextLen,
- self.Text,
- self.Count,
- self.IsRead,
- self.Gold,
- self.GoldPaper,
- self.Silver,
- "..."
- )
- return DumpString
-
-
-class tagGCQueryCompensationResult(Structure):
- Head = tagHead()
- Count = 0 #(WORD Count)//可领取补偿数
- PackList = list() #(vector<tagGCCompensationPack> PackList)//补偿物品信息
- data = None
-
- def __init__(self):
- self.Clear()
- self.Head.Cmd = 0xA9
- self.Head.SubCmd = 0xA1
- return
-
- def ReadData(self, _lpData, _pos=0, _Len=0):
- self.Clear()
- _pos = self.Head.ReadData(_lpData, _pos)
- self.Count,_pos = CommFunc.ReadWORD(_lpData, _pos)
- for i in range(self.Count):
- temPackList = tagGCCompensationPack()
- _pos = temPackList.ReadData(_lpData, _pos)
- self.PackList.append(temPackList)
- return _pos
-
- def Clear(self):
- self.Head = tagHead()
- self.Head.Clear()
- self.Head.Cmd = 0xA9
- self.Head.SubCmd = 0xA1
- self.Count = 0
- self.PackList = list()
- return
-
- def GetLength(self):
- length = 0
- length += self.Head.GetLength()
- length += 2
- for i in range(self.Count):
- length += self.PackList[i].GetLength()
-
- return length
-
- def GetBuffer(self):
- data = ''
- data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
- data = CommFunc.WriteWORD(data, self.Count)
- for i in range(self.Count):
- data = CommFunc.WriteString(data, self.PackList[i].GetLength(), self.PackList[i].GetBuffer())
- return data
-
- def OutputString(self):
- DumpString = '''
- Head:%s,
- Count:%d,
- PackList:%s
- '''\
- %(
- self.Head.OutputString(),
- self.Count,
- "..."
- )
- return DumpString
-
-
-m_NAtagGCQueryCompensationResult=tagGCQueryCompensationResult()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCQueryCompensationResult.Head.Cmd,m_NAtagGCQueryCompensationResult.Head.SubCmd))] = m_NAtagGCQueryCompensationResult
-
-
-#------------------------------------------------------
-# A9 A8 通知可添加的好友信息 #tagGCRecommendFriendsInfo
-
-class tagRecommendFriendsData(Structure):
- ID = 0 #(DWORD ID)
- Name = "" #(char Name[33])
- LV = 0 #(DWORD LV)//等级
- Job = 0 #(BYTE Job)
- RealmLV = 0 #(WORD RealmLV)//境界
+class tagSCQunyingMatchInfo(Structure):
+ Rank = 0 #(WORD Rank)//排名,从1开始
+ PlayerID = 0 #(DWORD PlayerID)//目标玩家ID
+ PlayerName = "" #(char PlayerName[33])
+ LV = 0 #(WORD LV)// 玩家等级
+ RealmLV = 0 #(WORD RealmLV)//境界,机器人读境界表取等级对应境界
+ FightPower = 0 #(DWORD FightPower)//战力求余亿部分
+ FightPowerEx = 0 #(DWORD FightPowerEx)//战力整除亿部分
Face = 0 #(DWORD Face)//基本脸型
FacePic = 0 #(DWORD FacePic)//头像框
+ TitleID = 0 #(DWORD TitleID)//称号
+ ModelMark = 0 #(DWORD ModelMark)//变形模型mark
+ EquipShowSwitch = 0 #(DWORD EquipShowSwitch)//其他外观信息
+ ServerID = 0 #(DWORD ServerID)
data = None
def __init__(self):
@@ -16827,32 +14430,50 @@
def ReadData(self, _lpData, _pos=0, _Len=0):
self.Clear()
- self.ID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
- self.Name,_pos = CommFunc.ReadString(_lpData, _pos,33)
- self.LV,_pos = CommFunc.ReadDWORD(_lpData, _pos)
- self.Job,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.Rank,_pos = CommFunc.ReadWORD(_lpData, _pos)
+ self.PlayerID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.PlayerName,_pos = CommFunc.ReadString(_lpData, _pos,33)
+ self.LV,_pos = CommFunc.ReadWORD(_lpData, _pos)
self.RealmLV,_pos = CommFunc.ReadWORD(_lpData, _pos)
+ self.FightPower,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.FightPowerEx,_pos = CommFunc.ReadDWORD(_lpData, _pos)
self.Face,_pos = CommFunc.ReadDWORD(_lpData, _pos)
self.FacePic,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.TitleID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.ModelMark,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.EquipShowSwitch,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.ServerID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
return _pos
def Clear(self):
- self.ID = 0
- self.Name = ""
+ self.Rank = 0
+ self.PlayerID = 0
+ self.PlayerName = ""
self.LV = 0
- self.Job = 0
self.RealmLV = 0
+ self.FightPower = 0
+ self.FightPowerEx = 0
self.Face = 0
self.FacePic = 0
+ self.TitleID = 0
+ self.ModelMark = 0
+ self.EquipShowSwitch = 0
+ self.ServerID = 0
return
def GetLength(self):
length = 0
+ length += 2
length += 4
length += 33
- length += 4
- length += 1
length += 2
+ length += 2
+ length += 4
+ length += 4
+ length += 4
+ length += 4
+ length += 4
+ length += 4
length += 4
length += 4
@@ -16860,101 +14481,183 @@
def GetBuffer(self):
data = ''
- data = CommFunc.WriteDWORD(data, self.ID)
- data = CommFunc.WriteString(data, 33, self.Name)
- data = CommFunc.WriteDWORD(data, self.LV)
- data = CommFunc.WriteBYTE(data, self.Job)
+ data = CommFunc.WriteWORD(data, self.Rank)
+ data = CommFunc.WriteDWORD(data, self.PlayerID)
+ data = CommFunc.WriteString(data, 33, self.PlayerName)
+ data = CommFunc.WriteWORD(data, self.LV)
data = CommFunc.WriteWORD(data, self.RealmLV)
+ data = CommFunc.WriteDWORD(data, self.FightPower)
+ data = CommFunc.WriteDWORD(data, self.FightPowerEx)
data = CommFunc.WriteDWORD(data, self.Face)
data = CommFunc.WriteDWORD(data, self.FacePic)
+ data = CommFunc.WriteDWORD(data, self.TitleID)
+ data = CommFunc.WriteDWORD(data, self.ModelMark)
+ data = CommFunc.WriteDWORD(data, self.EquipShowSwitch)
+ data = CommFunc.WriteDWORD(data, self.ServerID)
return data
def OutputString(self):
DumpString = '''
- ID:%d,
- Name:%s,
+ Rank:%d,
+ PlayerID:%d,
+ PlayerName:%s,
LV:%d,
- Job:%d,
RealmLV:%d,
+ FightPower:%d,
+ FightPowerEx:%d,
Face:%d,
- FacePic:%d
+ FacePic:%d,
+ TitleID:%d,
+ ModelMark:%d,
+ EquipShowSwitch:%d,
+ ServerID:%d
'''\
%(
- self.ID,
- self.Name,
+ self.Rank,
+ self.PlayerID,
+ self.PlayerName,
self.LV,
- self.Job,
self.RealmLV,
+ self.FightPower,
+ self.FightPowerEx,
self.Face,
- self.FacePic
+ self.FacePic,
+ self.TitleID,
+ self.ModelMark,
+ self.EquipShowSwitch,
+ self.ServerID
)
return DumpString
-class tagGCRecommendFriendsInfo(Structure):
+class tagSCQunyingMatchList(Structure):
Head = tagHead()
- Cnt = 0 #(BYTE Cnt)//信息数
- FriendsList = list() #(vector<tagRecommendFriendsData> FriendsList)//成员信息
+ MatchCount = 0 #(BYTE MatchCount)
+ MatchList = list() #(vector<tagSCQunyingMatchInfo> MatchList)// 匹配列表,从高分到低分
data = None
def __init__(self):
self.Clear()
self.Head.Cmd = 0xA9
- self.Head.SubCmd = 0xA8
+ self.Head.SubCmd = 0x24
return
def ReadData(self, _lpData, _pos=0, _Len=0):
self.Clear()
_pos = self.Head.ReadData(_lpData, _pos)
- self.Cnt,_pos = CommFunc.ReadBYTE(_lpData, _pos)
- for i in range(self.Cnt):
- temFriendsList = tagRecommendFriendsData()
- _pos = temFriendsList.ReadData(_lpData, _pos)
- self.FriendsList.append(temFriendsList)
+ self.MatchCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.MatchCount):
+ temMatchList = tagSCQunyingMatchInfo()
+ _pos = temMatchList.ReadData(_lpData, _pos)
+ self.MatchList.append(temMatchList)
return _pos
def Clear(self):
self.Head = tagHead()
self.Head.Clear()
self.Head.Cmd = 0xA9
- self.Head.SubCmd = 0xA8
- self.Cnt = 0
- self.FriendsList = list()
+ self.Head.SubCmd = 0x24
+ self.MatchCount = 0
+ self.MatchList = list()
return
def GetLength(self):
length = 0
length += self.Head.GetLength()
length += 1
- for i in range(self.Cnt):
- length += self.FriendsList[i].GetLength()
+ for i in range(self.MatchCount):
+ length += self.MatchList[i].GetLength()
return length
def GetBuffer(self):
data = ''
data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
- data = CommFunc.WriteBYTE(data, self.Cnt)
- for i in range(self.Cnt):
- data = CommFunc.WriteString(data, self.FriendsList[i].GetLength(), self.FriendsList[i].GetBuffer())
+ data = CommFunc.WriteBYTE(data, self.MatchCount)
+ for i in range(self.MatchCount):
+ data = CommFunc.WriteString(data, self.MatchList[i].GetLength(), self.MatchList[i].GetBuffer())
return data
def OutputString(self):
DumpString = '''
Head:%s,
- Cnt:%d,
- FriendsList:%s
+ MatchCount:%d,
+ MatchList:%s
'''\
%(
self.Head.OutputString(),
- self.Cnt,
+ self.MatchCount,
"..."
)
return DumpString
-m_NAtagGCRecommendFriendsInfo=tagGCRecommendFriendsInfo()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCRecommendFriendsInfo.Head.Cmd,m_NAtagGCRecommendFriendsInfo.Head.SubCmd))] = m_NAtagGCRecommendFriendsInfo
+m_NAtagSCQunyingMatchList=tagSCQunyingMatchList()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagSCQunyingMatchList.Head.Cmd,m_NAtagSCQunyingMatchList.Head.SubCmd))] = m_NAtagSCQunyingMatchList
+
+
+#------------------------------------------------------
+# A9 25 群英榜玩家信息 #tagSCQunyingPlayerInfo
+
+class tagSCQunyingPlayerInfo(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("Cmd", c_ubyte),
+ ("SubCmd", c_ubyte),
+ ("RefreshCnt", c_int), # 本周已刷新匹配次数
+ ("LastRecoverTime", c_int), # 上次免费恢复挑战令时间戳,为0时可不用倒计时
+ ("RankHighest", c_ushort), # 历史最高名次,第1名为最高
+ ("RankSuccAward", c_int), # 历史最高名次成就领奖记录,按奖励记录索引位运算记录是否已领取
+ ]
+
+ def __init__(self):
+ self.Clear()
+ self.Cmd = 0xA9
+ self.SubCmd = 0x25
+ return
+
+ def ReadData(self, stringData, _pos=0, _len=0):
+ self.Clear()
+ memmove(addressof(self), stringData[_pos:], self.GetLength())
+ return _pos + self.GetLength()
+
+ def Clear(self):
+ self.Cmd = 0xA9
+ self.SubCmd = 0x25
+ self.RefreshCnt = 0
+ self.LastRecoverTime = 0
+ self.RankHighest = 0
+ self.RankSuccAward = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagSCQunyingPlayerInfo)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// A9 25 群英榜玩家信息 //tagSCQunyingPlayerInfo:
+ Cmd:%s,
+ SubCmd:%s,
+ RefreshCnt:%d,
+ LastRecoverTime:%d,
+ RankHighest:%d,
+ RankSuccAward:%d
+ '''\
+ %(
+ self.Cmd,
+ self.SubCmd,
+ self.RefreshCnt,
+ self.LastRecoverTime,
+ self.RankHighest,
+ self.RankSuccAward
+ )
+ return DumpString
+
+
+m_NAtagSCQunyingPlayerInfo=tagSCQunyingPlayerInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagSCQunyingPlayerInfo.Cmd,m_NAtagSCQunyingPlayerInfo.SubCmd))] = m_NAtagSCQunyingPlayerInfo
#------------------------------------------------------
@@ -17012,492 +14715,6 @@
m_NAtagSCRenameResult=tagSCRenameResult()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagSCRenameResult.Head.Cmd,m_NAtagSCRenameResult.Head.SubCmd))] = m_NAtagSCRenameResult
-
-
-#------------------------------------------------------
-# A9 06 商城全服购买次数通知 #tagGCStoreServerBuyCntInfo
-
-class tagGCStoreServerBuyCnt(Structure):
- _pack_ = 1
- _fields_ = [
- ("GoodsID", c_int), #商品标识
- ("BuyCnt", 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.GoodsID = 0
- self.BuyCnt = 0
- return
-
- def GetLength(self):
- return sizeof(tagGCStoreServerBuyCnt)
-
- def GetBuffer(self):
- return string_at(addressof(self), self.GetLength())
-
- def OutputString(self):
- DumpString = '''// A9 06 商城全服购买次数通知 //tagGCStoreServerBuyCntInfo:
- GoodsID:%d,
- BuyCnt:%d
- '''\
- %(
- self.GoodsID,
- self.BuyCnt
- )
- return DumpString
-
-
-class tagGCStoreServerBuyCntInfo(Structure):
- Head = tagHead()
- Count = 0 #(WORD Count)//数量
- InfoList = list() #(vector<tagGCStoreServerBuyCnt> InfoList)//次数信息
- data = None
-
- def __init__(self):
- self.Clear()
- self.Head.Cmd = 0xA9
- self.Head.SubCmd = 0x06
- return
-
- def ReadData(self, _lpData, _pos=0, _Len=0):
- self.Clear()
- _pos = self.Head.ReadData(_lpData, _pos)
- self.Count,_pos = CommFunc.ReadWORD(_lpData, _pos)
- for i in range(self.Count):
- temInfoList = tagGCStoreServerBuyCnt()
- _pos = temInfoList.ReadData(_lpData, _pos)
- self.InfoList.append(temInfoList)
- return _pos
-
- def Clear(self):
- self.Head = tagHead()
- self.Head.Clear()
- self.Head.Cmd = 0xA9
- self.Head.SubCmd = 0x06
- self.Count = 0
- self.InfoList = list()
- return
-
- def GetLength(self):
- length = 0
- length += self.Head.GetLength()
- length += 2
- for i in range(self.Count):
- length += self.InfoList[i].GetLength()
-
- return length
-
- def GetBuffer(self):
- data = ''
- data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
- data = CommFunc.WriteWORD(data, self.Count)
- for i in range(self.Count):
- data = CommFunc.WriteString(data, self.InfoList[i].GetLength(), self.InfoList[i].GetBuffer())
- return data
-
- def OutputString(self):
- DumpString = '''
- Head:%s,
- Count:%d,
- InfoList:%s
- '''\
- %(
- self.Head.OutputString(),
- self.Count,
- "..."
- )
- return DumpString
-
-
-m_NAtagGCStoreServerBuyCntInfo=tagGCStoreServerBuyCntInfo()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCStoreServerBuyCntInfo.Head.Cmd,m_NAtagGCStoreServerBuyCntInfo.Head.SubCmd))] = m_NAtagGCStoreServerBuyCntInfo
-
-
-#------------------------------------------------------
-# A9 27 仙宫新晋玩家信息 #tagGCXiangongNewPlayerInfo
-
-class tagGCXiangongNewPlayer(Structure):
- AddTime = 0 #(DWORD AddTime)// 新晋时间戳
- ServerID = 0 #(DWORD ServerID)
- PlayerID = 0 #(DWORD PlayerID)
- NameLen = 0 #(BYTE NameLen)
- Name = "" #(String Name)// 玩家名,size = NameLen
- LV = 0 #(WORD LV)// 玩家等级
- Job = 0 #(BYTE Job)// 玩家职业
- RealmLV = 0 #(WORD RealmLV)// 玩家境界
- Face = 0 #(DWORD Face)//基本脸型
- FacePic = 0 #(DWORD FacePic)//头像框
- EquipShowSwitch = 0 #(DWORD EquipShowSwitch)
- EquipShowIDCount = 0 #(BYTE EquipShowIDCount)
- EquipShowID = list() #(vector<DWORD> EquipShowID)
- data = None
-
- def __init__(self):
- self.Clear()
- return
-
- def ReadData(self, _lpData, _pos=0, _Len=0):
- self.Clear()
- self.AddTime,_pos = CommFunc.ReadDWORD(_lpData, _pos)
- self.ServerID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
- self.PlayerID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
- self.NameLen,_pos = CommFunc.ReadBYTE(_lpData, _pos)
- self.Name,_pos = CommFunc.ReadString(_lpData, _pos,self.NameLen)
- self.LV,_pos = CommFunc.ReadWORD(_lpData, _pos)
- self.Job,_pos = CommFunc.ReadBYTE(_lpData, _pos)
- self.RealmLV,_pos = CommFunc.ReadWORD(_lpData, _pos)
- self.Face,_pos = CommFunc.ReadDWORD(_lpData, _pos)
- self.FacePic,_pos = CommFunc.ReadDWORD(_lpData, _pos)
- self.EquipShowSwitch,_pos = CommFunc.ReadDWORD(_lpData, _pos)
- self.EquipShowIDCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
- for i in range(self.EquipShowIDCount):
- value,_pos=CommFunc.ReadDWORD(_lpData,_pos)
- self.EquipShowID.append(value)
- return _pos
-
- def Clear(self):
- self.AddTime = 0
- self.ServerID = 0
- self.PlayerID = 0
- self.NameLen = 0
- self.Name = ""
- self.LV = 0
- self.Job = 0
- self.RealmLV = 0
- self.Face = 0
- self.FacePic = 0
- self.EquipShowSwitch = 0
- self.EquipShowIDCount = 0
- self.EquipShowID = list()
- return
-
- def GetLength(self):
- length = 0
- length += 4
- length += 4
- length += 4
- length += 1
- length += len(self.Name)
- length += 2
- length += 1
- length += 2
- length += 4
- length += 4
- length += 4
- length += 1
- length += 4 * self.EquipShowIDCount
-
- return length
-
- def GetBuffer(self):
- data = ''
- data = CommFunc.WriteDWORD(data, self.AddTime)
- data = CommFunc.WriteDWORD(data, self.ServerID)
- data = CommFunc.WriteDWORD(data, self.PlayerID)
- data = CommFunc.WriteBYTE(data, self.NameLen)
- data = CommFunc.WriteString(data, self.NameLen, self.Name)
- data = CommFunc.WriteWORD(data, self.LV)
- data = CommFunc.WriteBYTE(data, self.Job)
- data = CommFunc.WriteWORD(data, self.RealmLV)
- data = CommFunc.WriteDWORD(data, self.Face)
- data = CommFunc.WriteDWORD(data, self.FacePic)
- data = CommFunc.WriteDWORD(data, self.EquipShowSwitch)
- data = CommFunc.WriteBYTE(data, self.EquipShowIDCount)
- for i in range(self.EquipShowIDCount):
- data = CommFunc.WriteDWORD(data, self.EquipShowID[i])
- return data
-
- def OutputString(self):
- DumpString = '''
- AddTime:%d,
- ServerID:%d,
- PlayerID:%d,
- NameLen:%d,
- Name:%s,
- LV:%d,
- Job:%d,
- RealmLV:%d,
- Face:%d,
- FacePic:%d,
- EquipShowSwitch:%d,
- EquipShowIDCount:%d,
- EquipShowID:%s
- '''\
- %(
- self.AddTime,
- self.ServerID,
- self.PlayerID,
- self.NameLen,
- self.Name,
- self.LV,
- self.Job,
- self.RealmLV,
- self.Face,
- self.FacePic,
- self.EquipShowSwitch,
- self.EquipShowIDCount,
- "..."
- )
- return DumpString
-
-
-class tagGCXiangongNewPlayerInfo(Structure):
- Head = tagHead()
- XiangongID = 0 #(WORD XiangongID)// 仙宫ID
- NewPlayerCount = 0 #(BYTE NewPlayerCount)
- NewPlayerList = list() #(vector<tagGCXiangongNewPlayer> NewPlayerList)
- data = None
-
- def __init__(self):
- self.Clear()
- self.Head.Cmd = 0xA9
- self.Head.SubCmd = 0x27
- return
-
- def ReadData(self, _lpData, _pos=0, _Len=0):
- self.Clear()
- _pos = self.Head.ReadData(_lpData, _pos)
- self.XiangongID,_pos = CommFunc.ReadWORD(_lpData, _pos)
- self.NewPlayerCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
- for i in range(self.NewPlayerCount):
- temNewPlayerList = tagGCXiangongNewPlayer()
- _pos = temNewPlayerList.ReadData(_lpData, _pos)
- self.NewPlayerList.append(temNewPlayerList)
- return _pos
-
- def Clear(self):
- self.Head = tagHead()
- self.Head.Clear()
- self.Head.Cmd = 0xA9
- self.Head.SubCmd = 0x27
- self.XiangongID = 0
- self.NewPlayerCount = 0
- self.NewPlayerList = list()
- return
-
- def GetLength(self):
- length = 0
- length += self.Head.GetLength()
- length += 2
- length += 1
- for i in range(self.NewPlayerCount):
- length += self.NewPlayerList[i].GetLength()
-
- return length
-
- def GetBuffer(self):
- data = ''
- data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
- data = CommFunc.WriteWORD(data, self.XiangongID)
- data = CommFunc.WriteBYTE(data, self.NewPlayerCount)
- for i in range(self.NewPlayerCount):
- data = CommFunc.WriteString(data, self.NewPlayerList[i].GetLength(), self.NewPlayerList[i].GetBuffer())
- return data
-
- def OutputString(self):
- DumpString = '''
- Head:%s,
- XiangongID:%d,
- NewPlayerCount:%d,
- NewPlayerList:%s
- '''\
- %(
- self.Head.OutputString(),
- self.XiangongID,
- self.NewPlayerCount,
- "..."
- )
- return DumpString
-
-
-m_NAtagGCXiangongNewPlayerInfo=tagGCXiangongNewPlayerInfo()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCXiangongNewPlayerInfo.Head.Cmd,m_NAtagGCXiangongNewPlayerInfo.Head.SubCmd))] = m_NAtagGCXiangongNewPlayerInfo
-
-
-#------------------------------------------------------
-# A9 28 仙宫仙名录玩家信息 #tagGCXiangongRecPlayerInfo
-
-class tagGCXiangongRecPlayer(Structure):
- AddTime = 0 #(DWORD AddTime)// 新晋时间戳
- ServerID = 0 #(DWORD ServerID)
- PlayerID = 0 #(DWORD PlayerID)
- NameLen = 0 #(BYTE NameLen)
- Name = "" #(String Name)// 玩家名,size = NameLen
- LV = 0 #(WORD LV)// 玩家等级
- Job = 0 #(BYTE Job)// 玩家职业
- RealmLV = 0 #(WORD RealmLV)// 玩家境界
- Face = 0 #(DWORD Face)//基本脸型
- FacePic = 0 #(DWORD FacePic)//头像框
- data = None
-
- def __init__(self):
- self.Clear()
- return
-
- def ReadData(self, _lpData, _pos=0, _Len=0):
- self.Clear()
- self.AddTime,_pos = CommFunc.ReadDWORD(_lpData, _pos)
- self.ServerID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
- self.PlayerID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
- self.NameLen,_pos = CommFunc.ReadBYTE(_lpData, _pos)
- self.Name,_pos = CommFunc.ReadString(_lpData, _pos,self.NameLen)
- self.LV,_pos = CommFunc.ReadWORD(_lpData, _pos)
- self.Job,_pos = CommFunc.ReadBYTE(_lpData, _pos)
- self.RealmLV,_pos = CommFunc.ReadWORD(_lpData, _pos)
- self.Face,_pos = CommFunc.ReadDWORD(_lpData, _pos)
- self.FacePic,_pos = CommFunc.ReadDWORD(_lpData, _pos)
- return _pos
-
- def Clear(self):
- self.AddTime = 0
- self.ServerID = 0
- self.PlayerID = 0
- self.NameLen = 0
- self.Name = ""
- self.LV = 0
- self.Job = 0
- self.RealmLV = 0
- self.Face = 0
- self.FacePic = 0
- return
-
- def GetLength(self):
- length = 0
- length += 4
- length += 4
- length += 4
- length += 1
- length += len(self.Name)
- length += 2
- length += 1
- length += 2
- length += 4
- length += 4
-
- return length
-
- def GetBuffer(self):
- data = ''
- data = CommFunc.WriteDWORD(data, self.AddTime)
- data = CommFunc.WriteDWORD(data, self.ServerID)
- data = CommFunc.WriteDWORD(data, self.PlayerID)
- data = CommFunc.WriteBYTE(data, self.NameLen)
- data = CommFunc.WriteString(data, self.NameLen, self.Name)
- data = CommFunc.WriteWORD(data, self.LV)
- data = CommFunc.WriteBYTE(data, self.Job)
- data = CommFunc.WriteWORD(data, self.RealmLV)
- data = CommFunc.WriteDWORD(data, self.Face)
- data = CommFunc.WriteDWORD(data, self.FacePic)
- return data
-
- def OutputString(self):
- DumpString = '''
- AddTime:%d,
- ServerID:%d,
- PlayerID:%d,
- NameLen:%d,
- Name:%s,
- LV:%d,
- Job:%d,
- RealmLV:%d,
- Face:%d,
- FacePic:%d
- '''\
- %(
- self.AddTime,
- self.ServerID,
- self.PlayerID,
- self.NameLen,
- self.Name,
- self.LV,
- self.Job,
- self.RealmLV,
- self.Face,
- self.FacePic
- )
- return DumpString
-
-
-class tagGCXiangongRecPlayerInfo(Structure):
- Head = tagHead()
- XiangongID = 0 #(WORD XiangongID)// 仙宫ID
- RecPlayerCount = 0 #(BYTE RecPlayerCount)
- RecPlayerList = list() #(vector<tagGCXiangongRecPlayer> RecPlayerList)
- data = None
-
- def __init__(self):
- self.Clear()
- self.Head.Cmd = 0xA9
- self.Head.SubCmd = 0x28
- return
-
- def ReadData(self, _lpData, _pos=0, _Len=0):
- self.Clear()
- _pos = self.Head.ReadData(_lpData, _pos)
- self.XiangongID,_pos = CommFunc.ReadWORD(_lpData, _pos)
- self.RecPlayerCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
- for i in range(self.RecPlayerCount):
- temRecPlayerList = tagGCXiangongRecPlayer()
- _pos = temRecPlayerList.ReadData(_lpData, _pos)
- self.RecPlayerList.append(temRecPlayerList)
- return _pos
-
- def Clear(self):
- self.Head = tagHead()
- self.Head.Clear()
- self.Head.Cmd = 0xA9
- self.Head.SubCmd = 0x28
- self.XiangongID = 0
- self.RecPlayerCount = 0
- self.RecPlayerList = list()
- return
-
- def GetLength(self):
- length = 0
- length += self.Head.GetLength()
- length += 2
- length += 1
- for i in range(self.RecPlayerCount):
- length += self.RecPlayerList[i].GetLength()
-
- return length
-
- def GetBuffer(self):
- data = ''
- data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
- data = CommFunc.WriteWORD(data, self.XiangongID)
- data = CommFunc.WriteBYTE(data, self.RecPlayerCount)
- for i in range(self.RecPlayerCount):
- data = CommFunc.WriteString(data, self.RecPlayerList[i].GetLength(), self.RecPlayerList[i].GetBuffer())
- return data
-
- def OutputString(self):
- DumpString = '''
- Head:%s,
- XiangongID:%d,
- RecPlayerCount:%d,
- RecPlayerList:%s
- '''\
- %(
- self.Head.OutputString(),
- self.XiangongID,
- self.RecPlayerCount,
- "..."
- )
- return DumpString
-
-
-m_NAtagGCXiangongRecPlayerInfo=tagGCXiangongRecPlayerInfo()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCXiangongRecPlayerInfo.Head.Cmd,m_NAtagGCXiangongRecPlayerInfo.Head.SubCmd))] = m_NAtagGCXiangongRecPlayerInfo
#------------------------------------------------------
@@ -18772,259 +15989,108 @@
#------------------------------------------------------
-# AA 69 登录活动信息新 #tagMCActLoginNew
+# AA 21 武将登场活动信息 #tagSCActHeroAppearInfo
-class tagMCActLoginNewItem(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(tagMCActLoginNewItem)
-
- def GetBuffer(self):
- return string_at(addressof(self), self.GetLength())
-
- def OutputString(self):
- DumpString = '''// AA 69 登录活动信息新 //tagMCActLoginNew:
- ItemID:%d,
- ItemCount:%d,
- IsBind:%d
- '''\
- %(
- self.ItemID,
- self.ItemCount,
- self.IsBind
- )
- return DumpString
-
-
-class tagMCActLoginNewDay(Structure):
- DayNum = 0 #(BYTE DayNum)//天编号,从1开始,过期未签到领取的天可消耗货币补签领取
- Count = 0 #(BYTE Count)// 奖励物品数
- AwardItemList = list() #(vector<tagMCActLoginNewItem> AwardItemList)// 奖励物品列表
- CountEx = 0 #(BYTE CountEx)// 额外奖励物品数
- AwardItemListEx = list() #(vector<tagMCActLoginNewItem> AwardItemListEx)// 额外奖励物品列表
- data = None
-
- def __init__(self):
- self.Clear()
- return
-
- def ReadData(self, _lpData, _pos=0, _Len=0):
- self.Clear()
- self.DayNum,_pos = CommFunc.ReadBYTE(_lpData, _pos)
- self.Count,_pos = CommFunc.ReadBYTE(_lpData, _pos)
- for i in range(self.Count):
- temAwardItemList = tagMCActLoginNewItem()
- _pos = temAwardItemList.ReadData(_lpData, _pos)
- self.AwardItemList.append(temAwardItemList)
- self.CountEx,_pos = CommFunc.ReadBYTE(_lpData, _pos)
- for i in range(self.CountEx):
- temAwardItemListEx = tagMCActLoginNewItem()
- _pos = temAwardItemListEx.ReadData(_lpData, _pos)
- self.AwardItemListEx.append(temAwardItemListEx)
- return _pos
-
- def Clear(self):
- self.DayNum = 0
- self.Count = 0
- self.AwardItemList = list()
- self.CountEx = 0
- self.AwardItemListEx = list()
- return
-
- def GetLength(self):
- length = 0
- length += 1
- length += 1
- for i in range(self.Count):
- length += self.AwardItemList[i].GetLength()
- length += 1
- for i in range(self.CountEx):
- length += self.AwardItemListEx[i].GetLength()
-
- return length
-
- def GetBuffer(self):
- data = ''
- data = CommFunc.WriteBYTE(data, self.DayNum)
- data = CommFunc.WriteBYTE(data, self.Count)
- for i in range(self.Count):
- data = CommFunc.WriteString(data, self.AwardItemList[i].GetLength(), self.AwardItemList[i].GetBuffer())
- data = CommFunc.WriteBYTE(data, self.CountEx)
- for i in range(self.CountEx):
- data = CommFunc.WriteString(data, self.AwardItemListEx[i].GetLength(), self.AwardItemListEx[i].GetBuffer())
- return data
-
- def OutputString(self):
- DumpString = '''
- DayNum:%d,
- Count:%d,
- AwardItemList:%s,
- CountEx:%d,
- AwardItemListEx:%s
- '''\
- %(
- self.DayNum,
- self.Count,
- "...",
- self.CountEx,
- "..."
- )
- return DumpString
-
-
-class tagMCActLoginNew(Structure):
+class tagSCActHeroAppearInfo(Structure):
Head = tagHead()
+ ActType = 0 #(BYTE ActType)// 活动类型,用于关联活动相关模块用,如签到、任务等
ActNum = 0 #(BYTE ActNum)// 活动编号
StartDate = "" #(char StartDate[10])// 开始日期 y-m-d
EndtDate = "" #(char EndtDate[10])// 结束日期 y-m-d
- LimitLV = 0 #(WORD LimitLV)// 限制等级
- RepSignMoneyType = 0 #(BYTE RepSignMoneyType)// 补签消耗货币类型
- RepSignMoneyValue = 0 #(DWORD RepSignMoneyValue)// 补签消耗货币值
- AwardExCTGID = 0 #(WORD AwardExCTGID)// 扩展奖励礼包充值ID,大于0时代表可以购买礼包每日登录可领取额外奖励
- DayCount = 0 #(BYTE DayCount)
- AwardDayList = list() #(vector<tagMCActLoginNewDay> AwardDayList)// 奖励天列表
+ CfgID = 0 #(WORD CfgID)// 活动时间表配置ID
data = None
def __init__(self):
self.Clear()
self.Head.Cmd = 0xAA
- self.Head.SubCmd = 0x69
+ self.Head.SubCmd = 0x21
return
def ReadData(self, _lpData, _pos=0, _Len=0):
self.Clear()
_pos = self.Head.ReadData(_lpData, _pos)
+ self.ActType,_pos = CommFunc.ReadBYTE(_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.LimitLV,_pos = CommFunc.ReadWORD(_lpData, _pos)
- self.RepSignMoneyType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
- self.RepSignMoneyValue,_pos = CommFunc.ReadDWORD(_lpData, _pos)
- self.AwardExCTGID,_pos = CommFunc.ReadWORD(_lpData, _pos)
- self.DayCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
- for i in range(self.DayCount):
- temAwardDayList = tagMCActLoginNewDay()
- _pos = temAwardDayList.ReadData(_lpData, _pos)
- self.AwardDayList.append(temAwardDayList)
+ self.CfgID,_pos = CommFunc.ReadWORD(_lpData, _pos)
return _pos
def Clear(self):
self.Head = tagHead()
self.Head.Clear()
self.Head.Cmd = 0xAA
- self.Head.SubCmd = 0x69
+ self.Head.SubCmd = 0x21
+ self.ActType = 0
self.ActNum = 0
self.StartDate = ""
self.EndtDate = ""
- self.LimitLV = 0
- self.RepSignMoneyType = 0
- self.RepSignMoneyValue = 0
- self.AwardExCTGID = 0
- self.DayCount = 0
- self.AwardDayList = list()
+ self.CfgID = 0
return
def GetLength(self):
length = 0
length += self.Head.GetLength()
length += 1
+ length += 1
length += 10
length += 10
length += 2
- length += 1
- length += 4
- length += 2
- length += 1
- for i in range(self.DayCount):
- length += self.AwardDayList[i].GetLength()
return length
def GetBuffer(self):
data = ''
data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
+ data = CommFunc.WriteBYTE(data, self.ActType)
data = CommFunc.WriteBYTE(data, self.ActNum)
data = CommFunc.WriteString(data, 10, self.StartDate)
data = CommFunc.WriteString(data, 10, self.EndtDate)
- data = CommFunc.WriteWORD(data, self.LimitLV)
- data = CommFunc.WriteBYTE(data, self.RepSignMoneyType)
- data = CommFunc.WriteDWORD(data, self.RepSignMoneyValue)
- data = CommFunc.WriteWORD(data, self.AwardExCTGID)
- data = CommFunc.WriteBYTE(data, self.DayCount)
- for i in range(self.DayCount):
- data = CommFunc.WriteString(data, self.AwardDayList[i].GetLength(), self.AwardDayList[i].GetBuffer())
+ data = CommFunc.WriteWORD(data, self.CfgID)
return data
def OutputString(self):
DumpString = '''
Head:%s,
+ ActType:%d,
ActNum:%d,
StartDate:%s,
EndtDate:%s,
- LimitLV:%d,
- RepSignMoneyType:%d,
- RepSignMoneyValue:%d,
- AwardExCTGID:%d,
- DayCount:%d,
- AwardDayList:%s
+ CfgID:%d
'''\
%(
self.Head.OutputString(),
+ self.ActType,
self.ActNum,
self.StartDate,
self.EndtDate,
- self.LimitLV,
- self.RepSignMoneyType,
- self.RepSignMoneyValue,
- self.AwardExCTGID,
- self.DayCount,
- "..."
+ self.CfgID
)
return DumpString
-m_NAtagMCActLoginNew=tagMCActLoginNew()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCActLoginNew.Head.Cmd,m_NAtagMCActLoginNew.Head.SubCmd))] = m_NAtagMCActLoginNew
+m_NAtagSCActHeroAppearInfo=tagSCActHeroAppearInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagSCActHeroAppearInfo.Head.Cmd,m_NAtagSCActHeroAppearInfo.Head.SubCmd))] = m_NAtagSCActHeroAppearInfo
#------------------------------------------------------
-# AA 70 登录活动玩家信息新 #tagMCActLoginPlayerInfoNew
+# AA 22 武将登场活动玩家信息 #tagSCActHeroAppearPlayerInfo
-class tagMCActLoginPlayerInfoNew(Structure):
+class tagSCActHeroAppearPlayerInfo(Structure):
_pack_ = 1
_fields_ = [
("Cmd", c_ubyte),
("SubCmd", c_ubyte),
("ActNum", c_ubyte), # 活动编号
- ("LoginAward", c_int), # 普通奖励领取记录,按天对应二进制位记录是否已领取
- ("LoginAwardEx", c_int), # 额外奖励领取记录,按天对应二进制位记录是否已领取
+ ("StarHeroIndex", c_ubyte), # 升星计划选择的武将ID索引
+ ("StarFreeAward", c_int), # 升星计划免费奖励记录,按奖励记录索引二进制位运算记录是否已领取
+ ("CallHeroIndex", c_ubyte), # 招募选择的武将ID索引
]
def __init__(self):
self.Clear()
self.Cmd = 0xAA
- self.SubCmd = 0x70
+ self.SubCmd = 0x22
return
def ReadData(self, stringData, _pos=0, _len=0):
@@ -19034,38 +16100,41 @@
def Clear(self):
self.Cmd = 0xAA
- self.SubCmd = 0x70
+ self.SubCmd = 0x22
self.ActNum = 0
- self.LoginAward = 0
- self.LoginAwardEx = 0
+ self.StarHeroIndex = 0
+ self.StarFreeAward = 0
+ self.CallHeroIndex = 0
return
def GetLength(self):
- return sizeof(tagMCActLoginPlayerInfoNew)
+ return sizeof(tagSCActHeroAppearPlayerInfo)
def GetBuffer(self):
return string_at(addressof(self), self.GetLength())
def OutputString(self):
- DumpString = '''// AA 70 登录活动玩家信息新 //tagMCActLoginPlayerInfoNew:
+ DumpString = '''// AA 22 武将登场活动玩家信息 //tagSCActHeroAppearPlayerInfo:
Cmd:%s,
SubCmd:%s,
ActNum:%d,
- LoginAward:%d,
- LoginAwardEx:%d
+ StarHeroIndex:%d,
+ StarFreeAward:%d,
+ CallHeroIndex:%d
'''\
%(
self.Cmd,
self.SubCmd,
self.ActNum,
- self.LoginAward,
- self.LoginAwardEx
+ self.StarHeroIndex,
+ self.StarFreeAward,
+ self.CallHeroIndex
)
return DumpString
-m_NAtagMCActLoginPlayerInfoNew=tagMCActLoginPlayerInfoNew()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCActLoginPlayerInfoNew.Cmd,m_NAtagMCActLoginPlayerInfoNew.SubCmd))] = m_NAtagMCActLoginPlayerInfoNew
+m_NAtagSCActHeroAppearPlayerInfo=tagSCActHeroAppearPlayerInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagSCActHeroAppearPlayerInfo.Cmd,m_NAtagSCActHeroAppearPlayerInfo.SubCmd))] = m_NAtagSCActHeroAppearPlayerInfo
#------------------------------------------------------
@@ -20048,6 +17117,66 @@
m_NAtagMCActRecharegeCouponPlayerInfo=tagMCActRecharegeCouponPlayerInfo()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCActRecharegeCouponPlayerInfo.Cmd,m_NAtagMCActRecharegeCouponPlayerInfo.SubCmd))] = m_NAtagMCActRecharegeCouponPlayerInfo
+
+
+#------------------------------------------------------
+# AA 20 活动签到奖励信息 #tagSCActSignPlayerInfo
+
+class tagSCActSignPlayerInfo(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("Cmd", c_ubyte),
+ ("SubCmd", c_ubyte),
+ ("ActType", c_ubyte), # 活动类型
+ ("ActNum", c_ubyte), # 活动编号
+ ("SignAward", c_int), # 奖励领取记录,按天对应二进制位记录是否已领取
+ ]
+
+ def __init__(self):
+ self.Clear()
+ self.Cmd = 0xAA
+ self.SubCmd = 0x20
+ 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 = 0x20
+ self.ActType = 0
+ self.ActNum = 0
+ self.SignAward = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagSCActSignPlayerInfo)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// AA 20 活动签到奖励信息 //tagSCActSignPlayerInfo:
+ Cmd:%s,
+ SubCmd:%s,
+ ActType:%d,
+ ActNum:%d,
+ SignAward:%d
+ '''\
+ %(
+ self.Cmd,
+ self.SubCmd,
+ self.ActType,
+ self.ActNum,
+ self.SignAward
+ )
+ return DumpString
+
+
+m_NAtagSCActSignPlayerInfo=tagSCActSignPlayerInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagSCActSignPlayerInfo.Cmd,m_NAtagSCActSignPlayerInfo.SubCmd))] = m_NAtagSCActSignPlayerInfo
#------------------------------------------------------
@@ -23891,118 +21020,6 @@
#------------------------------------------------------
-# 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
-
-
-#------------------------------------------------------
# B1 31 宿缘信息 #tagSCHeroFatesInfo
class tagSCHeroFates(Structure):
@@ -24117,16 +21134,12 @@
#------------------------------------------------------
# B1 22 武将信息 #tagSCHeroInfo
-class tagSCHero(Structure):
+class tagSCHeroSkin(Structure):
_pack_ = 1
_fields_ = [
- ("HeroID", c_int), # 武将ID
- ("SkinState", c_int), # 武将皮肤已解锁状态信息,按皮肤所在索引二进制位运算判断是否解锁,0索引位默认皮肤,不用验证
- ("BookInitState", c_ubyte), # 图鉴激活状态:0-未激活;1-可激活;2-已激活
- ("BookStarLV", c_ushort), # 图鉴星级等级
- ("BookBreakLV", c_ushort), # 图鉴突破等级
- ("BookStarLVH", c_ushort), # 图鉴星级历史最高等级
- ("BookBreakLVH", c_ushort), # 图鉴突破历史最高等级
+ ("SkinID", c_int), #皮肤ID,只通知非默认皮肤
+ ("State", c_ubyte), #是否已激活
+ ("Star", c_ubyte), #星级
]
def __init__(self):
@@ -24139,39 +21152,91 @@
return _pos + self.GetLength()
def Clear(self):
- self.HeroID = 0
- self.SkinState = 0
- self.BookInitState = 0
- self.BookStarLV = 0
- self.BookBreakLV = 0
- self.BookStarLVH = 0
- self.BookBreakLVH = 0
+ self.SkinID = 0
+ self.State = 0
+ self.Star = 0
return
def GetLength(self):
- return sizeof(tagSCHero)
+ return sizeof(tagSCHeroSkin)
def GetBuffer(self):
return string_at(addressof(self), self.GetLength())
def OutputString(self):
DumpString = '''// B1 22 武将信息 //tagSCHeroInfo:
+ SkinID:%d,
+ State:%d,
+ Star:%d
+ '''\
+ %(
+ self.SkinID,
+ self.State,
+ self.Star
+ )
+ return DumpString
+
+
+class tagSCHero(Structure):
+ HeroID = 0 #(DWORD HeroID)// 武将ID
+ BookInitState = 0 #(BYTE BookInitState)// 图鉴激活状态:0-未激活;1-可激活;2-已激活
+ SkinCnt = 0 #(BYTE SkinCnt)
+ SkinList = list() #(vector<tagSCHeroSkin> SkinList)// 非默认皮肤信息列表
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ self.HeroID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.BookInitState,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.SkinCnt,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.SkinCnt):
+ temSkinList = tagSCHeroSkin()
+ _pos = temSkinList.ReadData(_lpData, _pos)
+ self.SkinList.append(temSkinList)
+ return _pos
+
+ def Clear(self):
+ self.HeroID = 0
+ self.BookInitState = 0
+ self.SkinCnt = 0
+ self.SkinList = list()
+ return
+
+ def GetLength(self):
+ length = 0
+ length += 4
+ length += 1
+ length += 1
+ for i in range(self.SkinCnt):
+ length += self.SkinList[i].GetLength()
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteDWORD(data, self.HeroID)
+ data = CommFunc.WriteBYTE(data, self.BookInitState)
+ data = CommFunc.WriteBYTE(data, self.SkinCnt)
+ for i in range(self.SkinCnt):
+ data = CommFunc.WriteString(data, self.SkinList[i].GetLength(), self.SkinList[i].GetBuffer())
+ return data
+
+ def OutputString(self):
+ DumpString = '''
HeroID:%d,
- SkinState:%d,
BookInitState:%d,
- BookStarLV:%d,
- BookBreakLV:%d,
- BookStarLVH:%d,
- BookBreakLVH:%d
+ SkinCnt:%d,
+ SkinList:%s
'''\
%(
self.HeroID,
- self.SkinState,
self.BookInitState,
- self.BookStarLV,
- self.BookBreakLV,
- self.BookStarLVH,
- self.BookBreakLVH
+ self.SkinCnt,
+ "..."
)
return DumpString
@@ -25176,54 +22241,6 @@
#------------------------------------------------------
-#B1 08 开始印记流失时间 #tagMCYinjiStartTime
-
-class tagMCYinjiStartTime(Structure):
- _pack_ = 1
- _fields_ = [
- ("Cmd", c_ubyte),
- ("SubCmd", c_ubyte),
- ]
-
- def __init__(self):
- self.Clear()
- self.Cmd = 0xB1
- self.SubCmd = 0x08
- 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 = 0xB1
- self.SubCmd = 0x08
- return
-
- def GetLength(self):
- return sizeof(tagMCYinjiStartTime)
-
- def GetBuffer(self):
- return string_at(addressof(self), self.GetLength())
-
- def OutputString(self):
- DumpString = '''//B1 08 开始印记流失时间 //tagMCYinjiStartTime:
- Cmd:%s,
- SubCmd:%s
- '''\
- %(
- self.Cmd,
- self.SubCmd
- )
- return DumpString
-
-
-m_NAtagMCYinjiStartTime=tagMCYinjiStartTime()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCYinjiStartTime.Cmd,m_NAtagMCYinjiStartTime.SubCmd))] = m_NAtagMCYinjiStartTime
-
-
-#------------------------------------------------------
# B1 10 当前任务信息 #tagMCTaskInfo
class tagMCTask(Structure):
@@ -25337,80 +22354,6 @@
m_NAtagMCTaskInfo=tagMCTaskInfo()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCTaskInfo.Head.Cmd,m_NAtagMCTaskInfo.Head.SubCmd))] = m_NAtagMCTaskInfo
-
-
-#------------------------------------------------------
-# B1 15 天道树信息 #tagMCTiandaoTreeInfo
-
-class tagMCTiandaoTreeInfo(Structure):
- Head = tagHead()
- Qiyun = 0 #(DWORD Qiyun)// 当前气运值
- AwardCount = 0 #(BYTE AwardCount)// 天道果领取记录值个数
- AwardStateList = list() #(vector<DWORD> AwardStateList)// 天道果领取记录值列表,按奖励索引位二进制记录是否已领取,一个值可存31位,如值1存0~30,值2存31~61,...
- data = None
-
- def __init__(self):
- self.Clear()
- self.Head.Cmd = 0xB1
- self.Head.SubCmd = 0x15
- return
-
- def ReadData(self, _lpData, _pos=0, _Len=0):
- self.Clear()
- _pos = self.Head.ReadData(_lpData, _pos)
- self.Qiyun,_pos = CommFunc.ReadDWORD(_lpData, _pos)
- self.AwardCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
- for i in range(self.AwardCount):
- value,_pos=CommFunc.ReadDWORD(_lpData,_pos)
- self.AwardStateList.append(value)
- return _pos
-
- def Clear(self):
- self.Head = tagHead()
- self.Head.Clear()
- self.Head.Cmd = 0xB1
- self.Head.SubCmd = 0x15
- self.Qiyun = 0
- self.AwardCount = 0
- self.AwardStateList = list()
- return
-
- def GetLength(self):
- length = 0
- length += self.Head.GetLength()
- length += 4
- length += 1
- length += 4 * self.AwardCount
-
- return length
-
- def GetBuffer(self):
- data = ''
- data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
- data = CommFunc.WriteDWORD(data, self.Qiyun)
- data = CommFunc.WriteBYTE(data, self.AwardCount)
- for i in range(self.AwardCount):
- data = CommFunc.WriteDWORD(data, self.AwardStateList[i])
- return data
-
- def OutputString(self):
- DumpString = '''
- Head:%s,
- Qiyun:%d,
- AwardCount:%d,
- AwardStateList:%s
- '''\
- %(
- self.Head.OutputString(),
- self.Qiyun,
- self.AwardCount,
- "..."
- )
- return DumpString
-
-
-m_NAtagMCTiandaoTreeInfo=tagMCTiandaoTreeInfo()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCTiandaoTreeInfo.Head.Cmd,m_NAtagMCTiandaoTreeInfo.Head.SubCmd))] = m_NAtagMCTiandaoTreeInfo
#------------------------------------------------------
@@ -25811,121 +22754,6 @@
m_NAtagMCUseMoneyTotalInfo=tagMCUseMoneyTotalInfo()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCUseMoneyTotalInfo.Head.Cmd,m_NAtagMCUseMoneyTotalInfo.Head.SubCmd))] = m_NAtagMCUseMoneyTotalInfo
-
-
-#------------------------------------------------------
-# B1 14 仙宫信息 #tagMCXiangongInfo
-
-class tagMCXiangong(Structure):
- _pack_ = 1
- _fields_ = [
- ("XiangongID", c_ushort), # 仙宫ID
- ("LikeStateToday", 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.XiangongID = 0
- self.LikeStateToday = 0
- return
-
- def GetLength(self):
- return sizeof(tagMCXiangong)
-
- def GetBuffer(self):
- return string_at(addressof(self), self.GetLength())
-
- def OutputString(self):
- DumpString = '''// B1 14 仙宫信息 //tagMCXiangongInfo:
- XiangongID:%d,
- LikeStateToday:%d
- '''\
- %(
- self.XiangongID,
- self.LikeStateToday
- )
- return DumpString
-
-
-class tagMCXiangongInfo(Structure):
- Head = tagHead()
- LikeStateToday = 0 #(BYTE LikeStateToday)// 今日是否已点赞,指仙宫的外层点赞,非某个指定仙宫
- XiangongCount = 0 #(BYTE XiangongCount)
- XiangongList = list() #(vector<tagMCXiangong> XiangongList)
- data = None
-
- def __init__(self):
- self.Clear()
- self.Head.Cmd = 0xB1
- self.Head.SubCmd = 0x14
- return
-
- def ReadData(self, _lpData, _pos=0, _Len=0):
- self.Clear()
- _pos = self.Head.ReadData(_lpData, _pos)
- self.LikeStateToday,_pos = CommFunc.ReadBYTE(_lpData, _pos)
- self.XiangongCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
- for i in range(self.XiangongCount):
- temXiangongList = tagMCXiangong()
- _pos = temXiangongList.ReadData(_lpData, _pos)
- self.XiangongList.append(temXiangongList)
- return _pos
-
- def Clear(self):
- self.Head = tagHead()
- self.Head.Clear()
- self.Head.Cmd = 0xB1
- self.Head.SubCmd = 0x14
- self.LikeStateToday = 0
- self.XiangongCount = 0
- self.XiangongList = list()
- return
-
- def GetLength(self):
- length = 0
- length += self.Head.GetLength()
- length += 1
- length += 1
- for i in range(self.XiangongCount):
- length += self.XiangongList[i].GetLength()
-
- return length
-
- def GetBuffer(self):
- data = ''
- data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
- data = CommFunc.WriteBYTE(data, self.LikeStateToday)
- data = CommFunc.WriteBYTE(data, self.XiangongCount)
- for i in range(self.XiangongCount):
- data = CommFunc.WriteString(data, self.XiangongList[i].GetLength(), self.XiangongList[i].GetBuffer())
- return data
-
- def OutputString(self):
- DumpString = '''
- Head:%s,
- LikeStateToday:%d,
- XiangongCount:%d,
- XiangongList:%s
- '''\
- %(
- self.Head.OutputString(),
- self.LikeStateToday,
- self.XiangongCount,
- "..."
- )
- return DumpString
-
-
-m_NAtagMCXiangongInfo=tagMCXiangongInfo()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCXiangongInfo.Head.Cmd,m_NAtagMCXiangongInfo.Head.SubCmd))] = m_NAtagMCXiangongInfo
#------------------------------------------------------
@@ -26407,904 +23235,6 @@
#------------------------------------------------------
-# B3 24 喜糖列表 #tagGCCandyList
-
-class tagGCCandyInfo(Structure):
- PlayerIDA = 0 #(DWORD PlayerIDA)// 玩家ID - 请求方
- NameALen = 0 #(BYTE NameALen)
- PlayerNameA = "" #(String PlayerNameA)
- PlayerIDB = 0 #(DWORD PlayerIDB)// 玩家ID - 接受方
- NameBLen = 0 #(BYTE NameBLen)
- PlayerNameB = "" #(String PlayerNameB)
- BridePriceID = 0 #(BYTE BridePriceID)// 聘礼ID
- MarryTime = 0 #(DWORD MarryTime)// 成亲时间戳,秒
- EndTime = 0 #(DWORD EndTime)// 结束时间戳,秒
- Prosperity = 0 #(DWORD Prosperity)// 当前繁荣度
- FireworksTotalBuyCount = 0 #(BYTE FireworksTotalBuyCount)// 烟花总已购买次数
- FireworksPlayerBuyCount = 0 #(BYTE FireworksPlayerBuyCount)// 烟花玩家已购买次数
- PlayerFreeEatCandyCount = 0 #(BYTE PlayerFreeEatCandyCount)// 玩家已免费吃该喜糖总次数,包含免费次数、烟花赠送次数
- data = None
-
- def __init__(self):
- self.Clear()
- return
-
- def ReadData(self, _lpData, _pos=0, _Len=0):
- self.Clear()
- self.PlayerIDA,_pos = CommFunc.ReadDWORD(_lpData, _pos)
- self.NameALen,_pos = CommFunc.ReadBYTE(_lpData, _pos)
- self.PlayerNameA,_pos = CommFunc.ReadString(_lpData, _pos,self.NameALen)
- self.PlayerIDB,_pos = CommFunc.ReadDWORD(_lpData, _pos)
- self.NameBLen,_pos = CommFunc.ReadBYTE(_lpData, _pos)
- self.PlayerNameB,_pos = CommFunc.ReadString(_lpData, _pos,self.NameBLen)
- self.BridePriceID,_pos = CommFunc.ReadBYTE(_lpData, _pos)
- self.MarryTime,_pos = CommFunc.ReadDWORD(_lpData, _pos)
- self.EndTime,_pos = CommFunc.ReadDWORD(_lpData, _pos)
- self.Prosperity,_pos = CommFunc.ReadDWORD(_lpData, _pos)
- self.FireworksTotalBuyCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
- self.FireworksPlayerBuyCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
- self.PlayerFreeEatCandyCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
- return _pos
-
- def Clear(self):
- self.PlayerIDA = 0
- self.NameALen = 0
- self.PlayerNameA = ""
- self.PlayerIDB = 0
- self.NameBLen = 0
- self.PlayerNameB = ""
- self.BridePriceID = 0
- self.MarryTime = 0
- self.EndTime = 0
- self.Prosperity = 0
- self.FireworksTotalBuyCount = 0
- self.FireworksPlayerBuyCount = 0
- self.PlayerFreeEatCandyCount = 0
- return
-
- def GetLength(self):
- length = 0
- length += 4
- length += 1
- length += len(self.PlayerNameA)
- length += 4
- length += 1
- length += len(self.PlayerNameB)
- length += 1
- length += 4
- length += 4
- length += 4
- length += 1
- length += 1
- length += 1
-
- return length
-
- def GetBuffer(self):
- data = ''
- data = CommFunc.WriteDWORD(data, self.PlayerIDA)
- data = CommFunc.WriteBYTE(data, self.NameALen)
- data = CommFunc.WriteString(data, self.NameALen, self.PlayerNameA)
- data = CommFunc.WriteDWORD(data, self.PlayerIDB)
- data = CommFunc.WriteBYTE(data, self.NameBLen)
- data = CommFunc.WriteString(data, self.NameBLen, self.PlayerNameB)
- data = CommFunc.WriteBYTE(data, self.BridePriceID)
- data = CommFunc.WriteDWORD(data, self.MarryTime)
- data = CommFunc.WriteDWORD(data, self.EndTime)
- data = CommFunc.WriteDWORD(data, self.Prosperity)
- data = CommFunc.WriteBYTE(data, self.FireworksTotalBuyCount)
- data = CommFunc.WriteBYTE(data, self.FireworksPlayerBuyCount)
- data = CommFunc.WriteBYTE(data, self.PlayerFreeEatCandyCount)
- return data
-
- def OutputString(self):
- DumpString = '''
- PlayerIDA:%d,
- NameALen:%d,
- PlayerNameA:%s,
- PlayerIDB:%d,
- NameBLen:%d,
- PlayerNameB:%s,
- BridePriceID:%d,
- MarryTime:%d,
- EndTime:%d,
- Prosperity:%d,
- FireworksTotalBuyCount:%d,
- FireworksPlayerBuyCount:%d,
- PlayerFreeEatCandyCount:%d
- '''\
- %(
- self.PlayerIDA,
- self.NameALen,
- self.PlayerNameA,
- self.PlayerIDB,
- self.NameBLen,
- self.PlayerNameB,
- self.BridePriceID,
- self.MarryTime,
- self.EndTime,
- self.Prosperity,
- self.FireworksTotalBuyCount,
- self.FireworksPlayerBuyCount,
- self.PlayerFreeEatCandyCount
- )
- return DumpString
-
-
-class tagGCCandyList(Structure):
- Head = tagHead()
- CandyCount = 0 #(WORD CandyCount)
- CandyInfoList = list() #(vector<tagGCCandyInfo> CandyInfoList)// 可吃喜糖列表
- data = None
-
- def __init__(self):
- self.Clear()
- self.Head.Cmd = 0xB3
- self.Head.SubCmd = 0x24
- return
-
- def ReadData(self, _lpData, _pos=0, _Len=0):
- self.Clear()
- _pos = self.Head.ReadData(_lpData, _pos)
- self.CandyCount,_pos = CommFunc.ReadWORD(_lpData, _pos)
- for i in range(self.CandyCount):
- temCandyInfoList = tagGCCandyInfo()
- _pos = temCandyInfoList.ReadData(_lpData, _pos)
- self.CandyInfoList.append(temCandyInfoList)
- return _pos
-
- def Clear(self):
- self.Head = tagHead()
- self.Head.Clear()
- self.Head.Cmd = 0xB3
- self.Head.SubCmd = 0x24
- self.CandyCount = 0
- self.CandyInfoList = list()
- return
-
- def GetLength(self):
- length = 0
- length += self.Head.GetLength()
- length += 2
- for i in range(self.CandyCount):
- length += self.CandyInfoList[i].GetLength()
-
- return length
-
- def GetBuffer(self):
- data = ''
- data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
- data = CommFunc.WriteWORD(data, self.CandyCount)
- for i in range(self.CandyCount):
- data = CommFunc.WriteString(data, self.CandyInfoList[i].GetLength(), self.CandyInfoList[i].GetBuffer())
- return data
-
- def OutputString(self):
- DumpString = '''
- Head:%s,
- CandyCount:%d,
- CandyInfoList:%s
- '''\
- %(
- self.Head.OutputString(),
- self.CandyCount,
- "..."
- )
- return DumpString
-
-
-m_NAtagGCCandyList=tagGCCandyList()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCCandyList.Head.Cmd,m_NAtagGCCandyList.Head.SubCmd))] = m_NAtagGCCandyList
-
-
-#------------------------------------------------------
-# B3 19 魅力贡献榜 #tagGCCharmOfferBillboardDataList
-
-class tagGCCharmOfferBillboardData(Structure):
- OrderIndex = 0 #(DWORD OrderIndex)//名次索引,0代表第一名
- PlayerID = 0 #(DWORD PlayerID)// 玩家ID - 贡献者
- NameLen = 0 #(BYTE NameLen)
- PlayerName = "" #(String PlayerName)
- CharmValue = 0 #(DWORD CharmValue)//贡献魅力值
- data = None
-
- def __init__(self):
- self.Clear()
- return
-
- def ReadData(self, _lpData, _pos=0, _Len=0):
- self.Clear()
- self.OrderIndex,_pos = CommFunc.ReadDWORD(_lpData, _pos)
- self.PlayerID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
- self.NameLen,_pos = CommFunc.ReadBYTE(_lpData, _pos)
- self.PlayerName,_pos = CommFunc.ReadString(_lpData, _pos,self.NameLen)
- self.CharmValue,_pos = CommFunc.ReadDWORD(_lpData, _pos)
- return _pos
-
- def Clear(self):
- self.OrderIndex = 0
- self.PlayerID = 0
- self.NameLen = 0
- self.PlayerName = ""
- self.CharmValue = 0
- return
-
- def GetLength(self):
- length = 0
- length += 4
- length += 4
- length += 1
- length += len(self.PlayerName)
- length += 4
-
- return length
-
- def GetBuffer(self):
- data = ''
- data = CommFunc.WriteDWORD(data, self.OrderIndex)
- data = CommFunc.WriteDWORD(data, self.PlayerID)
- data = CommFunc.WriteBYTE(data, self.NameLen)
- data = CommFunc.WriteString(data, self.NameLen, self.PlayerName)
- data = CommFunc.WriteDWORD(data, self.CharmValue)
- return data
-
- def OutputString(self):
- DumpString = '''
- OrderIndex:%d,
- PlayerID:%d,
- NameLen:%d,
- PlayerName:%s,
- CharmValue:%d
- '''\
- %(
- self.OrderIndex,
- self.PlayerID,
- self.NameLen,
- self.PlayerName,
- self.CharmValue
- )
- return DumpString
-
-
-class tagGCCharmOfferBillboardDataList(Structure):
- Head = tagHead()
- PlayerID = 0 #(DWORD PlayerID)// 魅力玩家ID
- QueryType = 0 #(BYTE QueryType)// 查看类型: 1-总榜,2-周榜,3-日榜
- DataCount = 0 #(BYTE DataCount)
- OfferBillboardDataList = list() #(vector<tagGCCharmOfferBillboardData> OfferBillboardDataList)
- data = None
-
- def __init__(self):
- self.Clear()
- self.Head.Cmd = 0xB3
- self.Head.SubCmd = 0x19
- return
-
- def ReadData(self, _lpData, _pos=0, _Len=0):
- self.Clear()
- _pos = self.Head.ReadData(_lpData, _pos)
- self.PlayerID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
- self.QueryType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
- self.DataCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
- for i in range(self.DataCount):
- temOfferBillboardDataList = tagGCCharmOfferBillboardData()
- _pos = temOfferBillboardDataList.ReadData(_lpData, _pos)
- self.OfferBillboardDataList.append(temOfferBillboardDataList)
- return _pos
-
- def Clear(self):
- self.Head = tagHead()
- self.Head.Clear()
- self.Head.Cmd = 0xB3
- self.Head.SubCmd = 0x19
- self.PlayerID = 0
- self.QueryType = 0
- self.DataCount = 0
- self.OfferBillboardDataList = list()
- return
-
- def GetLength(self):
- length = 0
- length += self.Head.GetLength()
- length += 4
- length += 1
- length += 1
- for i in range(self.DataCount):
- length += self.OfferBillboardDataList[i].GetLength()
-
- return length
-
- def GetBuffer(self):
- data = ''
- data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
- data = CommFunc.WriteDWORD(data, self.PlayerID)
- data = CommFunc.WriteBYTE(data, self.QueryType)
- data = CommFunc.WriteBYTE(data, self.DataCount)
- for i in range(self.DataCount):
- data = CommFunc.WriteString(data, self.OfferBillboardDataList[i].GetLength(), self.OfferBillboardDataList[i].GetBuffer())
- return data
-
- def OutputString(self):
- DumpString = '''
- Head:%s,
- PlayerID:%d,
- QueryType:%d,
- DataCount:%d,
- OfferBillboardDataList:%s
- '''\
- %(
- self.Head.OutputString(),
- self.PlayerID,
- self.QueryType,
- self.DataCount,
- "..."
- )
- return DumpString
-
-
-m_NAtagGCCharmOfferBillboardDataList=tagGCCharmOfferBillboardDataList()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCCharmOfferBillboardDataList.Head.Cmd,m_NAtagGCCharmOfferBillboardDataList.Head.SubCmd))] = m_NAtagGCCharmOfferBillboardDataList
-
-
-#------------------------------------------------------
-# B3 26 伴侣信息 #tagGCCoupleInfo
-
-class tagGCCoupleInfo(Structure):
- Head = tagHead()
- CoupleID = 0 #(DWORD CoupleID)// 伴侣玩家ID,一定是好友,社交信息从好友系统中获取
- NameLen = 0 #(BYTE NameLen)
- CoupleName = "" #(String CoupleName)
- NewMarryTime = 0 #(DWORD NewMarryTime)// 新婚时间戳, 秒,计算结婚天数按该时间计算
- MarryTime = 0 #(DWORD MarryTime)// 最近一次提亲成功时间戳, 秒,计算可离婚时间按该时间计算
- BridePriceState = 0 #(DWORD BridePriceState)// 聘礼状态,按位存储已购买次数,如205代表ID1买了5次,ID2买了0次,ID3买了2次,最高9次
- BreakRequestID = 0 #(DWORD BreakRequestID)// 当前请求中的和离时间戳 - 请求方ID,0代表没人发起请求
- BreakRequestTime = 0 #(DWORD BreakRequestTime)// 当前请求中的和离时间戳, 秒,用于计算和离回应有效期
- PlayerBreakRequestTime = 0 #(DWORD PlayerBreakRequestTime)// 玩家最近一次和离请求时间戳, 秒,用于计算自身的请求和离CD
- data = None
-
- def __init__(self):
- self.Clear()
- self.Head.Cmd = 0xB3
- self.Head.SubCmd = 0x26
- return
-
- def ReadData(self, _lpData, _pos=0, _Len=0):
- self.Clear()
- _pos = self.Head.ReadData(_lpData, _pos)
- self.CoupleID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
- self.NameLen,_pos = CommFunc.ReadBYTE(_lpData, _pos)
- self.CoupleName,_pos = CommFunc.ReadString(_lpData, _pos,self.NameLen)
- self.NewMarryTime,_pos = CommFunc.ReadDWORD(_lpData, _pos)
- self.MarryTime,_pos = CommFunc.ReadDWORD(_lpData, _pos)
- self.BridePriceState,_pos = CommFunc.ReadDWORD(_lpData, _pos)
- self.BreakRequestID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
- self.BreakRequestTime,_pos = CommFunc.ReadDWORD(_lpData, _pos)
- self.PlayerBreakRequestTime,_pos = CommFunc.ReadDWORD(_lpData, _pos)
- return _pos
-
- def Clear(self):
- self.Head = tagHead()
- self.Head.Clear()
- self.Head.Cmd = 0xB3
- self.Head.SubCmd = 0x26
- self.CoupleID = 0
- self.NameLen = 0
- self.CoupleName = ""
- self.NewMarryTime = 0
- self.MarryTime = 0
- self.BridePriceState = 0
- self.BreakRequestID = 0
- self.BreakRequestTime = 0
- self.PlayerBreakRequestTime = 0
- return
-
- def GetLength(self):
- length = 0
- length += self.Head.GetLength()
- length += 4
- length += 1
- length += len(self.CoupleName)
- 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.WriteDWORD(data, self.CoupleID)
- data = CommFunc.WriteBYTE(data, self.NameLen)
- data = CommFunc.WriteString(data, self.NameLen, self.CoupleName)
- data = CommFunc.WriteDWORD(data, self.NewMarryTime)
- data = CommFunc.WriteDWORD(data, self.MarryTime)
- data = CommFunc.WriteDWORD(data, self.BridePriceState)
- data = CommFunc.WriteDWORD(data, self.BreakRequestID)
- data = CommFunc.WriteDWORD(data, self.BreakRequestTime)
- data = CommFunc.WriteDWORD(data, self.PlayerBreakRequestTime)
- return data
-
- def OutputString(self):
- DumpString = '''
- Head:%s,
- CoupleID:%d,
- NameLen:%d,
- CoupleName:%s,
- NewMarryTime:%d,
- MarryTime:%d,
- BridePriceState:%d,
- BreakRequestID:%d,
- BreakRequestTime:%d,
- PlayerBreakRequestTime:%d
- '''\
- %(
- self.Head.OutputString(),
- self.CoupleID,
- self.NameLen,
- self.CoupleName,
- self.NewMarryTime,
- self.MarryTime,
- self.BridePriceState,
- self.BreakRequestID,
- self.BreakRequestTime,
- self.PlayerBreakRequestTime
- )
- return DumpString
-
-
-m_NAtagGCCoupleInfo=tagGCCoupleInfo()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCCoupleInfo.Head.Cmd,m_NAtagGCCoupleInfo.Head.SubCmd))] = m_NAtagGCCoupleInfo
-
-
-#------------------------------------------------------
-# B3 30 情缘相关信息 #tagMCLoveInfo
-
-class tagMCLoveInfo(Structure):
- _pack_ = 1
- _fields_ = [
- ("Cmd", c_ubyte),
- ("SubCmd", c_ubyte),
- ("EatCandyToday", c_int), # 今日已吃喜糖次数,包含免费及付费的所有次数
- ]
-
- def __init__(self):
- self.Clear()
- self.Cmd = 0xB3
- self.SubCmd = 0x30
- 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 = 0xB3
- self.SubCmd = 0x30
- self.EatCandyToday = 0
- return
-
- def GetLength(self):
- return sizeof(tagMCLoveInfo)
-
- def GetBuffer(self):
- return string_at(addressof(self), self.GetLength())
-
- def OutputString(self):
- DumpString = '''// B3 30 情缘相关信息 //tagMCLoveInfo:
- Cmd:%s,
- SubCmd:%s,
- EatCandyToday:%d
- '''\
- %(
- self.Cmd,
- self.SubCmd,
- self.EatCandyToday
- )
- return DumpString
-
-
-m_NAtagMCLoveInfo=tagMCLoveInfo()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCLoveInfo.Cmd,m_NAtagMCLoveInfo.SubCmd))] = m_NAtagMCLoveInfo
-
-
-#------------------------------------------------------
-# B3 27 情戒信息 #tagMCLoveRingInfo
-
-class tagMCLoveRingInfo(Structure):
- _pack_ = 1
- _fields_ = [
- ("Cmd", c_ubyte),
- ("SubCmd", c_ubyte),
- ("ClassLV", c_ubyte), # 阶
- ("StarLV", c_ubyte), # 星
- ("EatCount", c_int), # 本星已淬炼道具数
- ]
-
- def __init__(self):
- self.Clear()
- self.Cmd = 0xB3
- self.SubCmd = 0x27
- return
-
- def ReadData(self, stringData, _pos=0, _len=0):
- self.Clear()
- memmove(addressof(self), stringData[_pos:], self.GetLength())
- return _pos + self.GetLength()
-
- def Clear(self):
- self.Cmd = 0xB3
- self.SubCmd = 0x27
- self.ClassLV = 0
- self.StarLV = 0
- self.EatCount = 0
- return
-
- def GetLength(self):
- return sizeof(tagMCLoveRingInfo)
-
- def GetBuffer(self):
- return string_at(addressof(self), self.GetLength())
-
- def OutputString(self):
- DumpString = '''// B3 27 情戒信息 //tagMCLoveRingInfo:
- Cmd:%s,
- SubCmd:%s,
- ClassLV:%d,
- StarLV:%d,
- EatCount:%d
- '''\
- %(
- self.Cmd,
- self.SubCmd,
- self.ClassLV,
- self.StarLV,
- self.EatCount
- )
- return DumpString
-
-
-m_NAtagMCLoveRingInfo=tagMCLoveRingInfo()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCLoveRingInfo.Cmd,m_NAtagMCLoveRingInfo.SubCmd))] = m_NAtagMCLoveRingInfo
-
-
-#------------------------------------------------------
-# B3 29 情戒解锁成功 #tagMCLoveRingUnlockOK
-
-class tagMCLoveRingUnlockOK(Structure):
- _pack_ = 1
- _fields_ = [
- ("Cmd", c_ubyte),
- ("SubCmd", c_ubyte),
- ]
-
- def __init__(self):
- self.Clear()
- self.Cmd = 0xB3
- self.SubCmd = 0x29
- 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 = 0xB3
- self.SubCmd = 0x29
- return
-
- def GetLength(self):
- return sizeof(tagMCLoveRingUnlockOK)
-
- def GetBuffer(self):
- return string_at(addressof(self), self.GetLength())
-
- def OutputString(self):
- DumpString = '''// B3 29 情戒解锁成功 //tagMCLoveRingUnlockOK:
- Cmd:%s,
- SubCmd:%s
- '''\
- %(
- self.Cmd,
- self.SubCmd
- )
- return DumpString
-
-
-m_NAtagMCLoveRingUnlockOK=tagMCLoveRingUnlockOK()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCLoveRingUnlockOK.Cmd,m_NAtagMCLoveRingUnlockOK.SubCmd))] = m_NAtagMCLoveRingUnlockOK
-
-
-#------------------------------------------------------
-# B3 22 收到提亲信息 #tagGCMarryReqInfo
-
-class tagGCMarryReqInfo(Structure):
- Head = tagHead()
- PlayerID = 0 #(DWORD PlayerID)// 同一个玩家ID多次提亲时可能同步多次,前端覆盖数据即可
- NameLen = 0 #(BYTE NameLen)
- PlayerName = "" #(String PlayerName)
- BridePriceID = 0 #(BYTE BridePriceID)// 聘礼ID
- data = None
-
- def __init__(self):
- self.Clear()
- self.Head.Cmd = 0xB3
- self.Head.SubCmd = 0x22
- return
-
- def ReadData(self, _lpData, _pos=0, _Len=0):
- self.Clear()
- _pos = self.Head.ReadData(_lpData, _pos)
- self.PlayerID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
- self.NameLen,_pos = CommFunc.ReadBYTE(_lpData, _pos)
- self.PlayerName,_pos = CommFunc.ReadString(_lpData, _pos,self.NameLen)
- self.BridePriceID,_pos = CommFunc.ReadBYTE(_lpData, _pos)
- return _pos
-
- def Clear(self):
- self.Head = tagHead()
- self.Head.Clear()
- self.Head.Cmd = 0xB3
- self.Head.SubCmd = 0x22
- self.PlayerID = 0
- self.NameLen = 0
- self.PlayerName = ""
- self.BridePriceID = 0
- return
-
- def GetLength(self):
- length = 0
- length += self.Head.GetLength()
- length += 4
- length += 1
- length += len(self.PlayerName)
- length += 1
-
- return length
-
- def GetBuffer(self):
- data = ''
- data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
- data = CommFunc.WriteDWORD(data, self.PlayerID)
- data = CommFunc.WriteBYTE(data, self.NameLen)
- data = CommFunc.WriteString(data, self.NameLen, self.PlayerName)
- data = CommFunc.WriteBYTE(data, self.BridePriceID)
- return data
-
- def OutputString(self):
- DumpString = '''
- Head:%s,
- PlayerID:%d,
- NameLen:%d,
- PlayerName:%s,
- BridePriceID:%d
- '''\
- %(
- self.Head.OutputString(),
- self.PlayerID,
- self.NameLen,
- self.PlayerName,
- self.BridePriceID
- )
- return DumpString
-
-
-m_NAtagGCMarryReqInfo=tagGCMarryReqInfo()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCMarryReqInfo.Head.Cmd,m_NAtagGCMarryReqInfo.Head.SubCmd))] = m_NAtagGCMarryReqInfo
-
-
-#------------------------------------------------------
-# B3 21 提亲发送成功 #tagGCMarryReqOK
-
-class tagGCMarryReqOK(Structure):
- _pack_ = 1
- _fields_ = [
- ("Cmd", c_ubyte),
- ("SubCmd", c_ubyte),
- ]
-
- def __init__(self):
- self.Clear()
- self.Cmd = 0xB3
- self.SubCmd = 0x21
- 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 = 0xB3
- self.SubCmd = 0x21
- return
-
- def GetLength(self):
- return sizeof(tagGCMarryReqOK)
-
- def GetBuffer(self):
- return string_at(addressof(self), self.GetLength())
-
- def OutputString(self):
- DumpString = '''// B3 21 提亲发送成功 //tagGCMarryReqOK:
- Cmd:%s,
- SubCmd:%s
- '''\
- %(
- self.Cmd,
- self.SubCmd
- )
- return DumpString
-
-
-m_NAtagGCMarryReqOK=tagGCMarryReqOK()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCMarryReqOK.Cmd,m_NAtagGCMarryReqOK.SubCmd))] = m_NAtagGCMarryReqOK
-
-
-#------------------------------------------------------
-# B3 23 提亲回应结果 #tagGCMarryResponseRet
-
-class tagGCMarryResponseRet(Structure):
- Head = tagHead()
- PlayerIDA = 0 #(DWORD PlayerIDA)// 玩家ID - 请求方
- NameALen = 0 #(BYTE NameALen)
- PlayerNameA = "" #(String PlayerNameA)
- PlayerIDB = 0 #(DWORD PlayerIDB)// 玩家ID - 接受方
- NameBLen = 0 #(BYTE NameBLen)
- PlayerNameB = "" #(String PlayerNameB)
- IsOK = 0 #(BYTE IsOK)// 是否同意,0-否,1-是; 如果同意则双方都会收到该包,根据玩家ID判断自己是请求或接受方,显示不同的同意结果界面;不同意只有请求方会收到
- data = None
-
- def __init__(self):
- self.Clear()
- self.Head.Cmd = 0xB3
- self.Head.SubCmd = 0x23
- return
-
- def ReadData(self, _lpData, _pos=0, _Len=0):
- self.Clear()
- _pos = self.Head.ReadData(_lpData, _pos)
- self.PlayerIDA,_pos = CommFunc.ReadDWORD(_lpData, _pos)
- self.NameALen,_pos = CommFunc.ReadBYTE(_lpData, _pos)
- self.PlayerNameA,_pos = CommFunc.ReadString(_lpData, _pos,self.NameALen)
- self.PlayerIDB,_pos = CommFunc.ReadDWORD(_lpData, _pos)
- self.NameBLen,_pos = CommFunc.ReadBYTE(_lpData, _pos)
- self.PlayerNameB,_pos = CommFunc.ReadString(_lpData, _pos,self.NameBLen)
- self.IsOK,_pos = CommFunc.ReadBYTE(_lpData, _pos)
- return _pos
-
- def Clear(self):
- self.Head = tagHead()
- self.Head.Clear()
- self.Head.Cmd = 0xB3
- self.Head.SubCmd = 0x23
- self.PlayerIDA = 0
- self.NameALen = 0
- self.PlayerNameA = ""
- self.PlayerIDB = 0
- self.NameBLen = 0
- self.PlayerNameB = ""
- self.IsOK = 0
- return
-
- def GetLength(self):
- length = 0
- length += self.Head.GetLength()
- length += 4
- length += 1
- length += len(self.PlayerNameA)
- length += 4
- length += 1
- length += len(self.PlayerNameB)
- length += 1
-
- return length
-
- def GetBuffer(self):
- data = ''
- data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
- data = CommFunc.WriteDWORD(data, self.PlayerIDA)
- data = CommFunc.WriteBYTE(data, self.NameALen)
- data = CommFunc.WriteString(data, self.NameALen, self.PlayerNameA)
- data = CommFunc.WriteDWORD(data, self.PlayerIDB)
- data = CommFunc.WriteBYTE(data, self.NameBLen)
- data = CommFunc.WriteString(data, self.NameBLen, self.PlayerNameB)
- data = CommFunc.WriteBYTE(data, self.IsOK)
- return data
-
- def OutputString(self):
- DumpString = '''
- Head:%s,
- PlayerIDA:%d,
- NameALen:%d,
- PlayerNameA:%s,
- PlayerIDB:%d,
- NameBLen:%d,
- PlayerNameB:%s,
- IsOK:%d
- '''\
- %(
- self.Head.OutputString(),
- self.PlayerIDA,
- self.NameALen,
- self.PlayerNameA,
- self.PlayerIDB,
- self.NameBLen,
- self.PlayerNameB,
- self.IsOK
- )
- return DumpString
-
-
-m_NAtagGCMarryResponseRet=tagGCMarryResponseRet()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCMarryResponseRet.Head.Cmd,m_NAtagGCMarryResponseRet.Head.SubCmd))] = m_NAtagGCMarryResponseRet
-
-
-#------------------------------------------------------
-# B3 25 玩家魅力值信息 #tagGCPlayerCharmValueInfo
-
-class tagGCPlayerCharmValueInfo(Structure):
- _pack_ = 1
- _fields_ = [
- ("Cmd", c_ubyte),
- ("SubCmd", c_ubyte),
- ("CharmValueTotal", c_int), #当前魅力值 - 总
- ("CharmValueWeek", c_int), #当前魅力值 - 周
- ("CharmValueDay", c_int), #当前魅力值 - 日
- ]
-
- def __init__(self):
- self.Clear()
- self.Cmd = 0xB3
- self.SubCmd = 0x25
- return
-
- def ReadData(self, stringData, _pos=0, _len=0):
- self.Clear()
- memmove(addressof(self), stringData[_pos:], self.GetLength())
- return _pos + self.GetLength()
-
- def Clear(self):
- self.Cmd = 0xB3
- self.SubCmd = 0x25
- self.CharmValueTotal = 0
- self.CharmValueWeek = 0
- self.CharmValueDay = 0
- return
-
- def GetLength(self):
- return sizeof(tagGCPlayerCharmValueInfo)
-
- def GetBuffer(self):
- return string_at(addressof(self), self.GetLength())
-
- def OutputString(self):
- DumpString = '''// B3 25 玩家魅力值信息 //tagGCPlayerCharmValueInfo:
- Cmd:%s,
- SubCmd:%s,
- CharmValueTotal:%d,
- CharmValueWeek:%d,
- CharmValueDay:%d
- '''\
- %(
- self.Cmd,
- self.SubCmd,
- self.CharmValueTotal,
- self.CharmValueWeek,
- self.CharmValueDay
- )
- return DumpString
-
-
-m_NAtagGCPlayerCharmValueInfo=tagGCPlayerCharmValueInfo()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCPlayerCharmValueInfo.Cmd,m_NAtagGCPlayerCharmValueInfo.SubCmd))] = m_NAtagGCPlayerCharmValueInfo
-
-
-#------------------------------------------------------
# B3 15 相关玩家在线状态变更同步 #tagGCRelatedPlayerOnlineState
class tagGCRelatedPlayerOnlineState(Structure):
@@ -27362,148 +23292,6 @@
m_NAtagGCRelatedPlayerOnlineState=tagGCRelatedPlayerOnlineState()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCRelatedPlayerOnlineState.Cmd,m_NAtagGCRelatedPlayerOnlineState.SubCmd))] = m_NAtagGCRelatedPlayerOnlineState
-
-
-#------------------------------------------------------
-# B3 20 送礼物成功通知 #tagGCSendGiftsOKList
-
-class tagGCSendGiftsOK(Structure):
- NameLen = 0 #(BYTE NameLen)
- Name = "" #(String Name)// 赠送方玩家名
- PlayerID = 0 #(DWORD PlayerID)// 赠送方玩家ID
- GiftNum = 0 #(WORD GiftNum)// 赠送礼物编号
- GiftCount = 0 #(DWORD GiftCount)// 赠送礼物数量
- SendTime = 0 #(DWORD SendTime)// 赠送时间戳
- data = None
-
- def __init__(self):
- self.Clear()
- return
-
- def ReadData(self, _lpData, _pos=0, _Len=0):
- self.Clear()
- self.NameLen,_pos = CommFunc.ReadBYTE(_lpData, _pos)
- self.Name,_pos = CommFunc.ReadString(_lpData, _pos,self.NameLen)
- self.PlayerID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
- self.GiftNum,_pos = CommFunc.ReadWORD(_lpData, _pos)
- self.GiftCount,_pos = CommFunc.ReadDWORD(_lpData, _pos)
- self.SendTime,_pos = CommFunc.ReadDWORD(_lpData, _pos)
- return _pos
-
- def Clear(self):
- self.NameLen = 0
- self.Name = ""
- self.PlayerID = 0
- self.GiftNum = 0
- self.GiftCount = 0
- self.SendTime = 0
- return
-
- def GetLength(self):
- length = 0
- length += 1
- length += len(self.Name)
- length += 4
- length += 2
- length += 4
- length += 4
-
- return length
-
- def GetBuffer(self):
- data = ''
- data = CommFunc.WriteBYTE(data, self.NameLen)
- data = CommFunc.WriteString(data, self.NameLen, self.Name)
- data = CommFunc.WriteDWORD(data, self.PlayerID)
- data = CommFunc.WriteWORD(data, self.GiftNum)
- data = CommFunc.WriteDWORD(data, self.GiftCount)
- data = CommFunc.WriteDWORD(data, self.SendTime)
- return data
-
- def OutputString(self):
- DumpString = '''
- NameLen:%d,
- Name:%s,
- PlayerID:%d,
- GiftNum:%d,
- GiftCount:%d,
- SendTime:%d
- '''\
- %(
- self.NameLen,
- self.Name,
- self.PlayerID,
- self.GiftNum,
- self.GiftCount,
- self.SendTime
- )
- return DumpString
-
-
-class tagGCSendGiftsOKList(Structure):
- Head = tagHead()
- Count = 0 #(WORD Count)
- SendGiftsOKList = list() #(vector<tagGCSendGiftsOK> SendGiftsOKList)
- data = None
-
- def __init__(self):
- self.Clear()
- self.Head.Cmd = 0xB3
- self.Head.SubCmd = 0x20
- return
-
- def ReadData(self, _lpData, _pos=0, _Len=0):
- self.Clear()
- _pos = self.Head.ReadData(_lpData, _pos)
- self.Count,_pos = CommFunc.ReadWORD(_lpData, _pos)
- for i in range(self.Count):
- temSendGiftsOKList = tagGCSendGiftsOK()
- _pos = temSendGiftsOKList.ReadData(_lpData, _pos)
- self.SendGiftsOKList.append(temSendGiftsOKList)
- return _pos
-
- def Clear(self):
- self.Head = tagHead()
- self.Head.Clear()
- self.Head.Cmd = 0xB3
- self.Head.SubCmd = 0x20
- self.Count = 0
- self.SendGiftsOKList = list()
- return
-
- def GetLength(self):
- length = 0
- length += self.Head.GetLength()
- length += 2
- for i in range(self.Count):
- length += self.SendGiftsOKList[i].GetLength()
-
- return length
-
- def GetBuffer(self):
- data = ''
- data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
- data = CommFunc.WriteWORD(data, self.Count)
- for i in range(self.Count):
- data = CommFunc.WriteString(data, self.SendGiftsOKList[i].GetLength(), self.SendGiftsOKList[i].GetBuffer())
- return data
-
- def OutputString(self):
- DumpString = '''
- Head:%s,
- Count:%d,
- SendGiftsOKList:%s
- '''\
- %(
- self.Head.OutputString(),
- self.Count,
- "..."
- )
- return DumpString
-
-
-m_NAtagGCSendGiftsOKList=tagGCSendGiftsOKList()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCSendGiftsOKList.Head.Cmd,m_NAtagGCSendGiftsOKList.Head.SubCmd))] = m_NAtagGCSendGiftsOKList
#------------------------------------------------------
--
Gitblit v1.8.0