| | |
| | | ExAttr18 = 0 #(DWORD ExAttr18)//预留的扩展属性字段,用来存放项目特定的属性
|
| | | ExAttr19 = 0 #(DWORD ExAttr19)//预留的扩展属性字段,用来存放项目特定的属性
|
| | | ExAttr20 = 0 #(DWORD ExAttr20)//预留的扩展属性字段,用来存放项目特定的属性
|
| | | HPEx = 0 #(DWORD HPEx)//当前血量 超过E的记录
|
| | | Face = 0 #(DWORD Face)//基本脸型
|
| | | RoleType = 0 #(DWORD RoleType)//角色类型(各项目可自定义含义,如种族,与职业区分) |
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | |
| | | self.ExAttr18,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.ExAttr19,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.ExAttr20,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.HPEx,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.Face,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.RoleType,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | |
| | | self.ExAttr18 = 0
|
| | | self.ExAttr19 = 0
|
| | | self.ExAttr20 = 0
|
| | | self.HPEx = 0
|
| | | self.Face = 0
|
| | | self.RoleType = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | |
| | | length += 4
|
| | | length += 4
|
| | | length += 15
|
| | | length += 4
|
| | | length += 4
|
| | | length += 4
|
| | | length += 4
|
| | | length += 4
|
| | | length += 4
|
| | |
| | | data = CommFunc.WriteDWORD(data, self.ExAttr18)
|
| | | data = CommFunc.WriteDWORD(data, self.ExAttr19)
|
| | | data = CommFunc.WriteDWORD(data, self.ExAttr20)
|
| | | data = CommFunc.WriteDWORD(data, self.HPEx)
|
| | | data = CommFunc.WriteDWORD(data, self.Face)
|
| | | data = CommFunc.WriteDWORD(data, self.RoleType)
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | |
| | | ExAttr17:%d,
|
| | | ExAttr18:%d,
|
| | | ExAttr19:%d,
|
| | | ExAttr20:%d
|
| | | ExAttr20:%d,
|
| | | HPEx:%d,
|
| | | Face:%d,
|
| | | RoleType:%d
|
| | | '''\
|
| | | %(
|
| | | self.Head.OutputString(),
|
| | |
| | | self.ExAttr17,
|
| | | self.ExAttr18,
|
| | | self.ExAttr19,
|
| | | self.ExAttr20
|
| | | self.ExAttr20,
|
| | | self.HPEx,
|
| | | self.Face,
|
| | | self.RoleType
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
| | | ReincarnationLv = 0 #(WORD ReincarnationLv)
|
| | | LV = 0 #(WORD LV)//等级
|
| | | Job = 0 #(BYTE Job)
|
| | | Face = 0 #(DWORD Face)
|
| | | TeamLV = 0 #(BYTE TeamLV)//组队等级
|
| | | TeamID = 0 #(DWORD TeamID)//组队ID
|
| | | HP = 0 #(DWORD HP)
|
| | | HPEx = 0 #(DWORD HPEx)
|
| | | MaxHP = 0 #(DWORD MaxHP)
|
| | | MaxHPEx = 0 #(DWORD MaxHPEx)
|
| | | PlayerState = 0 #(BYTE PlayerState)//TClientPlayerState 玩家状态 打坐/马上/人镖合一
|
| | | IsHideMask = 0 #(BYTE IsHideMask)
|
| | | Country = 0 #(BYTE Country)//玩家国家
|
| | |
| | | self.ReincarnationLv,_pos = CommFunc.ReadWORD(_lpData, _pos)
|
| | | self.LV,_pos = CommFunc.ReadWORD(_lpData, _pos)
|
| | | self.Job,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.Face,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.TeamLV,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.TeamID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.HP,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.HPEx,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.MaxHP,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.MaxHPEx,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.PlayerState,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.IsHideMask,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.Country,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | |
| | | self.ReincarnationLv = 0
|
| | | self.LV = 0
|
| | | self.Job = 0
|
| | | self.Face = 0
|
| | | self.TeamLV = 0
|
| | | self.TeamID = 0
|
| | | self.HP = 0
|
| | | self.HPEx = 0
|
| | | self.MaxHP = 0
|
| | | self.MaxHPEx = 0
|
| | | self.PlayerState = 0
|
| | | self.IsHideMask = 0
|
| | | self.Country = 0
|
| | |
| | | length += 2
|
| | | length += 2
|
| | | length += 1
|
| | | length += 4
|
| | | length += 1
|
| | | length += 4
|
| | | length += 4
|
| | | length += 4
|
| | | length += 4
|
| | | length += 4
|
| | |
| | | data = CommFunc.WriteWORD(data, self.ReincarnationLv)
|
| | | data = CommFunc.WriteWORD(data, self.LV)
|
| | | data = CommFunc.WriteBYTE(data, self.Job)
|
| | | data = CommFunc.WriteDWORD(data, self.Face)
|
| | | data = CommFunc.WriteBYTE(data, self.TeamLV)
|
| | | data = CommFunc.WriteDWORD(data, self.TeamID)
|
| | | data = CommFunc.WriteDWORD(data, self.HP)
|
| | | data = CommFunc.WriteDWORD(data, self.HPEx)
|
| | | data = CommFunc.WriteDWORD(data, self.MaxHP)
|
| | | data = CommFunc.WriteDWORD(data, self.MaxHPEx)
|
| | | data = CommFunc.WriteBYTE(data, self.PlayerState)
|
| | | data = CommFunc.WriteBYTE(data, self.IsHideMask)
|
| | | data = CommFunc.WriteBYTE(data, self.Country)
|
| | |
| | | ReincarnationLv:%d,
|
| | | LV:%d,
|
| | | Job:%d,
|
| | | Face:%d,
|
| | | TeamLV:%d,
|
| | | TeamID:%d,
|
| | | HP:%d,
|
| | | HPEx:%d,
|
| | | MaxHP:%d,
|
| | | MaxHPEx:%d,
|
| | | PlayerState:%d,
|
| | | IsHideMask:%d,
|
| | | Country:%d,
|
| | |
| | | self.ReincarnationLv,
|
| | | self.LV,
|
| | | self.Job,
|
| | | self.Face,
|
| | | self.TeamLV,
|
| | | self.TeamID,
|
| | | self.HP,
|
| | | self.HPEx,
|
| | | self.MaxHP,
|
| | | self.MaxHPEx,
|
| | | self.PlayerState,
|
| | | self.IsHideMask,
|
| | | self.Country,
|
| | |
| | | ("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
|
| | |
|
| | |
| | | ("SubCmd", c_ubyte),
|
| | | ("ObjID", c_int),
|
| | | ("ObjType", c_ubyte),
|
| | | ("RefreshType", c_ubyte), |
| | | ("RefreshType", c_ushort), |
| | | ("Value", c_int),
|
| | | ("ValueEx", c_int), |
| | | ]
|
| | |
|
| | | def __init__(self):
|
| | |
| | | self.ObjType = 0
|
| | | self.RefreshType = 0
|
| | | self.Value = 0
|
| | | self.ValueEx = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | |
| | | ObjID:%d,
|
| | | ObjType:%d,
|
| | | RefreshType:%d,
|
| | | Value:%d
|
| | | Value:%d,
|
| | | ValueEx:%d
|
| | | '''\
|
| | | %(
|
| | | self.Cmd,
|
| | |
| | | self.ObjID,
|
| | | self.ObjType,
|
| | | self.RefreshType,
|
| | | self.Value
|
| | | self.Value,
|
| | | self.ValueEx
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
| | | ("ObjType", c_ubyte), #对象类型
|
| | | ("SkillID", c_int), #技能ID
|
| | | ("DiffValue", c_int), #ֵ
|
| | | ("DiffValueEx", c_int), #超亿值
|
| | | ("AttackType", c_ubyte), #攻击类型
|
| | | ("SrcObjID", c_int), #飘血来源
|
| | | ("SrcObjType", c_ubyte),
|
| | |
| | | self.ObjType = 0
|
| | | self.SkillID = 0
|
| | | self.DiffValue = 0
|
| | | self.DiffValueEx = 0
|
| | | self.AttackType = 0
|
| | | self.SrcObjID = 0
|
| | | self.SrcObjType = 0
|
| | |
| | | ObjType:%d,
|
| | | SkillID:%d,
|
| | | DiffValue:%d,
|
| | | DiffValueEx:%d,
|
| | | AttackType:%d,
|
| | | SrcObjID:%d,
|
| | | SrcObjType:%d,
|
| | |
| | | self.ObjType,
|
| | | self.SkillID,
|
| | | self.DiffValue,
|
| | | self.DiffValueEx,
|
| | | self.AttackType,
|
| | | self.SrcObjID,
|
| | | self.SrcObjType,
|
| | |
| | | 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
|
| | |
| | |
|
| | | m_NAtagPlayerSummonNPCAppear=tagPlayerSummonNPCAppear()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagPlayerSummonNPCAppear.Head.Cmd,m_NAtagPlayerSummonNPCAppear.Head.SubCmd))] = m_NAtagPlayerSummonNPCAppear
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | #04 40 周围对象刷新(支持大数值) #tagObjInfoRefreshEx
|
| | |
|
| | | class tagObjInfoRefreshEx(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("Cmd", c_ubyte),
|
| | | ("SubCmd", c_ubyte),
|
| | | ("ObjID", c_int), |
| | | ("ObjType", c_ubyte), |
| | | ("RefreshType", c_ubyte), |
| | | ("Value", c_int), |
| | | ("ValueEx", c_int), |
| | | ]
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Cmd = 0x04
|
| | | self.SubCmd = 0x40
|
| | | 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 = 0x04
|
| | | self.SubCmd = 0x40
|
| | | self.ObjID = 0
|
| | | self.ObjType = 0
|
| | | self.RefreshType = 0
|
| | | self.Value = 0
|
| | | self.ValueEx = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagObjInfoRefreshEx)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''//04 40 周围对象刷新(支持大数值) //tagObjInfoRefreshEx:
|
| | | Cmd:%s,
|
| | | SubCmd:%s,
|
| | | ObjID:%d,
|
| | | ObjType:%d,
|
| | | RefreshType:%d,
|
| | | Value:%d,
|
| | | ValueEx:%d
|
| | | '''\
|
| | | %(
|
| | | self.Cmd,
|
| | | self.SubCmd,
|
| | | self.ObjID,
|
| | | self.ObjType,
|
| | | self.RefreshType,
|
| | | self.Value,
|
| | | self.ValueEx
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagObjInfoRefreshEx=tagObjInfoRefreshEx()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagObjInfoRefreshEx.Cmd,m_NAtagObjInfoRefreshEx.SubCmd))] = m_NAtagObjInfoRefreshEx
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | |
| | | NPCID = 0 #(DWORD NPCID)
|
| | | NPCFaceDir = 0 #(WORD NPCFaceDir)//NPC的面向
|
| | | NPCHP = 0 #(DWORD NPCHP)
|
| | | NPCHPEx = 0 #(DWORD NPCHPEx)
|
| | | NPCEventType = 0 #(WORD NPCEventType)//0 攻击 1 事件
|
| | | IsActive = 0 #(BYTE IsActive)//这个NPC是否活着
|
| | | PosX = 0 #(WORD PosX)
|
| | |
| | | self.NPCID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.NPCFaceDir,_pos = CommFunc.ReadWORD(_lpData, _pos)
|
| | | self.NPCHP,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.NPCHPEx,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.NPCEventType,_pos = CommFunc.ReadWORD(_lpData, _pos)
|
| | | self.IsActive,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.PosX,_pos = CommFunc.ReadWORD(_lpData, _pos)
|
| | |
| | | self.NPCID = 0
|
| | | self.NPCFaceDir = 0
|
| | | self.NPCHP = 0
|
| | | self.NPCHPEx = 0
|
| | | self.NPCEventType = 0
|
| | | self.IsActive = 0
|
| | | self.PosX = 0
|
| | |
| | | length += 4
|
| | | length += 4
|
| | | length += 2
|
| | | length += 4
|
| | | length += 4
|
| | | length += 2
|
| | | length += 1
|
| | |
| | | data = CommFunc.WriteDWORD(data, self.NPCID)
|
| | | data = CommFunc.WriteWORD(data, self.NPCFaceDir)
|
| | | data = CommFunc.WriteDWORD(data, self.NPCHP)
|
| | | data = CommFunc.WriteDWORD(data, self.NPCHPEx)
|
| | | data = CommFunc.WriteWORD(data, self.NPCEventType)
|
| | | data = CommFunc.WriteBYTE(data, self.IsActive)
|
| | | data = CommFunc.WriteWORD(data, self.PosX)
|
| | |
| | | NPCID:%d,
|
| | | NPCFaceDir:%d,
|
| | | NPCHP:%d,
|
| | | NPCHPEx:%d,
|
| | | NPCEventType:%d,
|
| | | IsActive:%d,
|
| | | PosX:%d,
|
| | |
| | | self.NPCID,
|
| | | self.NPCFaceDir,
|
| | | self.NPCHP,
|
| | | self.NPCHPEx,
|
| | | self.NPCEventType,
|
| | | self.IsActive,
|
| | | self.PosX,
|
| | |
| | | ("ObjType", c_ubyte), #对象类型
|
| | | ("AttackType", c_ubyte), #普攻, 闪躲, 致命 类型
|
| | | ("Value", c_int),
|
| | | ("ValueEx", c_int), |
| | | ("RemainHP", c_int), #对方剩余的血
|
| | | ("RemainHPEx", c_int), #对方剩余的血, 超亿支持
|
| | | ]
|
| | |
| | | self.ObjType = 0
|
| | | self.AttackType = 0
|
| | | self.Value = 0
|
| | | self.ValueEx = 0
|
| | | self.RemainHP = 0
|
| | | self.RemainHPEx = 0
|
| | | return
|
| | |
| | | ObjType:%d,
|
| | | AttackType:%d,
|
| | | Value:%d,
|
| | | ValueEx:%d,
|
| | | RemainHP:%d,
|
| | | RemainHPEx:%d
|
| | | '''\
|
| | |
| | | self.ObjType,
|
| | | self.AttackType,
|
| | | self.Value,
|
| | | self.ValueEx,
|
| | | self.RemainHP,
|
| | | self.RemainHPEx
|
| | | )
|
| | |
| | | ("ObjID", c_int),
|
| | | ("AttackType", c_ubyte), #爆击, miss
|
| | | ("HurtHP", c_int),
|
| | | ("HurtHPEx", c_int), |
| | | ("CurHP", c_int),
|
| | | ("CurHPEx", c_int),
|
| | | ]
|
| | |
| | | self.ObjID = 0
|
| | | self.AttackType = 0
|
| | | self.HurtHP = 0
|
| | | self.HurtHPEx = 0
|
| | | self.CurHP = 0
|
| | | self.CurHPEx = 0
|
| | | return
|
| | |
| | | ObjID:%d,
|
| | | AttackType:%d,
|
| | | HurtHP:%d,
|
| | | HurtHPEx:%d,
|
| | | CurHP:%d,
|
| | | CurHPEx:%d
|
| | | '''\
|
| | |
| | | self.ObjID,
|
| | | self.AttackType,
|
| | | self.HurtHP,
|
| | | self.HurtHPEx,
|
| | | self.CurHP,
|
| | | self.CurHPEx
|
| | | )
|
| | |
| | | ("ObjID", c_int),
|
| | | ("AttackType", c_ubyte), #爆击, miss
|
| | | ("HurtHP", c_int),
|
| | | ("HurtHPEx", c_int), |
| | | ("CurHP", c_int),
|
| | | ("CurHPEx", c_int),
|
| | | ]
|
| | |
| | | self.ObjID = 0
|
| | | self.AttackType = 0
|
| | | self.HurtHP = 0
|
| | | self.HurtHPEx = 0
|
| | | self.CurHP = 0
|
| | | self.CurHPEx = 0
|
| | | return
|
| | |
| | | ObjID:%d,
|
| | | AttackType:%d,
|
| | | HurtHP:%d,
|
| | | HurtHPEx:%d,
|
| | | CurHP:%d,
|
| | | CurHPEx:%d
|
| | | '''\
|
| | |
| | | self.ObjID,
|
| | | self.AttackType,
|
| | | self.HurtHP,
|
| | | self.HurtHPEx,
|
| | | self.CurHP,
|
| | | self.CurHPEx
|
| | | )
|
| | |
| | | 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):
|
| | |
| | | temHurtList = tagSkillPosHurtObj()
|
| | | _pos = temHurtList.ReadData(_lpData, _pos)
|
| | | self.HurtList.append(temHurtList)
|
| | | self.SkillElementID,_pos = CommFunc.ReadWORD(_lpData, _pos)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | |
| | | self.PosY = 0
|
| | | self.HurtCount = 0
|
| | | self.HurtList = list()
|
| | | self.SkillElementID = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | |
| | | length += 2
|
| | | for i in range(self.HurtCount):
|
| | | length += self.HurtList[i].GetLength()
|
| | | length += 2
|
| | |
|
| | | return length
|
| | |
|
| | |
| | | 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):
|
| | |
| | | PosX:%d,
|
| | | PosY:%d,
|
| | | HurtCount:%d,
|
| | | HurtList:%s
|
| | | HurtList:%s,
|
| | | SkillElementID:%d
|
| | | '''\
|
| | | %(
|
| | | self.Head.OutputString(),
|
| | |
| | | self.PosX,
|
| | | self.PosY,
|
| | | self.HurtCount,
|
| | | "..."
|
| | | "...",
|
| | | self.SkillElementID
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
| | | LVEx = 0 #(WORD LVEx)//玩家等级副本,用于转生
|
| | | LV2 = 0 #(WORD LV2)//大师等级
|
| | | HP = 0 #(DWORD HP)
|
| | | HPEx = 0 #(DWORD HPEx)
|
| | | MaxHP = 0 #(DWORD MaxHP)
|
| | | MaxHPEx = 0 #(DWORD MaxHPEx)
|
| | | MP = 0 #(DWORD MP)
|
| | | MaxMP = 0 #(DWORD MaxMP)
|
| | | PlayerType = 0 #(BYTE PlayerType)//五行
|
| | |
| | | self.LVEx,_pos = CommFunc.ReadWORD(_lpData, _pos)
|
| | | self.LV2,_pos = CommFunc.ReadWORD(_lpData, _pos)
|
| | | self.HP,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.HPEx,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.MaxHP,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.MaxHPEx,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.MP,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.MaxMP,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.PlayerType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | |
| | | self.LVEx = 0
|
| | | self.LV2 = 0
|
| | | self.HP = 0
|
| | | self.HPEx = 0
|
| | | self.MaxHP = 0
|
| | | self.MaxHPEx = 0
|
| | | self.MP = 0
|
| | | self.MaxMP = 0
|
| | | self.PlayerType = 0
|
| | |
| | | length += 4
|
| | | length += 4
|
| | | length += 4
|
| | | length += 4
|
| | | length += 4
|
| | | length += 1
|
| | | length += 1
|
| | | length += 1
|
| | |
| | | data = CommFunc.WriteWORD(data, self.LVEx)
|
| | | data = CommFunc.WriteWORD(data, self.LV2)
|
| | | data = CommFunc.WriteDWORD(data, self.HP)
|
| | | data = CommFunc.WriteDWORD(data, self.HPEx)
|
| | | data = CommFunc.WriteDWORD(data, self.MaxHP)
|
| | | data = CommFunc.WriteDWORD(data, self.MaxHPEx)
|
| | | data = CommFunc.WriteDWORD(data, self.MP)
|
| | | data = CommFunc.WriteDWORD(data, self.MaxMP)
|
| | | data = CommFunc.WriteBYTE(data, self.PlayerType)
|
| | |
| | | LVEx:%d,
|
| | | LV2:%d,
|
| | | HP:%d,
|
| | | HPEx:%d,
|
| | | MaxHP:%d,
|
| | | MaxHPEx:%d,
|
| | | MP:%d,
|
| | | MaxMP:%d,
|
| | | PlayerType:%d,
|
| | |
| | | self.LVEx,
|
| | | self.LV2,
|
| | | self.HP,
|
| | | self.HPEx,
|
| | | self.MaxHP,
|
| | | self.MaxHPEx,
|
| | | self.MP,
|
| | | self.MaxMP,
|
| | | self.PlayerType,
|
| | |
| | | ("PlayerID", c_int),
|
| | | ("LV", c_ushort),
|
| | | ("HP", c_int),
|
| | | ("HPEx", c_int), |
| | | ("MaxHP", c_int),
|
| | | ("MaxHPEx", c_int), |
| | | ("MP", c_int),
|
| | | ("MaxMP", c_int),
|
| | | ]
|
| | |
| | | self.PlayerID = 0
|
| | | self.LV = 0
|
| | | self.HP = 0
|
| | | self.HPEx = 0
|
| | | self.MaxHP = 0
|
| | | self.MaxHPEx = 0
|
| | | self.MP = 0
|
| | | self.MaxMP = 0
|
| | | return
|
| | |
| | | PlayerID:%d,
|
| | | LV:%d,
|
| | | HP:%d,
|
| | | HPEx:%d,
|
| | | MaxHP:%d,
|
| | | MaxHPEx:%d,
|
| | | MP:%d,
|
| | | MaxMP:%d
|
| | | '''\
|
| | |
| | | self.PlayerID,
|
| | | self.LV,
|
| | | self.HP,
|
| | | self.HPEx,
|
| | | self.MaxHP,
|
| | | self.MaxHPEx,
|
| | | self.MP,
|
| | | self.MaxMP
|
| | | )
|
| | |
| | | CON = 0 #(DWORD CON)//体魄
|
| | | LeftPoints = 0 #(WORD LeftPoints)//潜力,即剩余点数
|
| | | HP = 0 #(DWORD HP)// 当前气血
|
| | | HPEx = 0 #(DWORD HPEx)// 当前气血 超亿
|
| | | MaxHP = 0 #(DWORD MaxHP)// 最大气血
|
| | | MaxHPEx = 0 #(DWORD MaxHPEx)// 最大气血 超亿
|
| | | PhysicAtk = 0 #(DWORD PhysicAtk)// 外功
|
| | | PhysicDef = 0 #(DWORD PhysicDef)// 外防
|
| | | MagicAtk = 0 #(DWORD MagicAtk)// 内攻
|
| | |
| | | self.CON,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.LeftPoints,_pos = CommFunc.ReadWORD(_lpData, _pos)
|
| | | self.HP,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.HPEx,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.MaxHP,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.MaxHPEx,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.PhysicAtk,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.PhysicDef,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.MagicAtk,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | |
| | | self.CON = 0
|
| | | self.LeftPoints = 0
|
| | | self.HP = 0
|
| | | self.HPEx = 0
|
| | | self.MaxHP = 0
|
| | | self.MaxHPEx = 0
|
| | | self.PhysicAtk = 0
|
| | | self.PhysicDef = 0
|
| | | self.MagicAtk = 0
|
| | |
| | | length += 4
|
| | | length += 4
|
| | | length += 4
|
| | | length += 4
|
| | | length += 4
|
| | | length += 1
|
| | | for i in range(self.SkillListCnt):
|
| | | length += self.SkillList[i].GetLength()
|
| | |
| | | data = CommFunc.WriteDWORD(data, self.CON)
|
| | | data = CommFunc.WriteWORD(data, self.LeftPoints)
|
| | | data = CommFunc.WriteDWORD(data, self.HP)
|
| | | data = CommFunc.WriteDWORD(data, self.HPEx)
|
| | | data = CommFunc.WriteDWORD(data, self.MaxHP)
|
| | | data = CommFunc.WriteDWORD(data, self.MaxHPEx)
|
| | | data = CommFunc.WriteDWORD(data, self.PhysicAtk)
|
| | | data = CommFunc.WriteDWORD(data, self.PhysicDef)
|
| | | data = CommFunc.WriteDWORD(data, self.MagicAtk)
|
| | |
| | | CON:%d,
|
| | | LeftPoints:%d,
|
| | | HP:%d,
|
| | | HPEx:%d,
|
| | | MaxHP:%d,
|
| | | MaxHPEx:%d,
|
| | | PhysicAtk:%d,
|
| | | PhysicDef:%d,
|
| | | MagicAtk:%d,
|
| | |
| | | self.CON,
|
| | | self.LeftPoints,
|
| | | self.HP,
|
| | | self.HPEx,
|
| | | self.MaxHP,
|
| | | self.MaxHPEx,
|
| | | self.PhysicAtk,
|
| | | self.PhysicDef,
|
| | | self.MagicAtk,
|
| | |
| | |
|
| | |
|
| | | 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 |