| | |
| | | BackpackLV = 0 #(BYTE BackpackLV)//背包等级
|
| | | WarehouseLV = 0 #(BYTE WarehouseLV)//仓库等级
|
| | | TeamID = 0 #(DWORD TeamID)//队伍ID
|
| | | UseGoldType = 0 #(BYTE UseGoldType)//默认用金子/金票 类型为MoneyType
|
| | | UseGoldType = 0 #(BYTE UseGoldType)//默认用金子/金票 类型为MoneyType
|
| | | UseSilverType = 0 #(BYTE UseSilverType)//默认用的银子/银票
|
| | | AttackMode = 0 #(BYTE AttackMode)//攻击模式
|
| | | LastWeekOnlineTime = 0 #(DWORD LastWeekOnlineTime)//上周在线时间
|
| | |
| | | _fields_ = [
|
| | | ("Cmd", c_ubyte),
|
| | | ("SubCmd", c_ubyte),
|
| | | ("StartYear", c_ushort), #年, 如果填写0, 就隐藏此窗口
|
| | | ("StartYear", c_ushort), #年, 如果填写0, 就隐藏此窗口
|
| | | ("StartMonth", c_ushort), #月
|
| | | ("StartDate", c_ubyte), #日
|
| | | ("EndYear", c_ushort),
|
| | |
| | | PlayerID = 0 #(DWORD PlayerID)
|
| | | FamilyNameLen = 0 #(BYTE FamilyNameLen)
|
| | | FamilyName = "" #(String FamilyName)//size = FamilyNameLen
|
| | | FamilyMemberLV = 0 #(BYTE FamilyMemberLV)//玩家在家族中的职位 |
| | | FamilyMemberLV = 0 #(BYTE FamilyMemberLV)//玩家在家族中的职位 |
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | |
| | | class tagFBEventList(Structure):
|
| | | Head = tagHead()
|
| | | EventCount = 0 #(BYTE EventCount)//副本活动数
|
| | | EventList = list() #(vector<tagFBEventDetail> EventList)//副本活动列表 |
| | | EventList = list() #(vector<tagFBEventDetail> EventList)//副本活动列表 |
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | |
| | | TeamID = 0 #(DWORD TeamID)//组队ID
|
| | | HP = 0 #(DWORD HP)
|
| | | MaxHP = 0 #(DWORD MaxHP)
|
| | | PlayerState = 0 #(BYTE PlayerState)//TClientPlayerState 玩家状态 打坐/马上/人镖合一
|
| | | PlayerState = 0 #(BYTE PlayerState)//TClientPlayerState 玩家状态 打坐/马上/人镖合一
|
| | | IsHideMask = 0 #(BYTE IsHideMask)
|
| | | Country = 0 #(BYTE Country)//玩家国家
|
| | | FamilyID = 0 #(DWORD FamilyID)//家族ID
|
| | |
| | | ("PlayerID", c_int), # 主人ID
|
| | | ("PosX", c_int), # X坐标
|
| | | ("PosY", c_int), # Y坐标
|
| | | ("Rank", c_ubyte), #阶段
|
| | | ]
|
| | |
|
| | | def __init__(self):
|
| | |
| | | self.PlayerID = 0
|
| | | self.PosX = 0
|
| | | self.PosY = 0
|
| | | self.Rank = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | |
| | | NPCID:%d,
|
| | | PlayerID:%d,
|
| | | PosX:%d,
|
| | | PosY:%d
|
| | | PosY:%d,
|
| | | Rank:%d
|
| | | '''\
|
| | | %(
|
| | | self.Cmd,
|
| | |
| | | self.NPCID,
|
| | | self.PlayerID,
|
| | | self.PosX,
|
| | | self.PosY
|
| | | self.PosY,
|
| | | self.Rank
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
| | | ("Cmd", c_ubyte),
|
| | | ("SubCmd", c_ubyte),
|
| | | ("PlayerID", c_int),
|
| | | ("FamilyMemberLV", c_ubyte), #玩家在家族中的职位 |
| | | ("FamilyMemberLV", c_ubyte), #玩家在家族中的职位 |
| | | ]
|
| | |
|
| | | def __init__(self):
|
| | |
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | #04 36 周围玩家家族名刷新#tagPlayerFamilyNameRefresh
|
| | | #04 36 周围玩家家族名刷新#tagPlayerFamilyNameRefresh
|
| | |
|
| | | class tagPlayerFamilyNameRefresh(Structure):
|
| | | Head = tagHead()
|
| | |
| | | PlayerID = 0 #(DWORD PlayerID)
|
| | | FamilyNameLen = 0 #(BYTE FamilyNameLen)
|
| | | FamilyName = "" #(String FamilyName)//size = FamilyNameLen
|
| | | FamilyMemberLV = 0 #(BYTE FamilyMemberLV)//玩家在家族中的职位 |
| | | FamilyMemberLV = 0 #(BYTE FamilyMemberLV)//玩家在家族中的职位 |
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | |
| | | MaxHP = 0 #(DWORD MaxHP)
|
| | | MaxHPEx = 0 #(DWORD MaxHPEx)
|
| | | Speed = 0 #(WORD Speed)
|
| | | LV = 0 #(BYTE LV)
|
| | | LV = 0 #(WORD LV)
|
| | | OwnerNameLen = 0 #(BYTE OwnerNameLen)
|
| | | OwnerName = "" #(String OwnerName)//size = OwnerNameLen
|
| | | data = None
|
| | |
| | | self.MaxHP,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.MaxHPEx,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.Speed,_pos = CommFunc.ReadWORD(_lpData, _pos)
|
| | | self.LV,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.LV,_pos = CommFunc.ReadWORD(_lpData, _pos)
|
| | | self.OwnerNameLen,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.OwnerName,_pos = CommFunc.ReadString(_lpData, _pos,self.OwnerNameLen)
|
| | | return _pos
|
| | |
| | | length += 4
|
| | | length += 4
|
| | | length += 2
|
| | | length += 1
|
| | | length += 2
|
| | | length += 1
|
| | | length += len(self.OwnerName)
|
| | |
|
| | |
| | | data = CommFunc.WriteDWORD(data, self.MaxHP)
|
| | | data = CommFunc.WriteDWORD(data, self.MaxHPEx)
|
| | | data = CommFunc.WriteWORD(data, self.Speed)
|
| | | data = CommFunc.WriteBYTE(data, self.LV)
|
| | | data = CommFunc.WriteWORD(data, self.LV)
|
| | | data = CommFunc.WriteBYTE(data, self.OwnerNameLen)
|
| | | data = CommFunc.WriteString(data, self.OwnerNameLen, self.OwnerName)
|
| | | return data
|
| | |
| | | ObjType = 0 #(BYTE ObjType)
|
| | | BattleType = 0 #(BYTE BattleType)//物理/魔法
|
| | | SkillID = 0 #(WORD SkillID)
|
| | | SkillIDEx = 0 #(WORD SkillIDEx)
|
| | | PosX = 0 #(WORD PosX)
|
| | | PosY = 0 #(WORD PosY)
|
| | | HurtCount = 0 #(WORD HurtCount)//伤害数目
|
| | | HurtList = list() #(vector<tagSkillPosHurtObj> HurtList)//size = HurtCount
|
| | | SkillElementID = 0 #(WORD SkillElementID)//专精技能ID |
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | |
| | | self.ObjType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.BattleType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.SkillID,_pos = CommFunc.ReadWORD(_lpData, _pos)
|
| | | self.SkillIDEx,_pos = CommFunc.ReadWORD(_lpData, _pos)
|
| | | self.PosX,_pos = CommFunc.ReadWORD(_lpData, _pos)
|
| | | self.PosY,_pos = CommFunc.ReadWORD(_lpData, _pos)
|
| | | self.HurtCount,_pos = CommFunc.ReadWORD(_lpData, _pos)
|
| | |
| | | temHurtList = tagSkillPosHurtObj()
|
| | | _pos = temHurtList.ReadData(_lpData, _pos)
|
| | | self.HurtList.append(temHurtList)
|
| | | self.SkillElementID,_pos = CommFunc.ReadWORD(_lpData, _pos)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | |
| | | self.ObjType = 0
|
| | | self.BattleType = 0
|
| | | self.SkillID = 0
|
| | | self.SkillIDEx = 0
|
| | | self.PosX = 0
|
| | | self.PosY = 0
|
| | | self.HurtCount = 0
|
| | | self.HurtList = list()
|
| | | self.SkillElementID = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | |
| | | length += 2
|
| | | length += 2
|
| | | length += 2
|
| | | length += 2
|
| | | for i in range(self.HurtCount):
|
| | | length += self.HurtList[i].GetLength()
|
| | | length += 2
|
| | |
|
| | | return length
|
| | |
|
| | |
| | | data = CommFunc.WriteBYTE(data, self.ObjType)
|
| | | data = CommFunc.WriteBYTE(data, self.BattleType)
|
| | | data = CommFunc.WriteWORD(data, self.SkillID)
|
| | | data = CommFunc.WriteWORD(data, self.SkillIDEx)
|
| | | data = CommFunc.WriteWORD(data, self.PosX)
|
| | | data = CommFunc.WriteWORD(data, self.PosY)
|
| | | data = CommFunc.WriteWORD(data, self.HurtCount)
|
| | | for i in range(self.HurtCount):
|
| | | data = CommFunc.WriteString(data, self.HurtList[i].GetLength(), self.HurtList[i].GetBuffer())
|
| | | data = CommFunc.WriteWORD(data, self.SkillElementID)
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | |
| | | ObjType:%d,
|
| | | BattleType:%d,
|
| | | SkillID:%d,
|
| | | SkillIDEx:%d,
|
| | | PosX:%d,
|
| | | PosY:%d,
|
| | | HurtCount:%d,
|
| | | HurtList:%s
|
| | | HurtList:%s,
|
| | | SkillElementID:%d
|
| | | '''\
|
| | | %(
|
| | | self.Head.OutputString(),
|
| | |
| | | self.ObjType,
|
| | | self.BattleType,
|
| | | self.SkillID,
|
| | | self.SkillIDEx,
|
| | | self.PosX,
|
| | | self.PosY,
|
| | | self.HurtCount,
|
| | | "..."
|
| | | "...",
|
| | | self.SkillElementID
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
| | | ByObjID = 0 #(DWORD ByObjID)//物品原本在哪个对象身上
|
| | | DropTick = 0 #(DWORD DropTick)//物品掉落Tick
|
| | | UserDataLen = 0 #(WORD UserDataLen)//附加属性长度
|
| | | UserData = "" #(String UserData)//附加属性 size = UserDataLen |
| | | UserData = "" #(String UserData)//附加属性 size = UserDataLen |
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | |
| | | _fields_ = [
|
| | | ("Cmd", c_ubyte),
|
| | | ("SubCmd", c_ubyte),
|
| | | ("MakeType", c_ubyte), #类型 TMakeItemType
|
| | | ("MakeType", c_ubyte), #类型 TMakeItemType
|
| | | ("Result", c_ubyte), #是否成功
|
| | | ]
|
| | |
|
| | |
| | | ("Cmd", c_ubyte),
|
| | | ("SubCmd", c_ubyte),
|
| | | ("PlayerID", c_int),
|
| | | ("PrepareState", c_ubyte), #准备类型, TPreparingState
|
| | | ("PrepareState", c_ubyte), #准备类型, TPreparingState
|
| | | ("MaxTime", c_int), #最大时间
|
| | | ("PrepareID", c_int), #准备ID, 如果是技能, 则是技能ID
|
| | | ]
|
| | |
| | | FamilyName = "" #(String FamilyName)//size = FamilyNameLen
|
| | | Job = 0 #(BYTE Job)//ְҵ
|
| | | FamilyActiveValue = 0 #(DWORD FamilyActiveValue)//本周家族活跃度
|
| | | LastWeekFamilyActiveValue = 0 #(DWORD LastWeekFamilyActiveValue)//上周家族活跃度 |
| | | LastWeekFamilyActiveValue = 0 #(DWORD LastWeekFamilyActiveValue)//上周家族活跃度 |
| | | OfficialRank = 0 #(BYTE OfficialRank)//境界
|
| | | Exattr1 = 0 #(DWORD Exattr1)//扩展属性
|
| | | Exattr2 = 0 #(DWORD Exattr2)//扩展属性
|
| | |
| | | Point = 0 #(DWORD Point)//家族战积分
|
| | | Broadcast = "" #(String Broadcast)//size = BroadcastLen
|
| | | FamilyActiveValue = 0 #(DWORD FamilyActiveValue)//本周家族活跃度
|
| | | LastWeekFamilyActiveValue = 0 #(DWORD LastWeekFamilyActiveValue)//上周家族活跃度 |
| | | LastWeekFamilyActiveValue = 0 #(DWORD LastWeekFamilyActiveValue)//上周家族活跃度 |
| | | Member = list() #(vector<tagRoleFamilyMember> Member)//size = MemberCount
|
| | | Extra1 = 0 #(DWORD Extra1)//附加字段1
|
| | | Extra2 = 0 #(DWORD Extra2)//附加字段2
|
| | |
| | | class tagFamilyTechInfo(Structure):
|
| | | Head = tagHead()
|
| | | TechCount = 0 #(WORD TechCount)//帮会科技数量
|
| | | TechInfoList = list() #(vector<tagTechInfo> TechInfoList)//科技信息列表 |
| | | TechInfoList = list() #(vector<tagTechInfo> TechInfoList)//科技信息列表 |
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | |
| | | #10 01 排行榜信息#tagBillboard 对性能影响比较大, 需要限制tick
|
| | |
|
| | | class tagBillboardList(Structure):
|
| | | ID = 0 #(DWORD ID)// 不一定都能用上,目前用于保存宠物NPCID |
| | | ID = 0 #(DWORD ID)// 不一定都能用上,目前用于保存宠物NPCID |
| | | Name1 = "" #(char Name1[33])//名字1,用来显示排序对象名字
|
| | | Name2 = "" #(char Name2[33])//名字2
|
| | | Type2 = 0 #(BYTE Type2)//附加类型,用来表示排序对象的类型,比如,玩家所属职业门派,宠物类型等
|
| | |
| | | MakerNameLen = 0 #(BYTE MakerNameLen)//制造者名字
|
| | | MakerName = "" #(String MakerName)//size = MakerNameLen
|
| | | UserDataLen = 0 #(DWORD UserDataLen)
|
| | | UserData = "" #(String UserData)//自定义数据 |
| | | UserData = "" #(String UserData)//自定义数据 |
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | |
| | | ("SubCmd", c_ubyte),
|
| | | ("Type", c_ubyte), #答题类型
|
| | | ("QuestionNO", c_ushort), # 答题号
|
| | | ("FunctionNO", c_ubyte), # 功能号 |
| | | ("FunctionNO", c_ubyte), # 功能号 |
| | | ("FunctionOpt1", c_ubyte), #功能选项1
|
| | | ("FunctionOpt2", c_ubyte), #功能选项2
|
| | | ("FunctionOpt3", c_ubyte), #功能选项3
|
| | |
| | | ("PlayerID", c_int), #挂单玩家的id
|
| | | ("FormID", c_int), # 挂单ID
|
| | | ("UnitPrice", c_int), #该单购买元宝的银两单价(每组)
|
| | | ("LefGold", c_int), #该单的剩余购买元宝组数 |
| | | ("LeftTime", c_ushort), #该单的剩余在架时间 |
| | | ("LefGold", c_int), #该单的剩余购买元宝组数 |
| | | ("LeftTime", c_ushort), #该单的剩余在架时间 |
| | | ]
|
| | |
|
| | | def __init__(self):
|
| | |
| | | ("SubCmd", c_ubyte),
|
| | | ("FormID", c_int), # 挂单ID
|
| | | ("UnitPrice", c_int), #该单购买元宝的银两单价(每组)
|
| | | ("LefGold", c_int), #该单的剩余购买元宝组数 |
| | | ("LefGold", c_int), #该单的剩余购买元宝组数 |
| | | ("LeftTime", c_ushort), #该单的剩余在架时间
|
| | | ]
|
| | |
|
| | |
| | | _fields_ = [
|
| | | ("Cmd", c_ubyte),
|
| | | ("SubCmd", c_ubyte),
|
| | | ("LabelID", c_int), # 删除标签 |
| | | ("LabelID", c_int), # 删除标签 |
| | | ]
|
| | |
|
| | | def __init__(self):
|
| | |
| | | class tagHightLadderTopPlayerList(Structure):
|
| | | Head = tagHead()
|
| | | Size = 0 #(BYTE Size)
|
| | | PlayerList = list() #(vector<tagHightLadderPlayerInfo> PlayerList)//玩家信息列表 |
| | | PlayerList = list() #(vector<tagHightLadderPlayerInfo> PlayerList)//玩家信息列表 |
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | |
| | | class tagVsTeam(Structure):
|
| | | TeamIndex = 0 #(BYTE TeamIndex)// 竞技队Index
|
| | | MemberCount = 0 #(WORD MemberCount)// 成员人数
|
| | | Members = list() #(vector<tagVsMemberInfo> Members)// 成员列表 |
| | | Members = list() #(vector<tagVsMemberInfo> Members)// 成员列表 |
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | |
| | | Head = tagHead()
|
| | | MyOrder = 0 #(WORD MyOrder)//自身排名
|
| | | Size = 0 #(BYTE Size)
|
| | | PlayerList = list() #(vector<tagHightLadderPlayerInfo> PlayerList)//玩家信息列表 |
| | | PlayerList = list() #(vector<tagHightLadderPlayerInfo> PlayerList)//玩家信息列表 |
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | |
| | |
|
| | | class tagBourseItem(Structure):
|
| | | ItemGUID = "" #(char ItemGUID[40])
|
| | | PlayerID = 0 #(DWORD PlayerID)//挂单玩家ID |
| | | PlayerID = 0 #(DWORD PlayerID)//挂单玩家ID |
| | | ItemTypeID = 0 #(DWORD ItemTypeID)//物品ID
|
| | | PriceType = 0 #(BYTE PriceType)//出售价格类型
|
| | | PriceCount = 0 #(DWORD PriceCount)//出售价格
|
| | |
| | |
|
| | |
|
| | | m_NAtagGMCmdAnswer=tagGMCmdAnswer()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGMCmdAnswer.Head.Cmd,m_NAtagGMCmdAnswer.Head.SubCmd))] = m_NAtagGMCmdAnswer
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGMCmdAnswer.Head.Cmd,m_NAtagGMCmdAnswer.Head.SubCmd))] = m_NAtagGMCmdAnswer |