## rAthena References: ## - PACKET_ZC_ACCEPT_ENTER ## - clif_authok class_name MapServerLoginSuccessPacket extends Packet const HEADER := 0x02eb const BYTE_LENGTH := 14 ## Byte Type: u32 ## Byte Length: 4 var client_tick: int ## Byte Type: u8 ## Byte Length: 3 var position: PackedByteArray ## Byte Type: u8 ## Byte Length: 2 ## Always [5, 5] on rAthena var ignored: PackedByteArray ## Byte Type: u16 ## Byte Length: 2 var font: int ## Byte Type: u8 ## Byte Length: 1 ## Depends on packet version var gender: Constants.Gender func get_position(): return Vector2( position[1] >> 6 | position[0] << 2, position[2] >> 4 | (position[1] & 0b111111) << 4 ) static func from_bytes(bytes: PackedByteArray): var packet = MapServerLoginSuccessPacket.new() packet.client_tick = bytes.decode_u32(2) packet.position = bytes.slice(6, 6 + 3) packet.ignored = bytes.slice(9, 9 + 2) packet.font = bytes.decode_u16(11) packet.gender = bytes.decode_u8(13) return packet