1use crate::fixed_types::{FixedBytes, FixedVec};
3
4use super::{items::Item, HelperReadWrite, ObjectHeader, PacketReadWrite};
5
6#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
16#[cfg_attr(feature = "serde", serde(default))]
17#[derive(Debug, Clone, Default, PartialEq, PacketReadWrite)]
18#[Id(0x2D, 0x02)]
19#[Flags(Flags::PACKED)]
20#[Magic(0xD003, 0x3B)]
21pub struct ProductSearchRequestPacket {
22 pub unk1: u16,
23 pub unk2: u8,
24 pub unk3: u8,
25 pub item_name: String,
27 pub unk5: u64,
28 pub unk6: u64,
29 pub unk7: FixedBytes<12>,
30 pub unk8: FixedBytes<0x10>,
31}
32
33#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
39#[cfg_attr(feature = "serde", serde(default))]
40#[derive(Debug, Clone, Default, PartialEq, PacketReadWrite)]
41#[Id(0x2D, 0x03)]
42#[Flags(Flags::PACKED)]
43#[Magic(0x55C1, 0x86)]
44pub struct ProductSearchResponsePacket {
45 pub items: Vec<SoldItem>,
47}
48
49#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
55#[cfg_attr(feature = "serde", serde(default))]
56#[derive(Debug, Clone, Default, PartialEq, PacketReadWrite)]
57#[Id(0x2D, 0x0B)]
58pub struct PlayerShopDetailsRequestPacket {
59 pub owner: ObjectHeader,
61}
62
63#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
69#[cfg_attr(feature = "serde", serde(default))]
70#[derive(Debug, Clone, Default, PartialEq, PacketReadWrite)]
71#[Id(0x2D, 0x0C)]
72#[Flags(Flags::PACKED)]
73#[Magic(0x096C, 0x2A)]
74pub struct PlayerShopDetailsResponsePacket {
75 pub owner: ObjectHeader,
77 pub char_name: String,
79 pub username: String,
81 pub ad: String,
83 pub symbol_art_uuid: u128,
85}
86
87#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
93#[cfg_attr(feature = "serde", serde(default))]
94#[derive(Debug, Clone, Default, PartialEq, PacketReadWrite)]
95#[Id(0x2D, 0x0D)]
96#[Flags(Flags::PACKED)]
97#[Magic(0x8F2A, 0x75)]
98pub struct CharacterSearchRequestPacket {
99 pub char_name: String,
101}
102
103#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
109#[cfg_attr(feature = "serde", serde(default))]
110#[derive(Debug, Clone, Default, PartialEq, PacketReadWrite)]
111#[Id(0x2D, 0x0E)]
112#[Flags(Flags::PACKED)]
113#[Magic(0x14E7, 0xC0)]
114pub struct CharacterSearchResponsePacket {
115 pub unk1: u8,
116 pub unk2: u8,
117 pub unk3: u16,
118 pub characters: FixedVec<0x32, CharacterSearchEntry>,
119}
120
121#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
127#[cfg_attr(feature = "serde", serde(default))]
128#[derive(Debug, Clone, Default, PartialEq, PacketReadWrite)]
129#[Id(0x2D, 0x12)]
130pub struct RecruitingAlliancesRequestPacket {
131 pub unk: u64,
132}
133
134#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
140#[cfg_attr(feature = "serde", serde(default))]
141#[derive(Debug, Clone, Default, PartialEq, PacketReadWrite)]
142#[Id(0x2D, 0x13)]
143#[Flags(Flags::PACKED)]
144#[Magic(0xB19C, 0x38)]
145pub struct RecruitingAlliancesResponsePacket {
146 pub unk1: u32,
147 pub unk2: u16,
148 pub unk3: u16,
149 pub alliances: FixedVec<0x64, RecruitingAlliance>,
150}
151
152#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
158#[cfg_attr(feature = "serde", serde(default))]
159#[derive(Debug, Default, Clone, PartialEq, HelperReadWrite)]
160pub struct SoldItem {
161 pub seller: ObjectHeader,
163 pub uuid: u64,
165 pub item: Item,
167 pub amount: u32,
169 pub price: u64,
171}
172
173#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
175#[cfg_attr(feature = "serde", serde(default))]
176#[derive(Debug, Default, Clone, PartialEq, HelperReadWrite)]
177pub struct CharacterSearchEntry {
178 pub player: ObjectHeader,
180 pub username: String,
182 pub char_name: String,
184}
185
186#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
188#[cfg_attr(feature = "serde", serde(default))]
189#[derive(Debug, Default, Clone, PartialEq, HelperReadWrite)]
190pub struct RecruitingAlliance {
191 pub unk1: u32,
192 pub alliance_name: String,
194 pub members: u8,
196 pub level: u8,
198 pub unk5: u8,
199 pub unk6: u8,
200 pub symbol_art_uuid: u128,
202 pub comment: String,
204 pub unk8: u32,
205}