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: bitstream.WriteStream) -> None: key_num = len(self._keys) stream.write(bitstream.c_uint(key_num)) for key in self._keys: name = key[0] value = key[1] value_type = key[2] stream.write(bitstream.c_uint8(len(name) * 2)) for char in name: stream.write(char.encode('latin1')) stream.write(b'\0') stream.write(bitstream.c_ubyte(value_type)) if value_type == 0: stream.write(value, length_type=bitstream.c_uint) elif value_type == 1: stream.write(bitstream.c_int(value)) elif value_type == 3: stream.write(bitstream.c_float(value)) elif value_type == 5: stream.write(bitstream.c_uint(value)) elif value_type == 7: stream.write(bitstream.c_bool(value)) elif value_type == 8 or value_type == 9: stream.write(bitstream.c_int64(value)) elif value_type == 13: xml_str = bytes(ElementTree.tostring(value)) xml_str = b'<?xml version="1.0">' + xml_str stream.write(bitstream.c_ulong(xml_str.__len__())) stream.write(xml_str)
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_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: WriteStream): stream.write(c_bit(True)) stream.write(c_int64(0))
def serialize(self, stream: WriteStream): super().serialize(stream) stream.write(c_int64(self.object_id)) stream.write(c_uint16(self.message_id)) stream.write(self.data)
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))