From 55d0b81ae473fa567fe930f60cbd104f38ff1a39 Mon Sep 17 00:00:00 2001 From: Joshua Goins Date: Sat, 22 Mar 2025 17:38:34 -0400 Subject: [PATCH] Use LobbyCharacterActionKind in CharacterCreated Lobby IPC Instead of the magic unknown number, replace at least one byte of it with something that's known! --- src/lobby/connection.rs | 12 +++++++++--- src/lobby/ipc/mod.rs | 9 +++++++-- 2 files changed, 16 insertions(+), 5 deletions(-) diff --git a/src/lobby/connection.rs b/src/lobby/connection.rs index d86010b..8dfe664 100644 --- a/src/lobby/connection.rs +++ b/src/lobby/connection.rs @@ -381,7 +381,9 @@ impl LobbyConnection { timestamp: 0, data: ServerLobbyIpcData::CharacterCreated { sequence: character_action.sequence + 1, - unk: 0x00010101, + unk1: 0x1, + unk2: 0x1, + action: LobbyCharacterActionKind::ReserveName, details: CharacterDetails { character_name: character_action.name.clone(), origin_server_name: self.world_name.clone(), @@ -468,7 +470,9 @@ impl LobbyConnection { timestamp: 0, data: ServerLobbyIpcData::CharacterCreated { sequence: character_action.sequence + 1, - unk: 0x00020101, + unk1: 0x1, + unk2: 0x1, + action: LobbyCharacterActionKind::Create, details: CharacterDetails { actor_id: our_actor_id, content_id: our_content_id, @@ -518,7 +522,9 @@ impl LobbyConnection { timestamp: 0, data: ServerLobbyIpcData::CharacterCreated { sequence: character_action.sequence + 1, - unk: 0x00040101, // TODO: probably LobbyCharacterAction actually, see create character packet too + unk1: 0x1, + unk2: 0x1, + action: LobbyCharacterActionKind::Delete, details: CharacterDetails { actor_id: 0, // TODO: fill maybe? content_id: character_action.content_id, diff --git a/src/lobby/ipc/mod.rs b/src/lobby/ipc/mod.rs index 062f063..df94cea 100644 --- a/src/lobby/ipc/mod.rs +++ b/src/lobby/ipc/mod.rs @@ -192,7 +192,10 @@ pub enum ServerLobbyIpcData { }, CharacterCreated { sequence: u64, - unk: u32, + unk1: u8, + unk2: u8, + #[brw(pad_after = 1)] // empty + action: LobbyCharacterActionKind, #[brw(pad_before = 36)] // empty #[brw(pad_after = 1336)] // empty and garbage details: CharacterDetails, @@ -252,7 +255,9 @@ mod tests { ServerLobbyIpcType::CharacterCreated, ServerLobbyIpcData::CharacterCreated { sequence: 0, - unk: 0, + unk1: 0, + unk2: 0, + action: LobbyCharacterActionKind::ReserveName, details: CharacterDetails::default(), }, ),