1
Fork 0
mirror of https://github.com/redstrate/Kawari.git synced 2025-07-13 17:07:45 +00:00

Begin figuring out various content finder thingies

This commit is contained in:
Joshua Goins 2025-07-12 20:53:59 -04:00
parent fac241ce7b
commit 67d01513b1
3 changed files with 91 additions and 0 deletions

View file

@ -249,6 +249,16 @@
"name": "InventoryTransactionFinish", "name": "InventoryTransactionFinish",
"opcode": 854, "opcode": 854,
"size": 16 "size": 16
},
{
"name": "ContentFinderFound",
"opcode": 619,
"size": 40
},
{
"name": "ContentFinderFound2",
"opcode": 619,
"size": 812
} }
], ],
"ClientZoneIpcType": [ "ClientZoneIpcType": [
@ -401,6 +411,11 @@
"name": "StandardControlsPivot", "name": "StandardControlsPivot",
"opcode": 836, "opcode": 836,
"size": 8 "size": 8
},
{
"name": "ContentFinderRegister",
"opcode": 991,
"size": 40
} }
], ],
"ServerLobbyIpcType": [ "ServerLobbyIpcType": [

View file

@ -1032,6 +1032,66 @@ async fn client_loop(
}) })
.await; .await;
} }
ClientZoneIpcData::ContentFinderRegister { .. } => {
let ipc = ServerZoneIpcSegment {
op_code: ServerZoneIpcType::ContentFinderFound,
timestamp: timestamp_secs(),
data: ServerZoneIpcData::ContentFinderFound {
state1: 2,
classjob_id: 1,
unk1: [
5,
2,
5,
2,
5,
2,
96,
4,
5,
64,
2,
5,
2,
5,
2,
2,
2,
2,
4,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
]
},
..Default::default()
};
connection
.send_segment(PacketSegment {
source_actor: connection.player_data.actor_id,
target_actor: connection.player_data.actor_id,
segment_type: SegmentType::Ipc,
data: SegmentData::Ipc { data: ipc },
})
.await;
}
ClientZoneIpcData::Unknown { .. } => { ClientZoneIpcData::Unknown { .. } => {
tracing::warn!("Unknown packet {:?} recieved, this should be handled!", data.op_code); tracing::warn!("Unknown packet {:?} recieved, this should be handled!", data.op_code);
} }

View file

@ -422,6 +422,20 @@ pub enum ServerZoneIpcData {
/// Unknown, seems to always be 0x00000200. /// Unknown, seems to always be 0x00000200.
unk4: u32, unk4: u32,
}, },
#[br(pre_assert(*magic == ServerZoneIpcType::ContentFinderFound))]
ContentFinderFound {
/// 0 = Nothing happens
/// 1 = Reserving server
/// 2 = again? ^
/// 3 = duty ready
/// 4 = checking member status
/// nothing appears to happen above 5
state1: u8,
classjob_id: u8,
unk1: [u8; 38],
},
#[br(pre_assert(*magic == ServerZoneIpcType::ContentFinderFound2))]
ContentFinderFound2 { unk1: [u8; 8] },
Unknown { Unknown {
#[br(count = size - 32)] #[br(count = size - 32)]
unk: Vec<u8>, unk: Vec<u8>,
@ -597,6 +611,8 @@ pub enum ClientZoneIpcData {
/// Unsure the true purpose of this, but it's needed for the Unending Journey to function. /// Unsure the true purpose of this, but it's needed for the Unending Journey to function.
#[br(pre_assert(*magic == ClientZoneIpcType::UnkCall2))] #[br(pre_assert(*magic == ClientZoneIpcType::UnkCall2))]
UnkCall2 { unk1: [u8; 8] }, UnkCall2 { unk1: [u8; 8] },
#[br(pre_assert(*magic == ClientZoneIpcType::ContentFinderRegister))]
ContentFinderRegister { unk1: [u8; 40] },
Unknown { Unknown {
#[br(count = size - 32)] #[br(count = size - 32)]
unk: Vec<u8>, unk: Vec<u8>,