class_name MapServerLoginSuccessPacket extends Packet static var header := 0x02eb ## 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 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(0) packet.position = bytes.slice(4, 4 + 3) packet.ignored = bytes.slice(7, 7 + 2) packet.font = bytes.decode_u32(9) return packet static func from_bytes_via_peer(peer: StreamPeer): var _header = peer.get_data(2) var remaining_bytes = peer.get_data(peer.get_available_bytes()) return from_bytes(remaining_bytes[1])