diff --git a/src/packet/messages.rs b/src/packet/messages.rs index 8a9506f..9337a16 100644 --- a/src/packet/messages.rs +++ b/src/packet/messages.rs @@ -428,19 +428,20 @@ pub struct PickupItem { unknown: [u8; 3], } -//#[pso_message(0x5D)] -//pub struct SplittingStack { -// area: u16, -// unknown1: u16, -// x: f32, -// z: f32, -// item_data: u32, -// item_data2: u32, -// item_data3: u32, -// split_item_id: [u8; 9], -// item_data4: u32, -// unknown2: u32, -//} +// this name may be a bit incorrect, it differs from ItemDrop only in that +// it does not have a y as DropCoordinates only specifies an xz +#[pso_message(0x5D)] +pub struct DropSplitStack { + pub map_area: u8, + pub variety: u8, + pub unknown1: u16, + pub x: f32, + pub z: f32, + pub item_bytes: [u8; 12], + pub item_id: u32, + pub item_bytes2: [u8; 4], + pub unknown2: u32, +} //#[pso_message(0x5E)] @@ -981,7 +982,7 @@ pub enum GameMessage { LobbyEmote(LobbyEmote), RemoveItemFromFloor(RemoveItemFromFloor), PickupItem(PickupItem), - //SplittingStack(SplittingStack), + DropSplitStack(DropSplitStack), //BuyFromShop(BuyFromShop), ItemDrop(ItemDrop), RequestItem(RequestItem), @@ -1143,7 +1144,7 @@ impl PSOPacketData for GameMessage { LobbyEmote::CMD => Ok(GameMessage::LobbyEmote(LobbyEmote::from_bytes(&mut cur)?)), RemoveItemFromFloor::CMD => Ok(GameMessage::RemoveItemFromFloor(RemoveItemFromFloor::from_bytes(&mut cur)?)), PickupItem::CMD => Ok(GameMessage::PickupItem(PickupItem::from_bytes(&mut cur)?)), - //SplittingStack::CMD => Ok(GameMessage::SplittingStack(SplittingStack::from_bytes(&mut cur)?)), + DropSplitStack::CMD => Ok(GameMessage::DropSplitStack(DropSplitStack::from_bytes(&mut cur)?)), //BuyFromShop::CMD => Ok(GameMessage::BuyFromShop(BuyFromShop::from_bytes(&mut cur)?)), ItemDrop::CMD => Ok(GameMessage::ItemDrop(ItemDrop::from_bytes(&mut cur)?)), RequestItem::CMD => Ok(GameMessage::RequestItem(RequestItem::from_bytes(&mut cur)?)), @@ -1307,7 +1308,7 @@ impl PSOPacketData for GameMessage { GameMessage::LobbyEmote(data) => data.as_bytes(), GameMessage::RemoveItemFromFloor(data) => data.as_bytes(), GameMessage::PickupItem(data) => data.as_bytes(), - //GameMessage::SplittingStack(data) => data.as_bytes(), + GameMessage::DropSplitStack(data) => data.as_bytes(), //GameMessage::BuyFromShop(data) => data.as_bytes(), GameMessage::ItemDrop(data) => data.as_bytes(), GameMessage::RequestItem(data) => data.as_bytes(),