| | |
| | | #03 09 主角登录时候的简短信息#tagPlayerLoginInfo
|
| | |
|
| | | class tagLoginInfoEquip(Structure):
|
| | | ItemPlace = 0 #(BYTE ItemPlace)
|
| | | ItemID = 0 #(DWORD ItemID)
|
| | | IsSuite = 0 #(BYTE IsSuite)//是否已经套装化
|
| | | UserDataLen = 0 #(DWORD UserDataLen)
|
| | | UserData = "" #(String UserData)//size = UserDataLen
|
| | | data = None
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("ItemID", c_int), |
| | | ]
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | return
|
| | |
|
| | | def ReadData(self, _lpData, _pos=0, _Len=0):
|
| | | def ReadData(self, stringData, _pos=0, _len=0):
|
| | | self.Clear()
|
| | | self.ItemPlace,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.ItemID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.IsSuite,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.UserDataLen,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.UserData,_pos = CommFunc.ReadString(_lpData, _pos,self.UserDataLen)
|
| | | return _pos
|
| | | memmove(addressof(self), stringData[_pos:], self.GetLength())
|
| | | return _pos + self.GetLength()
|
| | |
|
| | | def Clear(self):
|
| | | self.ItemPlace = 0
|
| | | self.ItemID = 0
|
| | | self.IsSuite = 0
|
| | | self.UserDataLen = 0
|
| | | self.UserData = ""
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += 1
|
| | | length += 4
|
| | | length += 1
|
| | | length += 4
|
| | | length += len(self.UserData)
|
| | |
|
| | | return length
|
| | | return sizeof(tagLoginInfoEquip)
|
| | |
|
| | | def GetBuffer(self):
|
| | | data = ''
|
| | | data = CommFunc.WriteBYTE(data, self.ItemPlace)
|
| | | data = CommFunc.WriteDWORD(data, self.ItemID)
|
| | | data = CommFunc.WriteBYTE(data, self.IsSuite)
|
| | | data = CommFunc.WriteDWORD(data, self.UserDataLen)
|
| | | data = CommFunc.WriteString(data, self.UserDataLen, self.UserData)
|
| | | return data
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | ItemPlace:%d,
|
| | | ItemID:%d,
|
| | | IsSuite:%d,
|
| | | UserDataLen:%d,
|
| | | UserData:%s
|
| | | DumpString = '''//03 09 主角登录时候的简短信息//tagPlayerLoginInfo:
|
| | | ItemID:%d
|
| | | '''\
|
| | | %(
|
| | | self.ItemPlace,
|
| | | self.ItemID,
|
| | | self.IsSuite,
|
| | | self.UserDataLen,
|
| | | self.UserData
|
| | | self.ItemID
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
| | | #04 34 周围玩家出现合并封包#tagAreaPlayerAppearEx
|
| | |
|
| | | class tagEquipInfo(Structure):
|
| | | Place = 0 #(BYTE Place)//装备位置
|
| | | ItemID = 0 #(DWORD ItemID)//物品ID
|
| | | IsSuite = 0 #(BYTE IsSuite)//是否已经套装化
|
| | | UserDataLen = 0 #(DWORD UserDataLen)
|
| | | UserData = "" #(String UserData)// 附加数据
|
| | | data = None
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("ItemID", c_int), #物品ID
|
| | | ]
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | return
|
| | |
|
| | | def ReadData(self, _lpData, _pos=0, _Len=0):
|
| | | def ReadData(self, stringData, _pos=0, _len=0):
|
| | | self.Clear()
|
| | | self.Place,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.ItemID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.IsSuite,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.UserDataLen,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.UserData,_pos = CommFunc.ReadString(_lpData, _pos,self.UserDataLen)
|
| | | return _pos
|
| | | memmove(addressof(self), stringData[_pos:], self.GetLength())
|
| | | return _pos + self.GetLength()
|
| | |
|
| | | def Clear(self):
|
| | | self.Place = 0
|
| | | self.ItemID = 0
|
| | | self.IsSuite = 0
|
| | | self.UserDataLen = 0
|
| | | self.UserData = ""
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += 1
|
| | | length += 4
|
| | | length += 1
|
| | | length += 4
|
| | | length += len(self.UserData)
|
| | |
|
| | | return length
|
| | | return sizeof(tagEquipInfo)
|
| | |
|
| | | def GetBuffer(self):
|
| | | data = ''
|
| | | data = CommFunc.WriteBYTE(data, self.Place)
|
| | | data = CommFunc.WriteDWORD(data, self.ItemID)
|
| | | data = CommFunc.WriteBYTE(data, self.IsSuite)
|
| | | data = CommFunc.WriteDWORD(data, self.UserDataLen)
|
| | | data = CommFunc.WriteString(data, self.UserDataLen, self.UserData)
|
| | | return data
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | Place:%d,
|
| | | ItemID:%d,
|
| | | IsSuite:%d,
|
| | | UserDataLen:%d,
|
| | | UserData:%s
|
| | | DumpString = '''//04 34 周围玩家出现合并封包//tagAreaPlayerAppearEx:
|
| | | ItemID:%d
|
| | | '''\
|
| | | %(
|
| | | self.Place,
|
| | | self.ItemID,
|
| | | self.IsSuite,
|
| | | self.UserDataLen,
|
| | | self.UserData
|
| | | self.ItemID
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
| | | ("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
|
| | |
|
| | |
| | | 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
|
| | |
|