| | |
| | | #------------------------------------------------------
|
| | | # 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):
|
| | |
| | | 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
|
| | |
|