diff --git a/src/ipc.rs b/src/ipc.rs index 06ffc93..14a1231 100644 --- a/src/ipc.rs +++ b/src/ipc.rs @@ -1,6 +1,7 @@ use binrw::binrw; use crate::{ + CHAR_NAME_MAX_LENGTH, common::{read_string, write_string}, world::{ ActorControlSelf, InitZone, PlayerSetup, PlayerSpawn, PlayerStats, Position, @@ -120,8 +121,8 @@ pub struct CharacterDetails { pub origin_server_id: u16, pub current_server_id: u16, pub unk1: [u8; 16], - #[bw(pad_size_to = 32)] - #[br(count = 32)] + #[bw(pad_size_to = CHAR_NAME_MAX_LENGTH)] + #[br(count = CHAR_NAME_MAX_LENGTH)] #[br(map = read_string)] #[bw(map = write_string)] pub character_name: String, @@ -196,8 +197,8 @@ pub enum IPCStructData { character_index: u8, action: LobbyCharacterAction, world_id: u16, - #[bw(pad_size_to = 32)] - #[br(count = 32)] + #[bw(pad_size_to = CHAR_NAME_MAX_LENGTH)] + #[br(count = CHAR_NAME_MAX_LENGTH)] #[br(map = read_string)] #[bw(map = write_string)] name: String, diff --git a/src/lib.rs b/src/lib.rs index 0db5473..fcba3be 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -23,6 +23,9 @@ pub const ZONE_ID: u16 = 1255; pub const CONTENT_ID: u64 = 11111111111111111; +/// Maxmimum length of a character's name. +pub const CHAR_NAME_MAX_LENGTH: usize = 32; + pub fn generate_sid() -> String { let random_id: String = rand::thread_rng() .sample_iter(&Alphanumeric) diff --git a/src/world/player_setup.rs b/src/world/player_setup.rs index 4af57e2..bedd82f 100644 --- a/src/world/player_setup.rs +++ b/src/world/player_setup.rs @@ -1,6 +1,9 @@ use binrw::binrw; -use crate::common::{read_string, write_string}; +use crate::{ + CHAR_NAME_MAX_LENGTH, + common::{read_string, write_string}, +}; #[binrw] #[derive(Debug, Clone, Default)] @@ -80,8 +83,8 @@ pub struct PlayerSetup { pub mount_guide_mask: Vec, pub ornament_mask: [u8; 4], pub unknown281: [u8; 23], - #[br(count = 32)] - #[bw(pad_size_to = 32)] + #[br(count = CHAR_NAME_MAX_LENGTH)] + #[bw(pad_size_to = CHAR_NAME_MAX_LENGTH)] #[br(map = read_string)] #[bw(map = write_string)] pub name: String, diff --git a/src/world/player_spawn.rs b/src/world/player_spawn.rs index 4660f67..727009b 100644 --- a/src/world/player_spawn.rs +++ b/src/world/player_spawn.rs @@ -1,5 +1,6 @@ use binrw::binrw; +use crate::CHAR_NAME_MAX_LENGTH; use crate::client_select_data::ClientCustomizeData; use crate::common::{read_string, write_string}; @@ -82,8 +83,8 @@ pub struct PlayerSpawn { pub models: [u32; 10], pub unknown6_58: [u8; 10], pub padding3: [u8; 4], - #[br(count = 32)] - #[bw(pad_size_to = 32)] + #[br(count = CHAR_NAME_MAX_LENGTH)] + #[bw(pad_size_to = CHAR_NAME_MAX_LENGTH)] #[br(map = read_string)] #[bw(map = write_string)] pub name: String,