def read(self, filecontents, replay): replay.messages = list() bytes, time = ByteStream(filecontents), 0 while (bytes.remaining != 0): time += bytes.get_timestamp() player_id = bytes.get_big_8() & 0x0F flags = bytes.get_big_8() if flags & 0xF0 == 0x80: #ping or something? if flags & 0x0F == 3: bytes.skip(8) #some sort of header code elif flags & 0x0F == 0: bytes.skip(4) replay.other_people.add(player_id) elif flags & 0x80 == 0: target = flags & 0x03 length = bytes.get_big_8() if flags & 0x08: length += 64 if flags & 0x10: length += 128 text = bytes.get_string(length) replay.messages.append(Message(time, player_id, target, text))
def read(self, filecontents, replay): replay.messages = list() bytes, time = ByteStream(filecontents), 0 while(bytes.remaining!=0): time += bytes.get_timestamp() player_id = bytes.get_big_8() & 0x0F flags = bytes.get_big_8() if flags & 0xF0 == 0x80: #ping or something? if flags & 0x0F == 3: bytes.skip(8) #some sort of header code elif flags & 0x0F == 0: bytes.skip(4) replay.other_people.add(player_id) elif flags & 0x80 == 0: target = flags & 0x03 length = bytes.get_big_8() if flags & 0x08: length += 64 if flags & 0x10: length += 128 text = bytes.get_string(length) replay.messages.append(Message(time, player_id, target, text))
def read(self, filecontents, replay): bytes = ByteStream(filecontents) num_people = bytes.get_big_8() for p in range(1, num_people + 1): name = bytes.get_string(bytes.get_big_8()) if len(name) > 0: replay.player_names.append(name) bytes.skip(5) #Always all zeros bytes.skip(5) # Unknown bytes.get_string(4) # Always Dflt bytes.skip(15) #Unknown id_length = bytes.get_big_8() sc_account_id = bytes.get_string(id_length) bytes.skip(684) # Fixed Length data for unknown purpose while (bytes.get_string(4).lower() == 's2ma'): bytes.skip(2) replay.realm = bytes.get_string(2).lower() unknown_map_hash = bytes.get_bytes(32)
def read(self, filecontents, replay): bytes = ByteStream(filecontents) num_people = bytes.get_big_8() for p in range(1, num_people+1): name = bytes.get_string(bytes.get_big_8()) if len(name) > 0: replay.player_names.append(name) bytes.skip(5) #Always all zeros bytes.skip(5) # Unknown bytes.get_string(4) # Always Dflt bytes.skip(15) #Unknown id_length = bytes.get_big_8() sc_account_id = bytes.get_string(id_length) bytes.skip(684) # Fixed Length data for unknown purpose while( bytes.get_string(4).lower() == 's2ma' ): bytes.skip(2) replay.realm = bytes.get_string(2).lower() unknown_map_hash = bytes.get_bytes(32)