def serialize(self, stream: bitstream.WriteStream) -> None: stream.write(bitstream.c_uint32(self.game_version)) stream.write(bitstream.c_uint32(self.unknown_0)) stream.write(bitstream.c_uint32(self.remote_connection_type)) stream.write(bitstream.c_uint32(self.process_id)) stream.write(bitstream.c_uint16(self.local_port)) stream.write("127.0.0.1", allocated_length=33)
def write_construction(self, stream: WriteStream): stream.write(c_int64(self.object_id)) stream.write(c_int32(self.lot)) stream.write(self.name, length_type=c_uint8) stream.write(c_uint32(self.time_since_created)) stream.write(c_bit(False)) stream.write(c_bit(self.trigger)) stream.write(c_bit(self.spawner_id is not None)) if self.spawner_id is not None: stream.write(c_int64(self.spawner_id)) stream.write(c_bit(self.spawner_node_id is not None)) if self.spawner_node_id is not None: stream.write(c_uint32(self.spawner_node_id)) stream.write(c_bit(self.scale is not None)) if self.scale is not None: stream.write(c_float(self.scale)) stream.write(c_bit(False)) stream.write(c_bit(False)) stream.write(c_bit(True)) stream.write(c_bit(False)) stream.write(c_bit(False)) for c in self.components: c.construct(stream)
def serialize(self, stream): super().serialize(stream) stream.write(c_uint32(self.game_version)) stream.write(c_uint32(self.unknown)) stream.write(c_uint32(self.remote_conn_type)) stream.write(c_uint32(self.process_id)) stream.write(self.local_ip, allocated_length=33)
def serialize(self, stream: bitstream.WriteStream) -> None: stream.write(bitstream.c_uint8(self.login_return_code)) stream.write(CString("Talk_Like_A_Pirate", allocated_length=33)) stream.write(CString("", allocated_length=33 * 7)) stream.write(bitstream.c_uint16(self.client_version_major)) stream.write(bitstream.c_uint16(self.client_version_current)) stream.write(bitstream.c_uint16(self.client_version_minor)) stream.write(self.user_key, allocated_length=33) stream.write(CString(self.char_ip, allocated_length=33)) stream.write(CString(self.chat_ip, allocated_length=33)) stream.write(bitstream.c_uint16(self.char_port)) stream.write(bitstream.c_uint16(self.chat_port)) stream.write(CString('0', allocated_length=33)) stream.write( CString('00000000-0000-0000-0000-000000000000', allocated_length=37)) stream.write(bitstream.c_uint32(0)) stream.write(CString(self.localization, allocated_length=3)) # US Localization stream.write(bitstream.c_bool(self.display_first_time)) stream.write(bitstream.c_bool(self.is_ftp)) stream.write(bitstream.c_uint64(0)) stream.write(self.custom_error, length_type=bitstream.c_uint16) # Custom error message stream.write(bitstream.c_uint16(0)) stream.write(bitstream.c_uint32(4))
def serialize(self, stream: WriteStream): stream.write(c_bit(True)) stream.write(c_uint32(len(self.items))) for item in self.items: stream.write(item) stream.write(c_bit(True)) stream.write(c_uint32(0))
def serialize(self, stream: bitstream.WriteStream) -> None: stream.write(bitstream.c_uint16(self.zone_id)) stream.write(bitstream.c_uint16(self.map_instance)) stream.write(bitstream.c_uint32(self.map_clone)) stream.write(bitstream.c_uint32(self.map_checksum)) stream.write(bitstream.c_bool(self.editor_enabled)) stream.write(bitstream.c_uint8(self.editor_level)) stream.write(self.player_position) stream.write(bitstream.c_uint32(self.activity))
def serialize(self, stream: WriteStream): super().serialize(stream) stream.write(c_uint32(self.game_version)) stream.write(c_uint32(0x93)) stream.write(c_uint32(self.remote_connection_type)) stream.write(c_uint32(self.pid)) stream.write(c_uint16(self.port)) stream.write(self.ip.encode('latin1'), allocated_length=33)
def serialize(self, stream: WriteStream): super().serialize(stream) stream.write(c_uint16(self.zone_id)) stream.write(c_uint16(self.instance)) stream.write(c_uint32(self.clone)) stream.write(c_uint32(self.checksum)) stream.write(c_uint16(0)) stream.write(c_float(self.position.x)) stream.write(c_float(self.position.y)) stream.write(c_float(self.position.z)) stream.write(c_uint32(4 if self.activity else 0))
def serialize(self, stream: WriteStream): super().serialize(stream) wstr = WriteStream() wstr.write(self.ldf) data = bytes(wstr) compressed_data = zlib.compress(data) stream.write(c_uint32(len(compressed_data) + 9)) stream.write(c_bool(True)) stream.write(c_uint32(len(data))) stream.write(c_uint32(len(compressed_data))) stream.write(compressed_data)
def serialize(self, stream: WriteStream): stream.write(c_uint8(0x53)) stream.write(c_uint16(0x05)) stream.write(c_uint32(0x00)) stream.write(c_uint8(0)) stream.write(c_uint8(self.login_code)) stream.write(b'Talk_Like_A_Pirate', allocated_length=33) for _ in range(7): stream.write(b'', allocated_length=33) stream.write(c_uint16(1)) stream.write(c_uint16(10)) stream.write(c_uint16(64)) stream.write(self.user_key, allocated_length=33) stream.write(self.char_ip.encode('latin1'), allocated_length=33) stream.write(self.chat_ip.encode('latin1'), allocated_length=33) stream.write(c_uint16(self.char_port)) stream.write(c_uint16(self.chat_port)) stream.write(self.ip.encode('latin1'), allocated_length=33) stream.write(b'00000000-0000-0000-0000-000000000000', allocated_length=37) stream.write(c_uint32(0)) stream.write(self.locale.encode('latin1'), allocated_length=3) stream.write(c_bool(self.first_login_sub)) stream.write(c_bool(self.free_to_play)) stream.write(c_uint64(0)) if self.error: stream.write(c_uint16(len(self.error))) stream.write(self.error, allocated_length=len(self.error)) else: stream.write(c_uint16(0)) stream.write(c_uint32(4))
def serialize(self, stream: WriteStream): stream.write(c_int64(self.object_id)) stream.write(c_int32(self.lot)) stream.write(c_bit(False)) stream.write(c_bit(self.amount is not None)) if self.amount is not None: stream.write(c_uint32(self.amount)) stream.write(c_bit(self.slot is not None)) if self.slot is not None: stream.write(c_uint16(self.slot)) stream.write(c_bit(True)) stream.write(c_uint32(4)) stream.write(c_bit(False)) # TODO: implement metadata stream.write(c_bit(False))
def serialize(self, stream): super().serialize(stream) stream.write(c_uint8(self.auth_status_code)) stream.write(CString(self.unknown, allocated_length=33)) stream.write(CString(self.unknown1, allocated_length=33*7)) stream.write(self.client_version) stream.write(self.auth_token, allocated_length=33) stream.write(CString(self.char_ip, allocated_length=33)) stream.write(CString(self.chat_ip, allocated_length=33)) stream.write(c_uint16(self.char_port)) stream.write(c_uint16(self.chat_port)) stream.write(CString(self.unknown2, allocated_length=33)) stream.write(CString(self.unknown3, allocated_length=37)) stream.write(c_uint32(self.unknown4)) stream.write(CString(self.localization, allocated_length=3)) stream.write(c_bool(self.new_subscriber)) stream.write(c_bool(self.is_ftp)) stream.write(c_uint64(self.unknown5)) stream.write(self.permission_error, length_type=c_uint16) # TODO: Implement stamps stream.write(c_uint32(4))
def _write_part1(self, stream: WriteStream): stream.write(c_bit(True)) stream.write(c_bit(self.vehicle_id is not None)) if self.vehicle_id is not None: stream.write(c_int64(self.vehicle_id)) stream.write(c_uint8(0)) stream.write(c_bit(self.level is not None)) if self.level is not None: stream.write(c_uint32(self.level)) stream.write(c_bit(True)) stream.write(c_bit(False)) stream.write(c_bit(True))
def _write_part2(self, stream: WriteStream): stream.write(c_bit(True)) stream.write(c_bit(self.pvp)) stream.write(c_bit(self.gm)) stream.write(c_uint8(self.gm_level)) stream.write(c_bit(False)) stream.write(c_uint8(0)) stream.write(c_bit(True)) stream.write(c_uint32(1 if self.glowing_head else 0)) stream.write(c_bit(self.guild)) if self.guild: stream.write(c_int64(self.guild_id)) stream.write(self.guild_name, allocated_length=33) stream.write(c_bit(True)) stream.write(c_int32(-1))
def serialize(self, stream: WriteStream): stream.write(c_uint8(0x53)) stream.write(c_uint16(self.connection_type.value)) stream.write(c_uint32(self.packet_id)) stream.write(c_uint8(0))
def serialize(self, stream: bitstream.WriteStream) -> None: stream.write(bitstream.c_uint64(self.object_id)) stream.write(bitstream.c_uint32(0)) stream.write(self.current_name, allocated_length=33) stream.write(self.unapproved_name, allocated_length=33) stream.write(bitstream.c_bool(self.name_rejected)) stream.write(bitstream.c_bool(self.is_ftp)) stream.write(bitstream.c_uint32(self.head_color)) stream.write(bitstream.c_uint16(0)) stream.write(bitstream.c_uint32(self.head)) stream.write(bitstream.c_uint32(self.chest_color)) stream.write(bitstream.c_uint32(self.chest)) stream.write(bitstream.c_uint32(self.legs)) stream.write(bitstream.c_uint32(self.hair_style)) stream.write(bitstream.c_uint32(self.hair_color)) stream.write(bitstream.c_uint32(self.left_hand)) stream.write(bitstream.c_uint32(self.right_hand)) stream.write(bitstream.c_uint32(self.eyebrows_style)) stream.write(bitstream.c_uint32(self.eyes_style)) stream.write(bitstream.c_uint32(self.mouth_style)) stream.write(bitstream.c_uint32(0)) stream.write(bitstream.c_uint16(self.last_zone)) stream.write(bitstream.c_uint16(self.last_map_instance)) stream.write(bitstream.c_uint32(self.last_map_clone)) stream.write(bitstream.c_uint64(0)) stream.write(bitstream.c_uint16(len(self.equipped_items))) for item in self.equipped_items: stream.write(bitstream.c_uint32(item))
def serialize(self, stream: bitstream.WriteStream) -> None: stream.write(bitstream.c_uint32(self.disconnect_id))
def serialize(self, stream: WriteStream): stream.write(c_uint32(len(self._nodes))) for node in self._nodes: stream.write(node)
def construct(self, stream: WriteStream): if not self.disabled: stream.write(c_uint32(len(self.effects))) for effect in self.effects: stream.write(effect)
def serialize(self, stream): stream.write(c_int64(character_id)) stream.write(c_uint32(unknown1)) stream.write(character_name) stream.write(character_unapproved_name) stream.write(is_name_rejected) stream.write(free_to_play) stream.write(unknown2, allocated_length=10) stream.write(c_uint32(shirt_color)) stream.write(c_uint32(shirt_style)) stream.write(c_uint32(pants_color)) stream.write(c_uint32(hair_style)) stream.write(c_uint32(hair_color)) stream.write(c_uint32(lh)) stream.write(c_uint32(rh)) stream.write(c_uint32(eyebrows)) stream.write(c_uint32(eyes)) stream.write(c_uint32(mouth)) stream.write(c_uint32(unknown3)) stream.write(c_uint16(last_zone)) stream.write(c_uint16(last_instance)) stream.write(c_uint32(last_clone)) stream.write(c_uint64(last_login)) stream.write(c_uint16(len(items))) for item in items: stream.write(c_uint32(item))
def serialize(self, stream: bitstream.WriteStream) -> None: stream.write(bitstream.c_uint32(self.notify_id))
def construct(self, stream: WriteStream): self._write_part1(stream) stream.write(c_bit(False)) stream.write(c_bit(False)) stream.write(c_bit(False)) stream.write(c_bit(False)) stream.write(c_uint32(self.hair_color)) stream.write(c_uint32(self.hair_style)) stream.write(c_uint32(0)) stream.write(c_uint32(self.shirt_color)) stream.write(c_uint32(self.pants_color)) stream.write(c_uint32(self.shirt_style)) stream.write(c_uint32(0)) stream.write(c_uint32(self.eyebrow_style)) stream.write(c_uint32(self.eye_style)) stream.write(c_uint32(self.mouth_style)) stream.write(c_uint64(self.account_id)) stream.write(c_uint64(self.llog)) stream.write(c_uint64(0)) stream.write(c_uint64(self.lego_score)) stream.write(c_bit(self.free_to_play)) stream.write(c_uint64(self.currency_collected)) stream.write(c_uint64(self.bricks_collected)) stream.write(c_uint64(self.smashables_smashed)) stream.write(c_uint64(self.quickbuilds_completed)) stream.write(c_uint64(self.enemies_smashed)) stream.write(c_uint64(self.rockets_used)) stream.write(c_uint64(self.missions_completed)) stream.write(c_uint64(self.pets_tamed)) stream.write(c_uint64(self.imagination_powerups_collected)) stream.write(c_uint64(self.life_powerups_collected)) stream.write(c_uint64(self.armor_powerups_collected)) stream.write(c_uint64(self.distance_traveled)) stream.write(c_uint64(self.times_smashed)) stream.write(c_uint64(self.damage_taken)) stream.write(c_uint64(self.damage_healed)) stream.write(c_uint64(self.armor_repaired)) stream.write(c_uint64(self.imagination_restored)) stream.write(c_uint64(self.imagination_used)) stream.write(c_uint64(self.distance_driven)) stream.write(c_uint64(self.time_airborne_racecar)) stream.write(c_uint64(self.racing_imagination_powerups_collected)) stream.write(c_uint64(self.racing_imagination_crates_smashed)) stream.write(c_uint64(self.racecar_boosts_activated)) stream.write(c_uint64(self.racecar_wrecks)) stream.write(c_uint64(self.racing_smashables_smashed)) stream.write(c_uint64(self.races_finished)) stream.write(c_uint64(self.first_place_finishes)) stream.write(c_bit(False)) stream.write(c_bit(self.landing_rocket)) if self.landing_rocket: stream.write(self.rocket_modules, length_type=c_uint16) self._write_part2(stream)
def serialize(self, stream: WriteStream): stream.write(self.name.encode('latin1'), length_type=c_uint8) stream.write(c_uint32(self.effect_id)) stream.write(self.effect_type, length_type=c_uint8) stream.write(c_float(self.scale)) stream.write(c_int64(self.secondary))
def serialize(self, stream): stream.write(c_uint8(0x53)) stream.write(c_uint16(self.remote_conn_id)) stream.write(c_uint32(self.packet_id)) stream.write(c_uint8(0x00))