use crate::fixed_types::{FixedBytes, FixedVec};
use super::{items::Item, HelperReadWrite, ObjectHeader, PacketReadWrite};
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
#[cfg_attr(feature = "serde", serde(default))]
#[derive(Debug, Clone, Default, PartialEq, PacketReadWrite)]
#[Id(0x2D, 0x02)]
#[Flags(Flags::PACKED)]
#[Magic(0xD003, 0x3B)]
pub struct ProductSearchRequestPacket {
pub unk1: u16,
pub unk2: u8,
pub unk3: u8,
pub item_name: String,
pub unk5: u64,
pub unk6: u64,
pub unk7: FixedBytes<12>,
pub unk8: FixedBytes<0x10>,
}
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
#[cfg_attr(feature = "serde", serde(default))]
#[derive(Debug, Clone, Default, PartialEq, PacketReadWrite)]
#[Id(0x2D, 0x03)]
#[Flags(Flags::PACKED)]
#[Magic(0x55C1, 0x86)]
pub struct ProductSearchResponsePacket {
pub items: Vec<SoldItem>,
}
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
#[cfg_attr(feature = "serde", serde(default))]
#[derive(Debug, Clone, Default, PartialEq, PacketReadWrite)]
#[Id(0x2D, 0x0B)]
pub struct PlayerShopDetailsRequestPacket {
pub owner: ObjectHeader,
}
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
#[cfg_attr(feature = "serde", serde(default))]
#[derive(Debug, Clone, Default, PartialEq, PacketReadWrite)]
#[Id(0x2D, 0x0C)]
#[Flags(Flags::PACKED)]
#[Magic(0x096C, 0x2A)]
pub struct PlayerShopDetailsResponsePacket {
pub owner: ObjectHeader,
pub char_name: String,
pub username: String,
pub ad: String,
pub symbol_art_uuid: u128,
}
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
#[cfg_attr(feature = "serde", serde(default))]
#[derive(Debug, Clone, Default, PartialEq, PacketReadWrite)]
#[Id(0x2D, 0x0D)]
#[Flags(Flags::PACKED)]
#[Magic(0x8F2A, 0x75)]
pub struct CharacterSearchRequestPacket {
pub char_name: String,
}
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
#[cfg_attr(feature = "serde", serde(default))]
#[derive(Debug, Clone, Default, PartialEq, PacketReadWrite)]
#[Id(0x2D, 0x0E)]
#[Flags(Flags::PACKED)]
#[Magic(0x14E7, 0xC0)]
pub struct CharacterSearchResponsePacket {
pub unk1: u8,
pub unk2: u8,
pub unk3: u16,
pub characters: FixedVec<0x32, CharacterSearchEntry>,
}
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
#[cfg_attr(feature = "serde", serde(default))]
#[derive(Debug, Clone, Default, PartialEq, PacketReadWrite)]
#[Id(0x2D, 0x12)]
pub struct RecruitingAlliancesRequestPacket {
pub unk: u64,
}
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
#[cfg_attr(feature = "serde", serde(default))]
#[derive(Debug, Clone, Default, PartialEq, PacketReadWrite)]
#[Id(0x2D, 0x13)]
#[Flags(Flags::PACKED)]
#[Magic(0xB19C, 0x38)]
pub struct RecruitingAlliancesResponsePacket {
pub unk1: u32,
pub unk2: u16,
pub unk3: u16,
pub alliances: FixedVec<0x64, RecruitingAlliance>,
}
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
#[cfg_attr(feature = "serde", serde(default))]
#[derive(Debug, Default, Clone, PartialEq, HelperReadWrite)]
pub struct SoldItem {
pub seller: ObjectHeader,
pub uuid: u64,
pub item: Item,
pub amount: u32,
pub price: u64,
}
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
#[cfg_attr(feature = "serde", serde(default))]
#[derive(Debug, Default, Clone, PartialEq, HelperReadWrite)]
pub struct CharacterSearchEntry {
pub player: ObjectHeader,
pub username: String,
pub char_name: String,
}
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
#[cfg_attr(feature = "serde", serde(default))]
#[derive(Debug, Default, Clone, PartialEq, HelperReadWrite)]
pub struct RecruitingAlliance {
pub unk1: u32,
pub alliance_name: String,
pub members: u8,
pub level: u8,
pub unk5: u8,
pub unk6: u8,
pub symbol_art_uuid: u128,
pub comment: String,
pub unk8: u32,
}